Eu configurei o keepalived em duas máquinas Debian para alta disponibilidade, mas encontrei o número máximo de IPs virtuais que posso atribuir ao meu vrrp_instance
. Como eu configuraria e falharia mais de 20 IPs virtuais?
Esta é a configuração muito simples:
LB01: 10.200.85.1
LB02: 10.200.85.2
Virtual IPs: 10.200.85.100 - 10.200.85.200
Cada máquina também está executando a ligação do Apache (mais tarde Nginx) nos IPs virtuais para término do certificado do cliente SSL e proxy para servidores da web de back-end. A razão pela qual eu preciso de tantos VIPs é a incapacidade de usar o VirtualHost no HTTPS.
Este é o meu keepalived.conf:
vrrp_script chk_apache2 {
script "killall -0 apache2"
interval 2
weight 2
}
vrrp_instance VI_1 {
interface eth0
state MASTER
virtual_router_id 51
priority 101
virtual_ipaddress {
10.200.85.100
.
. all the way to
.
10.200.85.200
}
Uma configuração idêntica está na máquina BACKUP e está funcionando bem, mas apenas até o vigésimo IP.
Eu encontrei um HOWTO discutindo esse problema. Basicamente, eles sugerem ter apenas um VIP e rotear todo o tráfego "via" esse único IP e "tudo ficará bem". Será esta uma boa abordagem? Estou executando os firewalls do pfSense na frente das máquinas.
Citação no link acima:
ip route add $VNET/N via $VIP
or
route add $VNET netmask w.x.y.z gw $VIP
Desde já, obrigado.
EDITAR:
@ David Schwartz disse que faria sentido adicionar uma rota, então tentei adicionar uma rota estática ao firewall pfSense, mas isso não funcionou como eu esperava.
rota pfSense:
Interface: LAN
Destination network: 10.200.85.200/32 (virtual IP)
Gateway: 10.200.85.100 (floating virtual IP)
Description: Route to VIP .100
Também verifiquei se o encaminhamento de pacotes estava ativado nos meus hosts:
$ cat /etc/sysctl.conf
net.ipv4.ip_forward=1
net.ipv4.ip_nonlocal_bind=1
Estou fazendo isso errado? Também removi todos os VIPs do keepalived.conf, para que ele falhe apenas em 10.200.85.100.
fonte
Respostas:
A solução mais simples, sem alterar sua arquitetura atual, é usar virtual_ipaddress_excluded . Por exemplo
virtual_ipaddress_excluded contém uma lista de endereços IP que o keepalived trará para cima e para baixo no servidor, no entanto, eles não estão incluídos no pacote VRRP em si, portanto, não contam para o limite de 20 endereços IP.
Nas minhas configurações, gosto de alocar um IP especificamente para o endereço_ip virtual . isto é, aquele que está incluído nos pacotes VRRP e coloca todo o resto em virtual_ipaddress_excluded . Essa é uma boa ideia, porque você não deseja alterar o IP principal apenas porque um cliente foi embora.
fonte