Introdução
Docker Swarm é uma ferramenta poderosa para orquestrar e gerenciar contêineres Docker em escala. Neste tutorial, você aprenderá como adicionar novos nós ao seu cluster Docker Swarm existente, permitindo expandir sua infraestrutura e melhorar a disponibilidade e resiliência de seus aplicativos.
Compreendendo os Fundamentos do Docker Swarm
O que é o Docker Swarm?
Docker Swarm é uma solução nativa de agrupamento e escalonamento para contêineres Docker. Permite gerenciar um grupo de engines Docker, chamado enxame (swarm), como um único engine Docker virtual. Isso significa que você pode implantar seus aplicativos em vários hosts, garantindo alta disponibilidade e escalabilidade.
Conceitos-chave no Docker Swarm
- Node (nó): Um nó é uma instância do engine Docker que participa do enxame. Os nós podem ser gerentes ou trabalhadores.
- Manager Node (nó gerente): Os nós gerentes são responsáveis por gerenciar o enxame, incluindo a programação de tarefas, a manutenção do estado do cluster e o tratamento de falhas.
- Worker Node (nó trabalhador): Os nós trabalhadores recebem e executam tarefas despachadas pelos nós gerentes.
- Service (serviço): Um serviço define o estado desejado de um conjunto de tarefas (contêineres) no enxame. Os serviços são os blocos de construção para implantar aplicativos em um enxame.
- Task (tarefa): Uma tarefa é um único contêiner que faz parte de um serviço e está agendado para execução em um nó.
Vantagens do Docker Swarm
- Simplicidade: O Docker Swarm é integrado ao engine Docker, tornando-o fácil de configurar e gerenciar.
- Alta Disponibilidade: O Swarm fornece balanceamento de carga e failover automáticos, garantindo que seus aplicativos estejam altamente disponíveis.
- Escalabilidade: Você pode facilmente escalar seus aplicativos adicionando ou removendo nós do enxame.
- Segurança: O Docker Swarm utiliza recursos de segurança embutidos, como comunicação criptografada e controle de acesso baseado em roles.
Começando com o Docker Swarm
Para começar com o Docker Swarm, você precisará configurar um cluster de enxame. Isso envolve inicializar um nó gerente e, em seguida, adicionar nós trabalhadores ao enxame. Vamos dar uma olhada em um exemplo usando Ubuntu 22.04:
## Inicializar o enxame em um nó gerente
## Juntar um nó trabalhador ao enxame
Depois de configurar o enxame, você pode começar a implantar seus aplicativos como serviços.
Adicionando Nós a um Cluster Docker Swarm
Adicionando Nós Trabalhadores ao Enxame
Para adicionar nós trabalhadores ao seu cluster Docker Swarm, você pode usar o comando docker swarm join. Este comando requer o token de junção, que pode ser obtido do nó gerente.
No nó gerente, execute o seguinte comando para obter o token de junção:
docker swarm join-token worker
Isso exibirá um comando que você pode usar para juntar um nó trabalhador ao enxame, por exemplo:
docker swarm join --token SWMTKN-1-49nj1cmql0jkz5s7riia...
Agora, no nó trabalhador, execute o comando fornecido pelo nó gerente para juntar-se ao enxame.
Adicionando Nós Gerentes ao Enxame
Você também pode adicionar nós gerentes ao seu cluster Docker Swarm. Isso é útil para aumentar a tolerância a falhas e a alta disponibilidade do seu enxame.
Para adicionar um novo nó gerente, execute o seguinte comando no novo nó:
docker swarm join --token SWMTKN-1-61ztec9roubhglb7xbc...
O token usado para juntar o nó gerente pode ser obtido de um nó gerente existente usando o seguinte comando:
docker swarm join-token manager
Verificando o Status dos Nós
Após adicionar nós ao enxame, você pode usar o comando docker node ls para visualizar o status de todos os nós no cluster. Isso mostrará o papel de cada nó (gerente ou trabalhador) e seu status atual.
docker node ls
Isso exibirá uma tabela com informações sobre cada nó no enxame.
Removendo Nós do Enxame
Se precisar remover um nó do enxame, você pode usar o comando docker node rm. Por exemplo, para remover um nó trabalhador:
docker node rm worker-node
Para remover um nó gerente, você precisará primeiro rebaixá-lo a um nó trabalhador e, em seguida, removê-lo:
docker node demote manager-node
docker node rm manager-node
Lembre-se de planejar cuidadosamente a remoção de nós, pois isso pode afetar a disponibilidade e a resiliência do seu enxame.
Gerenciando e Monitorando Nós do Swarm
Monitorando Nós do Swarm
Para monitorar a saúde e o status dos seus nós Docker Swarm, você pode usar os seguintes comandos:
## Listar todos os nós no enxame
docker node ls
## Inspecionar um nó específico
docker node inspect node-name
## Visualizar métricas do nó
docker node ps node-name
O comando docker node ls fornece uma visão geral de todos os nós no seu enxame, incluindo seu papel (gerente ou trabalhador), status e disponibilidade.
O comando docker node inspect fornece informações detalhadas sobre um nó específico, como seu endereço IP, recursos e rótulos.
O comando docker node ps permite visualizar as tarefas e contêineres em execução em um nó específico.
Gerenciando Nós do Swarm
Além do monitoramento, você também pode gerenciar os nós no seu cluster Docker Swarm usando vários comandos:
## Promover um nó trabalhador para gerente
docker node promote worker-node
## Rebaixar um nó gerente para trabalhador
docker node demote manager-node
## Atualizar rótulos do nó
docker node update --label-add label=value node-name
## Desativar um nó (impedir que novas tarefas sejam agendadas)
docker node update --availability drain node-name
## Tornar um nó ativo novamente
docker node update --availability active node-name
Os comandos docker node promote e docker node demote permitem alterar o papel de um nó dentro do enxame.
Você pode usar o comando docker node update para adicionar, modificar ou remover rótulos em um nó. Os rótulos podem ser usados para aplicar restrições ou preferências específicas ao agendar tarefas.
O comando docker node update --availability drain permite tirar temporariamente um nó de serviço, impedindo que novas tarefas sejam agendadas nele. Isso pode ser útil para realizar manutenção ou atualizações em um nó.
Backup e Restauração do Estado do Swarm
É importante fazer backup regularmente do estado do seu cluster Docker Swarm para garantir que você possa se recuperar de quaisquer problemas ou falhas. Você pode usar o comando docker swarm init --force-new-cluster para inicializar um novo enxame usando os dados de backup.
Seguindo essas práticas recomendadas para gerenciar e monitorar seus nós Docker Swarm, você pode garantir a confiabilidade e a resiliência de seus aplicativos baseados em contêineres.
Resumo
Ao final deste tutorial, você terá um bom entendimento de como adicionar nós a um cluster Docker Swarm. Você será capaz de escalar sua infraestrutura Docker, garantindo que seus aplicativos possam lidar com cargas de trabalho aumentadas e fornecendo alta disponibilidade para seus serviços. Este conhecimento será inestimável à medida que você continua a construir e gerenciar suas soluções baseadas em Docker.



