cluster • Gerenciamento dos serviços ◦ Balanceamento de carga ◦ Service Discovery ◦ Escalabilidade de serviços ◦ Distribuição dos Serviços no Cluster • Swarm API Endpoint • Pode executar containers dependendo do seu estado ◦ Active ou Drain • Pode ser transformado em worker ◦ docker node demote
suporta a queda de (N - 1) / 2 Managers • Swarm com 1 manager suporta a queda de 0 managers • Swarm com 3 manager suporta a queda de 1 managers • Swarm com 5 manager suporta a queda de 2 managers Apesar de ser possível utilizar mais de 7 managers, não é recomendado por questões de performance (para manter todo o estado do cluster sincronizado)
executar containers. • Não influencia em nenhuma das operações dos Managers. • Não é possível criar um nó swarm com apenas um nó worker (sem managers) • Um worker pode ser promovido a Manager ◦ docker node promote
worker (instanciar outro nó) [node2] docker swarm join [token][IP do Manager]:2377 [node2] docker node ls • Transformar novo nó em manager [node1] docker node ls [node1] docker node promote [ID do worker] [node2] docker node ls • Transformar node 1 nó em worker [node2] docker node demote [ID do node1] [node2] docker node ls [node1] docker node ls
nós do cluster ps - Listar containers executando no nó rm - Remover um nó update - Alterar o estado de um nó inspect - Inspecionar o nó promote - Promove um nó para manager demote - Transforma em worker
do swarm serão distribuídos os containers de um serviço • Serviço GLOBAL terá uma instância em cada nó do swarm • Serviço REPLICATED será distribuído pelo cluster, de acordo com regras de placement e carga das máquinas ◦ Placement: (spread) ▪ Busca por nós com o label utilizada no placement ▪ Distribui de maneira uniforme os containers de acordo com diferentes valores do label
redis --placement-pref 'spread=node.labels.datacenter' Redis:latest Supondo que existam 6 nós com o label datacenter, como seria a distribuição dos containers? datacenter=america : node_1, node_4, node_6 datacenter=europa : node_2, node_5 datacenter=africa : node_3
nó inicial asusme papel de CA ◦ --external-ca sobrescreve esse comportamento • Dois tokens (workers / managers) são gerados para garantir que apenas nós designados entrem no cluster ◦ digest do certificado root + segredo gerado aleatoriamente • Quando um nó entra no cluster o manager emite um novo certificado • Os certificados TLS são utilizados na autenticação, autorização e criptografia de toda comunicação no cluster Swarm
cada 3 meses (pode ser configurado) ◦ É possível forçar a troca do certificado (caso tenha sido comprometido) • Troca de certificado ◦ Um certificado novo é gerado e assinado pelo antigo ▪ Isso garante que todos os nós que confiavam no certificado antigo aceitarão o novo certificado ◦ Os managers solicita que todos os workers gerem novos certificados ◦ O certificado antigo é removido (tokens de join mudam a partir disso)