He configurado keepalived en dos máquinas Debian para una alta disponibilidad, pero me he encontrado con la cantidad máxima de IP virtuales que puedo asignar a mi vrrp_instance
. ¿Cómo haría para configurar y fallar más de 20 IP virtuales?
Esta es la configuración, muy simple:
LB01: 10.200.85.1
LB02: 10.200.85.2
Virtual IPs: 10.200.85.100 - 10.200.85.200
Cada máquina también está ejecutando el enlace Apache (más tarde Nginx) en las IP virtuales para la terminación del certificado del cliente SSL y el proxy para servidores web backend. La razón por la que necesito tantos VIP es la incapacidad de usar VirtualHost en HTTPS.
Este es mi 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
}
Hay una configuración idéntica en la máquina BACKUP, y funciona bien, pero solo hasta la 20ª IP.
He encontrado un CÓMO discutiendo este problema. Básicamente, sugieren tener solo un VIP y enrutar todo el tráfico "a través de" esta IP, y "todo estará bien". ¿Es este un buen enfoque? Estoy ejecutando firewalls pfSense frente a las máquinas.
Cita del enlace de arriba:
ip route add $VNET/N via $VIP
or
route add $VNET netmask w.x.y.z gw $VIP
Gracias por adelantado.
EDITAR:
@David Schwartz dijo que tendría sentido agregar una ruta, así que intenté agregar una ruta estática al firewall de pfSense, pero eso no funcionó como esperaba.
Ruta 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
También me aseguré de tener habilitado el reenvío de paquetes en mis hosts:
$ cat /etc/sysctl.conf
net.ipv4.ip_forward=1
net.ipv4.ip_nonlocal_bind=1
¿Estoy haciendo esto mal? También eliminé todos los VIP del keepalived.conf, por lo que solo falla durante 10.200.85.100.
fuente
Respuestas:
La solución más simple sin cambiar su arquitectura actual es hacer uso de virtual_ipaddress_excluded . Por ejemplo
virtual_ipaddress_excluded contiene una lista de direcciones IP que keepalived generará en el servidor, sin embargo, no están incluidas en el paquete VRRP en sí mismo, por lo que no cuentan para el límite de 20 direcciones IP.
En mis configuraciones me gusta asignar una IP específicamente para virtual_ipaddress . es decir, el que está incluido en los paquetes VRRP y pone todo lo demás en virtual_ipaddress_excluded . Esta es una buena idea porque no desea tener que cambiar la IP principal solo porque un cliente se fue.
fuente