1. 개요
<Docker 가상 환경 구축 입문>의 <Chapter 9-6. 글로벌 모드와 레플리카 모드>를 읽고 정리한 내용으로,
Docker Swarm 서비스 생성 시의 레플리카 모드와 글로벌 모드에 대한 설명입니다.
2. 글로벌 모드와 레플리카 모드
- 레플리카 모드는 서비스 생성 시 디폴트로 지정되는 모드이며, --replicas에 지정한 수대로 태스크를 생성하는 모드.
- 글로벌 모드는 한 노드에 하나의 태스크를 할당하는 모드.
-
레플리카 모드에서는 노드 수보다 많거나 적은 수의 태스크를 자유롭게 생성할 수 있는 것과 달리,
글로벌 모드에서는 레플리카 수를 지정할 수 없고, 자동적으로 각 노드에 하나의 태스크가 할당되어 컨테이너를 기동하게 됨. - 대표적인 예시로, 모니터링 에이전트 컨테이너를 노드마다 하나씩 동작시키고 싶을 때는 글로벌 모드를 사용하는 것이 적절함.
3. 글로벌 모드로 서비스를 생성하는 예제
- 레플리카 모드로 서비스를 생성하는 것은 이전 글에서도 소개했기 때문에, 글로벌 모드로 생성하는 예제만 소개함.
-
글로벌 모드로 서비스 생성하는 예제 (--mode global 옵션 사용)
$ docker service create --name globalweb --mode global nginx c30azeyviguue2jumldi2fvsb overall progress: 3 out of 3 tasks x0bh1ydgpb0e: running [==================================================>] jh8kbkd0bdhc: running [==================================================>] qqv1l08a8rol: running [==================================================>] verify: Service converged $ docker service ps globalweb ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS bensqfqnj9du globalweb.x0bh1ydgpb0ezgs9y214r73v7 nginx:latest manager1 Running Running 16 seconds ago kiq7v6l107sr globalweb.jh8kbkd0bdhcm96qmkrek8xbt nginx:latest worker2 Running Running 16 seconds ago lbtyo37eunlr globalweb.qqv1l08a8rol9d0cp2y8bs6dt nginx:latest worker1 Running Running 16 seconds ago
- 자동적으로 노드 개수와 동일하게 태스크가 생성됨.
- 서비스 생성 후에 태스크의 상태를 보면, 각 노드에 태스크가 Running 상태로 확인됨.
- 레플리카 수를 지정하지 않고 각 노드에 각 한개씩의 컨테이너를 실행하고자 할 때에는 글로벌 모드를 사용하는 것이 편리함.