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의 전반적인 기능과 구조를 정리해봤습니다. 👨💻
반응형
'네트워크 > 클라우드' 카테고리의 다른 글
🧾 Kubernetes YAML 예제 실습 모음 (0) | 2025.05.23 |
---|---|
📦 Kubernetes(K8s) 클러스터 구성과 CNI, YAML 완전 정리 (0) | 2025.05.23 |
🐳 Docker 이미지 태그와 리소스 할당 완벽 정리 (1) | 2025.05.19 |
🐳 Docker와 연동 기술 완전 정리 (이벤트, Dockerfile, Node.js, Flask 등) (1) | 2025.05.16 |
🐳 Docker 이미지와 컨테이너 관리 개념 정리 (1) | 2025.05.14 |