O Docker Swarm é uma solução nativa de orquestração de contêineres que permite criar clusters com alta disponibilidade, balanceamento de carga e tolerância a falhas. Neste laboratório, veremos como implantar um cluster Docker Swarm utilizando três nós e distribuir serviços automaticamente entre eles.
Arquitetura do Cluster Docker Swarm
Em um ambiente de produção, no qual há a necessidade de Alta Disponibilidade e Tolerância a Falhas, é essencial adotar uma solução para gerenciar e dimensionar contêineres. A opção mais comumente escolhida por profissionais é o Kubernetes, utilizado por provedores como IBM Cloud, AWS, Azure e Google Cloud para orquestração de contêineres em larga escala.
Neste guia, optei por uma solução simples: o Docker Swarm. Nele, os nós podem ser divididos em dois tipos principais: gerenciadores (managers) e trabalhadores (workers).
- Gerenciadores (Managers): São os nós responsáveis pela gestão e coordenação do cluster. Eles mantêm o estado atual do serviço e orquestram a distribuição de tarefas entre os nós trabalhadores.
- Trabalhadores (Workers): São os nós que executam as tarefas atribuídas pelos gerenciadores e hospedam os contêineres dos serviços.
Laboratório Docker Swarm
Neste laboratório, iremos criar um cluster Docker Swarm no Play with Docker com apenas três nós.
- Nó 1: Manager → 192.168.0.8
- Nó 2: Worker → 192.168.0.7
- Nó 3: Worker → 192.168.0.6
1. Acesse o Play with Docker e faça login utilizando sua conta Docker Hub.
2. Clique três vezes em Add New Instance.
3. Acesse o nó 1 e inicialize o cluster Docker Swarm:
docker swarm init --advertise-addr eth0

4. Após executar o comando, será exibido um comando de ingresso para os workers.
docker swarm join --token SWMTKN-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 192.168.0.8:2377
Explicação:
docker swarm join: adiciona um nó ao cluster.--token: token de autenticação.192.168.0.8:2377: endereço do manager.
5. Execute o comando anterior nos nós 2 e 3.


6. Verifique os nós do cluster:
docker node ls

Observe que o nó 1 possui o papel de Leader e coordena o cluster.
7. Crie um serviço NGINX com duas réplicas:
docker service create --detach=true --name nginx1 --publish 80:80 --mount source=/etc/hostname,target=/usr/share/nginx/html/index.html,type=bind,ro --replicas 2 nginx:1.12

O Swarm distribui automaticamente as réplicas pelos nós disponíveis.
Vantagens do Docker Swarm
- Alta disponibilidade.
- Balanceamento de carga integrado.
- Escalabilidade horizontal.
- Facilidade de administração.
- Integração nativa com Docker Engine.
8. Teste o serviço:
curl localhost:80

A malha de roteamento do Docker Swarm encaminha automaticamente as requisições para uma réplica disponível do serviço.
Conclusão
O Docker Swarm fornece uma maneira simples de implementar alta disponibilidade, balanceamento de carga e tolerância a falhas utilizando poucos comandos. Para laboratórios, pequenas equipes e ambientes que priorizam simplicidade operacional, continua sendo uma alternativa relevante ao Kubernetes.
