Como executar comandos administrativos em um nó não-líder no Docker Swarm

DockerBeginner
Pratique Agora

Introdução

Docker Swarm é uma poderosa ferramenta de orquestração que permite gerenciar um cluster de hosts Docker como um único sistema. Em um Swarm, um nó é designado como líder, responsável por gerenciar o estado do cluster e tomar decisões. No entanto, pode haver momentos em que você precise executar comandos administrativos em nós não-líderes. Este tutorial guiará você pelo processo de identificar o nó líder e executar comandos administrativos em nós não-líderes em um Docker Swarm.

Compreendendo a Arquitetura do Docker Swarm

Docker Swarm é uma ferramenta de orquestração de contêineres que permite gerenciar um cluster de hosts Docker, conhecido como "enxame" (swarm). Em um Docker Swarm, você tem dois tipos de nós: nós gerentes e nós trabalhadores.

Nós Gerentes

Os nós gerentes são responsáveis pela gestão geral do enxame. Eles lidam com tarefas como:

  • Agendamento e implantação de contêineres
  • Manutenção do estado desejado do enxame
  • Fornecimento de uma API para interação com o enxame

Os nós gerentes também podem executar contêineres, mas seu papel principal é gerenciar o enxame.

Nós Trabalhadores

Os nós trabalhadores são responsáveis por executar os contêineres reais. Eles recebem instruções dos nós gerentes e as executam. Os nós trabalhadores podem ser adicionados ou removidos do enxame conforme necessário para escalar o cluster.

graph LR
    subgraph Docker Swarm
        Manager[Nó Gerente] --- Worker[Nó Trabalhador]
        Manager --- Worker
    end

A arquitetura do Docker Swarm garante alta disponibilidade e tolerância a falhas, permitindo que múltiplos nós gerentes façam parte do enxame. Dessa forma, se um nó gerente falhar, o enxame pode continuar a operar com os nós gerentes restantes.

Identificando o Nó Líder no Docker Swarm

Em um Docker Swarm, um dos nós gerentes é eleito como líder. O nó líder é responsável por tomar todas as decisões críticas e coordenar as ações dos outros nós gerentes.

Verificando o Nó Líder

Para identificar o nó líder no seu Docker Swarm, você pode usar o seguinte comando:

docker node ls

Este comando listará todos os nós no enxame, e o nó líder será marcado com um símbolo *.

Alternativamente, você pode usar o comando docker node inspect para obter informações mais detalhadas sobre um nó específico:

docker node inspect < node-id > --pretty

Isso exibirá o papel, o status e outras informações relevantes do nó, incluindo se ele é o líder.

Entendendo a Eleição do Líder

O Docker Swarm utiliza o algoritmo de consenso Raft para eleger um líder entre os nós gerentes. O líder é responsável por tomar decisões e coordenar as ações dos outros nós gerentes.

Se o nó líder atual falhar ou ficar indisponível, um novo líder será eleito automaticamente entre os nós gerentes restantes. Isso garante que o enxame possa continuar a operar mesmo que um nó gerente falhe.

graph LR
    subgraph Docker Swarm
        Manager1[Nó Gerente 1] --- Manager2[Nó Gerente 2]
        Manager1 --- Manager3[Nó Gerente 3]
        Manager2 --- Manager3
        Manager1 -- Líder --> Manager2
        Manager2 -- Seguidor --> Manager3
    end

Executando Comandos Administrativos em Nós Não-Líderes

Em um Docker Swarm, o nó líder é responsável por tomar todas as decisões críticas e coordenar as ações dos outros nós gerentes. No entanto, pode haver situações em que você precise executar comandos administrativos nos nós não-líderes, como para fins de solução de problemas ou manutenção.

Acessando Nós Não-Líderes

Para acessar um nó não-líder no seu Docker Swarm, você pode usar o comando docker node ssh. Este comando permite estabelecer uma conexão SSH com um nó específico no enxame.

docker node ssh <node-id>

Substitua <node-id> pelo ID do nó não-líder que você deseja acessar.

Executando Comandos Administrativos

Depois de estabelecer uma conexão SSH com o nó não-líder, você pode executar comandos administrativos conforme necessário. Alguns comandos administrativos comuns que você pode querer executar incluem:

  • Verificando o status e o papel do nó:
    docker node inspect < node-id > --pretty
    
  • Visualizando os logs do nó:
    docker node logs <node-id>
    
  • Executando um comando no nó:
    docker exec -it <container-id> <command>
    

Lembre-se de que, embora você possa executar comandos administrativos em nós não-líderes, quaisquer alterações ou ações que você realizar não afetarão o estado geral do enxame. O nó líder ainda é responsável por manter o estado desejado do cluster.

Limitações

É importante observar que a execução de comandos administrativos em nós não-líderes apresenta algumas limitações. Por exemplo, você não pode usar os comandos docker service ou docker stack em nós não-líderes, pois esses comandos exigem acesso ao estado do enxame, que é gerenciado pelo nó líder.

Se você precisar realizar ações que exijam acesso ao estado do enxame, você deve fazê-lo no nó líder ou usar o comando docker node exec para executar o comando no nó líder a partir de um nó não-líder.

Resumo

Ao final deste tutorial, você terá uma compreensão melhor da arquitetura do Docker Swarm e será capaz de executar comandos administrativos em nós não-líderes de forma eficaz. Este conhecimento o ajudará a manter a alta disponibilidade e gerenciar suas aplicações containerizadas em um ambiente Docker Swarm de forma eficiente.