Arquitetura Docker Swarm - Como nós e serviços funcionam?

Índice:

Anonim

Introdução à arquitetura do Docker Swarm

O Docker Swarm é uma ferramenta de agrupamento e orquestração para contêineres incorporada no Docker Engine para o sistema distribuído que envolve centenas de contêineres. As tarefas Docker Node, Docker Services e Docker são componentes principais da arquitetura de enxame do Docker.

  • Nó do Docker: é a instância do Docker Engine incluída no enxame do Docker, tem dois tipos:
  • Nó do gerente: Responsável por todas as tarefas de orquestração e gerenciamento de contêineres necessárias para manter o sistema no estado desejado, como manter o estado do cluster, agendar os serviços e atender os pontos de extremidade HTTP do modo enxame.
  • Serviço Docker: é a definição de tarefa que precisa ser executada.

Arquitetura típica do enxame do Docker

Abaixo estão os pontos para a arquitetura típica de enxame de encaixe:

  • O nó é o membro principal da arquitetura de enxame de encaixe, uma arquitetura de enxame pode ter mais de um nó de gerente liderado por um único nó de gerente eleito usando o algoritmo Raft, um nó de gerente também pode funcionar como um nó de trabalho, mas pode ser configurado para funcionar como gerente nó também.
  • Os nós do gerente usam o algoritmo de consenso do Raft para gerenciar internamente o estado do cluster. Isso é para garantir que todos os nós do gerente que estão planejando e controlando tarefas no cluster mantenham / armazenem um estado consistente.
  • Um enxame é um cluster de Docker Engines ou nós, onde implantamos nossos serviços. No estágio inicial, o Docker criou um sistema de gerenciamento de cluster com um protocolo de comunicação conhecido como Beam. Mais tarde, eles adicionaram mais APIs e a renomearam para enxamear. O enxame de primeira geração é chamado de 'enxame v1'.

Fluxo de trabalho do Docker Swarm

O fluxo de trabalho do docker swarm consiste em entender como os nós e serviços funcionam em uma arquitetura de docker swarm:

Etapa 1: a primeira etapa é criar um conjunto de máquina de encaixe que atuará como nós no enxame de encaixe , um entre esses nós será o gerente e o nó restante atuará como nós de trabalho. Para criar uma máquina docker, use o comando no Windows, inicie o terminal docker.

docker-machine create –driver hyperv manager1

  • Onde 'manager1' é o nome da máquina de encaixe, para listar as máquinas e sua execução, respectivamente.

docker-machine ls
docker-machine ip manager1

Etapa 2: a segunda etapa é criar máquinas operárias, use o comando abaixo para criar quantas máquinas operadoras você desejar, aqui vamos criar três operadoras.

docker-machine create –driver hyperv worker1
docker-machine create –driver hyperv worker2
docker-machine create –driver hyperv worker3

  • Podemos nos conectar ao gerente ou trabalhador usando o comando abaixo, que o levará para dentro da máquina.

docker-machine ssh manager1/worker1

Etapa 3: a etapa três é inicializar o enxame de encaixe, precisamos executar este comando na máquina na qual queremos trabalhar como gerente; é assim que fazemos o gerenciador de nós; também podemos adicionar mais gerenciadores.

docker-machine ssh manager1
docker swarm init –advertise-and Manager1 IP

Etapa 4: a etapa quatro é unir os nós dos trabalhadores para fazer o enxame, obter o comando para ingressar no nó como um trabalhador usando o comando abaixo na máquina gerenciadora e execute o comando que você obteve na máquina de trabalho que deseja criar um trabalhador.

Docker swarm join-token worker1

  • Para verificar se o trabalhador está associado ao enxame ou não vai à máquina gerenciadora e executa o comando, ele listará a máquina trabalhada adicionada com detalhes do gerente.

docker-machine ls

Etapa 5: a etapa cinco é executar os comandos padrão da janela de encaixe no gerenciador.

docker info (fetches details about docker swarm)
docker swarm (commands that can run on docker swarm such as join, leave, update, init and unlock etc)

Etapa 6: a etapa seis é executar os contêineres no docker swarm, podemos criar qualquer serviço e suas réplicas. Vá para ub.docker.com, faça o login e explore os depositários. Podemos ver imagens diferentes que são mecanismos, por exemplo, o nginx (que roda no servidor da web) cria um serviço e sua réplica está usando o comando abaixo no gerenciador.

docker service create –replicas 3 -p 80:80 –name sample nginx

  • Onde 'amostra' é o nome do serviço e 80 é a porta que está sendo exposta para verificar o status do comando de serviço executado abaixo no nó do gerenciador.

docker service ls
docker service ps sample

Verifique o serviço em execução em todos os nós e também no navegador, fornecendo IP para todos os nós.

Etapa 7: Etapa sete, agora podemos ver o uso real do enxame de encaixe onde escalamos o serviço para cima e para baixo. Para dimensionar um serviço, execute o comando abaixo na máquina gerenciadora

docker service scale sample=4

  • O comando acima fará com que a amostra de serviço seja executada em 4 nós, mesmo que todos os nós estejam ocupados, ele criará outro serviço no gerente ou no trabalhador. De maneira semelhante, podemos reduzir o serviço.

docker service scale sample=2

  • Também podemos inspecionar o nó para obter detalhes como quantos e quais serviços estão sendo executados em um nó, executando os comandos abaixo no nó gerenciador

docker node inspect worker1/manager1
docker node inspect self

Etapa 8: a etapa oito é atualizar o serviço quando o serviço estiver em execução em várias máquinas e, se quisermos atualizá-lo, é simples e simples, por exemplo, se queremos atualizar a versão do serviço nginx.

docker service update –image nginx:1.14.0 sample

Etapa 9: Desligar / parar / remover.

  • Para desligar qualquer nó específico, use o comando abaixo, que altera o status do nó para 'drenar'.

docker node update –availability drain worker1

  • Para remover o serviço de todas as máquinas.

docker service rm sample

  • Para sair do enxame, que altera o status do 'baixo'.

docker swarm leave

  • Para parar uma máquina (execute a partir do terminal de encaixe, não na máquina do gerente ou do trabalhador)

docker-machine stop worker1
docker-machine rm worker1

Benefícios da arquitetura Docker Swarm

Abaixo estão os pontos que mostram os benefícios da arquitetura do Docker Swarm:

  1. Design descentralizado: podemos gerenciar clusters de enxame através do comando swarm. Ele fornece um único acesso (para acesso para construir um enxame inteiro).
  2. É muito simples comparado ao Kubernetes.
  3. Alta disponibilidade: Entre os nós disponíveis no swarm, se o mestre falhar, outro nó do trabalhador terá um custo adicional.
  4. Reconciliação do estado desejado: O gerenciador de swarm controla o estado do cluster para que o estado desejado e real seja sempre o mesmo.
  5. Quando especificamos uma rede excedente para conectar-se aos seus serviços, o gerenciador de swarm atribui endereços ao contêiner na rede de sobreposição quando criamos / atualizamos os contêineres
  6. Atualizações contínuas: as atualizações de serviço podem ser feitas de forma incremental, o gerenciador de enxames permite especificar o atraso entre todas as atualizações sem tempo de inatividade.

Conclusão

O Docker swarm é uma ferramenta simples no lugar de grandes ferramentas que realizam a tarefa, o Docker com swarm fornece a orquestração necessária, é fácil de configurar e envia o nativo com o mecanismo do docker que vamos instalar e usar de qualquer maneira.

Artigos recomendados

Este é um guia para a arquitetura Docker Swarm. Aqui discutimos como os nós e os serviços funcionam em uma arquitetura de enxame de encaixe com seus benefícios. Você também pode consultar nossos outros artigos relacionados para saber mais -

  1. Arquitetura do Docker
  2. O que é o Docker Swarm?
  3. Aplicações de Inteligência Swarm
  4. A tecnologia enxame ajuda as equipes ágeis a crescer?