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.


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.


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.