Como Configurar e Gerenciar Clusters Docker Swarm

DockerBeginner
Pratique Agora

Introdução

Docker Swarm é uma poderosa solução de orquestração de contêineres que permite aos desenvolvedores transformar vários hosts Docker em uma infraestrutura unificada e escalável. Este tutorial abrangente fornece insights aprofundados na criação, configuração e gerenciamento de clusters Docker Swarm, cobrindo conceitos essenciais, tipos de nós, estratégias de implantação de serviços e melhores práticas para a construção de ambientes robustos de contêineres.

Conceitos Básicos do Docker Swarm

Introdução ao Docker Swarm

Docker Swarm é uma solução nativa de agrupamento e orquestração de contêineres para ambientes Docker. Permite que desenvolvedores criem e gerenciem um cluster de nós Docker, transformando vários hosts Docker em um único host Docker virtual.

Conceitos Principais

Arquitetura do Cluster Swarm

graph TD A[Gerente Swarm] --> B[Nó Trabalhador 1] A --> C[Nó Trabalhador 2] A --> D[Nó Trabalhador 3]

Tipos de Nós Swarm

Tipo de Nó Descrição Responsabilidades
Nó Gerente Controla o estado do cluster Orquestração, Agendamento
Nó Trabalhador Executa cargas de trabalho de contêineres Execução de serviços

Inicializando um Cluster Swarm

## Inicializar Swarm no nó primário
docker swarm init --advertise-addr 192.168.1.100

## Gerar token de junção para nós trabalhadores
docker swarm join-token worker

## Adicionar nós trabalhadores ao cluster
docker swarm join --token < token > 192.168.1.100:2377

Principais Características

  • Design descentralizado
  • Modelo de serviço declarativo
  • Escalonamento e atualizações progressivas
  • Descoberta de serviço
  • Balanceamento de carga
  • Comunicação segura

Exemplo de Implantação de Serviço

## Criar um serviço replicado
docker service create --replicas 3 --name web nginx

## Escalar o serviço
docker service scale web=5

## Atualizar o serviço
docker service update --image nginx:latest web

Configuração do Cluster

Topologia do Cluster Swarm

graph TD A[Nó Gerente] --> B[Nó Trabalhador 1] A --> C[Nó Trabalhador 2] A --> D[Nó Trabalhador 3]

Estratégias de Inicialização de Nós

Configuração do Nó Gerente

## Inicializar o cluster Swarm no gerente primário
docker swarm init --advertise-addr 192.168.1.100

## Visualizar tokens de junção do cluster
docker swarm join-token manager
docker swarm join-token worker

Configuração do Nó Trabalhador

## Adicionar o nó trabalhador ao cluster
docker swarm join \
  --token SWMTKN-1-xxxxxxxxxxxxxxxxxxxxx \
  192.168.1.100:2377

Parâmetros de Configuração do Cluster

Parâmetro Descrição Valor Padrão
Endereço de Divulgação Interface de rede do nó IP primário
Porta de Escuta Porta de comunicação Swarm 2377
Rótulos de Nó Metadados para seleção de nós Nenhum

Configuração Avançada do Cluster

## Adicionar rótulos de nó personalizados
docker node update --label-add type=frontend worker1

## Definir disponibilidade do nó
docker node update --availability drain worker2

Configuração de Rede

## Criar rede overlay
docker network create \
  --driver overlay \
  --subnet 10.0.0.0/24 \
  my-network

Gerenciamento de Serviços

Fluxo de Trabalho de Implantação de Serviços

graph LR A[Criar Serviço] --> B[Implantar Contêineres] B --> C[Escalar Serviço] C --> D[Atualizar Serviço] D --> E[Monitorar Desempenho]

Criação Básica de Serviço

## Implantar serviço nginx com 3 réplicas
docker service create \
  --name web-service \
  --replicas 3 \
  --publish 80:80 \
  nginx:latest

Opções de Configuração de Serviço

Opção Descrição Exemplo
--replicas Número de instâncias de contêiner 3
--update-parallelism Atualizações concorrentes 2
--constraint Regras de posicionamento de nós node.labels.type==frontend

Estratégias de Escalonamento de Serviço

## Escalar serviço dinamicamente
docker service scale web-service=5

## Escalonamento horizontal
docker service update \
  --replicas-max-per-node 2 \
  web-service

Configuração de Balanceamento de Carga

## Criar serviço com balanceamento de carga personalizado
docker service create \
  --name api-service \
  --replicas 4 \
  --publish mode=host,target=8080,published=80 \
  --update-delay 10s \
  api-image:latest

Mecanismos de Atualização de Serviço

## Estratégia de atualização progressiva
docker service update \
  --image nginx:latest \
  --update-parallelism 2 \
  --update-delay 10s \
  web-service

Monitoramento de Serviço

## Listar serviços ativos
docker service ls

## Inspecionar serviço específico
docker service ps web-service

Resumo

Dominando o Docker Swarm, desenvolvedores e administradores de sistemas podem gerenciar eficazmente aplicações containerizadas em sistemas distribuídos. O tutorial demonstra técnicas-chave para inicializar clusters, configurar topologias de nós, implantar serviços e aproveitar recursos avançados, como descoberta de serviços, balanceamento de carga e comunicação segura. Compreender esses fundamentos capacita as equipes a construir infraestruturas de contêineres escaláveis, resilientes e com maior eficiência operacional.