我正在尝试建立基于ESXi的安装程序,其中两个物理盒安装了ESXi,每一个都有一个节点,使用HAProxy作为负载均衡器。现在,为了实现高可用性,我想使用KeepAlived,这样两个HAProxy实例都可以共享虚拟-ip,我可以将物理-ip地址指向虚拟-ip地址。我的实现面临的挑战是它有两个子网。
子网A上的HAProxy : 1.1.10.101子网B上的HAProxy : 1.2.10.101
现在,当我试图在两个实例上分配虚拟-ip 1.1.10.201时,它是如何指向两个服务器上的本地实例的。
我将CentOS 7.x与HAProxy和KeepAlived结合使用,主要用于负载平衡的HTTP流量,可能也用于数据库。
我没有张贴配置文件,因为问题本身非常简单,但如果需要,我可以这样做。
发布于 2021-12-29 13:34:52
还有另一种方法。2保持在不同的网络中,可以使用unicast_peer进行通信(它的工作方式就像您有一个VIP,但您没有)
然后,您可以使用notify_script来移动IP故障转移(例如,由主机提供),并对提供程序进行API调用,告诉它在被保存的IP故障转移到主服务器(有notify_master规则)时将您的IP故障转移到另一个服务。
我的永久配置示例:
global_defs {
vrrp_version 2
vrrp_garp_master_delay 1
vrrp_garp_master_refresh 60
script_user root
enable_script_security
}
vrrp_script chk_haproxy {
script "/etc/keepalived/scripts/check_haproxy.sh"
timeout 1
interval 5 # check every 5 second
fall 2 # require 2 failures for KO
rise 2 # require 2 successes for OK
}
vrrp_instance lb-vips {
state {{KEEPALIVED_STATE}}
interface {{KEEPALIVED_INTERFACE}}
virtual_router_id {{KEEPALIVED_VIRTUAL_ROUTER_ID}}
priority {{KEEPALIVED_PRIORITY}}
advert_int 1
unicast_src_ip {{KEEPALIVED_UNICAST_SRC}}
unicast_peer {
X.X.X.X # here you have all ip of other keepalived
X.X.X.X
}
authentication {
auth_type PASS
auth_pass {{KEEPALIVED_AUTH_PASSWORD}}
}
track_script {
chk_haproxy
}
notify "/etc/keepalived/scripts/notify_script.sh"
}相关变量:
# Keepalived Config
KEEPALIVED_STATE=MASTER
KEEPALIVED_INTERFACE=eth0
KEEPALIVED_VIRTUAL_ROUTER_ID=77
# For electing MASTER, highest priority wins.
# MASTER=101, SLAVES=100
KEEPALIVED_PRIORITY=101
# password: Only the first eight (8) characters are used.
KEEPALIVED_AUTH_PASSWORD=password
# Should be the public ip of the server
KEEPALIVED_UNICAST_SRC=X.X.X.X
# Keepalived Notify Script Config
OVH_ENDPOINT=ovh-eu
OVH_APP_KEY=X.X.X.X
OVH_APP_SECRET=X.X.X.X
OVH_CONSUMER_KEY=X.X.X.X
FAILOVER_IP=X.X.X.X
FAILOVER_SERVICE=X.X.X.X发布于 2016-03-09 09:54:41
不幸的是,保留使用的是VRRP,它只在一个子网内工作。
https://serverfault.com/questions/760875
复制相似问题