Eu uso o modo de roteamento direto. Como posso disponibilizar o serviço de balanceamento de carga para o diretor (DIR) usando o ip de serviço virtual (VIP)?
Quando tento conectar-me do DIR ao VIP, o Linux (3.2.0) vê que o VIP está vinculado a uma interface local e usa o próprio VIP como endereço de origem.
Tcpdump:
08:47:51.573100 IP VIP.34762 > VIP.ssh: Flags [S]
De acordo com o tcpdump, o pacote não é encaminhado. O Ipvsadm vê uma conexão inativa extra. Mesmo se fosse encaminhado, não importaria, já que o servidor real (RS) não seria capaz de enviar uma resposta, pois não saberia para onde enviá-lo (RS tem o limite VIP para a interface lo).
IMHO, a solução é forçar o DIR a nunca criar pacotes com o VIP como endereço de origem. Ao se conectar ao VIP, ele deve usar o IP DIR como endereço de origem.
No entanto, outro problema pode ser que o IPVS não escute na interface de loopback.
# ip route get VIP
local VIP dev lo src VIP
Eu poderia usar o iptables para reescrever os pacotes, mas isso parece bastante hackiano.
TIA.
Tags routing linux load-balancing