Docker Swarm – Criando cluster utilizando Docker Stack Deploy

Docker Swarm – Criando cluster utilizando Docker Stack Deploy

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.

Anterior Minio — Tenha seu próprio S3 Storage
Próxima Mais um grande evento, e claro que a 4linux não ficaria de fora -PGConf

About author

Adalberto Monteiro Junior
Adalberto Monteiro Junior 1 posts

Adalberto Monteiro Junior atua como Analista de Infraestrutura em Software Livre, formado em Sistemas de Informação pela FIAP. Possui experiência em ferramentas voltadas para aplicação da cultura Devops, com ênfase em contêineres, detém expertise como instrutor de cursos voltados ao Sistema Operacional Linux, e Devops.

View all posts by this author →

Você pode gostar também

DevOps

4Linux lança curso preparatório para a certificação DEVOPS Master e faz parceria com a EXIN

A 4linux acaba de se tornar um A.T.O. (Authorized Training Organization) do EXIN e juntamente teve o conteúdo de seu treinamento ‘DEVOPS Master’ aprovado, isso significa que o material didático criado

DevOps

Vagrant: Crie ambientes de Desenvolvimento Ágil

Conheça como criar máquinas virtuais com o Vagrant e crie ambientes padronizados iniciando pelo de Desenvolvimento. DevOps tem como objetivo diminuir o Time To Market de um serviço, ou seja,

Destaques

Openshift: criação de cluster e deploy de uma aplicação

Esse post tem como objetivo criar um cluster de OpenShift Origin com um master e dois nós, a fim de fazer o deploy automático e definir o fluxo de integração