Ich habe Keepalived auf zwei Debian-Rechnern für hohe Verfügbarkeit eingerichtet, aber ich habe die maximale Anzahl virtueller IPs erreicht, die ich meinem zuweisen kann vrrp_instance
. Wie gehe ich vor, um mehr als 20 virtuelle IPs zu konfigurieren und ausfallen zu lassen?
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 jeder Maschine läuft außerdem Apache (später Nginx) mit Bindung an die virtuellen IPs für SSL-Client-Zertifikatsbeendigung und Proxying zu Backend-Webservern. Der Grund, warum ich so viele VIPs brauche, ist die Unfähigkeit, VirtualHost auf HTTPS zu verwenden.
Dies 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
}
Auf der BACKUP-Maschine befindet sich eine identische Konfiguration und funktioniert einwandfrei, aber nur bis zur 20. IP.
Ich habe eineWIE MANDiskussion dieses Problems. Im Grunde schlagen sie vor, nur eine VIP zu haben und den gesamten Verkehr „über“ diese eine IP zu leiten, und „alles wird gut“. Ist das ein guter Ansatz? Ich verwende pfSense-Firewalls vor den Maschinen.
Zitat aus obigem Link:
ip route add $VNET/N via $VIP
or
route add $VNET netmask w.x.y.z gw $VIP
Dank im Voraus.
BEARBEITEN:
@David Schwartz sagte, es wäre sinnvoll, eine Route hinzuzufügen, also habe ich versucht, der pfSense-Firewall eine statische Route hinzuzufügen, aber das hat nicht wie erwartet funktioniert.
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 außerdem sichergestellt, dass auf meinen Hosts die Paketweiterleitung 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, sodass es nur über 10.200.85.100 fehlschlägt.
Antwort1
Die einfachste Lösung, ohne Ihre aktuelle Architektur zu ändern, ist die Verwendung vonvirtuelle_IP-Adresse_ausgeschlossen. Zum Beispiel
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
}
}
virtuelle_IP-Adresse_ausgeschlossenenthält eine Liste von IP-Adressen, die Keepalived auf dem Server hoch- und herunterfährt. Sie sind jedoch nicht im VRRP-Paket selbst enthalten und werden daher nicht auf das Limit von 20 IP-Adressen angerechnet.
In meinen Konfigurationen vergebe ich gerne eine IP speziell fürvirtuelle_IP-Adresse. also das, was in den VRRP-Paketen enthalten ist und alles andere invirtuelle_IP-Adresse_ausgeschlossenDas ist eine gute Idee, denn Sie möchten die Haupt-IP nicht ändern müssen, nur weil ein Kunde gegangen ist.
Antwort2
Entschuldigen Sie, dass ich auf eine so alte Frage antworte, aber ich glaube, diese Grenze existiert nicht mehr - ich finde nichts in derDokumentation bezüglich einer maximalen Anzahl virtueller IPs. Kann mir jemand dabei helfen? Danke!