lvs不支持配置文件热加载,其规则通过ipvsadm命令即时生效于内核态;所有增删改操作毫秒级完成且不影响已有连接,配合keepalived可实现自动健康检查与动态同步。

LVS 本身不支持传统意义上的“配置文件热加载”,因为它的规则完全运行在内核态,由 ipvs 模块实时执行,而管理接口 ipvsadm 是纯命令行工具——所有变更都是即时生效的,不存在“重启服务”或“重载配置”的概念。所谓“动态热加载”,实际是指在不中断现有连接的前提下,增删改转发规则、调整后端服务器权重、切换调度算法等操作。
LVS 规则的动态生效机制
ipvsadm 的每一条 -A(添加虚拟服务)、-a(添加真实服务器)、-e(编辑服务器)、-d(删除服务器)命令,都会直接调用 netfilter ioctl 接口,将指令同步写入内核 ip_vs 表。整个过程毫秒级完成,已建立的连接不受影响(TCP 连接维持原 RS 不变),新连接立即按新规则分发。
常见动态操作示例
-
新增后端服务器
ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.200:80 -g -w 3
立即参与轮询,权重为 3。
-
调整已有服务器权重
ipvsadm -e -t 192.168.1.100:80 -r 192.168.1.101:80 -g -w 5
-
临时下线某台 RS(不中断长连接)
ipvsadm -d -t 192.168.1.100:80 -r 192.168.1.102:80
已有连接继续处理,新请求不再分发给该 RS。
-
切换调度算法(如从 rr 改为 wlc)
ipvsadm -E -t 192.168.1.100:80 -s wlc
与 Keepalived 配合实现自动热更新
单独用 ipvsadm 手动操作适合调试;生产环境普遍搭配 Keepalived,它会:
- 监控
virtual_server块中定义的健康检查结果; - 当某 RS 检测失败时,自动执行
ipvsadm -d移除; - 恢复后,自动执行
ipvsadm -a重新加入; - 所有这些动作都通过
ipvsadm调用完成,全程无停服、无 reload。
⚠️ 注意:Keepalived 自身没有“重载配置”命令(如
systemctl reload keepalived),它采用的是配置热合并 + 差异同步机制 —— 修改keepalived.conf后执行kill -HUP $(pidof keepalived),它会解析新配置,仅对发生变化的服务/RS 执行对应ipvsadm操作,其余保持不动。
不需要也不建议的操作
- ❌ 不要尝试
systemctl restart ipvs或类似命令(LVS 无守护进程); - ❌ 不要修改
/etc/modules后期望“重载规则”(那只是控制内核模块是否开机加载); - ❌ 不要依赖配置文件变更自动触发规则刷新(LVS 本身无配置文件驱动模型)。
规则就是命令,命令即生效。










