No mundo da orquestração de contêineres, Docker Swarm é um nome que aparece com bastante frequência ao lado de outras ferramentas importantes como Kubernetes. Isso ocorre porque o Docker Swarm oferece uma solução de orquestração simples e fácil de implementar para contêineres Docker. Nesta postagem do blog, nos aprofundaremos na arquitetura do Docker Swarm para entender como ele orquestra a implantação, o dimensionamento e o gerenciamento de contêineres em um cluster de máquinas.
Docker Swarm é uma plataforma de orquestração de contêineres construída e gerenciada pela Docker, Inc. Ela foi projetada para criar, implantar e gerenciar um cluster de nós Docker em um enxame. Um enxame é um grupo de máquinas que executam Docker e unidas em um cluster.
Docker Swarm usa o conceito de nós para formar sua arquitetura. Existem dois tipos de nós:
Nós gerenciadores : esses nós são responsáveis pela orquestração e gerenciamento do cluster. Eles mantêm o estado do enxame e agendam serviços.
Nós de trabalho : esses nós executam as tarefas despachadas pelos nós gerenciadores.
Serviço : Um serviço é a definição das tarefas a serem executadas nos nós gerenciadores ou trabalhadores. É um modelo de como os contêineres Docker devem se comportar na produção.
Tarefa : uma tarefa é um único contêiner Docker e seus comandos, em execução no serviço.
Os nós gerenciadores implementam o algoritmo Raft Consensus para manter um estado consistente em todo o cluster. Isso garante que, mesmo que alguns nós gerenciadores falhem, o enxame continuará funcionando conforme o esperado.
O Docker Swarm possui uma malha de roteamento integrada que lida com a descoberta de serviços e o balanceamento de carga. Isso garante que todos os nós participantes do Swarm possam acessar os serviços implementados, independentemente de estarem executando as tarefas relevantes.
Docker Swarm usa um armazenamento de objetos para armazenar com segurança os detalhes de configuração e chaves criptográficas necessárias para o cluster.
Inicialização e adesão
: O primeiro passo é inicializar um Swarm ou ingressar em um já existente. Os comandos
docker swarm init
e
docker swarm join
são usados para esse propósito.
Criação de serviço
: a próxima etapa é criar um serviço usando o
docker service create
comando. Isso criará um serviço baseado em uma imagem Docker e executará o número especificado de instâncias (tarefas) dessa imagem.
Atribuição de tarefas : os nós gerenciadores atribuem tarefas aos nós trabalhadores com base em algoritmos de agendamento. Cada tarefa representa um contêiner em execução do serviço.
Dimensionamento
: você pode aumentar ou diminuir o serviço usando o
docker service scale
comando. O Docker Swarm aumentará ou diminuirá o número de tarefas para atingir o estado desejado.
Descoberta de serviço e balanceamento de carga : o Docker Swarm atribui automaticamente um nome DNS a cada serviço e equilibra a carga das solicitações entre todas as tarefas pertencentes a esse serviço.
Autocorreção e failover : se um nó ou contêiner falhar, os nós gerenciadores redistribuirão as tarefas entre os nós ativos restantes.
Atualizações e reversões : Docker Swarm oferece suporte a atualizações e reversões contínuas. Você pode atualizar a imagem do Docker ou as configurações de um serviço, e o Docker Swarm atualizará tarefas de forma incremental sem tempo de inatividade.
Simplicidade : Docker Swarm é conhecido por sua simplicidade. Você pode inicializar um enxame e implantar um aplicativo multisserviço com apenas alguns comandos.
Escalabilidade : Escale facilmente seu aplicativo horizontalmente adicionando mais tarefas ou serviços.
Alta disponibilidade : recursos de failover integrados garantem que seu aplicativo esteja disponível mesmo que alguns de seus nós não estejam.
Integração : Sendo do mesmo ecossistema, Docker Swarm oferece integração perfeita com Docker CLI e Docker Compose.
Segurança : Fornece criptografia TLS automatizada entre os nós para transmissão segura de dados.
Docker Swarm oferece uma maneira simples e elegante de gerenciar um cluster de contêineres Docker. Embora possa não oferecer tantos recursos quanto outras ferramentas de orquestração como o Kubernetes, sua simplicidade e facilidade de uso o tornam uma escolha sólida para implantações menores ou para equipes que estão apenas começando com a orquestração de contêineres. Compreender sua arquitetura pode ajudá-lo a aproveitar ao máximo suas implantações do Swarm.