1. 개요
<Docker 가상 환경 구축 입문>의 <Chapter 9-2. Swarm 클러스터 생성>을 읽고 정리한 내용으로,
Docker Swarm Cluster를 생성하는 방법에 대해 설명합니다.
2. Swarm Cluster 생성
-
Swarm Cluster를 구성할 가상 머신 생성
$ docker-machine create manager1 $ docker-machine create worker1 $ docker-machine create worker2 $ eval $(docker-machine env manager1) $ docker info ... Plugins: Volume: local Network: bridge host macvlan null overlay Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog Swarm: inactive Runtimes: runc ...
- 1대의 매니저와 2대의 워커로 구성된 Swarm cluster를 구성하는 예제.
- 장애 상황에 대비하여 매니저 노드를 여러개 두는 경우도 있음.
- 가상 머신을 생성한 후 정보를 조회하면, Swarm 항목이 inactive로 표시됨. 아직 Swarm 모드로 동작되지 않고 있음을 의미.
-
Swarm 모드에서 사용되는 포트 정보
- 클러스터 관리용 통신 포트: TCP 2377번
- 노드 간 통신용 포트: TCP/UDP 7946번
- 오버레이 네트워크 트래픽 용 포트: UDP 4789번
-
마스터 노드 지정
$ docker swarm init --advertise-addr [manager IP] Swarm initialized: current node (x0bh1ydgpb0ezgs9y214r73v7) is now a manager. To add a worker to this swarm, run the following command: docker swarm join --token SWMTKN-1-05v077o0g81nleb2nke8keln344mibndspmhzd9iyxdx2ma7u6-9resx3209i7kresxjezlu2fcg [manager IP]:2377 To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
- --advertise-addr 옵션은 다른 노드와 통신 가능한 IP 주소, 즉 manager IP를 지정함.
- 위 명령을 수행하면 Swarm이 초기화되고 Swarm 모드가 active 상태로 전환됨.
- docker swarm init 명령을 실행한 호스트는 자동적으로 매니저 노드가 됨.
-
워커 노드 추가
$ docker swarm join-token worker $ eval $(docker-machine env worker1) $ docker swarm join --token SWMTKN-1-05v077o0g81nleb2nke8keln344mibndspmhzd9iyxdx2ma7u6-9resx3209i7kresxjezlu2fcg [manager IP]:2377 $ eval $(docker-machine env worker2) $ docker swarm join --token SWMTKN-1-05v077o0g81nleb2nke8keln344mibndspmhzd9iyxdx2ma7u6-9resx3209i7kresxjezlu2fcg [manager IP]:2377 $ eval $(docker-machine env manager1) $ docker node ls ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION x0bh1ydgpb0ezgs9y214r73v7 * manager1 Ready Active Leader 18.09.9 qqv1l08a8rol9d0cp2y8bs6dt worker1 Ready Active 18.09.9 jh8kbkd0bdhcm96qmkrek8xbt worker2 Ready Active 18.09.9
- docker swarm join 명령은 swarm cluster에 노드를 추가할 때 사용함.
- 매니저 노드가 발행한 token을 사용해야 노드로 추가할 수 있음.
- docker swarm join-token worker: 워커 노드 추가 / docker swarm join-token manager: 여러대의 매니저 노드를 사용할 경우, 매니저 노드 추가
- 매니저 노드의 경우 MANAGER STATUS에 Leader로 표시됨.
- 관리 기능을 하는 명령어는 매니저 노드에서만 수행 가능하므로 환경을 매니저 노드로 변경한 후(eval) 수행해야 함.