Docker Swarm 클러스터 구성 및 관리 방법

DockerBeginner
지금 연습하기

소개

Docker Swarm 은 개발자가 여러 Docker 호스트를 통합되고 확장 가능한 인프라로 변환할 수 있는 강력한 컨테이너 오케스트레이션 솔루션입니다. 이 포괄적인 튜토리얼은 Docker Swarm 클러스터를 생성, 구성 및 관리하는 데 대한 심층적인 통찰력을 제공하며, 필수 개념, 노드 유형, 서비스 배포 전략 및 강력한 컨테이너화된 환경 구축을 위한 최상의 관행을 다룹니다.

Docker Swarm 기본 개념

Docker Swarm 소개

Docker Swarm 은 Docker 환경을 위한 네이티브 클러스터링 및 컨테이너 오케스트레이션 솔루션입니다. 개발자는 Docker 노드 클러스터를 생성 및 관리하여 여러 Docker 호스트를 하나의 가상 Docker 호스트로 변환할 수 있습니다.

핵심 개념

Swarm 클러스터 아키텍처

graph TD A[Swarm 매니저] --> B[워커 노드 1] A --> C[워커 노드 2] A --> D[워커 노드 3]

Swarm 노드 유형

노드 유형 설명 책임
매니저 노드 클러스터 상태를 제어 오케스트레이션, 스케줄링
워커 노드 컨테이너 작업을 실행 서비스 실행

Swarm 클러스터 초기화

## 기본 노드에서 Swarm 초기화
docker swarm init --advertise-addr 192.168.1.100

## 워커 노드 가입 토큰 생성
docker swarm join-token worker

## 워커 노드를 클러스터에 가입
docker swarm join --token < 토큰 > 192.168.1.100:2377

주요 기능

  • 분산 설계
  • 선언적 서비스 모델
  • 확장 및 롤링 업데이트
  • 서비스 검색
  • 로드 밸런싱
  • 보안 통신

서비스 배포 예제

## 복제된 서비스 생성
docker service create --replicas 3 --name web nginx

## 서비스 확장
docker service scale web=5

## 서비스 업데이트
docker service update --image nginx:latest web

클러스터 구성

Swarm 클러스터 토폴로지

graph TD A[매니저 노드] --> B[워커 노드 1] A --> C[워커 노드 2] A --> D[워커 노드 3]

노드 초기화 전략

매니저 노드 설정

## 기본 매니저에서 Swarm 클러스터 초기화
docker swarm init --advertise-addr 192.168.1.100

## 클러스터 가입 토큰 보기
docker swarm join-token manager
docker swarm join-token worker

워커 노드 구성

## 워커 노드를 클러스터에 가입
docker swarm join \
  --token SWMTKN-1-xxxxxxxxxxxxxxxxxxxxx \
  192.168.1.100:2377

클러스터 구성 매개변수

매개변수 설명 기본값
Advertise Address 노드의 네트워크 인터페이스 기본 IP
Listen Port Swarm 통신 포트 2377
Node Labels 노드 선택을 위한 메타데이터 없음

고급 클러스터 구성

## 사용자 정의 노드 레이블 추가
docker node update --label-add type=frontend worker1

## 노드 가용성 설정
docker node update --availability drain worker2

네트워크 구성

## 오버레이 네트워크 생성
docker network create \
  --driver overlay \
  --subnet 10.0.0.0/24 \
  my-network

서비스 관리

서비스 배포 워크플로우

graph LR A[서비스 생성] --> B[컨테이너 배포] B --> C[서비스 확장] C --> D[서비스 업데이트] D --> E[성능 모니터링]

기본 서비스 생성

## 3개의 복제본으로 nginx 서비스 배포
docker service create \
  --name web-service \
  --replicas 3 \
  --publish 80:80 \
  nginx:latest

서비스 구성 옵션

옵션 설명 예시
--replicas 컨테이너 인스턴스 수 3
--update-parallelism 동시 업데이트 수 2
--constraint 노드 배치 규칙 node.labels.type==frontend

서비스 확장 전략

## 동적으로 서비스 확장
docker service scale web-service=5

## 수평 확장
docker service update \
  --replicas-max-per-node 2 \
  web-service

로드 밸런싱 구성

## 사용자 지정 로드 밸런싱으로 서비스 생성
docker service create \
  --name api-service \
  --replicas 4 \
  --publish mode=host,target=8080,published=80 \
  --update-delay 10s \
  api-image:latest

서비스 업데이트 메커니즘

## 롤링 업데이트 전략
docker service update \
  --image nginx:latest \
  --update-parallelism 2 \
  --update-delay 10s \
  web-service

서비스 모니터링

## 활성 서비스 목록
docker service ls

## 특정 서비스 검사
docker service ps web-service

요약

Docker Swarm 을 마스터함으로써 개발자 및 시스템 관리자는 분산 시스템에서 컨테이너화된 애플리케이션을 효과적으로 관리할 수 있습니다. 이 튜토리얼은 클러스터 초기화, 노드 토폴로지 구성, 서비스 배포, 서비스 디스커버리, 로드 밸런싱 및 안전한 통신과 같은 고급 기능 활용을 위한 주요 기술을 보여줍니다. 이러한 기본 원리를 이해하면 팀은 확장 가능하고 강력한 컨테이너 인프라를 향상된 운영 효율성으로 구축할 수 있습니다.