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
Da Infraestrutura Microsoft ao Mundo Open Source: A Jornada DevOps
Um marco importante na vida de um profissional de infraestrutura de TI é quando ele reconhece que as áreas de desenvolvimento e infraestrutura devem andar em conjunto como um só.
Novo curso DevOps: Práticas de Continuos Monitoring na 4Linux
Será o nono curso ofertado na carreira DEVOPS. A mais abrangente oferta do Brasil. A 4linux anuncia hoje o lançamento de mais um curso para enriquecer a sua oferta de
Prepare-se para o mercado com a nova certificação DevOps da 4Linux
A 4Linux tem a tradição de inovar e estar sempre oferecendo cursos modernos que preparam os profissionais para ocuparem boas vagas de emprego conforme demanda do mercado de trabalho. O