![HAproxy 在一个后端使用备份服务器和活动服务器](https://linux22.com/image/748940/HAproxy%20%E5%9C%A8%E4%B8%80%E4%B8%AA%E5%90%8E%E7%AB%AF%E4%BD%BF%E7%94%A8%E5%A4%87%E4%BB%BD%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%92%8C%E6%B4%BB%E5%8A%A8%E6%9C%8D%E5%8A%A1%E5%99%A8.png)
我正在努力解决一个问题,我搜索并阅读了很多资料,但找不到任何可以解决它的方法。我有 3 台服务器,2 台活动服务器和 1 台备用服务器。每当其中一台活动服务器发生故障时,备用服务器就会处于活动状态,并在 2 台服务器(而不仅仅是备用服务器)之间进行流量负载平衡。我可以用两个后端解决这个问题,但我只需要一个后端。
#### Fronend Configuration #####
frontend webserver
bind 192.168.64.100:80
default_backend appserver
#### Backend Configuration #####
backend appserver
balance roundrobin
server Node-1 192.168.64.132:80 check
server Node-2 192.168.64.133:80 check
server Node-3 192.168.64.134:80 check
我希望 Node-3 成为备用服务器。如果 Node-1 或 Node-2 无法访问,则 Node-3 代替
答案1
请看这里:https://www.haproxy.com/blog/failover-and-worst-case-management-with-haproxy/
默认情况下,备份服务器似乎仅在所有主服务器都处于离线状态时才生效。因此,如果节点 1 已关闭而节点 2 仍处于运行状态,则它仍应仅使用节点 2 提供服务。如果节点 1 和节点 2 都处于离线状态,则将使用节点 3。您的情况之所以发生,可能是因为某些配置表明当 50% 的服务器不可用时,应触发备份(也许这是默认设置?)。
但是,如果您进一步查看该页面,您可以设置逻辑,当主服务器中的一定数量的服务器发生故障时触发备份组。由于该组中只有三台服务器,我不确定您如何正确地双边完成此操作,但您可以设置,如果两台服务器中的一台发生故障,则触发两台服务器的备份,其中包括一台主服务器。老实说,利用主服务器组中的所有三台服务器更有意义,除非您为使用它而付出代价(例如托管服务)。
frontent ft_app
bind 10.0.0.1:80
# detect capacity issues in production farm
acl MAIN_not_enough_capacity nb_srv(bk_app_main) le 2
# failover traffic to backup farm
use_backend bk_app_backup if MAIN_not_enough_capacity
default_backend bk_app_main
backend bk_app_main
server s11 10.0.0.101:80 check
server s12 10.0.0.102:80 check
server s13 10.0.0.103:80 check
server s14 10.0.0.104:80 check
backend bk_app_backup
option allbackups
server s21 20.0.0.101:80 check
server s22 20.0.0.102:80 check
server s23 20.0.0.103:80 check backup
server s24 20.0.0.104:80 check backup