我們有幾個後端農場(HTTP、FTP 等),基本上每個客戶都有一個農場,我即將重建我們的負載平衡基礎設施,從Piranha
到HAProxy
。
由於我們正在使用幾個不同的後端伺服器場,Piranha 配置目前看起來像這樣(範例顯示農場網路服務01, 第二農場網路服務02使用相同的配置,但不同的虛擬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
}
}
(例如,客戶 1 擁有自己的使用 vIP 10.11.11.1:80 的網路伺服器場,客戶 2 擁有使用 vIP 10.11.11.2:80 的網路伺服器場)。我很好奇 1 個 HAProxy 實例是否能夠使用不同的唯一 vIP 位址處理相同服務的多個場。
基本設定如下所示:
2 個 HAProxy 實例(具有故障轉移)
4 個 HTTP 後端場(每個客戶一個)
2 個 FTP 場
為了讓事情更清楚,請參閱隨附的我的概念 HAProxy 配置範例,適用於 2 個網路伺服器集區。注意不同的虛擬 IP:
#---------------------------------------------------------------------
# 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
HAProxy 和/或 keeoalived 可以按照顯示的方式處理這個問題嗎?如果是,我將如何處理這個問題?
我想keepalived
在 2 個 HAProxy 執行個體之間用於故障轉移,並讓它們為後端場進行負載平衡。現在對我需要使用的多個虛擬 IP 位址有點困惑,任何見解將不勝感激!
答案1
是的,HAproxy 會做到這一點。您只需使用 HAproxy 將使用的所有虛擬 IP 來設定 keepalived。您可以在 keepalived.conf 的 virtual_ipaddress 區塊中指派多個 IP:
virtual_ipaddress {
192.168.0.10
192.168.0.11
192.168.0.12
192.168.0.13
}