Dominando o Docker Swarm: Implantação de Stack de Serviços em Cluster

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.

Anterior Guia prático: Como configurar e usar o Minio Server em sua infraestrutura
Próxima PGConf.Brasil: Conferência de PostgreSQL com Arlindo do Carmo

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

Cloud

Gerenciamento eficiente de clusters Kubernetes com a ferramenta K9S

Hoje em dia temos diversos ambientes de produção, e nestes ambientes o orquestrador mais utilizado é o Kubernetes. Com a evolução da infraestrutura de serviço esse trabalho de gerenciamento tornou-se

Desenvolvimento

Docker: Ferramenta essencial para desenvolvedores e gestão de aplicativos

O que é o Docker O Docker é uma ferramenta de código aberto para conteinerização que agiliza a criação e a implantação de aplicativos por meio do uso de contêineres.

DevOps

Entenda o que é um Framework e como ele pode facilitar seus projetos digitais

Se você tem um projeto web ou aplicativo a desenvolver, saber o que é um framework é um conhecimento indispensável. Afinal, estamos falando sobre um elemento chave para o resultado