HAProxy + Keepalived + mehrere Backend-Farmen / virtuelle IP-Adressen

HAProxy + Keepalived + mehrere Backend-Farmen / virtuelle IP-Adressen

Wir haben mehrere Backend-Farmen (HTTP, FTP usw.), im Grunde eine Farm für jeden Kunden, und ich bin dabei, unsere Lastausgleichsinfrastruktur neu aufzubauen, indem ich vonPiranhaZuHAProxy
Da wir verwenden mehrere verschiedene Backend-Serverfarmen, die Piranha-Konfiguration sieht derzeit so aus (Beispiel zeigt Farmwebserv01, 2. Bauernhofwebserv02verwendet dieselbe Konfiguration, aber eine andere virtuelle IP):

virtual webserv01 {
active = 1
address = 10.11.11.1 eth2:30
vip_nmask = 255.255.255.0
port = 80
send = "GET / HTTP/1.0\r\n\r\n"
expect = "HTTP"
use_regex = 0
load_monitor = none
scheduler = rr
protocol = tcp
timeout = 6
reentry = 15
quiesce_server = 0
server webserv01v {
address = 192.168.101.64
active = 1
port = 80
weight = 1
}
server webserv02v {
address = 192.168.102.64
active = 1
port = 80
weight = 1
}
server webserv05v {
address = 192.168.101.65
active = 1
port = 80
weight = 1
}
server webserv06v {
address = 192.168.102.65
active = 1
port = 80
weight = 1
}
}

(z. B. hat Kunde 1 seine eigene Webserverfarm mit vIP 10.11.11.1:80, Kunde 2 hat eine Farm mit vIP 10.11.11.2:80). Ich bin neugierig, ob eine einzelne HAProxy-Instanz mehrere Farmen desselben Dienstes mit unterschiedlichen eindeutigen vIP-Adressen verwalten kann. Die

grundlegende Konfiguration würde folgendermaßen aussehen:
2 HAProxy-Instanzen (mit Failover)
4 HTTP-Backend-Farmen (eine für jeden Kunden)
2 FTP-Farmen

Zur Verdeutlichung finden Sie im Anhang mein HAProxy-Konfigurationsbeispiel für 2 Webserverfarmen. Beachten Sie die unterschiedlichen virtuellen IPs:

#---------------------------------------------------------------------
# LB: VIRTUAL WEBSERVER POOL #01
#---------------------------------------------------------------------
frontend vWEB-LB-01
bind    10.11.11.1:80
mode    http
default_backend vWEB-Pool-01

backend vWEB-Pool-01
mode    http
balance roundrobin
server  webserv01v  192.168.101.64:80   check   weight 100  inter 1000
server  webserv02v  192.168.102.64:80   check   weight 100  inter 1000
server  webserv05v  192.168.101.65:80   check   weight 100  inter 1000
server  webserv06v  192.168.102.65:80   check   weight 100  inter 1000

#---------------------------------------------------------------------
# LB: VIRTUAL WEBSERVER POOL #02
#---------------------------------------------------------------------
frontend vWEB-LB-02
bind    10.11.11.2:80
mode    http
default_backend vWEB-Pool-02

backend vWEB-Pool-02
mode    http
balance roundrobin
server  webserv01v  192.168.101.75:80   check   weight 100  inter 1000
server  webserv02v  192.168.101.76:80   check   weight 100  inter 1000
server  webserv05v  192.168.101.68:80   check   weight 100  inter 1000
server  webserv06v  192.168.101.69:80   check   weight 100  inter 1000

Können HAProxy und/oder keeoalived dies so handhaben, wie es gezeigt wird? Wenn ja, wie würde ich das angehen?

Ich würde es gerne für Failover-Zwecke zwischen den beiden HAProxy-Instanzen verwenden keepalivedund sie den Lastenausgleich für die Backend-Farmen durchführen lassen. Ich bin im Moment etwas verwirrt über die mehreren virtuellen IP-Adressen, die ich verwenden muss, jede Einsicht wäre sehr willkommen!

Antwort1

Ja, HAproxy macht das. Sie müssen keepalived nur mit allen virtuellen IPs konfigurieren, die HAproxy verwenden wird. Sie können mehrere IPs im Block virtual_ipaddress in keepalived.conf zuweisen:

virtual_ipaddress {
        192.168.0.10
        192.168.0.11
        192.168.0.12
        192.168.0.13
        }

verwandte Informationen