lvs_sync_daemon_interface用于指定lvs主备间状态同步的物理网卡接口,必须与vrrp绑定及业务转发网卡一致,且两端配置需完全相同;依赖ip_vs_sync模块、ip转发开启和rp_filter禁用,同步端口8848需放行,验证需通过ipvsadm -ln --sync查看。

lvs_sync_daemon_interface 不是用来“优化状态同步性能”的参数,它的作用非常明确:指定 LVS 主备节点间用于传输 ipvs 内核连接状态同步数据包 的网卡接口。配置错误或遗漏,会导致主备切换后客户端连接中断(如 TCP 连接重置、会话丢失),而不是变慢或延迟高。
必须设为承载真实流量的同一张网卡
该参数值应与 interface(VRRP 绑定的网卡)一致,且该网卡必须是 LVS Director 实际转发请求所用的出口网卡(即 DR 模式下 realserver 回包能直接到达客户端的那条链路)。常见错误是设成管理网卡(如 eth1)而实际业务走 eth0,导致同步报文发不出去或收不到。
- 主备两端必须配置完全相同的网卡名,例如都写
eth0 - 不能写别名(如 eth0:1)、bond 接口别名(如 bond0.100),必须是物理/绑定主接口名(
bond0可以,bond0.100不行) - 若使用双网卡双 VIP(如一个 VIP 走内网、一个 VIP 走外网),需确认两个 VIP 是否共用同一张物理网卡;若分属不同网卡(eth0 和 eth1),则
lvs_sync_daemon_interface只能选其一——此时不建议强行双网卡同步,应拆分为两个独立 VRRP 实例
依赖内核模块和系统设置
该功能底层依赖 ip_vs_sync 内核模块,且需开启 IP forwarding 和禁用反向路径过滤(rp_filter),否则同步报文会被丢弃:
- 检查模块是否加载:
lsmod | grep ip_vs_sync,未加载则运行modprobe ip_vs_sync - 确认 sysctl 设置:
net.ipv4.ip_forward = 1,net.ipv4.conf.all.rp_filter = 0(或至少对应网卡如net.ipv4.conf.eth0.rp_filter = 0) - 同步端口默认为 8848(UDP),确保防火墙放行:
iptables -I INPUT -p udp --dport 8848 -j ACCEPT
验证同步是否生效
仅靠 keepalived 启动成功不代表状态同步工作正常。需主动验证:
- 在主节点建立一个长连接(如 telnet 或 curl 访问后端服务),再手动触发主备切换(
systemctl stop keepalived或ip link set dev eth0 down) - 切换完成后,在新主节点执行:
ipvsadm -ln --sync,应能看到类似SyncID = 1, SyncSocket = 8848的输出,且连接数与切换前基本一致 - 若输出为空或提示
No such file or directory,说明同步未启用或模块未加载
不推荐“优化”但容易被误用的场景
有人试图通过修改同步间隔、增加重传次数来“提升可靠性”,但 keepalived 并未开放这些参数。它采用固定 UDP 单包同步机制,本身无重传、无 ACK。所谓“优化”只能落在基础设施层:
- 确保主备之间该网卡链路低延迟、无丢包(用
ping -I eth0和mtr -i 0.2 -I eth0测试) - 避免将同步网卡同时用于高吞吐备份任务(如 rsync、日志推送),防止带宽争抢
- 不要在该网卡上配置过多子网或复杂路由策略,保持转发路径最简










