도커 떼 소개
도커 스웜은 두 부분으로 구성되어 있습니다 :
- 도커 클러스터 : 하나 개 이상의 노드는 사용자가 클러스터에서 관리 할 수있는, 고정 표시기를 조직;
- 응용 프로그램 안무 : 배포하고 컨테이너를 관리하는 데 사용되는 API의 집합;
공식 정보 : HTTPS : //docs.docker.com/swarm/
네트워크 다이어그램
그림은 부두 노동자의 공식 웹 사이트에서, 일반 부두 노동자 떼 클러스터 구축도 :
도커 떼 클러스터를 건설 할 계획에 빛나는 다음.
준비
전투는 다섯 기계, 동일한 구성 정보를 모두 다음과 같이 총을 사용합니다 :
- 운영 체제 : CentOS는 리눅스 1810년 6월 7일을 해제
- 도커 서비스 버전 : 1.13.1
- 방화벽은 폐쇄되었다;
다음 표에서 기계 정보 :
| IP 주소 | 호스트 이름 | 정체성 |
| - | - | - |
| 192.168.121.142 | M0 | 관리 노드 |
| 192.168.121.139 | M1 | 관리 노드 |
| 192.168. 121.140 | m2 | 관리 노드 |
| 192.168.121.141 | W0 | 작업자 노드 |
| 192.168.121.138 | W1 | 작업자 노드 |
이유는 세 개의 관리 노드?
일반적으로 다음의 두 가지 원칙을 참조되며, 따라서 관리 단말 고 가용성 (HA)을 보장 뗏목 일치 알고리즘을 이용하여 상기 관리 노드 클러스터의 내부 관리 배위 본 공식지도 :
- 분할 뇌를 줄이는 데 도움이 배포 홀수 관리 노드;
- 더 많은 관리 노드가와 합의에 도달하기 위해 많은 시간을 소요한다는 것을 의미하기 때문에, 너무 많은 관리 노드를 배포하지 마십시오
소개 클러스터 단계를 배포하는 방법
전체 프로세스의 다음 전개는 다음과 같은 단계로 나뉘어집니다 :
- 제 관리 단말 (M0)를 초기화하는 단계;
- 새 관리 노드 (M1을 M2) 추가;
- 노드 추가 작업 (W0, W1);
그런 다음 시작;
첫 번째 관리 노드 (M0)를 초기화
- M0 노드 IP 주소는 192.168.121.142 , 따라서 M0 노드에서 다음 명령을 실행합니다 :
docker swarm init \
--advertise-addr 192.168.121.142:2377
--listen-addr 192.168.121.142:2377
소개 전자는 트래픽 IP와 포트 베어러 지정 떼 M0에 연결된 다른 노드의 주소를 지정하는 데 사용됩니다, 요지 - 광고 및 청취 요지 이러한 두 개의 매개 변수를, 그들은 더 상세하고 깊이있는 차이는 문서를 참조 할 수 있습니다은 https : / /boxboat.com/2016/08/17/whats-docker-swarm-advertise-addr/
- 다음과 같이 콘솔이 성공적으로 초기화 떼 클러스터를 나타내는 정보를 반환 :
Swarm initialized: current node (7585zt09o2sat82maef0ocf42) is now a manager.
To add a worker to this swarm, run the following command:
docker swarm join \
--token SWMTKN-1-5huefb5501cv7p8i2op1am2oevasoqu4te8vpvapndkudvszb4-e8l6755jstd7urpdo5smyi8fv \
192.168.121.142:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
- 모든 클러스터 노드가 현재 떼에 나열되어 있습니다, 당신은 고유 한 노드 M0의 상태 및 ID를 볼 수 있습니다
[root@m0 ~]# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
7585zt09o2sat82maef0ocf42 * m0 Ready Active Leader
이제 클러스터가 설립되었습니다, 우리는 이상의 관리 노드와 노동자 노드를 추가해야합니다;
어떻게 새 노드를 추가하려면?
- 부두 노동자 떼의 전략은 새로운 노드가 관리 노드에서 명령의 긴 목록을 조인 취득하는 것입니다라고 조인 토큰, 한 그들은이 운집 클러스터에 가입 할 토큰에 가입 수행 할 때 기계의 클러스터에 가입하고자하는 사람;
- 새 관리 노드를 추가해야하는 경우 M0 실행 고정 표시기 떼 가입 토큰 관리자 토큰 관리 노드에 가입 얻기 위해, 다음과 같이 :
[root@m0 ~]# docker swarm join-token manager
To add a manager to this swarm, run the following command:
docker swarm join \
--token SWMTKN-1-5huefb5501cv7p8i2op1am2oevasoqu4te8vpvapndkudvszb4-5tz9d4w7nwzu8r4ozd0ff2aiu \
192.168.121.142:2377
- 실행 M0에서 새로운 작업 노드를 추가가 필요한 경우 고정 표시기 떼에 가입 토큰 노동자 얻기 위해 다음과 같이 작업 노드는 토큰에 가입 :
[root@m0 ~]# docker swarm join-token worker
To add a worker to this swarm, run the following command:
docker swarm join \
--token SWMTKN-1-5huefb5501cv7p8i2op1am2oevasoqu4te8vpvapndkudvszb4-e8l6755jstd7urpdo5smyi8fv \
192.168.121.142:2377
두 종류는 새로운 노드를 추가하기 시작, 토큰 준비가 가입 할 수 있습니다.
추가 관리 노드 M1, M2
- 관리 노드 (M1)의 구현에 만들어진 전면 토큰에 가입 :
[root@m1 ~]# docker swarm join \
> --token SWMTKN-1-5huefb5501cv7p8i2op1am2oevasoqu4te8vpvapndkudvszb4-5tz9d4w7nwzu8r4ozd0ff2aiu \
> 192.168.121.142:2377
This node joined a swarm as a manager.
- M2를에 동일한 작업을 수행;
- M0, M1, Renyiyitai 명령 m2에서 실행 고정 표시기 노드 (LS)은 다음과 같이 스웜 클러스터의 상태를보고, 우리는 세 관리 노드는 정상 상태이다 볼 수 ID 필드는 별표 접미사 표시는 시스템은 명령을 실행하는 것을 나타낸다 M1 :
[root@m1 ~]# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
0isfyre69mdu1hm11esf1q3dk m2 Ready Active Reachable
7585zt09o2sat82maef0ocf42 m0 Ready Active Leader
slc0hjbs7jh2hdi8ai3wohy23 * m1 Ready Active Reachable
W1, 작업 노드 W0 가입
- W0 이전에 얻은 노드의 구현은 토큰에 가입 :
[root@w0 ~]# docker swarm join \
> --token SWMTKN-1-5huefb5501cv7p8i2op1am2oevasoqu4te8vpvapndkudvszb4-e8l6755jstd7urpdo5smyi8fv \
> 192.168.121.142:2377
This node joined a swarm as a worker.
- W1에서 동일한 작업을 수행;
- M0, M1, M2에서 명령을 실행하는 Renyiyitai 고정 표시기 노드 LS 상태보기 떼 클러스터 노드 모든 준비가 볼 일이 :
[root@m0 ~]# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
0isfyre69mdu1hm11esf1q3dk m2 Ready Active Reachable
7585zt09o2sat82maef0ocf42 * m0 Ready Active Leader
i71bcxt1auc804syybroajtan w1 Ready Active
slc0hjbs7jh2hdi8ai3wohy23 m1 Ready Active Reachable
wqcwcccva3d3mxgi5p423d4fv w0 Ready Active
지금까지 설정 떼 클러스터 환경이 완료되면 다음을 확인할 수 있습니다.
떼 클러스터 환경을 확인
- 그들은 서로를 방문 할 수 있습니다, 호스트가 동일하지 않은 경우에도 네트워크의 고정 표시기 컨테이너에 바람둥이 그물 오버레이 네트워크 (오버레이 Netowork)라는 이름의 파일이 레이어 2 네트워크입니다 만들기 :
docker network create -d overlay tomcat-net
- 방금 만든 오버레이 네트워크를 사용 바람둥이라는 서비스를 만듭니다
docker service create --name tomcat \
--network tomcat-net \
-p 8080:8080 \
--replicas 3 \
tomcat:7.0.96-jdk8-openjdk
- 실행 고정 표시기 서비스 LS는 현재의 모든 서비스보기 :
[root@m0 ~]# docker service ls
ID NAME MODE REPLICAS IMAGE
kguawc4b5th4 tomcat replicated 3/3 tomcat:7.0.96-jdk8-openjdk
- 실행 고정 표시기 서비스 PS 바람둥이의 세 가지 용기를 보여주는 바람둥이라고보기 서비스는, M0, M2, W1 기계에 배포했다 :
[root@m0 ~]# docker service ps tomcat
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
n1gs9f1plce2 tomcat.1 tomcat:7.0.96-jdk8-openjdk w1 Running Running 19 minutes ago
q8jyg088ci21 tomcat.2 tomcat:7.0.96-jdk8-openjdk m2 Running Running 19 minutes ago
h9ww33dpw56m tomcat.3 tomcat:7.0.96-jdk8-openjdk m0 Running Running 19 minutes ago
- 실행 고정 표시기 서비스는 검사 --pretty 바람둥이 세부 정보보기 바람둥이라는 이름의 서비스 (더 완전한를 볼 수 있습니다 --pretty 제거) :
[root@m0 ~]# docker service inspect --pretty tomcat
ID: kguawc4b5th4qlwlsv183qtai
Name: tomcat
Service Mode: Replicated
Replicas: 3
Placement:
UpdateConfig:
Parallelism: 1
On failure: pause
Max failure ratio: 0
ContainerSpec:
Image: tomcat:7.0.96-jdk8-openjdk@sha256:91eadffb59d9a35ada2d39fcd616a749ac580aa5e834499b7128f27be2e46623
Resources:
Networks: tomcat-net
Endpoint Mode: vip
Ports:
PublishedPort 8080
Protocol = tcp
TargetPort = 8080
성공적으로 바람둥이 홈 페이지에 액세스 할 수 있습니다 브라우저를 열고 8080 다섯 개 기계 (W1), M0, M1, M2, W0에 액세스하려고 :
서비스 모델
- 이 개 서비스 모델이 있습니다 : 지정되지 않은 경우 수신 및 호스트, 기본 그레스입니다;
- 침투 모드에서 포트 8080 트래픽이 80 포트 매핑됩니다 해당 노드에서 바람둥이 서비스의 어떤 사본이없는 경우에도 서비스의 내부 사본에 매핑, 군단에게 모든 노드에 도달;
- 호스트 모드 만 개방 용기의 복사본과 시스템의 작동에 포트는 다음과 같이 호스트 모드 명령을 사용하여
docker service create --name tomcat \
--network tomcat-net \
--publish published=8080,target=8080,mode=host \
--replicas 3 \
tomcat:7.0.96-jdk8-openjdk
서비스 확장 용량
- 실행 고정 표시기 서비스 규모 바람둥이 = 5는 3 ~ 5에서 매수를 조정합니다 :
[root@m0 ~]# docker service scale tomcat=5
tomcat scaled to 5
- 실행 고정 표시기 서비스 PS 바람둥이의 보기 서비스는 각 기계 컨테이너의 분포를 보여, 바람둥이라고 :
[root@m0 ~]# docker service ps tomcat
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
w32tjahze2fk tomcat.1 tomcat:7.0.96-jdk8-openjdk m2 Running Running 42 minutes ago
yj5czwwhrrsh tomcat.2 tomcat:7.0.96-jdk8-openjdk m0 Running Running 42 minutes ago
pq40995nbd0k tomcat.3 tomcat:7.0.96-jdk8-openjdk w1 Running Running 42 minutes ago
y1y6z1jczel1 tomcat.4 tomcat:7.0.96-jdk8-openjdk m1 Running Running about a minute ago
w0dcii8f79os tomcat.5 tomcat:7.0.96-jdk8-openjdk w0 Running Running about a minute ago
롤링 업그레이드
- 현재 서비스 바람둥이, 바람둥이 미러 태그는 7.0.96-jdk8 - 오픈 JDK는 , 이제 업그레이드하려고하자 9.0.24-jdk11-오픈 JDK , 다음 명령을 실행합니다 :
docker service update \
--image tomcat:9.0.24-jdk11-openjdk \
--update-parallelism 1 \
--update-delay 10s tomcat
위의 명령은 여러 가지가 있습니다 주목해야한다 :
. Update를-병렬 : 각 업데이트는,이 1로 설정되어 용기의 수는, 다음으로 업그레이드하기 위해 각 성공적으로 업그레이드 한 후 컨테이너를 나타냅니다;
. B 업데이트 지연 : 각 배치 업그레이드는 업그레이드 전에 시간의 다음 배치를 기다리고, 성공 후 10 초 동안 컨테이너를 나타냅니다 후, 등을 업그레이드 할 경우 다음 업그레이드;
- 업그레이드 프로세스 중에 명령을 실행 고정 표시기 서비스 PS 바람둥이 하나가 컨테이너 하나의 새 버전을 시작하는 과정을 볼 수있는 서비스를 참조하십시오
[root@m0 ~]# docker service ps tomcat
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
w32tjahze2fk tomcat.1 tomcat:7.0.96-jdk8-openjdk m2 Running Running 56 minutes ago
yj5czwwhrrsh tomcat.2 tomcat:7.0.96-jdk8-openjdk m0 Running Running 56 minutes ago
semuna9awsn7 tomcat.3 tomcat:9.0.24-jdk11-openjdk w1 Running Running 15 seconds ago
pq40995nbd0k \_ tomcat.3 tomcat:7.0.96-jdk8-openjdk w1 Shutdown Shutdown about a minute ago
y1y6z1jczel1 tomcat.4 tomcat:7.0.96-jdk8-openjdk m1 Running Running 15 minutes ago
oot3yex74v4t tomcat.5 tomcat:9.0.24-jdk11-openjdk w0 Running Preparing 5 seconds ago
w0dcii8f79os \_ tomcat.5 tomcat:7.0.96-jdk8-openjdk w0 Shutdown Shutdown 3 seconds ago
업그레이드가 완료되면 서비스에 액세스하는 브라우저를 사용, 눈에 보이는 바람둥이 버전이 업그레이드되었습니다 :
서비스 삭제
실행 고정 표시기 서비스 RM 바람둥이는 서비스를 제거합니다 :
[root@m0 ~]# docker service rm tomcat
tomcat
[root@m0 ~]# docker service ls
ID NAME MODE REPLICAS IMAGE
지금까지 기본적인 작업에서 부두 노동자 스웜은 당신이 환경을 설정하려는 경우,이 문서가 당신에게 참조를 제공합니다 한 번 경험을 배치하고있다.