docker node promote 명령어를 사용하여 워커 노드 승격 방법

DockerBeginner
지금 연습하기

소개

이 랩에서는 Docker Swarm 에서 워커 노드를 매니저 노드로 승격하는 방법을 배우게 됩니다. LabEx VM 에서 Docker Swarm 을 초기화하고 워커 노드를 이에 가입시키는 것으로 시작합니다.

설정 후, 스웜 내에서 워커 노드를 식별한 다음, docker node promote 명령을 사용하여 역할을 매니저로 변경합니다. 마지막으로, 노드의 새로운 역할을 확인하여 승격이 성공했는지 확인합니다. 이 실습을 통해 Docker Swarm 관리의 핵심 측면을 시연할 것입니다.

Docker Swarm 초기화

이 단계에서는 LabEx VM 에서 Docker Swarm 을 초기화합니다. Docker Swarm 은 스웜 모드에서 실행되는 Docker 호스트의 클러스터입니다. 스웜 모드를 사용하면 Docker 노드 클러스터를 단일 가상 시스템으로 관리할 수 있습니다.

스웜을 초기화하기 전에, VM 에 설치된 현재 Docker 버전을 확인해 보겠습니다.

docker version

다음과 유사한 출력이 표시되어 Docker 버전이 20.10.21 임을 나타냅니다.

Client: Docker Engine - Community
 Version:           20.10.21
 API version:       1.41
 Go version:        go1.18.9
 Git commit:        baeda1f
 Built:             Tue Oct 25 18:01:18 2022
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.21
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.18.9
  Git commit:       363bd3a
  Built:            Tue Oct 25 17:59:35 2022
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.10
  GitCommit:        b4bd5d2bb63a5d10182b7e90689158e7c7b9b06b
 runc:
  Version:          1.1.4
  GitCommit:        v1.1.4-0-g5fd4c4d
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

이제 Docker Swarm 을 초기화해 보겠습니다. 스웜을 초기화하면 현재 노드가 첫 번째 매니저 노드가 됩니다. 매니저 노드는 스웜 상태 유지, 서비스 스케줄링, 스웜 모드 API 제공과 같은 스웜 관리 작업을 처리합니다.

docker swarm init 명령을 사용하여 스웜을 초기화합니다. 다른 노드가 VM 의 IP 주소를 사용하여 스웜에 가입할 수 있도록 광고 주소를 지정합니다. YOUR_VM_IP_ADDRESS를 LabEx VM 의 실제 IP 주소로 바꿉니다. 이 IP 주소는 LabEx 환경 세부 정보에서 찾을 수 있습니다.

docker swarm init --advertise-addr YOUR_VM_IP_ADDRESS

명령을 실행하면 스웜이 초기화되었음을 나타내는 출력과 다른 노드가 워커로 스웜에 가입하기 위한 명령이 표시됩니다. 다음 단계에서 필요하므로 이 가입 명령을 잘 보관하십시오.

Swarm initialized: current node (xxxxxxxxxxxx) is now a manager.

To add a worker to this swarm, run the following command on the worker node:

    docker swarm join --token SWMTKN-1-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxx YOUR_VM_IP_ADDRESS:2377

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

워커 노드를 스웜에 조인

이전 단계에서 Docker Swarm 을 초기화했으며 현재 노드가 매니저가 되었습니다. 이제 이 스웜에 워커 노드를 추가하는 것을 시뮬레이션합니다. 실제 시나리오에서는 워커로 가입하려는 별도의 머신에서 이 단계를 수행합니다. 그러나 이 랩에서는 동일한 VM 을 사용하여 워커 노드가 스웜에 가입하는 것을 시뮬레이션합니다.

노드를 워커로 가입하려면 스웜을 초기화한 후 제공된 가입 명령이 필요합니다. 이 명령에는 스웜 가입 토큰과 매니저 노드의 IP 주소 및 포트가 포함됩니다.

이전 단계에서 가입 명령이 없는 경우, docker swarm join-token worker 명령을 사용하여 매니저 노드에서 검색할 수 있습니다.

docker swarm join-token worker

이 명령은 워커 노드에 대한 가입 명령을 출력합니다.

To add a worker to this swarm, run the following command on the worker node:

    docker swarm join --token SWMTKN-1-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxx YOUR_VM_IP_ADDRESS:2377

이제 얻은 가입 명령을 실행합니다. 동일한 VM 에서 워커를 시뮬레이션하므로 동일한 터미널에서 이 명령을 실행합니다.

docker swarm join --token SWMTKN-1-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxx YOUR_VM_IP_ADDRESS:2377

노드가 워커로 스웜에 가입했음을 나타내는 출력이 표시됩니다.

This node joined a swarm as a worker.

이는 단일 VM 이 이제 스웜 내에서 매니저 및 워커 노드 역할을 모두 수행하고 있음을 의미합니다.

스웜 노드 목록 확인 및 워커 노드 식별

이전 단계에서 Docker Swarm 을 초기화한 다음 동일한 노드를 워커로 스웜에 가입했습니다. 이제 스웜의 노드를 나열하여 현재 상태를 확인하고 각 노드의 역할을 식별해 보겠습니다.

스웜의 노드를 나열하려면 docker node ls 명령을 사용합니다. 이 명령은 ID, 호스트 이름, 상태, 가용성, 매니저 상태 및 버전을 포함하여 스웜의 각 노드에 대한 정보를 제공합니다.

docker node ls

다음과 유사한 출력이 표시됩니다.

ID                            HOSTNAME            STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
xxxxxxxxxxxx                  labex-vm            Ready     Active         Leader           20.10.21
yyyyyyyyyyyy                  labex-vm            Ready     Active                          20.10.21

이 출력에서 호스트 이름이 labex-vm인 두 개의 항목을 볼 수 있습니다. 이는 단일 VM 이 스웜에서 두 개의 노드 (하나의 매니저와 하나의 워커) 역할을 하기 때문입니다.

  • MANAGER STATUSLeader인 노드는 첫 번째 단계에서 초기화한 매니저 노드입니다.
  • MANAGER STATUS가 나열되지 않은 노드는 두 번째 단계에서 가입한 워커 노드입니다.

워커 노드의 ID를 기록해 두십시오. 다음 단계에서 이를 매니저로 승격하는 데 이 ID 가 필요합니다. ID 는 스웜의 각 노드에 대한 고유 식별자입니다.

워커 노드를 매니저로 승격

이전 단계에서 스웜의 노드를 나열하고 MANAGER STATUS가 없는 워커 노드를 ID 로 식별했습니다. 이제 이 워커 노드를 매니저 노드로 승격합니다. 워커 노드를 매니저로 승격하면 스웜의 매니저 노드 수가 증가하며, 이는 프로덕션 환경에서 고가용성 및 내결함성을 위해 중요합니다.

노드를 승격하려면 docker node promote 명령을 사용하고 승격하려는 노드의 ID 를 입력합니다. 이전 단계에서 워커 노드의 ID 를 얻었습니다.

WORKER_NODE_ID를 실제 워커 노드의 ID 로 바꿉니다.

docker node promote WORKER_NODE_ID

명령을 실행한 후 노드가 승격되었음을 확인하는 출력이 표시됩니다.

Node WORKER_NODE_ID was promoted to a manager.

이는 이전에 워커였던 노드가 이제 스웜에서도 매니저 노드임을 나타냅니다. 이제 스웜에는 두 개의 매니저 노드가 있습니다 (이 시뮬레이션 환경에서는 모두 동일한 물리적 VM 에서 실행되지만).

노드의 새로운 역할 확인

이전 단계에서 워커 노드를 매니저로 승격했습니다. 이제 스웜의 노드를 다시 나열하여 노드의 역할이 성공적으로 업데이트되었는지 확인해 보겠습니다.

docker node ls 명령을 사용하여 노드를 나열합니다.

docker node ls

이번에는 다음과 유사한 출력이 표시됩니다.

ID                            HOSTNAME            STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
xxxxxxxxxxxx                  labex-vm            Ready     Active         Leader           20.10.21
yyyyyyyyyyyy                  labex-vm            Ready     Active         Reachable        20.10.21

이전에 MANAGER STATUS 없이 나열되었던 노드가 이제 MANAGER STATUS 아래에 Reachable을 표시하는 것을 확인하십시오. 이는 노드가 성공적으로 승격되었으며 이제 스웜에서 매니저 노드로 인식됨을 확인합니다. Leader 상태의 노드는 기본 매니저이고, Reachable 상태의 노드는 보조 매니저입니다.

스웜에 여러 매니저 노드가 있으면 중복성을 제공합니다. 리더 매니저 노드를 사용할 수 없게 되면 다른 매니저 노드가 해당 역할을 맡아 스웜의 지속적인 운영을 보장할 수 있습니다.

요약

이 랩에서는 단일 노드에서 Docker Swarm 을 초기화하여 첫 번째 매니저로 만드는 방법을 배웠습니다. 그런 다음 이 스웜에 워커 노드를 조인하여 클러스터를 확장하는 연습을 했습니다. 이 랩에서는 스웜 노드를 나열하여 새로 추가된 워커를 식별하는 과정을 안내했습니다. 마지막으로, docker node promote 명령을 사용하여 워커 노드를 매니저 노드로 승격하는 핵심 작업을 수행하고 성공적인 역할 변경을 확인했습니다.