Como Implementar um Balanceador de carga
Um Balanceador de carga distribui os pedidos entre vários servidores, para que nenhum fique sobrecarregado e o serviço se mantenha operacional mesmo que um falhe.
Neste tutorial, cria uma regra de balanceamento sobre um pool de, pelo menos, dois servidores da mesma Subscrição.
👍 O que obtém
Uma regra de balanceamento que publica um serviço num IP público e distribui o tráfego entre os servidores que escolher.
Como funciona o balanceamento
O tráfego chega a um IP e a uma porta públicos, e o balanceador distribui-o pelos servidores do pool de acordo com um algoritmo. Para que isto funcione, todos os servidores do pool têm de servir o mesmo: o balanceamento distribui a carga, não sincroniza o conteúdo.
📘 Distribui carga, não é Alta disponibilidade total
O balanceamento melhora a disponibilidade e absorve picos, mas não torna o seu serviço infalível.
Se um servidor do pool servir algo diferente dos restantes, o Cliente verá respostas inconsistentes. Mantenha o mesmo conteúdo e configuração em todos.
Antes de começar
Iniciar sessão na plataforma Plenit com um Utilizador com Permissões de administração sobre a Organização.
Ter pelo menos dois servidores implementados na mesma Subscrição. Pode criar a regra antes de os adicionar e incluí-los depois.
Passo 1. Aceda a Load Balancers
Entre na subscrição de Servidores a partir do respetivo cartão.
Abra a subsecção Load Balancers no menu de servidores.

Passo 2. Crie uma nova regra
Se ainda não houver regras, verá o ecrã inicial para criar uma; se já existirem, verá a lista. Selecione a Network sobre a qual vai criar a regra e prima New rule.

Passo 3. Configure a rede, o IP e as portas
Escolha a rede com Select network.
Selecione um Public IP dos disponíveis para essa rede.
Defina o Protocol (
TCPouUDP), a Public Port (pela qual entram os pedidos da Internet, por exemplo80ou443) e a Private Port (para a qual são reencaminhados internamente).Prima Next.
🚧 Uma porta, uma única utilização por rede
Numa mesma rede, uma porta só pode ser utilizada uma vez: não pode haver duas regras para a mesma porta no mesmo espaço de rede.

Passo 4. Defina que redes terão acesso
Indique a partir de que IPs se pode aceder ao serviço publicado:
Any: acesso a partir de qualquer rede. É a opção menos segura.
Specify: acesso apenas a partir dos IPs ou intervalos que indicar.
Com Specify, introduza o IP ou o intervalo permitido (pode adicionar vários) e prima Next.

Passo 5. Escolha o algoritmo e a afinidade
Selecione como os pedidos são distribuídos entre os servidores do pool:
Round Robin
Distribui alternadamente, de forma circular
Caso geral, servidores equivalentes
Least connections
Envia cada pedido para o servidor com menos ligações ativas
Pedidos de duração desigual
Source
Atribui de acordo com o IP de origem
Quando o mesmo cliente deve ir sempre para o mesmo servidor
Em seguida, decida se ativa as regras de afinidade. Ative-as se a aplicação guardar o estado da sessão no próprio servidor e não o partilhar entre máquinas; se o fizer, preencha Table size (KB) e Expiration(s). Prima Next.
📘 A afinidade mantém o cliente no mesmo servidor
Sem estado partilhado entre servidores, distribuir às cegas pode interromper a sessão de um utilizador a meio da navegação. A afinidade evita-o, associando-o a um servidor, em troca de uma distribuição um pouco menos uniforme.

Passo 6. Selecione os servidores do pool
Escolha as máquinas que responderão aos pedidos. Prima cada elemento apresentado como Not selected e atribua-lhe o IP correspondente. Um servidor corretamente adicionado apresenta uma marca de verificação e o contorno assinalado com a cor da Plenit. Quando terminar, prima Create Rule.

Passo 7. Verifique que a regra foi criada
Durante a criação, verá uma mensagem do tipo Servers: Creating Load Balancer ... e, no final, outra a confirmar que foi criada corretamente. A regra aparece na lista, embora possa ter de atualizar o ecrã.
Para confirmar que o serviço responde realmente, teste o endpoint público a partir do exterior. Em Linux ou macOS:
No Windows, a partir do PowerShell:
E em cada servidor do pool, confirme que o serviço está a escutar na porta privada. Em Linux:
No Windows:
Se algo não estiver correto
Não permite criar a regra devido à porta
Essa porta já está em utilização na rede
Utilize outra porta pública ou liberte a existente
O endpoint público não responde
Nenhum servidor do pool escuta na porta privada
Verifique com ss / netstat se o serviço está em execução
Um utilizador perde a sessão ao navegar
Distribuição sem estado partilhado
Ative a afinidade ou partilhe o estado entre servidores
Conclusão
Com isto, tem um serviço publicado atrás de um balanceador que distribui o tráfego entre vários servidores, o que suaviza os picos e mantém o serviço mesmo que uma máquina falhe. O balanceamento tem realmente bom desempenho quando o pool é homogéneo e escolhe o algoritmo adequado à sua carga: é aí que deixa de distribuir pedidos às cegas e passa a distribuí-los com critério.
Última atualização
Isto foi útil?

