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 日志与配置一致性。
相关推荐
mounter6259 小时前
现代 Linux 内存管理的演进与变革:从传统 LRU 到多代架构 MGLRU
linux·服务器·kernel
赵渝强老师9 小时前
【赵渝强老师】Kubernetes(K8s)中的金丝雀升级
linux·docker·云原生·容器·kubernetes
Qt程序员10 小时前
Linux RCU 原理与应用
linux·c++·内核·linux内核·rcu
The Sheep 202310 小时前
Vue复习
linux·服务器·数据库
兄台の请冷静10 小时前
Linux 安装es
linux·elasticsearch·jenkins
fengyehongWorld10 小时前
Linux rg命令
linux
pride.li11 小时前
海思视觉Hi3516CV610--开机自动设置ip
linux·网络·网络协议·tcp/ip
我叫张小白。11 小时前
CentOS 7 安装 Docker并配置镜像加速(完整指南)
linux·docker·centos
源图客11 小时前
Minio配置HTTPS服务
服务器·网络协议·https
修炼室11 小时前
外网环境原生直连校内服务器:基于内网穿透 + SSH 密钥认证的完整实践指南
服务器·ssh·php