Desenvolvimento

9 abr, 2018

Escalonamento e auto-clustering do Docker Swarm com PaaS Power Armor

Publicidade

O chamado Swarm Cluster representa um conjunto de nós do Docker Engine que são executados em um modo swarm para constituir uma plataforma tolerante a falhas para hospedagem de aplicações com recursos integrados de gerenciamento de cluster. Isso ajuda a manter seus serviços dockerizados em constante execução e disponíveis por meio da distribuição de cargas de trabalho em diferentes servidores e/ou data centers.

Além disso, pela sua implementação original, o Docker Swarm oferece benefícios extras como recuperação automática de desastres, atualizações sem tempo de inatividade, etc. Mas, ao mesmo tempo, a execução desse cluster de nós Docker pode causar algumas dificuldades, pois essa tecnologia é bastante nova. Assim, ela ainda requer esforços consideráveis do administrador do sistema para seu manuseio.

É por isso que, no artigo de hoje, descreveremos como evitar a complexidade da criação e manutenção do swarm com um pacote dedicado do Docker Swarm Cluster para instalação com apenas um clique. Baseando-se em um pacote de inovações recentes do Jelastic – Cloud Scripting e suporte nativo para containers Docker – essa solução permite configurar um cluster pronto para ser dockerizado com o tamanho necessário em questão de minutos. Então, vamos em frente e mergulhar nas especificidades de sua realização e uso.

Para obter uma compreensão completa da solução descrita abaixo, recomendamos que você conheça os seguintes artigos sobre a implementação do Docker Engine primeiro, pois ela representa um componente básico do Docker Swarm:

Especificidades da topologia do cluster Docker Swarm

De acordo com a implementação original do cluster swarm, a estrutura do ambiente que você obterá na instalação do pacote é composta de duas camadas (grupos de nós) com as seguintes funções de nó prescritas:

  • Manager – mantém o estado desejado do seu swarm e todos os serviços que são rodados nele.
  • Worker – recebe e executa tarefas, que são despachadas do (s) nó (s) do Manager.

Durante a instalação, você pode declarar o número desejado de containers para cada camada (as chamadas “réplicas”) e escolher um dos tipos de instalação disponíveis:

  • Configurar um cluster simples para implementar subsequentemente a imagem do Docker necessária manualmente.
  • Criar um swarm com a imagem já implementada baseando-se no compose file fornecido.

Por padrão, cada nó tem uma sala pré-alocada de recursos para crescimento sobre a necessidade (até 4 GiB de RAM por container), enquanto você sempre paga apenas pelas capacidades realmente consumidas devido à abordagem de preços Jelastic de pay-for-use.

Com isso, o consumo de memória do cluster no modo inativo é menor que 128 MiB (1 cloudlet) por container, que é cobrado de acordo com o preço do provedor de hospedagem. Dessa forma, um Docker swarm confiável de oito nós pode ser hospedado por um preço de apenas oito cloudlets!

Como benefício adicional da hospedagem de cluster swarm no Jelastic, todos os containers são igualmente distribuídos automaticamente entre os nós disponíveis de hardware de uma plataforma (por exemplo, servidores físicos) para garantir uma disponibilidade extra alta de sua aplicação.

Antes de instalar esse pacote, considere os seguintes pontos:

  • A plataforma escolhida deve rodar a versão 5.2 ou superior do Jelastic e conter região(s) de ambiente com suporte para container nativo do Docker habilitado (sua presença e nomes podem ser encontrados na coluna com o mesmo nome da lista de provedores de hospedagem Jelastic).
  • Para poder gerenciar containers por meio do Docker Machine, você precisa ter uma chave SSH pública adicionada à sua conta Jelastic, enquanto a chave privada correspondente do par deve ser manuseada em sua máquina local.

Configurações de auto-scaling do cluster swarm

Outra grande vantagem do pacote Docker Swarm Cluster do Jelastic é um mecanismo especial de inclusão automática de novos nós em um cluster. Com isso, dependendo de um tipo de camada dimensionado, cada container adicionado recebe automaticamente a função de master ou de worker apropriada.

Isso permite pré-configurar o escalonamento horizontal automático dos nós do servidor (até 10 instâncias por camada, por padrão), que é executado com base na carga atual do cluster, de acordo com as seguintes condições:

  • +1 nó se a utilização da RAM ou da CPU for> 70% durante pelo menos 5 minutos.
  • -1 nó se a utilização da RAM ou da CPU for <40% durante pelo menos 5 minutos.

Observação: o escalonamento automático não será configurado para contas trial com os três nós por limitação de ambiente. Nesse caso, você precisa fazer upgrade para o faturamento e configurar manualmente os acionadores de escala.

Por padrão, o auto-scaling horizontal é aplicado aos tipos de nó manager e worker, enquanto um usuário recebe a notificação por e-mail apropriada sobre cada um desses eventos (isto é, a execução do acionador de escala). Com isso, a contagem mínima de nós não pode cair para abaixo do valor que você especificou para cada camada durante a criação inicial do cluster swarm do Docker.

Caso você queira ajustar as condições de escalonamento automático predefinidas, consulte as configurações dos acionadores apropriados na seção Automatic Horizontal Scaling.

Dica: para obter proteção adicional de alta disponibilidade e failover para os serviços do Docker que você gostaria de rodar, é possível anexar manualmente nós de uma região de ambiente diferente ao cluster do swarm – já consideramos a inclusão do procedimento apropriado Docker Engine Inclusion into Swarm Cluster em um de nossos artigos recentes.

Instalação do Docker Swarm

A instalação do Docker Swarm a partir do Jelastic Marketplace é totalmente automatizada e requer apenas algumas etapas simples.

  • A instalação de trial gratuita está disponível nos provedores de serviços Jelastic da Suíça: Flow App Engine e Hidora. Siga este link para começar em um deles.
  • Um conjunto de outros provedores em diferentes locais oferece o Docker Swarm dentro de contas de cobrança completas. Escolha a que você precisa e prossiga para a instalação usando este link.

Se você já está registrado em um dos provedores de serviços Jelastic mencionados acima, você pode iniciar a instalação a partir do seu painel.

1. Clique no botão Marketplace no painel superior e procure a solução Docker Swarm Cluster dentro de uma janela aberta.

Passe o mouse sobre a prancha apropriada e clique em Install para continuar.

2. Em um segundo, o frame de instalação será aberto.

Aqui, você precisa ajustar alguns detalhes para obter o cluster de que precisa:

  • Manager – número de nós de managers a serem incluídos em um cluster (com o IP público sendo anexado automaticamente a cada container).
  • Worker – número de nós de worker a serem incluídos em um cluster.

Escolha o tipo de implementação:

  • Clean Cluster – para criar um cluster simples; como uma opção extra, você pode instalar simultaneamente a UI de gerenciamento Portainer para operação conveniente com nós do cluster.

  • Deploy Stack YML – para executar o docker stack deploy junto com a criação de cluster e implementar instantaneamente os serviços dockerizados necessários, especificando o link para o arquivo YML de composição apropriado:

  • Ambiente – um nome para o seu ambiente.
  • Nome exibidoalias opcional a ser exibido no ambiente.

Como exemplo, criaremos um cluster simples Docker Swarm com três nós manager e cinco nós worker. Dessa forma, assim que todas as configurações necessárias forem declaradas, clique em Install e aguarde alguns minutos para que o Jelastic execute automaticamente todas as ações necessárias.

3. Após o cluster ser implementado, o ambiente correspondente aparecerá no painel.

Em seguida, para começar a trabalhar com seu cluster, você precisa acessar qualquer um de seus nós de manager. Abaixo, descobriremos como isso pode ser feito.

Conexão do Docker Swarm

Após a instalação bem-sucedida, seu cluster pode ser acessado das seguintes maneiras para gerenciamento adicional:

Portainer UI

Caso você tenha instalado um cluster limpo com a interface de usuário Portainer, o painel de gerenciamento apropriado pode ser acessado simplesmente abrindo qualquer nó do manager em um navegador por meio de HTTPS.

Observeção: Por padrão, a conexão com o Portainer é protegida por um certificado SSL auto-assinado. Assim, você pode receber um aviso de que não é confiável para seu navegador. Isso não afeta realmente a funcionalidade do Portainer – você só precisa confirmar se deseja acessar a página solicitada.

O necessário para essas ações pode ser diferente dependendo do navegador usado. Por exemplo, no Google Chrome, você precisa expandir a seção Advanced e clicar no link Proceed to {env_URL}.

As credenciais de autenticação apropriadas para entrar no próprio Portainer podem ser encontradas na notificação de e-mail correspondente que você recebeu durante a criação do Docker swarm.

SSH Gate

Use o Jelastic SSH Gate. Basta conectar-se à sua conta e escolher um dos nós do Manager em seu ambiente do Docker swarm para começar a gerenciar todo o cluster.

Além disso, a partir da versão 5.4 do Jelastic, você pode estabelecer uma conexão SSH para o container necessário diretamente do seu navegador, clicando na opção Web SSH ao lado dele no painel.

Docker Machine

Outra forma de acesso ao container é estabelecer uma conexão remota através do Docker machine e do driver genérico. Para isso, execute os comandos Create remote connection e Connect to the environment, provisionados dentro do frame de sucesso da instalação da solução (você também pode encontrar esses dados em sua caixa de e-mail):

Obsevação: Ao adicionar chaves SSH à sua conta para mais gerenciamento do Docker swarm, considere os seguintes pontos:

  • Caso sua chave SSH privada tenha um nome ou local personalizado (ou seja, se o caminho para ela diferir do padrão ~/.ssh/id_rsa), será necessário ajustar o(s) valor(es) apropriado(s) dentro do comando Create remote connection.
  • O servidor criado é automaticamente fornecido com um Add-on especial, que permite reimportar as novas chaves SSH públicas da sua conta da Plataforma em todos os nós do Docker swarm na camada correspondente, permitindo estabelecer a conexão do docker machine com nova autenticação de parâmetros:

Isso conclui nosso artigo – criar e conectar o cluster swarm com o Jelastic é simples assim! Experimente agora mesmo e obtenha seu cluster confiável e altamente escalável com acesso à funcionalidade nativa do Docker.

***

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/docker-swarm-auto-clustering-and-scaling-with-paas/