You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle Linux 8下Keepalived脑裂求助:双节点均为MASTER且绑定VIP

Oracle Linux 8下Keepalived双节点均为MASTER且重复绑定VIP问题排查

在Oracle Linux 8上部署Keepalived时遇到异常:VIP被同时分配到两个节点,且两个节点都处于MASTER模式。关闭firewalld后恢复正常,但开启防火墙就出现问题,日志提示Keepalived_vrrp[1077307]: (VI_1) Receive advertisement timeout。

节点1配置

cat /etc/keepalived/keepalived.conf
global_defs {
  vrrp_priority -20
  checker_priority -19
  script_user root
}

vrrp_script chk_haproxy {
  script "/usr/bin/killall -0 haproxy" # 检查haproxy进程
  interval 2 # 每2秒检查一次
  weight 2 # 检查正常时优先级+2
  timeout 3
  fall 3
}

vrrp_instance VI_1 {
  interface ens192 # 监控网卡
  state BACKUP # haproxy1为MASTER,haproxy2为BACKUP
  nopreempt
  virtual_router_id 52
  priority 101 # haproxy1设101,haproxy2设100
  virtual_ipaddress {
   VIP_adcat /vardress  # 此处存在笔误,需替换为实际VIP地址
  }
  track_script {
    chk_haproxy
  }
}

节点2配置

cat /etc/keepalived/keepalived.conf
global_defs {
  vrrp_priority -20
  checker_priority -19
  script_user root
}

vrrp_script chk_haproxy {
  script "/usr/bin/killall -0 haproxy" # 检查haproxy进程
  interval 2 # 每2秒检查一次
  weight 2 # 检查正常时优先级+2
  timeout 3
  fall 3
}

vrrp_instance VI_1 {
  interface ens192 # 监控网卡
  state BACKUP # haproxy1为MASTER,haproxy2为BACKUP
  nopreempt
  virtual_router_id 52
  priority 100 # haproxy1设101,haproxy2设100
  virtual_ipaddress {
   VIP_adress  # 此处需补全实际VIP地址
  }
  track_script {
    chk_haproxy
  }
}

当前防火墙规则

firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens192
  sources: 此处为两个节点的IP地址
  services: cockpit dhcpv6-client ssh
  ports: 3306/tcp 3305/tcp
  protocols:
  forward: no
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:
   rule family="ipv4" destination address="224.1.0.0/16" accept
   rule family="ipv4" destination address="224.0.0.18" protocol value="ip" accept
   rule protocol value="vrrp" accept

解决思路

  • 优先使用firewalld预定义VRRP服务
    自定义rich规则可能存在优先级或匹配问题,直接添加官方预定义的VRRP服务规则:

    firewall-cmd --add-service=vrrp --permanent
    firewall-cmd --reload
    
  • 验证VRRP组播流量连通性
    VRRP依赖组播地址224.0.0.18通信,用tcpdump对比防火墙开启/关闭时的流量:

    tcpdump -i ens192 host 224.0.0.18
    

    如果开启防火墙后抓不到对方节点的VRRP通告包,说明防火墙规则仍存在拦截。

  • 修正配置笔误
    节点1的VIP_adcat /vardress和节点2的VIP_adress是明显配置错误,需替换为正确的VIP格式(如192.168.1.100/24),配置错误可能导致Keepalived在防火墙环境下行为异常。

  • 检查网络设备组播限制
    确认交换机等中间设备未拦截VRRP组播流量,部分交换机默认限制组播,需开启对应端口的IGMP snooping或允许224.0.0.18组播包通过。

  • 调整防火墙规则顺序
    当前防火墙target为default,若默认策略是拒绝,需确保VRRP相关规则优先于拒绝规则生效,可重新添加明确规则:

    firewall-cmd --add-protocol=vrrp --permanent
    firewall-cmd --add-rich-rule='rule family="ipv4" destination address="224.0.0.18" accept' --permanent
    firewall-cmd --reload
    

内容的提问来源于stack exchange,提问作者zerozg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 17:07:48