centos - keepalived 转换没有按预期发生

标签 centos failover automatic-failover

我正在尝试为我的服务实现基于 keepalived 的故障转移。请在下面找到我的主节点和备份节点的配置。

主节点:

vrrp_script chk_splunkd {
    script "pidof splunkd"
    interval 2
    fall 2
    rise 2
}

vrrp_instance VI_1 {
    interface eth0
    state MASTER
    advert_int 1
    virtual_router_id 51
    priority 200
    nopreempt
    smtp_alert
    authentication {
            auth_type PASS
            auth_pass passme
    }
    virtual_ipaddress {
            10.126.246.245
    }
    track_script {
            chk_splunkd
    }
    notify_master /etc/keepalived/scripts/master.sh
    notify_backup /etc/keepalived/scripts/stop_service.sh
    notify_fault /etc/keepalived/scripts/stop_service.sh
}

备份节点:
vrrp_script chk_splunkd {
    script "pidof splunkd"
    interval 2
    fall 2
    rise 2
}
vrrp_instance VI_1 {
    interface eth0
    state BACKUP
    advert_int 1
    virtual_router_id 51
    priority 100
    nopreempt
    smtp_alert
    authentication {
            auth_type PASS
            auth_pass passme
    }

    virtual_ipaddress {
           10.126.246.245
    }
    track_script {
            chk_splunkd
    }
    notify_master /etc/keepalived/scripts/master.sh
    notify_backup /etc/keepalived/scripts/stop_service.sh
    notify_fault /etc/keepalived/scripts/stop_service.sh
}

但是,我发现即使一个节点进入故障状态并停止发送 VRRP 通告,另一个节点也不会自动转换到主状态。当我尝试使用 tcpdump -vv -i eth0 vrrp 监控 VRRP 广告数据包时我发现即使来自一个节点的广告停止后,另一个节点也不会自动开始发送指示它现在已成为主节点的广告。

请帮我找出我缺少的东西。

谢谢,

克尔塔娜

最佳答案

问题是在一个节点成为主节点的启动过程中,另一个节点由于 pidof splunkd 而进入故障模式。将返回 1 作为我的 splunk 服务的命令应该只在主节点上启动。一旦我编辑了通知脚本以将当前状态写入外部文件并读取状态以在我的通知脚本中采取行动,事情就开始正常工作了。

关于centos - keepalived 转换没有按预期发生,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44348507/

相关文章:

php - 使用 exec 将数据附加到不在当前目录中的文件

apache - httpd mod_proxy_balancer 故障转移 failonstatus - 透明切换

kubernetes 上的 MYSQL HA (vmware)

centos - 将完整的文件系统恢复到默认的安全上下文

linux - 无法使用ip地址访问centos上的apache服务器

mongodb - 具有故障转移功能的 Apache JCR - Hadoop?

sql-server - 使用 SQL 镜像和连接字符串进行自动故障转移

sql-server - 使用 Azure SQL 的 Azure 自动故障转移组中的问题

proxy - symfony 通话中不受信任的主机