본문 바로가기
네트워크/클라우드

🐳 Docker Swarm 완전정복: 실습과 개념 총정리

by Mostlove 2025. 5. 20.
728x90
반응형

📌 왜 Docker Swarm인가?

문제점 Docker Swarm의 해결 방식
단일 노드 자원 한계 여러 노드로 자원 병렬 확장
컨테이너 장애 자동 재시작 및 복구
노드 장애 서비스 자동 이전(고가용성)
수작업 배포 스케쥴링 및 로드밸런싱 자동화

🧠 Swarm 기본 구조 (Swarm Mode)

Swarm은 두 가지 노드 타입으로 구성됩니다.

  • Manager Node: 전체 클러스터를 제어. quorum(과반수) 유지 필수.
  • Worker Node: 실제 컨테이너가 배치되어 동작하는 노드.

⛳ Hadoop의 NameNode / DataNode 구조와 유사
⚠ 매니저 노드는 홀수로 구성하는 것이 안정적입니다.

🛠 Swarm 구성 및 관리 명령어

# Swarm 초기화
docker swarm init

# 워커 노드 조인
docker swarm join --token <worker_token> <manager_ip>:2377

# 매니저 노드 조인
docker swarm join-token manager

# 워커 노드 → 매니저 승격
docker node promote <노드명>

# 매니저 → 워커 강등
docker node demote <노드명>

# 워커 노드 제거
docker node rm <노드명>

🧱 Service, Task, Replica, Global

Swarm에서 컨테이너는 Task, 컨테이너 집합은 Service로 관리됩니다.

  • Service: 하나의 논리 단위로 여러 컨테이너(Task)를 묶어 관리
  • Task: 하나의 실행 중인 컨테이너
  • Replica: Task의 수량. 항상 동일 개수를 유지
  • Global: 각 노드마다 반드시 1개씩 실행

예시

# 리플리카 3개 생성
docker service create --name myweb --replicas 3 nginx

# 동적으로 리플리카 확장
docker service scale myweb=9

# Global 모드로 실행 (각 노드 1개씩)
docker service create --name log_agent --mode global alpine

🔄 Rolling Update & Rollback

Swarm은 실행 중인 컨테이너도 **순차적으로 업데이트(rolling update)**가 가능하며, 문제가 생기면 **되돌리기(rollback)**도 가능합니다.

# 이미지 버전 업데이트
docker service update --image ubuntu:18.04 myservice

# 되돌리기
docker service rollback myservice

🔐 Secret & Config

Swarm에서는 컨테이너 내부로 민감 정보나 설정 파일을 안전하게 전달할 수 있습니다.

기능 용도
Secret 암호, 인증서, 비밀번호 등 민감 정보
Config Nginx 설정, 일반 설정 파일 등
# secret 생성
echo "my-secret" | docker secret create mysql_passwd -

# 서비스 생성 시 사용
docker service create --name mysql_sec \
--secret source=mysql_passwd,target=mysql_root_password \
-e MYSQL_ROOT_PASSWORD_FILE="/run/secrets/mysql_root_password" \
mysql:5.7

🌐 Swarm 네트워크 구성

Swarm은 노드 간 컨테이너를 연결하기 위한 다양한 가상 네트워크를 제공합니다.

네트워크  종류 설명
bridge 기본 가상 네트워크 (단일 호스트용)
host 호스트 네트워크 사용
overlay 여러 노드 간 네트워크 연결
ingress 외부에서 들어오는 요청을 받아 서비스에 전달
docker_gwbridge 게이트웨이 역할 수행

Overlay & Ingress

  • overlay: Swarm 노드 간 IP 통신을 위한 네트워크
  • ingress: 외부 접근 시 라운드 로빈 방식으로 로드밸런싱
# 네트워크 확인
docker network ls

❗ Kubernetes에서는 Ingress를 명시적으로 정의해야 하지만
Swarm에서는 자동 생성됩니다.


✅ 장애 복구 (High Availability)

장애 상황 Swarm의 대응 방식
컨테이너 오류 자동 재생성 (리플리카 수 유지)
노드 장애 컨테이너를 다른 노드에 자동 재배포

📦 네트워크 풀 개념 정리

  • 동일한 서비스를 여러 컨테이너로 구성할 때, 이 컨테이너들을 하나의 네트워크 풀로 묶어야 함
  • 외부에서는 어느 노드에 접속해도 동일한 서비스에 접근 가능

🧩 Kubernetes와의 비교

개념 Docker Swarm Kubernetes
컨테이너 단위 Task Pod
설정 전달 Secret, Config Secret, ConfigMap
서비스 관리 Service + Replicas Deployment, ReplicaSet
네트워크 overlay, ingress CNI, Ingress Controller
업데이트 방식 Rolling update, rollback 동일
구조 manager / worker master / node

이상으로 Docker Swarm의 전반적인 기능과 구조를 정리해봤습니다. 👨‍💻



 

반응형