Recentemente, apresentamos o pacote do cluster Docker Swarm – uma solução de automação pré-configurada, destinada à criação de vários nodes do Docker Engine interconectados que são executados em um modo swarm e constituem um cluster altamente disponível e confiável.
A solução fornece os principais benefícios para a hospedagem de aplicativos baseada no Docker, permitindo executar imagens do Docker como serviços swarm e escalá-los facilmente até um número desejado de réplicas. Isso garante alta disponibilidade, proteção contra falha e até distribuição de carga de trabalho entre membros do cluster.
Neste artigo, forneceremos um exemplo de implantação de serviço ao cluster do Docker Swarm a partir de um arquivo yaml da pilha do docker predefinido e, além disso, abordaremos a maioria das ações básicas necessárias para gerenciar seu projeto.
À luz do próximo fechamento do Docker Cloud, o painel de gerenciamento de interface do usuário Jelastic pronto para uso parece ser um dos principais pontos decisivos ao selecionar uma nova plataforma para hospedagem de cluster swarm.
Operações básicas de gerenciamento e implantação de serviços
Se você ainda não tem um cluster do Docker Swarm, siga as instruções vinculadas para obtê-lo em questão de minutos e conecte-se ao seu swarm de qualquer maneira preferencial. Por exemplo, acesso via GUI Portainer, Jelastic SSH Gate e Docker Machine.
Dica: Começando com o release 5.4 do Jelastic, é possível estabelecer uma conexão com o contêiner necessário, diretamente do painel, por meio do emulador Web SSH incorporado.
Depois que uma conexão com o node gerenciador do Docker Swarm for estabelecida (estamos trabalhando no Jelastic SSH Gate neste exemplo), você poderá começar a gerenciar com seu cluster. Por exemplo, verifique a lista de nodes em que seu cluster swarm consiste, executando a próxima linha de código:
docker node ls
Como você pode ver, há um gerenciador e dois contêineres de trabalho em nosso cluster swarm. Os nodes gerenciadores elegem automaticamente um único Líder para conduzir tarefas de orquestração, enquanto os gerentes restantes (se houver) são marcados como “acessíveis” para tolerar falhas.
Agora, vamos considerar o procedimento de implantação de um serviço (fluxo manual e automatizado) para a solução clusterizada.
Implantação manual de serviços Swarm
Você pode executar manualmente qualquer imagem do Docker em seu cluster como um processo swarm.
1. Use o seguinte comando para criar um processo (consulte a página vinculada para saber sobre possíveis opções adicionais):
docker service create –name {name} {image}
Onde:
- {name}: qualquer nome desejado para o processo
- {image}: qualquer imagem do Docker desejada (por exemplo, dockersamples/static-site)
2. Verifique seus serviços com o comando apropriado:
docker service ls
Como você pode ver, há um gerenciador e dois contêineres de trabalho em nosso cluster swarm. Os nodes gerenciadores elegem automaticamente um único líder para conduzir tarefas de orquestração, enquanto os gerentes restantes (se houver) são marcados como “acessíveis” para tolerar falhas.
3. Vamos atualizar nosso serviço para melhorar a confiabilidade por meio da replicação e, simultaneamente, publicá-lo para permitir o acesso pela Internet.
docker service update –replicas {replicas} –publish-add {ports} {service}
Onde:
- {replicas}: várias réplicas para criar para o processo
- {ports}: duas portas separadas por dois pontos (isto é, publicadas – para publicar o serviço e a porta de destino na imagem do Docker implementada), por exemplo 8080:80
- {service}: nome de um serviço a ser atualizado
Espere um minuto para que todas as réplicas sejam configuradas.
Agora, você pode acessar sua imagem através da porta especificada (8080 no nosso caso):
5. Para remover qualquer processo, chame a seguinte linha de código:
docker service rm {service}
Essa é a base do gerenciamento de serviços swarm; para aprender mais opções avançadas, por favor consulte a documentação oficial.
Implantação automatizada de serviços com o arquivo Stack
Para implantar automaticamente seu serviço, você precisará do arquivo apropriado do Docker Compose, no qual todas as ações necessárias para implantação são listadas.
1. Você pode criar esse arquivo stack usando qualquer editor (por exemplo, vim) ou buscá-lo a partir de uma fonte externa (por exemplo, com curl).
No nosso caso, baixamos as fontes stack para o exemplo do aplicativo de votação, que ajudará a descobrir se o ponto A (Gatos) é mais popular que o ponto B (Cães) de acordo com as escolhas reais do usuário. O resultado dessa votação será exibido como uma porcentagem relativa das preferências dos eleitores.
2. Para implantar seu aplicativo, use o seguinte comando e forneça o arquivo stack:
docker stack deploy -c {compose-file} {name}
Onde:
- {compose-file} – o arquivo que você preparou na etapa anterior (docker-stack.yml no nosso caso)
- {name} – qualquer nome preferido (por exemplo, VotingApp)
3. Agora, vamos verificar os serviços em execução no cluster swarm com:
docker service ls
Como você pode ver, todos os serviços especificados no arquivo stack do docker já foram iniciados (espere um minuto se algumas REPLICAS ainda não estiverem ativas). Além disso, dentro da coluna PORTAS, você pode encontrar o número da porta em que um determinado serviço é executado (por exemplo, 5000 para votação e 5001 para saída de resultados no nosso caso).
4. Finalmente, acesse seu serviço através do navegador e adicione a porta apropriada (se necessário) ao endereço:
Desta forma, você obtém uma confiabilidade extra de serviço com a proteção de falha e até mesmo a distribuição de cargas de trabalho garantidas automaticamente ao hospedar seus serviços dockerizados no cluster do Docker Swarm. E a solução Docker Swarm, pré-embalada pela Jelastic para instalação com apenas um clique, fornece todos os benefícios acima mencionados em questão de minutos.
Para entender melhor a implementação dos pacotes Docker Engine e Cluster Docker Swarm, consulte os artigos correspondentes:
- Como instalar automaticamente o Docker Engine autônomo e conectá-lo ao cluster swarm no Jelastic PaaS
- Conectando-se ao Docker Engine e seu gerenciamento dentro do Jelastic PaaS
- Auto-clusterização e escalonamento do Docker Swarm com PaaS Power Armor
Espero que este artigo seja útil para você. Compartilhe seus casos de uso de contêineres do Docker nos comentários abaixo e deixe seu feedback sobre a execução de seus clusters no Jelastic.
Precisa de ajuda com a implantação de seus serviços no cluster do Docker Swarm hospedado no Jelastic? Peça ajuda aos nossos especialistas técnicos no Stackoverflow.
***
Tetiana Markova faz parte do time de colunistas internacionais do iMasters. A tradução do artigo é feita pela Redação iMasters, com autorização do autor, e você pode acompanhar o artigo em inglês no link: https://jelastic.com/blog/deploy-services-docker-swarm-cluster/