目录
一、原理与理论
LVS-NAT(Network Address Translation)模式通过修改数据包地址实现负载均衡:
请求流程
客户端访问虚拟IP(VIP)
Director Server接收请求,通过调度算法(如RR/WLC)选择后端Real Server
将目标IP 从VIP改为Real Server IP(DNAT)
Real Server处理请求,返回数据给Director
Director将源IP 从Real Server改为VIP(SNAT)返回客户端
核心特点
Real Server使用私有IP,网关必须指向Director
Director需开启路由转发(
net.ipv4.ip_forward=1
)支持端口映射(如VIP:80 → RS:8080)
二、背景与目的
解决痛点:
单台Web服务器性能瓶颈
业务高可用性需求
隐藏后端服务器真实IP
适用场景:
中小规模负载均衡
后端服务器位于私有网络
需要跨VLAN调度流量
三、部署步骤详解(CentOS 7示例)
1. Director Server配置
# 1. 开启路由转发
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p# 2. 加载IP_VS模块
modprobe ip_vs
cat /proc/net/ip_vs # 验证模块加载# 3. 安装管理工具
yum install -y ipvsadm# 4. 配置虚拟服务(VIP:192.168.1.100)
vip="192.168.1.100"
ipvsadm -A -t $vip:80 -s rr # 轮询调度# 5. 添加真实服务器(后端IP池)
real_servers=("10.0.0.2" "10.0.0.3" "10.0.0.4")
for rs in "${real_servers[@]}"; do
ipvsadm -a -t $vip:80 -r $rs:80 -m -w 1 # -m表示NAT模式
done# 6. 保存规则(重启后自动加载)
ipvsadm-save > /etc/sysconfig/ipvsadm
2. Real Server配置要求
网关设置为Director的内网IP(如10.0.0.1)
部署相同Web服务(如Nginx)
关闭防火墙或放行对应端口
四、常见问题与解决方案
问题现象 | 原因分析 | 解决方案 |
---|---|---|
客户端访问VIP超时 | Director路由转发未开启 | sysctl -p 确认ip_forward=1 |
调度器可连RS,但客户端无响应 | RS网关未指向Director | 检查RS网关配置 ip route show |
部分Real Server始终无流量 | IP_VS模块未加载 | modprobe ip_vs + 重启加载模块 |
高并发时连接中断 | Director端口耗尽 | 优化net.ipv4.ip_local_port_range |
五、总结与心得
优势
配置简单,支持端口映射
后端服务器无需公网IP
局限性
Director易成性能瓶颈(需处理双向流量)
不支持后端服务器直接响应客户端
生产建议
结合Keepalived实现Director高可用
使用加权调度(-w)处理异构服务器
通过
ipvsadm -Ln
实时监控连接分发
经验提示:LVS-NAT的SNAT特性可能导致后端获取到Director的IP,需在应用中通过
X-Forwarded-For
获取真实客户端IP。
附录:关键命令速查
ipvsadm -Ln # 查看当前规则
ipvsadm -C # 清空规则
ipvsadm-save -n > /path/to/backup # 备份配置
systemctl restart ipvsadm # 重启服务加载配置