funciona bem simples. A primeira regra é que você tem que ter mais de uma vez. Para simplificar, configurarei em um datacenter e com endereços IP pertencentes a este DC (você pode fazê-lo com seus próprios endereços IP e vários datacenters, mas estamos tolerando algumas coisas AS multihoming, BGP e algumas outras coisas que não são tão barato e fácil de implementar).
Você precisará ter pelo menos 4 servidores (você pode fazê-lo com apenas dois, mas não é bom). 2 para app e 2 para loadbalancing, cada servidor com várias placas de rede.
A configuração básica é assim:
/---\ /------\ /----------\
| S |-----| LB 1 |-----| SERVER 1 |
--NET--| W | \------/\ /\----------/
| I | \_/
| T | / \
--NET--| C | /------\/ \/----------\
| H |-----| LB 2 |-----| SERVER 2 |
\---/ \------/ \----------/
Você tem duas linhas separadas para a rede fornecidas pelo seu DC. Ambas as linhas estão na mesma VLAN e ambas estão conectadas ao switch (a melhor maneira é de 2 switches). 2 loadbalancers estão conectados a esses switches e compartilham um IP virtual. É o IP que pode fluir entre essas duas máquinas. Você pode usar VRRP e keepalived para conseguir isso muito bem.
Por trás desses dois loadbalancers, dois servidores espelhados são colocados. E aqui vem a mágica:
- Você apontará seu registro DNS para esse virtual ip
- Quando alguém acessa seu aplicativo, ele passa por um LB e termina em um servidor
- Quando um servidor morre, o loadbalancer o notará com algo como healtcheck e desativará esse servidor. Cada novo pedido será enviado para o servidor de integridade.
- Quando um balanceador de carga for interrompido, o keepalived o notará (novamente por meio de uma verificação de integridade) e moverá esse IP flutuante para o balanceador de carga de integridade e ninguém notará isso.
Você deve saber que o HA é caro e não pode fazê-lo com baixo orçamento. Você precisa calcular se a interrupção de seu serviço não é mais barata que o custo de HA, às vezes é.
Você deve procurar nas palavras-chave vrrp, keepalived e haproxy algumas idéias e maneiras de pensar sobre isso.