Keepalived für mehr als 20 virtuelle Adressen

12

Ich habe Keepalive auf zwei Debian-Rechnern für hohe Verfügbarkeit eingerichtet, aber ich habe die maximale Anzahl von virtuellen IPs erreicht, die ich meinen zuweisen kann vrrp_instance. Wie gehe ich vor, um mehr als 20 virtuelle IPs zu konfigurieren und auszufallen?

Dies ist das sehr einfache Setup:

LB01: 10.200.85.1
LB02: 10.200.85.2
Virtual IPs: 10.200.85.100 -  10.200.85.200

Auf jedem Computer wird auch eine Apache-Bindung (später Nginx) für die virtuellen IP-Adressen ausgeführt, um die Beendigung des SSL-Client-Zertifikats zu ermöglichen und Proxys an Back-End-Webserver zu senden. Der Grund, warum ich so viele VIPs brauche, ist die Unfähigkeit, VirtualHost auf HTTPS zu verwenden.

Das ist meine 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
}

Eine identische Konfiguration befindet sich auf dem BACKUP-Computer und funktioniert einwandfrei, jedoch nur bis zur 20. IP.

Ich habe ein HOWTO gefunden , das dieses Problem bespricht . Grundsätzlich empfehlen sie, nur einen VIP zu haben und den gesamten Datenverkehr "über" diese eine IP weiterzuleiten, und "alles wird gut". Ist das ein guter Ansatz? Ich starte pfSense-Firewalls vor den Rechnern.

Zitat aus dem obigen Link:

ip route add $VNET/N via $VIP

or

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

Danke im Voraus.

BEARBEITEN:

@David Schwartz sagte, dass es sinnvoll wäre, eine Route hinzuzufügen. Deshalb habe ich versucht, der pfSense-Firewall eine statische Route hinzuzufügen, aber das hat nicht so funktioniert, wie ich es erwartet hatte.

pfSense-Route:

Interface:            LAN
Destination network:  10.200.85.200/32 (virtual IP)
Gateway:              10.200.85.100    (floating virtual IP)
Description:          Route to VIP .100

Ich habe auch sichergestellt, dass die Paketweiterleitung auf meinen Hosts aktiviert ist:

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

Mache ich das falsch? Ich habe auch alle VIPs aus der keepalived.conf entfernt, so dass es nur über 10.200.85.100 fehlschlägt.

cvaldemar
quelle
Ich halte diesen Ansatz für sinnvoll.
David Schwartz
... oder würde ich einfach zusätzliche vrrp_instances mit jeweils 20 IPs erstellen? Wahrscheinlich könnte ich die gehosteten HTTPS-Sites so gruppieren, dass sie eine zusätzliche Bedeutung erhalten.
cvaldemar
Das Zielnetzwerk sollte aus mehr als 20 IPs bestehen und nicht aus einer einzelnen IP.
David Schwartz

Antworten:

14

Die einfachste Lösung, ohne Ihre aktuelle Architektur zu ändern, ist die Verwendung von virtual_ipaddress_excluded . Beispielsweise

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_excluded enthält eine Liste von IP-Adressen, die durch keepalived auf dem Server hoch- und heruntergefahren werden. Sie sind jedoch nicht im VRRP-Paket selbst enthalten, sodass sie nicht zur Begrenzung auf 20 IP-Adressen zählen.

In meinen Konfigurationen möchte ich eine IP speziell für virtual_ipaddress zuweisen . dh diejenige, die in den VRRP-Paketen enthalten ist und alles andere in virtual_ipaddress_excluded setzt . Dies ist eine gute Idee, da Sie die Haupt-IP nicht ändern müssen möchten, nur weil ein Kunde abgereist ist.

Johnf
quelle
Ausgezeichnet. Ich mache dies anstelle von mehreren vrrp-Instanzen. Sie haben mich auch dazu gebracht, mich über die Dokumentation auf dem Laufenden zu halten. Vielen Dank!
cvaldemar