스웜에 노드 조인하기

스웜에 노드 조인하기

스웜을 처음 만들면 Docker Engine 하나만 Swarm 모드로 동작해요. Swarm 모드의 진짜 장점을 살리려면 노드를 추가해야 하는데, 워커 노드와 매니저 노드를 추가하는 방법과 각각의 역할을 차근차근 알아볼게요. 노드를 조인할 때는 docker swarm join 명령에 조인 토큰(join-token) 을 함께 넘겨줘요. 이 토큰은 조인하는 그 순간에만 사용되고, 나중에 토큰을 바꿔도 이미 조인된 노드에는 영향이 없답니다. 자세한 내용은 Swarm 모드에서 Docker Engine 실행 문서를 참고하세요.

출처: 공식문서

본문

워커 노드로 조인하기

워커 노드를 추가하면 스웜의 처리 용량이 늘어나요. 서비스를 배포하면 스케줄러는 워커 노드든 매니저 노드든 사용 가능한 노드에 태스크를 배정하죠. 워커를 추가하면 매니저 노드들의 Raft 합의에 영향을 주지 않으면서도 스케일을 키울 수 있어서 아주 유용해요.

매니저 노드에서 아래 명령을 실행하면 워커 노드용 조인 명령과 토큰을 확인할 수 있어요.

$ docker swarm join-token worker

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

 docker swarm join \
 --token SWMTKN-1-49nj1cmql0jkz5s954yi3oex3nedyz0fb0xx14ie39trti4wxv-8vxv8rssmk743ojnwacrr2e7c \
 192.168.99.100:2377

워커로 조인할 노드에서 출력된 명령을 그대로 실행하면 스웜에 합류하게 돼요.

$ docker swarm join \
 --token SWMTKN-1-49nj1cmql0jkz5s954yi3oex3nedyz0fb0xx14ie39trti4wxv-8vxv8rssmk743ojnwacrr2e7c \
 192.168.99.100:2377

This node joined a swarm as a worker.

docker swarm join 명령은 다음 작업을 수행해요.

  • 현재 노드의 Docker Engine을 Swarm 모드로 전환해요.
  • 매니저로부터 TLS 인증서를 요청해요.
  • 노드 이름을 머신의 호스트네임으로 지정해요.
  • 스웜 토큰을 기준으로 매니저의 수신 주소에 현재 노드를 조인해요.
  • 현재 노드를 Active 상태로 설정해서 스케줄러가 태스크를 받을 수 있게 해요.
  • ingress 오버레이 네트워크를 현재 노드로 확장해요.

매니저 노드로 조인하기

docker swarm join 명령에 매니저 토큰을 넘기면 워커와 마찬가지로 Swarm 모드로 전환돼요. 매니저 노드는 추가로 Raft 합의에도 참여한답니다. 새로 조인한 노드는 Reachable 상태가 되지만, 기존 매니저가 계속 스웜의 Leader 역할을 맡아요.

고가용성을 위해 Docker는 클러스터당 매니저 노드를 3개 또는 5개로 구성하길 권장해요. Swarm 모드의 매니저 노드는 Raft로 데이터를 공유하기 때문에 매니저 수는 반드시 홀수여야 해요. 전체 매니저 중 절반을 초과하는 쿼럼(quorum)이 확보되면 스웜은 계속 정상 동작할 수 있어요.

스웜 매니저 관리에 대한 더 자세한 내용은 Docker Engine 스웜 관리 및 유지보수 문서를 확인해 보세요.

매니저 노드용 조인 명령과 토큰을 확인하려면 매니저 노드에서 아래 명령을 실행해요.

$ docker swarm join-token manager

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

 docker swarm join \
 --token SWMTKN-1-61ztec5kyafptydic6jfc1i33t37flcl4nuipzcusor96k7kby-5vy9t8u35tuqm7vh67lrz9xp6 \
 192.168.99.100:2377

새 매니저 노드에서 출력된 명령을 실행하면 스웜에 매니저로 조인돼요.

$ docker swarm join \
 --token SWMTKN-1-61ztec5kyafptydic6jfc1i33t37flcl4nuipzcusor96k7kby-5vy9t8u35tuqm7vh67lrz9xp6 \
 192.168.99.100:2377

This node joined a swarm as a manager.

더 알아보기 (Learn more)