Keepalived单播模式配置与实战指南

keepalived的单播模式

本文档整理了 Keepalived 单播(unicast)模式的配置示例、测试步骤、行为说明以及常见问题排查要点,适用于两台跨网络或无法使用组播(multicast)环境下的 VRRP 通告。


1. 为什么使用单播(unicast)

  • 组播模式占用资源少且配置简单,但组播报文通常无法跨越不同子网或受网络设备(路由器、防火墙)限制。

  • 当主/备节点处于不同网络(跨网络)或网络不支持组播时,需改用单播模式,通过指定对端 IP 进行点对点发送 VRRP 通告。

    3.配置示例

    下面示例为两台主机:KA1 (172.25.254.50) 与 KA2 (172.25.254.60),VIP 为 172.25.254.100。

    • KA1(主机 1)
bash 复制代码
#在KA1中
[root@KA1 ~]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
   notification_email {
     timinglee_zln@163.com
   }
   notification_email_from timinglee_zln@163.com
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id KA1
   vrrp_skip_check_adv_addr
   #vrrp_strict
   vrrp_garp_interval 1
   vrrp_gna_interval 1
   #vrrp_mcast_group4 224.0.0.44			#关闭组播
}

vrrp_instance WEB_VIP {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    unicast_src_ip 172.25.254.50		#指定单播源地址,通常是本机IP
    unicast_peer {
      172.25.254.60						#指定单播接收地址
    }
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.25.254.100/24 dev eth0 label eth0:0
    }
}
复制代码
[root@KA1 ~]# systemctl restart keepalived.service

#在KA2中
[root@KA2 ~]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
   notification_email {
     timinglee_zln@163.com
   }
   notification_email_from timinglee_zln@163.com
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id KA1
   vrrp_skip_check_adv_addr
   #vrrp_strict
   vrrp_garp_interval 1
   vrrp_gna_interval 1
   #vrrp_mcast_group4 224.0.0.44			#关闭组播
}

vrrp_instance WEB_VIP {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    unicast_src_ip 172.25.254.60		#指定单播源地址,通常是本机IP
    unicast_peer {
      172.25.254.50						#指定单播接收地址
    }
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.25.254.100/24 dev eth0 label eth0:0
    }
}
复制代码
[root@KA2 ~]# systemctl restart keepalived.service

#测试
#在KA1中开启独立shell监控播报信息
[root@KA1 ~]# tcpdump -i eth0 -nn src host 172.25.254.50 and dst 172.25.254.60
复制代码
#在KA2中开启独立shell监控播报信息
[root@KA2 ~]# tcpdump -i eth0 -nn src host 172.25.254.60 and dst 172.25.254.50


#在KA1正常时
#ka2播报信息不显示通告内容
复制代码
[root@KA1 ~]# systemctl stop keepalived.service

#vip会被迁移到KA2,KA2上开始显示播报内容
复制代码
[root@KA1 ~]# systemctl start keepalived.service

#vip因为优先级被KA1抢占,KA2中播报停止

6. 常见问题与排查建议

  1. 无法收到对端单播报文

    • 确认两端 IP 能互通(ping),路由正常,防火墙(iptables/nftables)或安全组没有阻止 VRRP/UDP 报文(VRRP 使用 IP 协议号 112,或在单播实现上可能为 UDP --- 视 keepalived 版本与实现)。
    • 检查系统是否开启了 rp_filter(反向路径过滤),若开启可能丢弃非本子网的入站包:cat /proc/sys/net/ipv4/conf/*/rp_filter。必要时在对应接口上禁用或调整 rp_filter。
    • 确认 unicast_src_ip 填写了正确可达的 IP(接口 IP)。
    • 检查网络设备(交换机/路由器)是否过滤或修改了单播报文。
  2. VIP 无法漂移 / 抢占不生效

    • 检查 priority 设置,确认优先级高的一端配置正确。
    • 检查是否存在 nopreempt 或类似配置阻止抢占。
    • 查看 keepalived 日志(通常在 /var/log/messages 或 systemd journal):journalctl -u keepalived -f
  3. 组播关闭但仍收到组播报文

    • 确保 vrrp_mcast_group4 注释或设为合适值;在单播模式下不应依赖组播。
  4. 认证失败(auth_pass)

    • 确认两端 auth_pass 一致且 auth_type 相同。

7. 小结

  • 单播模式适用于跨网络或组播不可用的场景,通过显式指定对端 IP 来发送 VRRP 通告。
  • 关键字段:unicast_src_ip、unicast_peer、virtual_router_id、priority、advert_int、authentication、virtual_ipaddress。
  • 测试时使用 tcpdump 验证单播报文,结合 systemctl stop/start 验证 VIP 漂移与抢占行为。
  • 关键字段:unicast_src_ip、unicast_peer、virtual_router_id、priority、advert_int、authentication、virtual_ipaddress。
  • 测试时使用 tcpdump 验证单播报文,结合 systemctl stop/start 验证 VIP 漂移与抢占行为。
  • 排查重点:网络连通性、防火墙、rp_filter、keepalived 日志与配置一致性。
相关推荐
IDC02_FEIYA2 小时前
Linux文件搜索命令有哪些?Linux常用命令之文件搜索命令find详解
linux·运维·服务器
江畔何人初2 小时前
kubectl apply与kubectl create的区别
linux·运维·云原生
M158227690553 小时前
四通道全能组网!SG-Canet-410 CAN转以太网网关,破解工业CAN通信瓶颈
linux·运维·服务器
誰能久伴不乏3 小时前
【Qt实战】工业级多线程串口通信:从底层协议设计到完美收发闭环
linux·c++·qt
bjxiaxueliang3 小时前
一文解决蓝牙连接难题:Ubuntu命令行蓝牙强制配对
linux·ubuntu·蓝牙连接命令
浪客灿心3 小时前
Linux库制作与原理
linux·运维·服务器
bantinghy3 小时前
Nginx基础加权轮询负载均衡算法
服务器·算法·nginx·负载均衡
成为你的宁宁4 小时前
【Linux Swap 交换分区:定义、作用与操作指南】
linux·交换分区
祁鱼鱼鱼鱼鱼4 小时前
rhce-shell条件测试
linux·运维