Existem duas maneiras de obter HA (alta disponibilidade) de um balanceador de carga - ou em relação a qualquer serviço. Vamos supor que você tenha duas máquinas, com endereços IP:
- 192.168.100.101
- 192.168.100.102
Os usuários se conectam a um IP, então o que você deseja fazer é separar o IP de uma caixa específica - por exemplo, crie um IP virtual. Esse IP será 192.168.100.100.
Agora, você pode escolher o serviço de alta disponibilidade, que cuidará do failover / failback automático do endereço IP. Alguns dos serviços mais simples para o unix são (u) carp e mantidos vivos, alguns dos mais complexos são, por exemplo, o RedHat Cluster Suite ou o Pacemaker.
Vamos dar o keepalived como exemplo - dois serviços de keepalived - cada um executando em sua própria caixa - e eles se comunicam juntos. Essa comunicação é freqüentemente chamada de batimento cardíaco.
| VIP | | |
| Box A | ------v^-----------v^---- | Box B |
| IP1 | | IP2 |
Se um keepalived parar de responder (o serviço será desativado por qualquer motivo, ou a caixa será desativada ou desativada) - o keepalived em outra caixa notará batimentos cardíacos perdidos e presumirá que outro nó está morto e executará ações de failover. Essa ação no nosso caso estará trazendo o IP flutuante.
| VIP |
------------------ -------------- | Box B |
| IP2 |
O pior caso que pode acontecer nesse caso é a perda de sessões para os clientes, mas eles poderão se reconectar. Se você deseja evitar isso, dois balanceadores de carga precisam ser capazes de sincronizar os dados da sessão entre eles e, se puderem fazer isso, os usuários não perceberão nada, exceto talvez um pequeno atraso.
Outra armadilha dessa configuração é o cérebro dividido - quando as duas caixas estão online, mas o link é cortado, e as duas caixas exibem o mesmo IP. Isso geralmente é resolvido através de algum tipo de mecanismo de vedação (reserva SCSI, reinicialização de IPMI, corte de energia da PDU inteligente, ...) ou número ímpar de nós que exigem que a maioria dos membros do cluster esteja ativa para que o serviço seja iniciado.
| VIP | | VIP |
| Box A | | Box B |
| IP1 | | IP2 |
Um software de gerenciamento de cluster mais complexo (como o Pacemaker) pode mover todo o serviço (por exemplo: pará-lo em um nó e iniciá-lo em outro) - e é dessa maneira que a HA para serviços como bancos de dados pode ser alcançada.
Outra maneira possível - se você estiver controlando roteadores perto de seus balanceadores de carga, é utilizar o ECMP. Essa abordagem também permite dimensionar horizontalmente os balanceadores de carga. Isso funciona por cada uma das duas caixas que falam BGP para o (s) seu (s) roteador (s). Cada caixa deve anunciar o IP virtual (192.168.100.100) e o roteador carregará o saldo do tráfego via ECMP. Se uma máquina morrer, ela interromperá a publicidade VIP, o que impedirá que os roteadores enviem tráfego para ela. A única coisa que você precisa cuidar nesta configuração é parar o IP de publicidade se o próprio balanceador de carga morrer.