Existem algumas maneiras de obter alta disponibilidade (HA) 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ê quer fazer é separar o IP da caixa específica - por exemplo, criar um IP virtual. Esse IP será 192.168.100.100.
Agora, você pode escolher o serviço HA que cuidará do failover / failback automático do endereço IP. Alguns dos serviços mais simples para o unix são (u) carpa e keepalived, alguns dos mais complexos são, por exemplo, RedHat Cluster Suite ou Pacemaker.
Vamos considerar o keepalived como um exemplo - dois serviços keepalived - cada um executando em sua própria caixa - e eles se comunicam juntos. Essa comunicação é freqüentemente chamada de pulsação.
| VIP | | |
| Box A | ------v^-----------v^---- | Box B |
| IP1 | | IP2 |
Se um keepalived parar de responder (o serviço fica inativo por qualquer motivo, ou a caixa é rejeitada ou desligada) - keepalived em outra caixa notará pulsações perdidas e presumirá que outro nó está inativo 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ê quiser evitar isso, dois balanceadores de carga devem ser capazes de sincronizar os dados da sessão entre eles, e se eles puderem fazer isso, os usuários não notarão nada, exceto talvez um pequeno atraso.
Outra armadilha dessa configuração é dividir o cérebro - quando as duas caixas estão online, mas o link é cortado, e ambas as caixas trazem o mesmo IP. Isso geralmente é resolvido por meio de algum tipo de mecanismo de proteção (reserva SCSI, reinicialização IPMI, corte de energia de PDU inteligente, ...) ou um número ímpar de nós que exigem que a maioria dos membros de cluster esteja ativa para que o serviço seja iniciado.
| VIP | | VIP |
| Box A | | Box B |
| IP1 | | IP2 |
Um software de gerenciamento de clusters mais complexo (como o Pacemaker) pode mover todo o serviço (por exemplo: pará-lo em um nó e iniciá-lo em outro) - e é assim que HA para serviços como bancos de dados pode ser alcançado.
Outra maneira possível - se você estiver controlando roteadores próximos aos balanceadores de carga, é utilizar o ECMP. Essa abordagem também permite dimensionar balanceadores de carga horizontalmente. Isso funciona para cada uma das suas duas caixas falando BGP para o (s) seu (s) roteador (s). Cada caixa tem que anunciar o IP virtual (192.168.100.100) e o roteador carregará o tráfego do contrapeso através do ECMP. Se uma máquina morrer, ela interromperá a publicidade VIP, o que, por sua vez, impedirá que os roteadores enviem tráfego para ela. A única coisa que você precisa resolver nessa configuração é parar de anunciar o IP se o balanceador de carga morrer.