lvs机房级流量权重切换需基于nat模式,通过ipvsadm动态调整rs权重实现比例分发;要求所有rs网关指向director,且director路由可达各机房内网段。

用LVS实现机房级流量权重切换,核心不是靠单一模式硬切,而是结合NAT模式的灵活性 + ipvsadm动态规则调整 + 合理的网络设计,达成按比例分发到不同机房Real Server的效果。关键在于:所有目标RS必须能被Director统一访问,且各自网关指向Director(NAT模式前提),这样权重才可控、可调、可回滚。
网络与角色准备
先确保基础架构满足NAT模式要求:
- Director需双网卡:一个对外VIP(如203.0.113.100),一个内网DIP(如192.168.1.1)
- 机房A的RS(如5台)使用内网段192.168.10.0/24,网关设为192.168.1.1
- 机房B的RS(如3台)使用内网段192.168.20.0/24,网关同样设为192.168.1.1(Director需路由可达这两个网段)
- 启用IP转发:echo 1 > /proc/sys/net/ipv4/ip_forward,并写入/etc/sysctl.conf永久生效
配置带权重的虚拟服务
用加权轮询(WRR)算法,直接体现机房级配比。例如:机房A占70%,机房B占30%,共10台RS,则可设A组5台各权重7,B组3台各权重3(总权重比≈35:9 ≈ 70%:30%):
ipvsadm -A -t 203.0.113.100:80 -s wrr
ipvsadm -a -t 203.0.113.100:80 -r 192.168.10.10:80 -m -w 7
ipvsadm -a -t 203.0.113.100:80 -r 192.168.10.11:80 -m -w 7
ipvsadm -a -t 203.0.113.100:80 -r 192.168.20.10:80 -m -w 3
ipvsadm -a -t 203.0.113.100:80 -r 192.168.20.11:80 -m -w 3
注意:-m 表示NAT模式;权重值不强制求和为100,只看相对比例;修改后立即生效,无需重启服务。
运行时动态切换权重
切流量就是改权重——不需要停服务,也不需要清连接:
- 临时降低机房B流量:把它的RS权重从3改成1
ipvsadm -e -t 203.0.113.100:80 -r 192.168.20.10:80 -w 1 - 完全切走:把某机房所有RS权重设为0(连接会自然迁移,已建立连接不受影响)
- 查看当前分配状态:ipvsadm -Ln --stats,观察“ActConn”和“InActConn”列变化
增强可用性与灰度控制
生产中建议搭配以下措施提升切换可靠性:
- 用keepalived做Director高可用,避免单点故障影响切换能力
- 为每个机房RS组单独建虚拟服务(如不同端口或VIP),便于隔离测试和分批发布
- 配合健康检查脚本(如curl检测RS端口+业务接口),自动剔除异常节点:ipvsadm -d -t ... -r ...
- 记录每次权重变更时间与操作人,方便回溯(LVS本身无审计日志,需运维侧补全)










