단일 노드 환경에서 도커를 운영하면 설정은 간편하지만 분명한 한계가 있다.
특정 노드의 하드웨어(CPU, RAM, HDD) 자원이 고갈되거나 노드 자체가 다운될 경우, 해당 노드에서 실행 중인 모든 컨테이너 서비스가 중단되기 때문이다.
이러한 단일 장애점(SPOF, Single Point of Failure) 문제를 해결하고 서비스의 지속성을 보장하기 위해 여러 대의 서버를 하나의 자원 풀로 묶어 관리하는 기술이 필요하다.
도커 스웜(Docker Swarm)은 이를 가능하게 하는 대표적인 컨테이너 오케스트레이션 도구이다.
1. 도커 스웜의 핵심 개념과 구조
도커 스웜은 여러 대의 도커 호스트를 하나의 가상 호스트로 추상화하여 관리한다.
이를 클러스터(Cluster)라고 부르며, 구성 요소는 크게 매니저 노드와 워커 노드로 나뉜다.
노드 구성 및 역할
- 매니저 노드(Manager Node): 클러스터의 상태를 관리하고 워커 노드에 태스크(Task)를 할당한다. 워커 노드의 역할도 겸할 수 있다.
- 워커 노드(Worker Node): 매니저 노드로부터 할당받은 컨테이너(태스크)를 실제로 실행하고 유지하는 역할을 한다.
- 태스크(Task): 스웜 클러스터에서 실행되는 최소 단위로, 하나 이상의 컨테이너를 포함한다. (Kubernetes의 Pod와 유사한 개념)
도커 스웜의 주요 기능과 특징
- 고가용성(High Availability): 특정 노드가 다운되면 해당 노드에서 실행 중이던 태스크를 다른 가동 중인 노드로 자동 이전(Failover)한다.
- 로드 밸런싱(Load Balancing): 서비스 요청을 여러 컨테이너에 균등하게 분산하여 부하를 관리한다.
- 병렬 확장(Scaling): 필요에 따라 컨테이너 수를 자유롭게 늘리거나 줄일 수 있다.
- 상태 유지(Self-healing): 지정된 컨테이너 복제본(Replica) 수를 항상 유지하도록 모니터링하고 관리한다.
2. 도커 스웜 클러스터 구축 단계
1️⃣ 매니저 노드 초기화
가장 먼저 클러스터의 중심이 될 매니저 노드를 설정한다.
초기 상태에서 도커 스웜 모드는 비활성화되어 있다.
# 스웜 모드 상태 확인
docker info | grep Swarm
Swarm: inactive
# 매니저 노드 초기화 및 외부 노출 IP 설정
docker swarm init --advertise-addr 192.168.***.***
- docker swarm init 명령어는 현재 노드를 매니저 노드로 선출하고 클러스터를 생성한다.
- --advertise-addr 옵션은 다른 노드들이 해당 매니저 노드에 접근할 수 있도록 매니저노드의 IP 주소를 명시하는 역할을 한다.
- 초기화가 완료되면 다른 워커 노드가 클러스터에 합류할 때 필요한 Join Token이 생성된다. 이 토큰은 워커노드에서 클러스터에 합류할 때 보안 인증을 위해 필요하다.

2️⃣워커 노드 환경 구성 및 합류
클러스터에 참여할 슬레이브 노드들에 도커 엔진을 설치하고 매니저 노드에 연결한다.
# 슬레이브 노드에 도커 설치 (snap 이용 예시)
snap install docker
# 워커 노드로 클러스터 참여
docker swarm join --token <TOKEN_VALUE> 192.168.100.***:2377
- 동작 원리: docker swarm join 명령어를 통해 워커 노드는 매니저 노드의 2377번 포트로 접속을 시도한다. 이때 전달된 토큰이 매니저가 발행한 것과 일치하면 클러스터의 구성원으로 승인된다.
- 네트워크 구성: * 2377/tcp: 클러스터 관리 통신용 포트
- 7946/tcp, 7946/udp: 노드 간 컨테이너 네트워크 통신 및 탐색용 포트
3️⃣ 클러스터 상태 확인
매니저 노드에서 현재 구성된 전체 클러스터 노드 현황을 확인한다.
docker node ls
실행 결과:

ID 옆에 *표시가 있는 노드가 현재 명령어를 내리는 로컬 노드이며, MANAGER STATUS가 Leader인 노드가 클러스터의 총괄 관리자임을 의미한다.
모든 노드의 STATUS가 Ready이고 AVAILABILITY가 Active여야 정상적인 서비스 배포가 가능하다.
3. 쿼럼(Quorum)과 분산 관리
도커 스웜의 안정적인 운영을 위해서는 쿼럼(Quorum) 개념을 이해해야 한다.
스웜 매니저는 클러스터의 일관성을 유지하기 위해 Raft 알고리즘을 사용하며, 의사 결정 시 매니저 노드들 사이에서 과반수의 동의가 필요하다.
매니저 노드 구성 전략
- 홀수 구성의: 쿼럼을 유지하기 위해 매니저 노드는 보통 홀수(3, 5, 7...)로 구성한다. 예를 들어 매니저가 3대일 경우, 1대가 고장 나도 나머지 2대(과반수)가 동작하므로 시스템이 유지된다.
- 부하 분산: 매니저는 컨테이너를 특정 노드에 몰아넣지 않고, 각 노드의 자원 상태에 맞춰 자동으로 분산 실행한다.
클러스터 통신 흐름
다음은 매니저 노드와 워커 노드 간의 통신 및 클러스터 형성 과정을 나타낸 시퀀스 다이어그램이다.

'AI Journey > 클라우드' 카테고리의 다른 글
| [Docker Swarm] 컨테이너 및 노드 장애 복구 메커니즘 (0) | 2026.01.15 |
|---|---|
| [Docker Swarm] 서비스와 레플리카, 스케일링 및 글로벌 모드 이해하기 (0) | 2026.01.14 |
| [Docker] 도커 환경에서 FTP 서버 구축하기 (Pure-FTPd) (0) | 2026.01.13 |
| [Docker] Nginx 로그를 Fluentd를 통해 MongoDB에 저장하기 (중앙 집중형 로그 관리) (0) | 2026.01.12 |
| [k8s] NestJS 앱을 도커라이징해서 Pod로 띄우기 (0) | 2026.01.11 |