고정 표시기 떼 클러스터 구축 및 Portainer, 조선소를 사용

첫째, 계획

1, 작업자 노드와 관리자 노드, swarm02 및 swarm03로 swarm01.

# 고양이 / etc / hosts 파일 
127.0.0.1 localhost를 
192.168.139.175 swarm01  
192.168.139.176 swarm02  
192.168.139.177 swarm03

2, SSH없는 비밀 착륙 구성

# ssh를-Keygen은 -t RSA -P '' 
# ssh를 복사-ID -i 스푸핑 / id_rsa.pub [email protected] 
# ssh를 복사-ID -i 스푸핑 / id_rsa.pub [email protected]

둘째, 설치 고정 표시기 및 ansible

1 설치 구성 ansible

# 냠 -y ansible 설치 
# 고양이의 / etc / ansible / 호스트 | 그렙 -v ^ # | 그렙 -v ^ $ 
[노드] 
192.168.139.176 
192.168.139.177 
# SED -i "S / SELINUX = 시행 / SELINUX = 비활성화 '은 / etc / SELinux에 / 구성 
-a 복사 -m # ansible 노드'SRC =은 / etc / SELinux에 / 설정 이명 령 =은 / etc / SELinux가 / ' 
#의 systemctl 정지 firewalld의 
# 해제 systemctl firewalld 
# ansible 노드 -a'firewalld을 중지 systemctl ' 
# ansible 노드 -a'firewalld을 사용하지 systemctl '

참고 : 여기에 방화벽을 해제하도록 선택할 실제 환경은 자신의 포트를 열 수 있습니다.

2, 설치 고정 표시기

# 냠 -y 설치 냠 - 유틸 장치 - 매퍼 지속적-데이터 LVM2의 
# 냠 - 설정 - 관리자 --add-REPO http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 
| # 냠 목록 고정 표시기-CE는 --showduplicates 종류 -r 
#을 냠 고정 표시기-CE 설치 -y 
# 고정 표시기 --version 
, 도커 버전 17.06.0-CE를 02c1d87 구축 
고정 표시기의 시작 systemctl #을 
#의 systemctl 상태 고정 표시기의 
고정 표시기를 사용 systemctl #을
  • 노동자가 고정 표시기 노드에 사용 ansible 장착

# -a 복사 -m ansible 노드 'SRC =은 / etc / yum.repos.d / 고정 표시기-ce.repo = 최종 도착은 / etc / yum.repos.d /' 
# ansible 노드 -m 얌 -a "상태 = 본 이름 = 고정 표시기-CE " 
#의 ansible 노드 -a '고정 표시기 --version' 
192.168.139.173 | 성공 | RC = 0 >> 
도커 버전 17.06.0-CE, 02c1d87 구축 
192.168.139.174를 | 성공 | RC = 0 >> 
도커 버전 17.06.0-CE, 02c1d87 구축 
#이 ansible 노드 -a '고정 표시기 시작 systemctl' 
# ansible 노드 -a 'systemctl 상태 고정 표시기' 
ansible 노드 -a '는 고정 표시기를 사용 systemctl'#을

셋째, 고정 표시기 떼 클러스터 구성

1. 고정 표시기 떼 클러스터를 만듭니다

# 고정 표시기 떼 INIT --listen-ADDR 0.0.0.0 
스웜 초기화 : 현재 노드 (a1tno675d14sm6bqlc512vf10)는 이제 매니저이다. 
이 무리에 근로자를 추가하려면, 다음 명령을 실행 : 
    고정 표시기 떼가 --token SWMTKN-1-3sp9uxzokgr252u1jauoowv74930s7f8f5tsmm5mlk5oim359e-dk52k5uul50w49gbq4j1y7zzb 192.168.139.175:2377 가입 
이 떼에 관리자를 추가 '고정 표시기 떼에 가입 토큰 관리자'를 실행하고 따르 지시 사항.

2. 노드

# 고정 표시기 노드 LS 
ID의 HOSTNAME 상태 가용성 관리자의 상태 
a1tno675d14sm6bqlc512vf10 * swarm01 준비 활동 리더

3, 클러스터 관리자 명령에 추가 된 관리 노드를 참조

# 고정 표시기 떼 가입 토큰 매니저를 
,이 무리에 관리자를 추가하려면 다음 명령을 실행 : 
    고정 표시기 떼가 --token SWMTKN-1-3sp9uxzokgr252u1jauoowv74930s7f8f5tsmm5mlk5oim359e-7tdlpdnkyfl1bnq34ftik9wxw 192.168.139.175:2377 가입

4, 클러스터 노드 명령 근로자으로 추가하기

# 고정 표시기 떼 가입 토큰 노동자를 
,이 무리에 근로자를 추가하려면 다음 명령을 실행 : 
    고정 표시기 떼가 --token SWMTKN-1-3sp9uxzokgr252u1jauoowv74930s7f8f5tsmm5mlk5oim359e-dk52k5uul50w49gbq4j1y7zzb 가입 192.168.139.175:2377

5, 전면이 개 작업자 노드가 클러스터 플랜에 가입

# 고정 표시기 떼가 --token SWMTKN-1-3sp9uxzokgr252u1jauoowv74930s7f8f5tsmm5mlk5oim359e-dk52k5uul50w49gbq4j1y7zzb 192.168.139.175:2377에게 가입 
이 노드는 노동자로 떼에 합류했다.

6, 노동자가 클러스터 노드에 가입 여부를 확인합니다

# 고정 표시기 노드 LS 
ID의 HOSTNAME 상태 가용성 관리자 상태는 
7zkbqgrjlsn8c09l3fagtfwre swarm02 준비 활동               
a1tno675d14sm6bqlc512vf10 * swarm01 준비 활동 리더 
apy9zys2ch4dlwbmgdqwc0pn3는 활성 준비 swarm03

7, 네트워크 관리의 고정 표시기 떼를 참조

# 고정 표시기 네트워크 LS의 
네트워크 ID 이름 드라이버의 범위 
브리지 다리 지역 05efca714d2f 
c9cd9c37edd7 docker_gwbridge 브리지 지역 
10ac9e48d81b 호스트 로컬 호스트하지 
n60tdenc5jy7 유입 오버레이 떼에게 
지역 널 a9284277dc18 아무도

여기에서, 고정 표시기 떼 클러스터는 더 나은 구축

넷째, UI-Portainer의 고정 표시기 떼를 구축

Portainer 주소 : HTTPS : //portainer.io/.

1, Portainer를 배포하려면이 명령을 사용하여

# 고정 표시기 서비스를 만들 \ 
--name portainer \ 
--publish 9000 : 9000 \ 
--constraint 'node.role == 매니저'\ 
--mount 유형 = 바인드, SRC = // var에 / 실행 / docker.sock, DST = /var/run/docker.sock \ 
portainer / portainer \ 
-H 유닉스 : ///var/run/docker.sock 
# 고정 표시기 이미지 | 그렙 portainer 
portainer / portainer 최신 07cde96d4789 2 주 전 10.4MB의 
# 고정 표시기 서비스 LS ###查看集群列表
ID 명칭 MODE IMAGE 복제본의 PORTS 
p5bo3n0fmqgz portainer 복제 1/1 portainer / portainer : 최신 * 9000-> 9000 / TCP

이 배포 음

2 브라우저 입력에 http : // 로컬 호스트 : 9000 입사 UI 인터페이스, 도시 된 바와 같이, 제 Portainer, 8 자리 패스워드 관리의 구성에

"검증"검증의 암호를 클릭 편집 후

아래 관리 Portainer 상기 입력 사용자 이름과 암호를 도시 한 바와 같이

홈 다음

떼 노드 모듈을 확인

나는 당겨 곳 여기, 이미지 모듈 거울을 당길 수 의 nginx를

서비스 모듈의 nginx 서비스에서 만든, 서비스> 드디어 세 개의 사본을 작성하고 포트 80을지도하고, 서비스를 추가 서비스 만들기 "서비스 만들기"를 클릭

성공적으로 생성 있는지 확인하기 위해 서비스 목록을 새로 고침

3, 명령 확인을 사용

# docker images | grep nginxnginx   latest    b8efb18f159b     7 days ago     107MB
# ansible node -m shell -a 'docker images|grep nginx'
192.168.139.177 | SUCCESS | rc=0 >>
nginx   latest    b8efb18f159b     8 days ago     107MB
192.168.139.176 | SUCCESS | rc=0 >>
nginx   latest    b8efb18f159b     8 days ago     107MB
# docker service ls        ###查看服务的任务列表
ID             NAME     MODE     REPLICAS   IMAGE        PORTS
emrs3rj73bwh  Nginx  replicated   3/3    nginx:latest  *:80->80/tcp
p5bo3n0fmqgz  portainer  replicated  1/1  portainer/portainer:latest   *:9000->9000/tcp
# docker service ps Nginx  
ID                  NAME                IMAGE               NODE         
0smpndfx0bwc        Nginx.1             nginx:latest        swarm03      
werrrzlyfbf1        Nginx.2             nginx:latest        swarm01   
l7puro0787cj        Nginx.3             nginx:latest        swarm02 

DESIRED STATE       CURRENT STATE          ERROR               PORTS      
Running          Running 15 minutes ago                                   
Running          Running 15 minutes ago                                  
Running          Running 15 minutes ago

五、搭建docker swarm的UI—Shipyard

Shipyard的UI也是比较简单的,但是比较反复,它需要在每个节点都pull相应镜像才能加入Shipyard的UI。

1、先pull相应镜像到本地,这里我使用的是网易蜂巢的镜像,很快而且镜像也是比较新的

# docker pull hub.c.163.com/library/alpine:latest
# docker pull hub.c.163.com/library/rethinkdb:latest
# docker pull hub.c.163.com/longjuxu/microbox/etcd:latest
# docker pull hub.c.163.com/wangjiaen/shipyard/docker.io/shipyard/docker-proxy:latest
# docker pull hub.c.163.com/library/swarm:latest
# docker pull hub.c.163.com/wangjiaen/shipyard/docker.io/shipyard/shipyard:latest

2、给这些镜像新建一个tag标签

# docker tag 7328f6f8b418 alpine
# docker tag 4a511141860c rethinkdb
# docker tag 6aef84b9ec5a microbox/etcd 
# docker tag cfee14e5d6f2 shipyard/docker-proxy
# docker tag 0198d9ac25d1 swarm
# docker tag 36fb3dc0907d shipyard/shipyard

3、使用如下命令搭建Shipyard的UI

# curl -sSL https://shipyard-project.com/deploy | bash -s
Deploying Shipyard
 -> Starting Database
 -> Starting Discovery
 -> Starting Cert Volume
 -> Starting Proxy
 -> Starting Swarm Manager
 -> Starting Swarm Agent
 -> Starting Controller
Waiting for Shipyard on 192.168.139.175:8080
..
Shipyard available at http://192.168.139.175:8080
Username: admin Password: shipyard

4、根据提示输入http://localhost:8080,输入用户名admin,密码shipyard进入shipyard

5、进入shipyard首页容器界面

6、进入nodes模块查看,这里现在只有manager节点

7、在worker节点上pull并tag镜像,即是重复如上的第①和第②步,之后,在该worker节点上输入如下命令将其加入shipyard

# curl -sSL https://shipyard-project.com/deploy | ACTION=node DISCOVERY=etcd://192.168.139.175:4001 bash -s 
Adding Node
 -> Starting Cert Volume
 -> Starting Proxy
 -> Starting Swarm Manager
 -> Starting Swarm Agent
Node added to Swarm: 192.168.139.176

其他节点同理。

对比两种UI,其实都是比较简单的,个人认为Portainer较好,在manager节点pull一个镜像即可搭建UI。

问题:

  • manager:

# docker swarm init --advertise-addr 192.168.139.175
  • worker:

# docker swarm join --token SWMTKN-1-4dwtfbdvjmuf3limglbpy66k85ply2cn66hd0ugsaxfed5fj1d-3rp33pedt9k7ewpfizbzc9bvi 192.168.139.175:2377
Error response from daemon: Timeout was reached before node was joined. The attempt to join the swarm will continue in the background. Use the "docker info" command to see the current swarm status of your node.

出现worker节点无法加入集群的问题,这里需要设置监听地址全零。

本文出自https://www.centos.bz/2017/08/docker-swarm-cluster-shipyard-ui-manager/

추천

출처www.cnblogs.com/webenh/p/11331409.html