3.0 KiB
MANUAL TÉCNICO - DOCKER SWARM: INICIALIZAÇÃO E GERENCIAMENTO
Código: ITGENG 0014/26 | Classificação: RESTRITO Responsável: João Pedro Toledo Gonçalves | Data: {{DATA_ATUAL}}
1. HISTÓRICO DE REVISÃO
⚠️ REGRA DE OURO:
- Autor: João Pedro Toledo Gonçalves.
- Descrição: Criação do documento.
| Data | Versão | Descrição | Autor |
|---|---|---|---|
| {{DATA_ATUAL}} | 1.0 | Criação Inicial | João Pedro Toledo Gonçalves |
2. OBJETIVO
Habilitar o o modo Swarm (Orquestração Nativa) para garantir alta disponibilidade, balanceamento de carga e escalabilidade horizontal de containers.
3. PRÉ-REQUISITOS
- Mínimo de 3 máquinas com Docker instalado (Recomendado para HA).
- Portas liberadas entre os nós:
- TCP/2377 (Cluster Management)
- TCP/UDP 7946 (Communication)
- UDP 4789 (Overlay Network)
4. PASSO A PASSO (EXECUÇÃO)
Etapa 1: Inicializando o Manager (Nó Principal)
- No servidor escolhido como líder, execute:
docker swarm init --advertise-addr {{IP_DO_MANAGER}}
- O comando retornará um token. Copie-o. Exemplo:
docker swarm join --token SWMTKN-1-xx... {{IP_DO_MANAGER}}:2377
Etapa 2: Adicionando Workers
- Nos outros servidores, cole o comando copiado na etapa anterior.
- Confirme a entrada no cluster:
docker node lsO status deve ser Ready e Active.
Etapa 3: Deploy de Serviços (Services vs Containers)
ℹ️ NOTA: No Swarm, não damos deploy em "Containers", mas sim em "Services". O Swarm decide onde o container vai rodar.
- Crie um serviço replicado (3 réplicas do Nginx).
docker service create --name meu-site-ha --replicas 3 -p 80:80 nginx
- Liste os serviços e verifique a distribuição.
docker service ls
docker service ps meu-site-ha
Etapa 4: Escala e Atualização (Rolling Update)
-
Aumente a capacidade para 5 containers.
docker service scale meu-site-ha=5 -
Atualize a imagem sem downtime (Rolling Update).
docker service update --image nginx:alpine meu-site-ha
5. SOLUÇÃO DE PROBLEMAS (TROUBLESHOOTING)
Problema 1: Nós não conseguem se comunicar (Status Down)
- Causa: Firewall bloqueando porta 7946 ou 4789.
- Solução: Verifique
telnet IP 2377e libere as portas no Security Group/Firewall.
Problema 2: Split Brain (Líderes perdidos)
- Causa: Mais de 50% dos Managers caíram.
- Solução:
- No manager sobrevivente:
docker swarm init --force-new-cluster.
- No manager sobrevivente:
6. DADOS TÉCNICOS
| Campo | Valor | Descrição |
|---|---|---|
| Driver Rede | overlay |
Rede criptografada multi-host |
| Routing Mesh | Ingress |
Balanceador de carga interno (L4) |
7. VALIDAÇÃO FINAL
docker node lsmostra todos os nós online?- Ao desligar um nó worker, os containers migram para outro?
- Acessar o IP de QUALQUER nó na porta 80 carrega o site (Routing Mesh)?