Keepalived para más de 20 direcciones virtuales

Keepalived para más de 20 direcciones virtuales

Configuré keepalived en dos máquinas Debian para alta disponibilidad, pero me encontré con la cantidad máxima de IP virtuales que puedo asignar a mi vrrp_instance. ¿Cómo haría para configurar y fallar en más de 20 IP virtuales?

Esta es la configuración, muy sencilla:

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 ejecuta el enlace Apache (más tarde Nginx) en las IP virtuales para la terminación del certificado de cliente SSL y el proxy a servidores web backend. La razón por la que necesito tantos VIP es la imposibilidad de utilizar 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 de RESPALDO y funciona bien, pero solo hasta la IP número 20.

he encontrado unCÓMOdiscutiendo este problema. Básicamente, sugieren tener sólo 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 de antemano.

EDITAR:

@David Schwartz dijo que tendría sentido agregar una ruta, así que intenté agregar una ruta estática al firewall pfSense, pero 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 de keepalived.conf para que solo falle en 10.200.85.100.

Respuesta1

La solución más simple sin cambiar su arquitectura actual es hacer uso dedirección_ip_virtual_excluida. Por ejemplo

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
    }
}

dirección_ip_virtual_excluidacontiene una lista de direcciones IP que keepalived activará y desactivará en el servidor; sin embargo, no están incluidas en el paquete VRRP, por lo que no cuentan para el límite de 20 direcciones IP.

En mis configuraciones me gusta asignar una IP específicamente paradirección_ip_virtual. es decir, el que está incluido en los paquetes VRRP y poner todo lo demás endirección_ip_virtual_excluida. Esta es una buena idea porque no querrás tener que cambiar la IP principal sólo porque un cliente se fue.

Respuesta2

Perdón por responder a una pregunta tan antigua, pero creo que este límite ya no existe; no encuentro nada en eldocumentación respecto a un número máximo de ips virtuales. ¿Alguien podría respaldarme en esto? ¡Gracias!

información relacionada