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 vonPiranha
ZuHAProxy
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 keepalived
und 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
}