如何在 HAProxy 上的故障转移时使 keepalived 响应?

问题描述

我使用 HAProxy 作为我的应用程序的负载平衡器并使其高度可用,我使用了 keepalive 服务和浮动 ip 地址概念。但是,每当我的主要负载平衡器服务器出现故障时,通过将其从网络中删除或将其关闭,我的所有服务都会关闭,而不是使辅助负载平衡器服务器可用。 我的主服务器 keepalived.conf 是,

global_defs
{
        # Keepalived process identifier
        lvs_id haproxy_DH
}
# Script used to check if HAProxy is running
vrrp_script check_haproxy
{
        script "pidof haproxy"
        interval 2
        weight 2
}
# Virtual interface
vrrp_instance VI_01
{
        state MASTER
        interface eno16777984           #here eth0 is the name of network interface
        virtual_router_id 51
        priority 101
        # The virtual ip address shared between the two loadbalancers
        virtual_ipaddress {
                172.16.231.162
        }
        track_script {
                check_haproxy
        }
}

对于备份服务器来说,

global_defs
{
        # Keepalived process identifier
        lvs_id haproxy_DH_passive
}
# Script used to check if HAProxy is running
vrrp_script check_haproxy
{
        script "pidof haproxy"
        interval 2
        weight 2
}
# Virtual interface
vrrp_instance VI_01
{
        state BACKUP
        interface eno16777984           #here eth0 is the name of network interface
        virtual_router_id 51
        priority 100
        # The virtual ip address shared between the two loadbalancers
        virtual_ipaddress {
                172.16.231.162
        }
        track_script {
                check_haproxy
        }
}

当两个负载平衡器都启动时,虚拟 IP 地址被分配并工作。但是每当机器出现故障时,我的服务也会出现故障。我正在使用 CentOS7,请帮忙。

解决方法

使用这个,

global_defs {

router_id ovp_vrrp

} vrrp_script haproxy_check { 脚本“killall -0 haproxy” 间隔2 重量 2 }

vrrp_instance OCP_EXT { 接口ens192

virtual_router_id 51

优先级 100 状态大师 虚拟IP地址{ 10.19.114.231 dev ens192

} track_script { haproxy_check } 验证 { auth_type 通行证 auth_pass 1cee4b6e-2cdc-48bf-83b2-01a96d1593e4 } }

更多信息:阅读此处,https://www.openshift.com/blog/haproxy-highly-available-keepalived

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...