본문 바로가기
Docker

Docker와 클라우드 통합 / Docker Swarm: 클러스터링 및 오케스트레이션

by Maccrey Coding 2024. 9. 13.
반응형

Docker Swarm은 Docker의 클러스터링 및 오케스트레이션 도구로, 여러 Docker 호스트를 하나의 가상 서버처럼 관리할 수 있게 해줍니다.

클러스터링과 오케스트레이션을 통해 애플리케이션을 효율적으로 배포하고, 관리하고, 확장할 수 있습니다.

이 블로그 포스트에서는 Docker Swarm을 사용하여 클러스터링 및 오케스트레이션을 설정하는 방법을 초보자도 쉽게 이해할 수 있도록 설명하겠습니다.

1. Docker Swarm이란?

Docker Swarm은 여러 Docker 엔진을 클러스터로 묶어 단일한 가상 호스트처럼 관리할 수 있게 해주는 Docker의 기본 오케스트레이션 도구입니다.

이를 통해 애플리케이션을 여러 호스트에 걸쳐 배포하고, 자동으로 스케일링하며, 장애 복구를 자동으로 수행할 수 있습니다.

2. Docker Swarm의 주요 개념

  • 클러스터: 여러 Docker 호스트(노드)로 구성된 그룹입니다. Swarm 모드에서는 이 클러스터를 단일의 가상 서버처럼 사용할 수 있습니다.
  • 노드(Node): 클러스터를 구성하는 개별 Docker 호스트입니다. 노드는 매니저 노드와 워커 노드로 구분됩니다.
    • 매니저 노드: 클러스터의 상태를 관리하고, 서비스를 배포하며, 작업을 스케줄링합니다.
    • 워커 노드: 매니저 노드에서 배포한 작업을 실행합니다.
  • 서비스(Service): Docker Swarm에서 실행되는 애플리케이션의 논리적 단위입니다. 하나 이상의 컨테이너 인스턴스로 구성됩니다.
  • 태스크(Task): 서비스의 개별 인스턴스입니다. 각 태스크는 하나의 컨테이너를 실행합니다.

3. Docker Swarm 클러스터 설정하기

3.1. Docker Swarm 초기화

1. Docker 설치: 모든 노드에 Docker가 설치되어 있어야 합니다. Docker 설치 가이드를 참고하세요.

2. Swarm 클러스터 초기화: 매니저 노드에서 Swarm 클러스터를 초기화합니다.

docker swarm init --advertise-addr <매니저_노드_IP>

 

이 명령어를 실행하면 매니저 노드가 Swarm 클러스터의 리더가 되며, 워커 노드가 클러스터에 조인할 수 있는 토큰이 제공됩니다.

 

3. 워커 노드 조인: 워커 노드에서 아래 명령어를 실행하여 클러스터에 조인합니다. (매니저 노드에서 제공한 명령어를 사용합니다.)

docker swarm join --token <토큰> <매니저_노드_IP>:2377

 

3.2. 서비스 배포하기

1. 서비스 생성: 매니저 노드에서 Docker 서비스를 생성합니다.

docker service create --name my-service --replicas 3 -p 80:80 nginx

 

이 명령어는 nginx 이미지를 사용하여 3개의 복제본(컨테이너)을 실행하는 my-service라는 서비스를 생성합니다. 포트 80을 외부와 연결합니다.

 

2. 서비스 상태 확인: 서비스의 상태를 확인합니다.

docker service ls
docker service ps my-service

 

 

이 명령어는 nginx 이미지를 최신 버전으로 업데이트합니다.

 

3. 서비스 제거: 더 이상 필요 없는 서비스는 제거할 수 있습니다.

docker service rm my-service

 

4. Docker Swarm의 장점

  • 자동 스케일링: 필요한 경우 컨테이너 인스턴스를 자동으로 추가하거나 제거하여 애플리케이션을 스케일링할 수 있습니다.
  • 장애 복구: 컨테이너나 노드가 실패하면 Docker Swarm이 자동으로 복구 작업을 수행합니다.
  • 로드 밸런싱: 클러스터 내의 여러 노드에서 요청을 분산 처리하여 부하를 균등하게 분산할 수 있습니다.

5. 실습 예제

단계 1: 매니저 노드 설정

docker swarm init --advertise-addr 192.168.1.100

 

단계 2: 워커 노드 조인

docker swarm join --token SWMTKN-1-5zx5v65rg7y2fl6k7fcgr30y5y3rm7xh6u3rxdxg3v5b6k5b1x6ca1ydq7b8b 192.168.1.100:2377

 

단계 3: 서비스 배포

docker service create --name webapp --replicas 3 -p 8080:80 nginx

 

단계 4: 서비스 상태 확인

docker service ls
docker service ps webapp

 

Docker Swarm은 클러스터링과 오케스트레이션을 통해 여러 Docker 호스트를 효율적으로 관리할 수 있게 해주는 강력한 도구입니다.

이 블로그 포스트에서는 Docker Swarm을 사용하여 클러스터를 설정하고 서비스를 배포하는 방법을 설명했습니다.

Docker Swarm을 활용하여 애플리케이션을 보다 쉽게 배포하고 관리해 보세요!

구독!! 공감과 댓글은 저에게 큰 힘이 됩니다.

Starting Google Play App Distribution! "Tester Share" for Recruiting 20 Testers for a Closed Test.

 

Tester Share [테스터쉐어] - Google Play 앱

Tester Share로 Google Play 앱 등록을 단순화하세요.

play.google.com

반응형