🌱 Infra/Container_Docker Swarm

[docker-swarm (1)] 도커 스웜 구성, 맛보기!

mini_world 2020. 10. 26. 15:34

 

도커 스웜은 별도로 설치할 필요 없이, 도커 서버 자체만드로 도커 스웜 클러스터를 손쉽게 구성할 수 있습니다 ;)
도커 스웜모드를 제공하는지 확인하기 위해서는 Docker Version을 확인하여 1.12버전 이상인지 확인합니다. 


 

이번 실습에서는 Docker Swarm 클러스터를 구성하고 사용하는 실습을 진행합니다. 😁

도커 스웜은, 도커 컨테이너의 오케스트레이션 툴이라고 볼 수 있습니다.

https://docs.docker.com/engine/swarm/how-swarm-mode-works/nodes/

도커 스웜은 마스터 노드와 워커노드 이렇게 2개의 역할이 있으며, 매니저 역할의 노드는 반드시 1개 이상, 워커노드는 없을 수 있습니다.
매니저 역할을 하는 노드는 워커노드의 역할도 수행하기때문입니다.

위 그림은 3개의 Manager 노드와, 7대의 Worker 노드로 구성되어있지만, 이번 실습에서는 1개의 Manager 노드, 2개의 Worker 노드로 구성하여 실습을 진행하겠습니다.

실 사용환경에서는 반드시 3개이상의 Manager 노드를 설정해주세요 :)

실습은 아래의 순서로 진행됩니다.

  • Docker Swarm - Mamager 노드 설정
  • Docker Swarm - Worker #1, #2 노드 추가
  • Docker Swarm - 서비스 시작해보기 

 


 

Docker Swarm 실습 구성

이 그림과 같이 총 3개의 서버 자원을 사용하여, 1개는 Manager, 2개는 Worker로 구성해보도록 하겠습니다.
이 실습의 사전 조건은 반드시 1.12이상의 도커 데몬이 설치되어있는것입니다.
도커 설치가 되어있지 않다면 여기를 클릭하여 설치부터 합니다 :)

Docker Swarm - Mamager 노드 설정

먼저, Manager 노드에서 Swarm init을 실행합니다. 

[root@swarm-manager /]# docker swarm init
Swarm initialized: current node (nimv87d2pupej2uxxzthkugvx) is now a manager.

To add a worker to this swarm, run the following command:

    docker swarm join --token SWMTKN-1-23oim81yk3k1pd0ykpz4ezdnh22warxvrjaddtzjvdoqohu5zo-0nd5a0gpav8zp2rkbn45q00oq 172.31.13.191:2377

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

자! 이제 구성이 완료되었습니다!!! 이렇게 간단하게 구성이 끝났습니다!!! 🥳🥳
만약 Manager 노트에 네트워크 인터페이스가 여러개 존재한다면, 
어떤 IP를 쓸것인지 정한 후에 "docker swarm init --advertise-addr <Manager Node IP>" 명령어를 사용하면 됩니다.

Docker Swarm - Worker #1, #2 노드 추가

Manager 노드를 추가할때 출력됐던 내용중에 "docker swarm join~~" 부분을 복사하여 Worker Node에 붙여넣기 합니다!

먼저, Worker #1 노드에서 진행합니다.

[root@swarm-worker1 /]# docker swarm join --token SWMTKN-1-23oim81yk3k1pd0ykpz4ezdnh22warxvrjaddtzjvdoqohu5zo-0nd5a0gpav8zp2rkbn45q00oq 172.31.13.191:2377
This node joined a swarm as a worker.

이제, 두번째로 Worker #2 노드에서 진행합니다.

[root@swarm-worker2 /]# docker swarm join --token SWMTKN-1-23oim81yk3k1pd0ykpz4ezdnh22warxvrjaddtzjvdoqohu5zo-0nd5a0gpav8zp2rkbn45q00oq 172.31.13.191:2377
This node joined a swarm as a worker.

 

이렇게 두개의 노드가 추가되었습니다. 3개의 노드 모두 잘 운영중인지 확인해보겠습니다.

[root@swarm-manager /]# docker node ls
ID                            HOSTNAME            STATUS              AVAILABILITY        MANAGER STATUS      ENGINE VERSION
nimv87d2pupej2uxxzthkugvx *   swarm-manager       Ready               Active              Leader              19.03.13
c60u9g03hg4z1co9a6pitimmo     swarm-worker1       Ready               Active                                  19.03.13
r7vk73m3yi3nm0p3k11xfmf5e     swarm-worker2       Ready               Active                                  19.03.13

모두 Active 상태로 잘 운영중이네요.
여기에서 별표(*)가 붙은 노드가 현재 노드입니다.

추가적으로 :)
새로운 매니저 노드를 추가하거나, 새로운 워커 노드를 추가할때는 아래와 같은 명령어를 사용할 수 있습니다.

<!-- Manager Node 추가 -->
[root@swarm-manager /]# docker swarm join-token manager
To add a manager to this swarm, run the following command:

    docker swarm join --token SWMTKN-1-23oim81yk3k1pd0ykpz4ezdnh22warxvrjaddtzjvdoqohu5zo-bw42g26eho9dohi1nl2og0ur5 172.31.13.191:2377

<!-- Worker Node 추가 -->
[root@swarm-manager /]# docker swarm join-token worker
To add a worker to this swarm, run the following command:

    docker swarm join --token SWMTKN-1-23oim81yk3k1pd0ykpz4ezdnh22warxvrjaddtzjvdoqohu5zo-0nd5a0gpav8zp2rkbn45q00oq 172.31.13.191:2377
    

 

Docker Swarm - 서비스 시작해보기 

이번 단계에서는 도커 스웜에서 맛보기로 서비스를 시작해보겠습니다 :)

Docker Service 명령어를 이용해서 서비스를 생성하겠습니다.

[root@swarm-manager /]# docker service create --replicas 5 --name helloworld alpine ping docker.com
q6vjfrr3q7mqbwwb6ea7evfxc
overall progress: 5 out of 5 tasks 
1/5: running   [==================================================>] 
2/5: running   [==================================================>] 
3/5: running   [==================================================>] 
4/5: running   [==================================================>] 
5/5: running   [==================================================>] 
verify: Service converged

서비스 생성이 완료 되었는지 확인하겠습니다.  확인 명령어는 docker service ls (서비스 목록 확인), docker service ps <서미스명> (서비스 내 컨테이너 상태 확인) 입니다!

<!-- 도커 서비스 목록 확인 -->
[root@swarm-manager /]# docker service ls
ID                  NAME                MODE                REPLICAS            IMAGE               PORTS
q6vjfrr3q7mq        helloworld          replicated          5/5                 alpine:latest       

<!-- 도커 서비스의 컨테이너 상태 확인 -->
[root@swarm-manager /]# docker service ps helloworld
ID                  NAME                IMAGE               NODE                DESIRED STATE       CURRENT STATE                ERROR               PORTS
rqxf9vw6mwcj        helloworld.1        alpine:latest       swarm-worker1       Running             Running about a minute ago                       
ds9rj06j94f3        helloworld.2        alpine:latest       swarm-worker2       Running             Running about a minute ago                       
jrvq3yuq4wxk        helloworld.3        alpine:latest       swarm-manager       Running             Running about a minute ago                       
nqpnq5ewrdch        helloworld.4        alpine:latest       swarm-worker1       Running             Running about a minute ago                       
z904et43297e        helloworld.5        alpine:latest       swarm-manager       Running             Running about a minute ago      

 

자! 여기까지 맛보기였습니다!!

다음 스탭으로 갑시다 !!

728x90