13 votes

Keepalived pour plus de 20 adresses virtuelles

J'ai configuré Keepalived sur deux machines Debian pour la haute disponibilité, mais j'ai atteint le nombre maximum d'adresses IP virtuelles que je peux attribuer à mon vrrp_instance. Comment puis-je configurer et basculer sur plus de 20 adresses IP virtuelles?

Voici la configuration, très simple:

LB01: 10.200.85.1
LB02: 10.200.85.2
Adresses IP virtuelles: 10.200.85.100 - 10.200.85.200

Chaque machine exécute également Apache (puis Nginx) en liaison avec les adresses IP virtuelles pour la terminaison des certificats clients SSL et le proxy vers les serveurs web back-end. La raison pour laquelle j'ai besoin de tant d'adresses IP virtuelles est l'impossibilité d'utiliser VirtualHost sur HTTPS.

Voici mon 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
            .
            . jusqu'à
            .
            10.200.85.200
}

Une configuration identique se trouve sur la machine de SECOURS, et tout fonctionne bien, mais uniquement jusqu'à la 20ème adresse IP.

J'ai trouvé un HOWTO discutant de ce problème. Fondamentalement, ils suggèrent d'avoir une seule adresse IP virtuelle et de router tout le trafic "via" cette adresse IP, et "tout ira bien". Est-ce une bonne approche? J'utilise des pare-feu pfSense devant les machines.

Citation du lien ci-dessus:

ip route add $VNET/N via $VIP

ou

route add $VNET netmask w.x.y.z gw $VIP

Merci d'avance.

ÉDIT:

@David Schwartz a dit qu'il serait logique d'ajouter une route, alors j'ai essayé d'ajouter une route statique au pare-feu pfSense, mais cela n'a pas fonctionné comme je m'y attendais.

Route pfSense:

Interface: LAN
Réseau de destination: 10.200.85.200/32 (adresse IP virtuelle)
Passerelle: 10.200.85.100 (adresse IP virtuelle flottante)
Description: Route vers VIP .100

J'ai également vérifié que je disposais de la redirection de paquets activée sur mes hôtes:

$ cat /etc/sysctl.conf
net.ipv4.ip_forward=1
net.ipv4.ip_nonlocal_bind=1

Fais-je quelque chose de mal? J'ai également supprimé toutes les adresses IP virtuelles du keepalived.conf pour ne basculer que sur 10.200.85.100.

15voto

Bazikstano Points 21

La solution la plus simple sans changer votre architecture actuelle est d'utiliser virtual_ipaddress_excluded. Par exemple

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
        . jusqu'à
        10.200.85.200
    }
}

virtual_ipaddress_excluded contient une liste d'adresses IP que keepalived va faire monter et descendre sur le serveur, cependant elles ne sont pas incluses dans le paquet VRRP lui-même donc elles ne comptent pas vers la limite de 20 adresses IP.

Dans mes configurations j'aime allouer une IP spécifiquement pour virtual_ipaddress. c'est-à-dire celle incluse dans les paquets VRRP et mettre tout le reste dans virtual_ipaddress_excluded. C'est une bonne idée car vous ne voulez pas avoir à changer l'IP principale simplement parce qu'un client est parti.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X