HAProxy + keepalived + 多个后端农场/虚拟 IP 地址

Mos*_*Pit 3 load-balancing haproxy keepalived backend

我们有几个后端养殖场(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
}
}
Run Code Online (Sandbox Code Playgroud)

(例如,客户 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
Run Code Online (Sandbox Code Playgroud)

HAProxy 和/或 keeoalived 可以按照显示的方式处理这个问题吗?如果是,我将如何处理这个问题?

我想keepalived用于 2 个 HAProxy 实例之间的故障转移目的,并让它们为后端群进行负载平衡。现在有点对我需要使用的多个虚拟 IP 地址感到困惑,任何见解将不胜感激!

Jim*_* G. 5

是的,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
        }
Run Code Online (Sandbox Code Playgroud)