we have several backend farms (HTTP, FTP, etc), basically one farm for each customer, and I am about to rebuild our load balancing infrastructure, moving from Piranha
to HAProxy
.
Since we are using several different backend server farms, the Piranha config currently looks like this (example shows farm webserv01, 2nd farm webserv02 uses same config, but different virtual 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
}
}
(e.g., customer 1 has his own webserver farm using vIP 10.11.11.1:80, customer 2 has a farm using vIP 10.11.11.2:80). I am curious if 1 single HAProxy instance is capable of handling multiple farms of the same service using different unique vIP addresses.
Basic setup would look like this:
2 HAProxy instances (with failover)
4 HTTP backend farms (one for each customer)
2 FTP farms
To make things clearer, please find attached my concept HAProxy config example for 2 webserver farms. Notice the different virtual 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
Can HAProxy and/or keeoalived handle this the way it is shown? If yes, how would I approach this?
I would like to use keepalived
for failover purposes between the 2 HAProxy instances and have them do the load balancing for the backend farms. Kinda confused right now about the multiple virtual IP addresses I need to use, any insight would be much appreciated!