Load-Balancing

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

  • February 25, 2015

我們有幾個後端農場(HTTP、FTP 等),基本上每個客戶一個農場,我即將重建我們的負載平衡基礎設施,PiranhaHAProxy.

由於我們使用了幾個不同的後端伺服器群,Piranha 配置目前看起來像這樣(範例顯示農場webserv01,第二個農場webserv02使用相同的配置,但不同的虛擬 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 地址有點困惑,任何見解都將不勝感激!

是的,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
       }

引用自:https://serverfault.com/questions/671141