Dominando o Docker Swarm: Implantação de Stack de Serviços em Cluster
Swarm é uma ferramenta de cluster nativa para Docker, que utiliza a API padrão. Ou seja, qualquer ferramenta que fizer uso da API Docker, poderá usar Swarm para escalar contêineres, de forma transparente, entre vários hosts e com alta disponibilidade.
Introdução
Ao executar o Docker Engine no modo swarm, você pode usar o Docker Stack Deploy para implantar uma pilha de aplicativos completa. O comando deploy aceita uma descrição de stack na forma de um Compose file. Desta forma, é possível usar os arquivos docker-compose.yml para criar stack de contêineres do docker, não havendo necessidade de instalar o Docker Compose.
O comando docker stack deploy suporta qualquer arquivo Compose da versão “3.0” ou superior. Se você tiver uma versão mais antiga, consulte o guia de atualização.
Iniciando o cluster
Para iniciar o swarm, copie o comando a seguir, execute na máquina que controlará o nosso cluster:
# docker swarm init --advertise-addr $(hostname -i)
A partir da saída acima, copie o comando join (cuidado com as outras linhas).
Cole no terminal onde será executado o nó worker.
Em seguida, para verificar quais são os nós do cluster, execute o seguinte comando:
# docker node ls
O comando que acabamos de executar, listará dois nós, manager é o primeiro sendo worker o segundo.
Clonar o app do github
Verifique se continuará no nó manager, execute os comandos:
# cd ~
# git clone https://github.com/docker/example-voting-app
# cd example-voting-app/
Deploy do stack
Um stack, constitui um grupo de serviços implantados juntos. O docker-stack.yml na pasta atual, será usado para fazer o deploy dos serviços que utilizaremos para o wordpress, implemente o próximo comando para executar o deploy desses serviços:
# docker stack deploy --compose-file=docker-stack.yml voting_stack
Nota: o recurso para criação de stack a partir de um docker-compose, foi adicionado ao Docker a partir da versão 1.13.
Verifique o stack implementado no host manager:
# docker stack ls
A saída indicará dois serviços, o mysql e wordpress:
NAME SERVICES voting_stack 6
Vamos verificar os serviços dentro do stack:
# docker stack services voting_stack
A saída deverá ser parecida com esta a seguir, (seu ID poderá ser diferente):
ID NAME MODE REPLICAS IMAGE PORTS ejsya1t9l3dm voting_stack_worker replicated 1/1 dockersamples/examplevotingapp_worker:latest hw99133nhqal voting_stack_visualizer replicated 1/1 dockersamples/visualizer:stable *:8080->8080/tcp n7nzscpetmcz voting_stack_redis replicated 1/1 redis:alpine *:30002->6379/tcp xz7q04j9hdpe voting_stack_result replicated 1/1 dockersamples/examplevotingapp_result:before *:5001->80/tcp z5usb88szawd voting_stack_db replicated 1/1 postgres:9.4 zows23xs6t7h voting_stack_vote replicated 2/2 dockersamples/examplevotingapp_vote:before *:5000->80/tcp
Vamos verificar as tarefas do serviço de votação:
# docker service ps voting_stack_vote
Na coluna NODE, podemos verificar que uma tarefa está sendo executada em cada nó:
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS b0zuwoiv22vp voting_stack_vote.1 dockersamples/examplevotingapp_vote:before manager Running Preparing 2 minutes ago 0splsf986g09 voting_stack_vote.2 dockersamples/examplevotingapp_vote:before node Running Running 20 seconds ago
Finalmente, podemos confirmar que o nosso APP está em execução, a página de votação também está disponível, bem como o cluster no SWARM.
Conclusão
Utilizar apenas alguns comandos permite implementar uma stack de serviços em um Docker Swarm usando o Docker Compose. Empregando o comando: docker-compose up, funcionaria da mesma forma, mas não em cluster. Então o docker stack deploy é uma ferramenta e tanto, quando integrada ao SWARM.
About author
Você pode gostar também
Por que você deve investir tempo estudando Python
Por que você deve investir tempo estudando Python No mundo cada vez maior das linguagens de programação, uma delas se destaca como uma ferramenta versátil e poderosa que conquistou os
Desvendando o DevOps: Entenda a Integração, Entrega e Implantação Contínua
Continuous Integration (Integração Continua), Continuous Delivery (Entrega Continua) e Continuous Deployment (Implantação Continua) são práticas DevOps muito populares nos últimos anos, mas o que são e as diferenças entre elas
Descubra como a filosofia DevOps pode impulsionar o sucesso do seu negócio
DevOps é fundado na construção de uma cultura de colaboração, visando a entrega de software de maneira mais rápida e confiável. Pode ser compreendido como uma filosofia de gestão, englobando