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 日志与配置一致性。
相关推荐
zzj_2626101 天前
实验三 循环结构程序设计(Python)
服务器·python·apache
cui_ruicheng1 天前
Linux基础开发工具(三):Git 版本控制与 GDB 调试入门
linux·git·编辑器
贺小涛1 天前
Jaeger深度解析
linux
源远流长jerry1 天前
负载均衡概述
linux·运维·网络·架构·负载均衡·lvs
Shingmc31 天前
【Linux】进程信号
linux·运维·服务器
默|笙1 天前
【Linux】线程概念与控制(3)_地址空间布局
linux
RisunJan1 天前
Linux命令-nc(用于设置路由器,是网络工具中的瑞士军刀)
linux·运维·服务器
尤老师FPGA1 天前
petalinux修改设备树添加vdma生成linux系统
android·linux·运维
月山知了1 天前
linux kernel component子系统:基于rk3588 Android 14 kernel-6.1 display-subsystem代码分析
android·linux·运维
_Emma_1 天前
【QCOM】 Linux下qcom venus 编解码驱动框架分析
linux·驱动开发·视频编解码