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 arquivo vrrp_instance
. Como eu configuraria e falharia em 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 Apache (mais tarde Nginx) nos IPs virtuais para terminação de certificado de cliente SSL e proxy para servidores web de back-end. A razão pela qual preciso de tantos VIPs é a incapacidade de usar o VirtualHost em 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 20º IP.
Eu encontrei umCOMOdiscutindo esse problema. Basicamente, eles sugerem ter apenas um VIP e rotear todo o tráfego “através” deste IP, e “tudo ficará bem”. Será esta uma boa abordagem? Estou executando firewalls pfSense na frente das máquinas.
Citação do 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 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 me certifiquei de ter o encaminhamento de pacotes habilitado em 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.
Responder1
A solução mais simples sem alterar sua arquitetura atual é usarvirtual_ipaddress_excluído. Por exemplo
vrrp_instance VI_1 {
interface eth0
state MASTER
virtual_router_id 51
priority 101
virtual_ipaddress {
10.200.85.100
}
virtual_ipaddress_excluded {
10.200.85.101
. all the way to
10.200.85.200
}
}
virtual_ipaddress_excluídocontém uma lista de endereços IP que o keepalived ativará e desativará no servidor, porém eles não estão incluídos no próprio pacote VRRP, portanto não contam para o limite de 20 endereços IP.
Nas minhas configurações gosto de alocar um IP especificamente paraendereço_ip_virtual. ou seja, aquele que está incluído nos pacotes VRRP e coloca todo o resto emvirtual_ipaddress_excluído. Esta é uma boa ideia porque você não quer ter que alterar o IP principal só porque um cliente saiu.
Responder2
Desculpe por responder a uma pergunta tão antiga, mas acho que esse limite não existe mais - não encontro nada nodocumentação em relação a um número máximo de IPs virtuais. Alguém poderia me apoiar nisso? Obrigado!