manuais-e-documentacao-itguys/documentacao conteineres/Nivel_3/Docker_Swarm_Basico.md

3.0 KiB
Raw Blame History

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:

  1. Autor: João Pedro Toledo Gonçalves.
  2. 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)

  1. No servidor escolhido como líder, execute:
docker swarm init --advertise-addr {{IP_DO_MANAGER}}
  1. O comando retornará um token. Copie-o. Exemplo: docker swarm join --token SWMTKN-1-xx... {{IP_DO_MANAGER}}:2377

Etapa 2: Adicionando Workers

  1. Nos outros servidores, cole o comando copiado na etapa anterior.
  2. Confirme a entrada no cluster:
    docker node ls
    

    O 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.

  1. Crie um serviço replicado (3 réplicas do Nginx).
docker service create --name meu-site-ha --replicas 3 -p 80:80 nginx
  1. 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)

  1. Aumente a capacidade para 5 containers.

    docker service scale meu-site-ha=5
    
  2. 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 2377 e libere as portas no Security Group/Firewall.

Problema 2: Split Brain (Líderes perdidos)

  • Causa: Mais de 50% dos Managers caíram.
  • Solução:
    1. No manager sobrevivente: docker swarm init --force-new-cluster.

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 ls mostra 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)?