Como usar o comando docker node promote para promover um nó worker

DockerBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá como elevar um nó de worker (trabalhador) a um nó manager (gerenciador) em um Docker Swarm. Você começará inicializando um Docker Swarm em uma VM do LabEx e juntando um nó worker a ele.

Após a configuração, você identificará o nó worker dentro do swarm e, em seguida, usará o comando docker node promote para alterar sua função para manager. Finalmente, você verificará a nova função do nó para confirmar se a promoção foi bem-sucedida. Este exercício prático demonstrará um aspecto fundamental do gerenciamento do Docker Swarm.

Inicializar um Docker Swarm

Nesta etapa, você inicializará um Docker Swarm em sua VM do LabEx. Um Docker Swarm é um cluster de hosts Docker que estão sendo executados no modo swarm. O modo swarm permite que você gerencie um cluster de nós Docker como um único sistema virtual.

Antes de inicializar o swarm, vamos verificar a versão atual do Docker instalada na VM.

docker version

Você deve ver uma saída semelhante a esta, indicando que a versão do 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

Agora, vamos inicializar o Docker Swarm. Quando você inicializa um swarm, o nó atual se torna o primeiro nó manager. Os nós manager lidam com tarefas de gerenciamento do swarm, como manter o estado do swarm, agendar serviços e servir a API do modo swarm.

Use o comando docker swarm init para inicializar o swarm. Especificaremos o endereço de anúncio para garantir que outros nós possam se juntar ao swarm usando o endereço IP da VM. Substitua YOUR_VM_IP_ADDRESS pelo endereço IP real da sua VM do LabEx. Você pode encontrar este endereço IP nos detalhes do ambiente do LabEx.

docker swarm init --advertise-addr YOUR_VM_IP_ADDRESS

Após executar o comando, você verá uma saída indicando que o swarm foi inicializado e fornecendo um comando para que outros nós se juntem ao swarm como workers. Mantenha este comando de junção à mão, pois você precisará dele na próxima etapa.

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.

Juntar um nó worker ao swarm

Na etapa anterior, você inicializou um Docker Swarm e o nó atual se tornou o manager. Agora, você simulará a adição de um nó worker a este swarm. Em um cenário do mundo real, você executaria esta etapa em uma máquina separada que deseja juntar como um worker. No entanto, para este laboratório, usaremos a mesma VM para simular um nó worker juntando-se ao swarm.

Para juntar um nó como worker, você precisa do comando de junção fornecido após a inicialização do swarm. Este comando inclui o token de junção do swarm e o endereço IP e a porta do nó manager.

Se você não tiver o comando de junção da etapa anterior, poderá recuperá-lo no nó manager usando o comando docker swarm join-token worker.

docker swarm join-token worker

Este comando exibirá o comando de junção para um nó 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

Agora, execute o comando de junção que você obteve. Como estamos simulando um worker na mesma VM, você executará este comando no mesmo terminal.

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

Você deve ver uma saída indicando que o nó se juntou ao swarm como um worker:

This node joined a swarm as a worker.

Isso significa que sua única VM agora está atuando como um nó manager e um nó worker dentro do swarm.

Listar nós do swarm e identificar o nó worker

Nas etapas anteriores, você inicializou um Docker Swarm e, em seguida, juntou o mesmo nó ao swarm como um worker. Agora, vamos listar os nós no swarm para ver o estado atual e identificar as funções de cada nó.

Para listar os nós no swarm, use o comando docker node ls. Este comando fornece informações sobre cada nó no swarm, incluindo seu ID, nome de host, status, disponibilidade, status do manager e versão.

docker node ls

Você deve ver uma saída semelhante a esta:

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

Nesta saída, você verá duas entradas, ambas com o nome de host labex-vm. Isso ocorre porque sua única VM está atuando como dois nós no swarm: um manager e um worker.

  • O nó com MANAGER STATUS como Leader é o nó manager que você inicializou na primeira etapa.
  • O nó sem um MANAGER STATUS listado é o nó worker que você juntou na segunda etapa.

Observe o ID do nó worker. Você precisará deste ID na próxima etapa para promovê-lo a manager. O ID é um identificador único para cada nó no swarm.

Promover o nó worker a manager

Na etapa anterior, você listou os nós no swarm e identificou o nó worker por seu ID e pela ausência de um MANAGER STATUS. Agora, você promoverá este nó worker a um nó manager. Promover um nó worker a manager aumenta o número de nós manager em seu swarm, o que é importante para alta disponibilidade e tolerância a falhas em um ambiente de produção.

Para promover um nó, você usa o comando docker node promote seguido pelo ID do nó que deseja promover. Você obteve o ID do nó worker na etapa anterior.

Substitua WORKER_NODE_ID pelo ID real do seu nó worker.

docker node promote WORKER_NODE_ID

Após executar o comando, você deve ver uma saída confirmando que o nó foi promovido:

Node WORKER_NODE_ID was promoted to a manager.

Isso indica que o nó que era anteriormente um worker agora também é um nó manager em seu swarm. Seu swarm agora tem dois nós manager (embora ambos estejam sendo executados na mesma VM física neste ambiente simulado).

Verificar a nova função do nó

Na etapa anterior, você promoveu o nó worker a manager. Agora, vamos verificar se a função do nó foi atualizada com sucesso, listando os nós no swarm novamente.

Use o comando docker node ls para listar os nós.

docker node ls

Desta vez, você deve ver uma saída semelhante a esta:

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

Observe que o nó que foi listado anteriormente sem um MANAGER STATUS agora mostra Reachable em MANAGER STATUS. Isso confirma que o nó foi promovido com sucesso e agora é reconhecido como um nó manager pelo swarm. O nó com status Leader é o manager primário, enquanto o nó com status Reachable é um manager secundário.

Ter múltiplos nós manager em um swarm fornece redundância. Se o nó manager líder ficar indisponível, outro nó manager pode assumir sua função, garantindo a operação contínua do swarm.

Resumo

Neste laboratório, você aprendeu como inicializar um Docker Swarm em um único nó, tornando-o o primeiro manager. Em seguida, você praticou a junção de um nó worker a este swarm, expandindo o cluster. O laboratório guiou você pela listagem dos nós do swarm para identificar o worker recém-adicionado. Finalmente, você executou a ação chave de promover o nó worker a um nó manager usando o comando docker node promote e verificou a mudança de função bem-sucedida.