Balanceadores de carga


Sobre balanceadores de carga

Balanceadores de carga permitem distribuir automaticamente o tráfego de entrada entre vários servidores, a fim de maximizar o desempenho do aplicativo ou do site. Efetivamente, um balanceador de carga é uma das ferramentas que suportam o dimensionamento horizontal de aplicativos.

Antes de entrar nos detalhes de uma configuração do balanceador de carga, vamos revisar as funções de seus principais componentes.

Criação do balanceador de carga

Enquanto parâmetros comuns como nome e descrição são auto-explicativos, o aspecto de rede dos balanceadores de carga vale a pena considerar um pouco mais.

A sub-rede que você escolheu durante a criação do balanceador de carga define a rede e o conjunto de IPs privados onde o IP do balanceador de carga (IP virtual) será criado e onde os membros (terminais, geralmente instâncias) estarão localizados. Observe que, para os balanceadores de carga criados via portal, a sub-rede para o balanceador de carga e seus membros será a mesma (os balanceadores de carga criados via API ou linha de comando podem ter sub-redes diferentes).

A maioria dos balanceadores de carga estará acessível na Internet. Portanto, você precisará adquirir e atribuir um IP flutuante a um balanceador de carga. Além disso, a rede escolhida deve estar conectada a um roteador com gateways externos (consulte a seção roteadores para obter mais detalhes)

Ouvintes

Um ouvinte define portas e protocolos nos quais o balanceador de carga escutará. Quando um ouvinte é configurado, o balanceador de carga estará pronto para abrir conexões TCP para as solicitações vindas nessas portas.

O balanceador de carga suporta vários protocolo de ouvintes:

  • TCP é o mais genérico. A conexão recebida será encaminhada aos membros "como está", sem qualquer análise do conteúdo. Geralmente, qualquer protocolo que trabalha sobre TCP pode ser configurado como TCP.
  • HTTP é um protocolo recomendado para servidores Web, pois ele analisa as solicitações recebidas e pode garantir a consistência das conexões e dos dados enviados.
  • HTTPS é uma versão segura (criptografada) do HTTP. Em geral, os balanceadores de carga podem suportar dois tipos de HTTPS - terminados (ou seja, o balanceador de carga fará descriptografia e devem fornecer o certificado SSL para os clientes) e não terminados (isso significa que o tráfego será encaminhado sem descriptografia para o membros, que devem fornecer certificados SSL). O HTTPS terminado requer a integração do serviço de armazenamento de certificados (Barbican), que ainda não faz parte da funcionalidade da plataforma. Como resultado, apenas o HTTPS não terminado é suportado, o que é efetivamente quase o mesmo que o TCP genérico.

Pools

Pools são contêineres para membros de um ouvinte específico, que também definem o algoritmo das distribuições de tráfego de entrada. Os seguintes algoritmos são suportados:

  • Round robin distribui igualmente novas solicitações de entrada entre membros.
  • Menos conexões envia a próxima solicitação de entrada para o membro com o menor número de conexões ativas (atualmente).
  • IP de origem aceita o IP do cliente (origem) em consideração, enviando solicitação de entrada do mesmo IP de origem para o mesmo membro.

Membros

Membros são os endpoints (geralmente instâncias) trabalhando atrás do balanceador de carga. Os membros são criados por pool e especificados pelo seu endereço IP (observe que esse IP deve estar na mesma sub-rede que o próprio VIP do balanceador de carga)

O peso define quantas conexões (proporcionalmente) o membro pode receber. Por exemplo, um membro com peso 10 receberá duas vezes mais conexões que um membro com peso 5. O valor deve estar entre 0 e 256; um valor 0 significa que o membro não receberá novas conexões (mas continuará atendendo as existentes, se houver)

Monitores de integridade

Monitor de integridade é um mecanismo que pode ser usado para verificar a integridade dos membros. Se um membro não estiver respondendo às solicitações conforme o esperado, o balanceador de carga interromperá o envio de solicitações para esse membro; no entanto, continuará a monitorá-lo, até que se torne íntegro novamente. Se os monitores não estiverem ativados, a integridade dos membros não será verificada - eles sempre serão considerados íntegros (o status será "SEM MONITORAÇÃO")

Os parâmetros a seguir gerenciam monitores de integridade:

  • Pool - o pool para o qual você cria um monitor de integridade.
  • Tempo limite - quanto tempo (em segundos) para esperar um membro responder à solicitação de verificação de integridade.
  • Atraso define a frequência das verificações de saúde. Por exemplo, para executar uma verificação de integridade a cada minuto, especifique delay = 60.
  • Máximo de tentativas - quantas vezes uma verificação de saúde deve relatar êxito antes que o membro seja marcado como "online", se anteriormente o membro estava offline. O valor deve estar entre 1 e 10. Você normalmente o define como 1, a menos que esteja solucionando problemas de um membro com falha intermitente.
  • Método HTTP - uma sequência - o método usado pela função de verificação de integridade. Um dos CONNECT, DELETE, GET, HEAD, OPTIONS, PATCH, POST, PUT ou TRACE. Por padrão, GET é usado.
  • Caminho da URL - a URL a ser recuperada durante a verificação de integridade. / por padrão.
  • Códigos esperados - códigos HTTP que indicam que a verificação de saúde foi bem-sucedida. O valor padrão 200 é usado; pode ser um número único (como 200), lista (200, 201) ou um intervalo (200-202)

Observe que o parâmetro max_retries_down controla quantas vezes o membro deve falhar na verificação de integridade para ser considerado não íntegro atualmente não pode ser definido pela interface do usuário e o valor padrão de "3" é usado.


Criando e gerenciando balanceadores de carga

Para criar um balanceador de carga, siga as seguintes etapas:

  • Navegue até "Balanceadores de carga" na seção "Rede" e clique em "Criar novo balanceador de carga".
  • Digite o nome para o novo balanceador de carga, selecione a sub-rede onde o balanceador de carga e seus membros estarão localizados, o endereço IP do balanceador de carga e, se desejar, uma descrição. Depois clique em "Criar". Depois que o novo balanceador de carga passar do estado "PENDING_CREATE" para "ATIVO", você poderá gerenciá-lo - para isso, clique em "Gerenciar" no menu de ação do balanceador de carga.
  • Agora, vá para a página "Ouvintes" e configure um ouvinte, especificando protocolo e porta para trabalhar. Você pode configurar vários ouvintes, se necessário, por exemplo, um para a porta HTTP 80 e outro para a porta HTTPS 443.
  • Agora, vá para a próxima guia e crie um pool para os ouvintes criados anteriormente.
  • Agora, vá para a guia "Membros" e adicione membros adicionando seus endereços IP ao(s) pool(s) criado(s) anteriormente.

Nesse ponto, seu balanceador de carga começará a funcionar. No entanto, para garantir que ele envie tráfego apenas para os membros íntegros e exclua automaticamente os membros que param de funcionar corretamente, é recomendável configurar os monitores de integridade dos conjuntos.