Docker Swarm 클러스터에 작업자 노드 추가하는 방법

DockerBeginner
지금 연습하기

소개

이 튜토리얼에서는 Docker Swarm 클러스터에 작업자 노드를 추가하는 방법을 안내합니다. 이 문서를 마치면 Docker Swarm 환경을 설정하고 관리하는 방법과 컨테이너화된 애플리케이션을 확장하기 위해 클러스터에 새로운 노드를 원활하게 추가하는 방법을 이해하게 될 것입니다.

Docker Swarm 소개

Docker Swarm 은 Docker 컨테이너를 위한 기본적인 클러스터링 및 오케스트레이션 솔루션입니다. 여러 Docker 호스트를 관리하고 애플리케이션을 이들 호스트에 배포하여 고가용성, 로드 밸런싱 및 확장성을 제공합니다.

Docker Swarm 이란 무엇인가요?

Docker Swarm 은 Docker Engine 의 내장 기능으로 여러 Docker 호스트를 하나의 가상 Docker 호스트로 클러스터링할 수 있도록 합니다. 이를 통해 여러 호스트에서 컨테이너화된 애플리케이션을 관리하고 확장하여 장애 허용성과 고가용성을 제공합니다.

Docker Swarm 의 주요 개념

  1. Swarm: Swarm 은 Docker Engine 을 실행하고 클러스터를 구성하기 위해 함께 연결된 여러 Docker 호스트 (물리적 또는 가상) 의 그룹입니다.
  2. 노드 (Node): 노드는 Swarm 의 일부인 단일 Docker 호스트입니다. 노드는 매니저 또는 작업자 노드일 수 있습니다.
  3. 매니저 노드 (Manager Node): 매니저 노드는 Swarm 의 상태를 관리하고 작업을 스케줄링하며 클러스터의 원하는 상태를 유지하는 역할을 합니다.
  4. 작업자 노드 (Worker Node): 작업자 노드는 매니저 노드의 지시에 따라 실제 컨테이너를 실행하는 역할을 합니다.
  5. 서비스 (Service): 서비스는 애플리케이션이 Swarm 에서 어떻게 배포 및 확장되어야 하는지 선언적으로 정의하는 방법입니다.
graph TD
    A[Docker 호스트] --> B[Docker 호스트]
    B[Docker 호스트] --> C[Docker 호스트]
    C[Docker 호스트] --> D[Docker 호스트]
    D[Docker 호스트] --> A[Docker 호스트]
    A --- E[매니저 노드]
    B --- F[작업자 노드]
    C --- G[작업자 노드]
    D --- H[작업자 노드]

Docker Swarm 의 장점

  • 고가용성: Docker Swarm 은 자동 로드 밸런싱 및 장애 복구를 제공하여 애플리케이션의 고가용성을 보장합니다.
  • 확장성: Swarm 에 노드를 추가하거나 제거하여 애플리케이션을 쉽게 확장하거나 축소할 수 있습니다.
  • 간편성: Docker Swarm 은 Docker Engine 의 내장 기능이므로 설정 및 관리가 용이합니다.
  • 통합: Docker Swarm 은 Docker Compose 및 Docker Registry 와 같은 다른 Docker 도구 및 서비스와 원활하게 통합됩니다.

Docker Swarm 클러스터 설정

필수 사항

Docker Swarm 클러스터를 설정하기 전에 다음 사항을 확인하세요.

  1. Docker Engine 이 설치된 Ubuntu 22.04 호스트 (물리적 또는 가상) 최소 2 대.
  2. 호스트에 대한 SSH 접근 권한.

단계 1: Swarm 초기화

호스트 중 하나에서 다음 명령어를 실행하여 Swarm 을 초기화합니다.

docker swarm init --advertise-addr <HOST_IP_ADDRESS>

<HOST_IP_ADDRESS>를 호스트의 IP 주소로 바꿉니다.

이 명령어는 다른 노드를 Swarm 에 추가하는 데 사용할 조인 토큰을 출력합니다.

단계 2: 작업자 노드 Swarm 에 추가

다른 호스트에서 이전 단계에서 제공된 명령어를 실행하여 작업자 노드로 Swarm 에 참여합니다.

docker swarm join --token <TOKEN> <HOST_IP_ADDRESS>:2377

<TOKEN>을 Swarm 초기화에서 제공된 토큰으로, <HOST_IP_ADDRESS>를 매니저 노드의 IP 주소로 바꿉니다.

단계 3: Swarm 확인

매니저 노드에서 다음 명령어를 실행하여 Swarm 의 노드를 확인합니다.

docker node ls

출력에는 매니저 노드와 작업자 노드가 표시되어야 합니다.

단계 4: 서비스 배포

Swarm 설정을 테스트하려면 간단한 서비스를 배포합니다.

docker service create --name nginx --publish 80:80 nginx

이렇게 하면 "nginx"라는 이름의 서비스가 생성되고 Swarm 전체에 배포됩니다.

graph TD
    A[매니저 노드] --> B[작업자 노드]
    B[작업자 노드] --> C[작업자 노드]
    C[작업자 노드] --> A[매니저 노드]
    A -- "docker swarm init" --> D[Swarm]
    B -- "docker swarm join" --> D[Swarm]
    C -- "docker swarm join" --> D[Swarm]
    D -- "docker service create" --> E[Nginx 서비스]

Swarm 에 작업자 노드 추가하기

필수 사항

작업자 노드를 Swarm 에 추가하기 전에 다음 사항을 확인하세요.

  1. 매니저 노드가 하나 이상 있는 실행 중인 Docker Swarm 클러스터.
  2. 작업자 노드로 추가할 호스트에 대한 SSH 접근 권한.

단계 1: 조인 명령어 가져오기

매니저 노드에서 다음 명령어를 실행하여 작업자 노드용 조인 명령어를 가져옵니다.

docker swarm join-token worker

다음과 유사한 명령어가 출력됩니다.

docker swarm join --token SWMTKN-1-49nj1cmql0jkz5s7p15g43pits9-8y0wywnrwwt7a4vox4vx9v68r 192.168.0.16:2377

단계 2: 작업자 노드로 Swarm 에 참여

작업자 노드로 추가할 호스트에서 이전 단계에서 가져온 명령어를 실행합니다.

docker swarm join --token SWMTKN-1-49nj1cmql0jkz5s7p15g43pits9-8y0wywnrwwt7a4vox4vx9v68r 192.168.0.16:2377

이렇게 하면 호스트가 작업자 노드로 Swarm 에 추가됩니다.

단계 3: 노드가 Swarm 에 추가되었는지 확인

매니저 노드에서 다음 명령어를 실행하여 Swarm 의 노드 목록을 확인합니다.

docker node ls

출력에 새 작업자 노드가 표시되어야 합니다.

graph TD
    A[매니저 노드] --> B[작업자 노드]
    B[작업자 노드] --> C[작업자 노드]
    C[작업자 노드] --> A[매니저 노드]
    A -- "docker swarm join-token worker" --> D[조인 명령어]
    B -- "docker swarm join" --> A[매니저 노드]

이러한 단계를 따르면 Docker Swarm 클러스터에 새로운 작업자 노드를 쉽게 추가하여 컨테이너화된 애플리케이션의 용량과 복원력을 확장할 수 있습니다.

요약

이 Docker 튜토리얼에서는 Docker Swarm 클러스터를 설정하고 작업자 노드를 추가하는 방법을 배웠습니다. Swarm 에 새로운 노드를 추가함으로써 Docker 기반 애플리케이션을 쉽게 확장하고 고가용성의 분산 환경을 구축할 수 있습니다. 이 가이드에서 얻은 지식을 통해 이제 성장하는 비즈니스 요구 사항을 충족하기 위해 Docker Swarm 인프라를 자신 있게 관리하고 확장할 수 있습니다.