NAT模式
一、实验架构与IP规划
这里使用 3 台 Linux 虚拟机:1 台 LVS 调度器、2 台 Web 后端服务器。

| 主机 | 网卡 | IP 地址 | 用途 |
|---|---|---|---|
| LVS | ens33 | 10.0.0.9/24 | 接收客户端请求 |
| LVS | ens36 | 172.16.1.9/24 | 转发至后端 |
| WEB01 | ens36 | 172.16.1.7/24 | 后端 Web 服务 |
| WEB02 | ens36 | 172.16.1.8/24 | 后端 Web 服务 |
关键前提: LVS 必须有两张网卡,客户端能够访问 LVS 的入口地址,LVS 能够访问两台后端服务器;后端服务器的默认网关必须指向 172.16.1.10,保证响应流量返回 LVS。
1、配置两台后端web服务器
yum -y install nginx
systemctl enable --now nginx[root@web01 ~]# echo "Hello from WEB01" > /usr/share/nginx/html/index.html[root@web02 ~]# echo "Hello from WEB02" > /usr/share/nginx/html/index.html2、配置后端服务器的默认网关
web集群服务器的默认网关都指向LVS
3、安装配置LVS调度器
yum -y install ipvsadm
# 加载IPVS内核模块
modprobe ip_vs
# 确认模块已加载
lsmod | grep ip_vs
# 开启端口转发
cat > /etc/sysctl.d/99-lvs-nat.conf << EOF
net.ipv4.ip_forward = 1
EOF
sysctl --system
# or #
vim /etc/sysctl.conf
# 修改
net.ipv4.ip_forward = 1
# 最后启动
sysctl -p4、配置LVS-NAT转发规则
# 清空已经IPVS规则。若这台服务器已经承载业务,不要直接清空规则
ipvsadm -C
# 创建虚拟服务
ipvsadm -A -t 10.0.0.9:80 -s rr解释:
-A:添加虚拟服务。-t:指定 TCP 虚拟服务地址。192.168.10.10:80:客户端访问的入口地址和端口。-s rr:使用 Round Robin(轮询)调度算法。
# 添加两台后端服务器
ipvsadm -a -t 10.0.0.9:80 -r 172.16.1.7:80 -m
ipvsadm -a -t 10.0.0.9:80 -r 172.16.1.8:80 -m其中,-a添加真实服务器,-r指定后端地址,-m表示使用NAT转发模式
ipvsadm -LnTCP 10.0.0.9:80 rr
-> 172.16.1.7:80 Masq
-> 172.16.1.8:80 Masq5、验证负载均衡是否生效
在客户端执行:
for i in {1..6}; do
curl --max-time 3 -s http://192.168.10.10/
echo
done预期:
Hello from WEB01
Hello from WEB02
Hello from WEB01
Hello from WEB02
Hello from WEB01
Hello from WEB026、查看连接统计
在LVS上执行:
ipvsadm -Ln --stats
ipvsadm -Ln --rateipvsadm -Ln --rate--stats:查看累计连接和流量统计。--rate:查看当前速率统计。
7、配置持久化
ipvsadm-save > /etc/sysconfig/ipvsadm.rules8、测试失败排查
| 现象 | 优先检查 |
|---|---|
| 客户端无法访问 LVS | 入口 IP 是否存在、网卡和路由是否正确 |
| LVS 无法访问后端 | LVS 内侧网卡、后端 IP、网络连通性 |
| 后端本机访问正常,但 LVS 访问失败 | 后端防火墙、TCP 80 端口及安全策略 |
| 请求到达后端,但客户端超时 | 后端默认网关、LVS 转发和反向 NAT |
| 始终只有一个后端响应 | IPVS 规则、后端服务状态、连接统计 |
| 重启后无法访问 | IP 转发设置、IPVS 规则是否恢复 |
还可以在 LVS 上抓包观察请求是否到达后端:
tcpdump -ni ens33 'tcp port 80'9、NAT请求链路

评论