HAProxy + keepalived + 多個後端場/虛擬 IP 位址

HAProxy + keepalived + 多個後端場/虛擬 IP 位址

我們有幾個後端農場(HTTP、FTP 等),基本上每個客戶都有一個農場,我即將重建我們的負載平衡基礎設施,從PiranhaHAProxy
由於我們正在使用幾個不同的後端伺服器場,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
        }

相關內容