도커 떼 기본 작업이 배포에서

도커 떼 소개

도커 스웜은 두 부분으로 구성되어 있습니다 :

  1. 도커 클러스터 : 하나 개 이상의 노드는 사용자가 클러스터에서 관리 할 수있는, 고정 표시기를 조직;
  2. 응용 프로그램 안무 : 배포하고 컨테이너를 관리하는 데 사용되는 API의 집합;

공식 정보 : HTTPS : //docs.docker.com/swarm/

네트워크 다이어그램

그림은 부두 노동자의 공식 웹 사이트에서, 일반 부두 노동자 떼 클러스터 구축도 :
여기에 그림 삽입 설명
도커 떼 클러스터를 건설 할 계획에 빛나는 다음.

준비

전투는 다섯 기계, 동일한 구성 정보를 모두 다음과 같이 총을 사용합니다 :

  1. 운영 체제 : CentOS는 리눅스 1810년 6월 7일을 해제
  2. 도커 서비스 버전 : 1.13.1
  3. 방화벽은 폐쇄되었다;

다음 표에서 기계 정보 :
| 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)을 보장 뗏목 일치 알고리즘을 이용하여 상기 관리 노드 클러스터의 내부 관리 배위 본 공식지도 :

  1. 분할 뇌를 줄이는 데 도움이 배포 홀수 관리 노드;
  2. 더 많은 관리 노드가와 합의에 도달하기 위해 많은 시간을 소요한다는 것을 의미하기 때문에, 너무 많은 관리 노드를 배포하지 마십시오

소개 클러스터 단계를 배포하는 방법

전체 프로세스의 다음 전개는 다음과 같은 단계로 나뉘어집니다 :

  1. 제 관리 단말 (M0)를 초기화하는 단계;
  2. 새 관리 노드 (M1을 M2) 추가;
  3. 노드 추가 작업 (W0, W1);

그런 다음 시작;

첫 번째 관리 노드 (M0)를 초기화

  1. 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/

  1. 다음과 같이 콘솔이 성공적으로 초기화 떼 클러스터를 나타내는 정보를 반환 :
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.
  1. 모든 클러스터 노드가 현재 떼에 나열되어 있습니다, 당신은 고유 한 노드 M0의 상태 및 ID를 볼 수 있습니다
[root@m0 ~]# docker node ls
ID                           HOSTNAME  STATUS  AVAILABILITY  MANAGER STATUS
7585zt09o2sat82maef0ocf42 *  m0        Ready   Active        Leader

이제 클러스터가 설립되었습니다, 우리는 이상의 관리 노드와 노동자 노드를 추가해야합니다;

어떻게 새 노드를 추가하려면?

  1. 부두 노동자 떼의 전략은 새로운 노드가 관리 노드에서 명령의 긴 목록을 조인 취득하는 것입니다라고 조인 토큰, 한 그들은이 운집 클러스터에 가입 할 토큰에 가입 수행 할 때 기계의 클러스터에 가입하고자하는 사람;
  2. 새 관리 노드를 추가해야하는 경우 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
  1. 실행 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

  1. 관리 노드 (M1)의 구현에 만들어진 전면 토큰에 가입 :
[root@m1 ~]# docker swarm join \
>     --token SWMTKN-1-5huefb5501cv7p8i2op1am2oevasoqu4te8vpvapndkudvszb4-5tz9d4w7nwzu8r4ozd0ff2aiu \
>     192.168.121.142:2377
This node joined a swarm as a manager.
  1. M2를에 동일한 작업을 수행;
  2. 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 가입

  1. W0 이전에 얻은 노드의 구현은 토큰에 가입 :
[root@w0 ~]# docker swarm join \
>     --token SWMTKN-1-5huefb5501cv7p8i2op1am2oevasoqu4te8vpvapndkudvszb4-e8l6755jstd7urpdo5smyi8fv \
>     192.168.121.142:2377
This node joined a swarm as a worker.
  1. W1에서 동일한 작업을 수행;
  2. 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

지금까지 설정 떼 클러스터 환경이 완료되면 다음을 확인할 수 있습니다.

떼 클러스터 환경을 확인

  1. 그들은 서로를 방문 할 수 있습니다, 호스트가 동일하지 않은 경우에도 네트워크의 고정 표시기 컨테이너에 바람둥이 그물 오버레이 네트워크 (오버레이 Netowork)라는 이름의 파일이 레이어 2 네트워크입니다 만들기 :
docker network create -d overlay tomcat-net
  1. 방금 만든 오버레이 네트워크를 사용 바람둥이라는 서비스를 만듭니다
docker service create --name tomcat \
--network tomcat-net \
-p 8080:8080 \
--replicas 3 \
tomcat:7.0.96-jdk8-openjdk
  1. 실행 고정 표시기 서비스 LS는 현재의 모든 서비스보기 :
[root@m0 ~]# docker service ls
ID            NAME    MODE        REPLICAS  IMAGE
kguawc4b5th4  tomcat  replicated  3/3       tomcat:7.0.96-jdk8-openjdk
  1. 실행 고정 표시기 서비스 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
  1. 실행 고정 표시기 서비스는 검사 --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
  1. 성공적으로 바람둥이 홈 페이지에 액세스 할 수 있습니다 브라우저를 열고 8080 다섯 개 기계 (W1), M0, M1, M2, W0에 액세스하려고 :
    여기에 그림 삽입 설명

    서비스 모델

  2. 이 개 서비스 모델이 있습니다 : 지정되지 않은 경우 수신 및 호스트, 기본 그레스입니다;
  3. 침투 모드에서 포트 8080 트래픽이 80 포트 매핑됩니다 해당 노드에서 바람둥이 서비스의 어떤 사본이없는 경우에도 서비스의 내부 사본에 매핑, 군단에게 모든 노드에 도달;
  4. 호스트 모드 만 개방 용기의 복사본과 시스템의 작동에 포트는 다음과 같이 호스트 모드 명령을 사용하여
docker service create --name tomcat \
--network tomcat-net \
--publish published=8080,target=8080,mode=host \
--replicas 3 \
tomcat:7.0.96-jdk8-openjdk

서비스 확장 용량

  1. 실행 고정 표시기 서비스 규모 바람둥이 = 5는 3 ~ 5에서 매수를 조정합니다 :
[root@m0 ~]# docker service scale tomcat=5
tomcat scaled to 5
  1. 실행 고정 표시기 서비스 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

롤링 업그레이드

  1. 현재 서비스 바람둥이, 바람둥이 미러 태그는 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 초 동안 컨테이너를 나타냅니다 후, 등을 업그레이드 할 경우 다음 업그레이드;

  1. 업그레이드 프로세스 중에 명령을 실행 고정 표시기 서비스 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
  1. 업그레이드가 완료되면 서비스에 액세스하는 브라우저를 사용, 눈에 보이는 바람둥이 버전이 업그레이드되었습니다 :
    여기에 그림 삽입 설명

    서비스 삭제

    실행 고정 표시기 서비스 RM 바람둥이는 서비스를 제거합니다 :
[root@m0 ~]# docker service rm tomcat
tomcat
[root@m0 ~]# docker service ls
ID  NAME  MODE  REPLICAS  IMAGE

지금까지 기본적인 작업에서 부두 노동자 스웜은 당신이 환경을 설정하려는 경우,이 문서가 당신에게 참조를 제공합니다 한 번 경험을 배치하고있다.

추천

출처www.cnblogs.com/bolingcavalry/p/11516368.html