Orquestrando Ambientes com Docker Swarm
Aprenda a configurar e gerenciar clusters de nós Docker usando o Docker Swarm. Inclui passos para criar clusters, adicionar nós e gerenciar tarefas de forma eficiente.
Sumário
- O que é Docker Swarm
- Vantagens do Docker Swarm
- Estrutura de um Cluster Docker Swarm
- Criando um Cluster com Docker Swarm
- Gerenciamento de Nós no Cluster Swarm
- Promoção e Despromoção de Nós no Cluster
- Descrição dos Comandos para Gerenciamento de Nós
Orquestrando Ambientes com Docker Swarm
O que é Docker Swarm?
O Docker Swarm é uma ferramenta integrada ao Docker Engine que permite criar e gerenciar clusters de nós Docker. Com ele, você pode organizar e orquestrar serviços de forma eficiente, tornando o processo de escalar e gerenciar seus aplicativos muito mais fácil.
O Swarm utiliza tokens de identificação para adicionar novas máquinas ao cluster. Sempre que um novo nó se junta ao cluster, ele fornece um token que o Docker Engine usa para integrá-lo. Isso permite uma gestão centralizada de todo o ambiente.
Implantação no Docker Swarm
Uma das abordagens padrão para implantação de serviços no Docker Swarm é o controle de versão. Isso significa que, para implantar uma nova versão de um serviço, você cria uma nova imagem, a publica no cluster e o Docker verifica se há uma atualização disponível. Se houver, o serviço será atualizado automaticamente para a versão mais recente.
Outra estratégia comum no Docker Swarm é o rolling update. Neste processo, os nós do cluster são atualizados um de cada vez com a nova versão do serviço. Essa abordagem minimiza o tempo de inatividade, já que o serviço continua rodando enquanto os nós são atualizados.
Vantagens do Docker Swarm
O Docker Swarm oferece diversas vantagens, tornando-se uma excelente opção para orquestração de containers:
- Integração com Docker Engine: Como é integrado ao Docker, você pode usar a mesma interface e comandos com os quais já está familiarizado para gerenciar o cluster.
- Simples de Configurar: Com ferramentas nativas como o Swarm Manager, configurar e gerenciar o ambiente de cluster é simples e direto.
- Balanceamento de Carga: O Swarm oferece suporte a múltiplos algoritmos de balanceamento de carga, possibilitando a escolha do método que melhor atenda às suas necessidades.
- Compatibilidade Ampla: É capaz de gerenciar vários tipos de aplicativos, como sistemas web, bancos de dados e até serviços de mensagens.
- Alta Disponibilidade: Ao usar clusters, o Swarm permite manter seus serviços em execução mesmo durante manutenções ou falhas, garantindo alta disponibilidade.
Estrutura de um Cluster Docker Swarm
No Docker Swarm, a estrutura do cluster é composta por dois tipos principais de nós:
Manager Node: Este nó gerencia o cluster. Ele é responsável por orquestrar os serviços, despachar tarefas para os nós workers e manter o estado desejado do cluster. O manager node também é o ponto central de comunicação com o Docker CLI para gerenciar o cluster.
Worker Node: Este nó é responsável por executar as tarefas atribuídas pelos managers. Por padrão, um nó manager também pode atuar como worker, mas é possível configurá-lo para se concentrar apenas no gerenciamento.
Exemplo de Infraestrutura
Vamos supor que temos a seguinte configuração de infraestrutura:
| VM | Função | IP | Sistema Operacional |
|---|---|---|---|
| dca-manager | Nó de gerenciamento do cluster | 10.4.5.10 | Ubuntu |
| dca-wk-01 | Nó de trabalho do cluster | 10.4.5.11 | Ubuntu |
| dca-wk-02 | Nó de trabalho do cluster | 10.4.5.12 | Ubuntu |
| dca-registry | Registro de imagens Docker | 10.4.5.13 | Oracle Linux |
Criando um Cluster com Docker Swarm
Passo 1: Inicializar o Cluster
No nó manager, inicie o cluster com o seguinte comando:
1
docker swarm init --advertise-addr 10.4.5.10
Isso inicializa o Docker Swarm, promovendo o nó atual a manager. O argumento --advertise-addr especifica o IP que os outros nós usarão para se conectar ao nó manager.
Você verá uma mensagem semelhante a esta:
1
2
3
4
5
Swarm initialized: current node (x3pkngofl66650g9rz2qc5qhl) is now a manager.
To add a worker to this swarm, run the following command:
docker swarm join --token SWMTKN-1-0a7hbhhn5tyqhq3o5hgjknh7ahh55x8dnq73rjjohhcjxk39gl-48bo2tablmqfi04f8y0i59osh 10.4.5.10:2377
Guarde esse comando, pois ele será necessário para adicionar novos nós workers ao cluster.
Passo 2: Adicionar Workers ao Cluster
Nos nós workers, execute o comando mostrado no final da inicialização do Swarm. Por exemplo:
1
docker swarm join --token SWMTKN-1-0a7hbhhn5tyqhq3o5hgjknh7ahh55x8dnq73rjjohhcjxk39gl-48bo2tablmqfi04f8y0i59osh 10.4.5.10:2377
Este comando conecta o nó ao cluster como um worker.
Você pode verificar os nós conectados ao cluster executando o seguinte comando no nó manager:
1
docker node ls
Isso exibirá uma lista de nós e seus status, incluindo quais são managers e quais são workers.
Verificando o Status do Swarm
Para garantir que o Docker Swarm está ativo, execute o comando:
1
docker info | grep -i swarm
Se o resultado mostrar Swarm: active, significa que o cluster está funcionando corretamente.
Gerenciamento de Nós no Cluster Swarm
Uma vez que o cluster Docker Swarm esteja configurado, você pode gerenciar os nós usando vários comandos do Docker CLI. Abaixo estão alguns comandos essenciais para gerenciar os nós no cluster:
Listar Nós no Cluster
Para listar todos os nós conectados ao cluster, incluindo informações sobre seu status, função e versão do Docker Engine, execute o comando:
1
docker node ls
O resultado mostrará os nós com as seguintes colunas:
- ID: Identificador único do nó.
- HOSTNAME: Nome do host do nó.
- STATUS: Indica se o nó está ativo (Ready).
- AVAILABILITY: Indica se o nó está disponível para receber tarefas (Active).
- MANAGER STATUS: Se o nó for um manager, indicará se é o líder (Leader) ou um manager acessível (Reachable).
Filtrar Nós por Função
Você pode filtrar os nós exibidos com base na função deles, seja manager ou worker:
- Para listar apenas os nós managers, use:
1
docker node ls --filter role=manager
- Para listar apenas os nós workers, use:
1
docker node ls --filter role=worker
Definir Labels para Identificar Nós
Os labels são uma forma de classificar e identificar nós no cluster Swarm, facilitando o gerenciamento e a organização. Para adicionar um label, use o comando docker node update:
- Para definir o label
app=backendno nódca-manager, execute:1
docker node update --label-add app=backend dca-manager
- Para adicionar o label
app=frontendnos nósdca-wk-01edca-wk-02, use:1 2
docker node update --label-add app=frontend dca-wk-01 docker node update --label-add app=frontend dca-wk-02
Se precisar remover um label, utilize o comando:
1
docker node update --label-rm app dca-manager
Inspecionar um Nó
Para obter informações detalhadas sobre um nó específico, incluindo labels, status e configuração, utilize o comando:
1
docker node inspect <NOME_DO_NO>
- Se quiser filtrar as informações, por exemplo, para ver apenas os labels de um nó, pode usar:
1
docker node inspect --pretty <NOME_DO_NO> | grep -i labels -A 2
Remover um Nó do Cluster
Para remover um nó do cluster, utilize o comando docker node rm. Se o nó estiver ativo, pode ser necessário usar a flag --force:
1
docker node rm dca-wk-01 --force
Alternativamente, se quiser que o nó abandone voluntariamente o cluster, execute no próprio nó o comando:
1
docker swarm leave
Após isso, o nó será removido do cluster e deixará de executar tarefas.
Promoção e Despromoção de Nós no Cluster
Em um cluster Docker Swarm, você pode promover um nó worker para manager ou despromover um manager para worker, conforme necessário. Isso permite maior flexibilidade na administração do cluster e no gerenciamento das tarefas.
Promoção de um Worker a Manager
Para promover um nó worker a manager, utilize o comando docker node promote. Esse comando eleva o nó ao nível de manager, permitindo que ele participe da orquestração e gerenciamento do cluster.
Por exemplo, para promover o nó dca-wk-01 a manager, use o seguinte comando no nó manager:
1
docker node promote dca-wk-01
Após a execução, o nó dca-wk-01 será promovido, e você poderá verificar o novo status com:
1
docker node ls
O status do nó dca-wk-01 na coluna MANAGER STATUS mudará para Reachable, indicando que ele agora é um manager acessível.
Despromover um Manager para Worker
Se precisar rebaixar um nó manager para worker, use o comando docker node demote. Por exemplo, para despromover o nó dca-manager de volta para worker, execute:
1
docker node demote dca-manager
Isso removerá o status de gerenciamento do nó, e ele voltará a atuar apenas como um nó worker. O status pode ser verificado novamente com:
1
docker node ls
Alterando o Nó Líder (Leader)
No Docker Swarm, o nó líder é responsável por tomar decisões de orquestração. Caso o líder atual se torne indisponível, o Swarm automaticamente elege um novo líder entre os nós managers restantes.
Se desejar, você pode promover outro nó a manager, permitindo que ele participe das eleições futuras para a liderança.
Reverter uma Promoção ou Despromoção
Se for necessário reverter a promoção ou despromoção de um nó, basta repetir os comandos:
- Para promover novamente o
dca-managera manager:1
docker node promote dca-manager
- Para despromover o
dca-wk-01de volta para worker:1
docker node demote dca-wk-01
Após qualquer alteração de status dos nós, lembre-se de verificar a nova configuração do cluster com:
1
docker node ls
Descrição dos Comandos para Gerenciamento de Nós
Aqui está uma breve descrição dos comandos usados para gerenciamento de nós no Docker Swarm:
docker node promote: Promove um nó de worker a manager.docker node demote: Rebaixa um nó de manager a worker.docker node update --label-add: Adiciona um label a um nó.docker node update --label-rm: Remove um label de um nó.docker node inspect: Exibe informações detalhadas sobre um nó.docker node rm: Remove um nó do cluster.docker swarm leave: Remove um nó do cluster de forma voluntária.docker node ls: Lista todos os nós no cluster, exibindo suas funções e status.