Como adicionar um nó trabalhador a um cluster Docker Swarm

DockerBeginner
Pratique Agora

Introdução

Este tutorial guiará você pelo processo de adicionar um nó de trabalho a um cluster Docker Swarm. Ao final deste artigo, você compreenderá como configurar e gerenciar um ambiente Docker Swarm e como adicionar perfeitamente novos nós ao seu cluster para escalar suas aplicações containerizadas.

Introdução ao Docker Swarm

Docker Swarm é uma solução nativa de agrupamento e orquestração para contêineres Docker. Permite gerenciar um grupo de hosts Docker e implantar aplicações neles, proporcionando alta disponibilidade, balanceamento de carga e escalabilidade.

O que é o Docker Swarm?

Docker Swarm é um recurso embutido do Docker Engine que permite agrupar vários hosts Docker em um único host Docker virtual. Isso permite gerenciar e escalar suas aplicações containerizadas em vários hosts, proporcionando tolerância a falhas e alta disponibilidade.

Conceitos-chave no Docker Swarm

  1. Swarm: Um Swarm é um grupo de hosts Docker (físicos ou virtuais) que estão executando o Docker Engine e se uniram para formar um cluster.
  2. : Um Nó é um único host Docker que faz parte de um Swarm. Os nós podem ser Gerenciadores ou Trabalhadores.
  3. Nó Gerenciador: Os Nós Gerenciadores são responsáveis por gerenciar o estado do Swarm, agendar tarefas e manter o estado desejado do cluster.
  4. Nó Trabalhador: Os Nós Trabalhadores são responsáveis por executar os contêineres reais conforme direcionado pelos Nós Gerenciadores.
  5. Serviço: Um Serviço é uma forma declarativa de definir como uma aplicação deve ser implantada e escalada em todo o Swarm.
graph TD
    A[Host Docker] --> B[Host Docker]
    B[Host Docker] --> C[Host Docker]
    C[Host Docker] --> D[Host Docker]
    D[Host Docker] --> A[Host Docker]
    A --- E[Nó Gerenciador]
    B --- F[Nó Trabalhador]
    C --- G[Nó Trabalhador]
    D --- H[Nó Trabalhador]

Benefícios do Docker Swarm

  • Alta Disponibilidade: O Docker Swarm fornece balanceamento de carga e failover automáticos, garantindo que suas aplicações estejam altamente disponíveis.
  • Escalabilidade: Você pode facilmente escalar suas aplicações para cima ou para baixo adicionando ou removendo nós do Swarm.
  • Simplicidade: O Docker Swarm é um recurso embutido do Docker Engine, tornando-o fácil de configurar e gerenciar.
  • Integração: O Docker Swarm integra-se perfeitamente com outras ferramentas e serviços Docker, como Docker Compose e Docker Registry.

Configurando um Cluster Docker Swarm

Pré-requisitos

Antes de configurar um cluster Docker Swarm, certifique-se de ter o seguinte:

  1. Pelo menos dois hosts Ubuntu 22.04 (físicos ou virtuais) com o Docker Engine instalado.
  2. Acesso SSH aos hosts.

Passo 1: Inicializar o Swarm

Em um dos hosts, execute o seguinte comando para inicializar o Swarm:

docker swarm init --advertise-addr <HOST_IP_ADDRESS>

Substitua <HOST_IP_ADDRESS> pelo endereço IP do host.

Este comando exibirá um token de junção que você usará para adicionar outros nós ao Swarm.

Passo 2: Adicionar Nós Trabalhadores ao Swarm

Nos outros hosts, execute o comando fornecido no passo anterior para se juntar ao Swarm como um nó trabalhador:

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

Substitua <TOKEN> pelo token fornecido pela inicialização do Swarm e <HOST_IP_ADDRESS> pelo endereço IP do nó Gerenciador.

Passo 3: Verificar o Swarm

Execute o seguinte comando no nó Gerenciador para visualizar os nós no Swarm:

docker node ls

Você deve ver o nó Gerenciador e os nós Trabalhadores na saída.

Passo 4: Implantar um Serviço

Para testar sua configuração do Swarm, implante um serviço simples:

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

Isso criará um serviço chamado "nginx" e o implantará em todo o Swarm.

graph TD
    A[Nó Gerenciador] --> B[Nó Trabalhador]
    B[Nó Trabalhador] --> C[Nó Trabalhador]
    C[Nó Trabalhador] --> A[Nó Gerenciador]
    A -- "docker swarm init" --> D[Swarm]
    B -- "docker swarm join" --> D[Swarm]
    C -- "docker swarm join" --> D[Swarm]
    D -- "docker service create" --> E[Serviço Nginx]

Adicionando um Nó Trabalhador ao Swarm

Pré-requisitos

Antes de adicionar um nó Trabalhador ao Swarm, certifique-se de ter o seguinte:

  1. Um cluster Docker Swarm em execução com pelo menos um nó Gerenciador.
  2. Acesso SSH ao host que você deseja adicionar como um nó Trabalhador.

Passo 1: Obter o Comando de Junção

No nó Gerenciador, execute o seguinte comando para obter o comando de junção para um nó Trabalhador:

docker swarm join-token worker

Isso exibirá um comando semelhante ao seguinte:

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

Passo 2: Juntar-se ao Swarm como um Nó Trabalhador

No host que você deseja adicionar como um nó Trabalhador, execute o comando obtido no passo anterior:

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

Isso adicionará o host ao Swarm como um nó Trabalhador.

Passo 3: Verificar se o Nó se Juntou ao Swarm

No nó Gerenciador, execute o seguinte comando para listar os nós no Swarm:

docker node ls

Você deve ver o novo nó Trabalhador na saída.

graph TD
    A[Nó Gerenciador] --> B[Nó Trabalhador]
    B[Nó Trabalhador] --> C[Nó Trabalhador]
    C[Nó Trabalhador] --> A[Nó Gerenciador]
    A -- "docker swarm join-token worker" --> D[Comando de Junção]
    B -- "docker swarm join" --> A[Nó Gerenciador]

Seguindo esses passos, você pode facilmente adicionar um novo nó Trabalhador ao seu cluster Docker Swarm, expandindo a capacidade e a resiliência de suas aplicações containerizadas.

Resumo

Neste tutorial do Docker, você aprendeu a configurar um cluster Docker Swarm e adicionar um nó trabalhador a ele. Ao adicionar novos nós ao seu Swarm, você pode escalar facilmente suas aplicações baseadas em Docker e criar um ambiente distribuído e altamente disponível. Com o conhecimento adquirido neste guia, você agora pode gerenciar e expandir sua infraestrutura Docker Swarm com confiança para atender às suas crescentes necessidades de negócios.