LVS(Linux Virtual Server)是基于 Linux 的负载均衡群集技术,NAT 模式通过地址转换实现内外网通信与负载分发,核心是 LVS 服务器充当网关,将外网请求转发至后端 Web 服务器。
一、核心概念
1. LVS 基础
本质:作用在四层的负载均衡器,不提供网页服务,仅通过算法为后端服务器分流减压。
核心价值:解决单台服务器性能瓶颈,实现高可用(HA)和负载均衡(LB)。
集群定义:3 台以上服务器对外表现为一个整体,提供单一访问入口(IP / 域名)。
2. NAT 模式原理
全称:Network Address Translation(网络地址转换)。
核心逻辑:LVS 服务器作为网关,通过 SNAT(源地址转换)将内网服务器 IP 映射为公网 IP,实现外网访问;通过 DNAT(目标地址转换)将外网请求转发至内网后端节点。
网络架构:LVS 需双网卡(外网网卡连 VMnet8,内网网卡连 VMnet1),后端服务器仅需内网 IP,网关指向 LVS 内网网卡。

二、环境准备
1. 硬件要求
1 台 Windows 宿主机(用于访问测试)。
1 台 LVS 服务器(双网卡:外网 ens33 + 内网 ens36)。
2 台 Web 服务器(安装 httpd,单网卡连 VMnet1)。
2. 网络配置规划
| 设备 | 网卡 | 网络模式 | IP 地址 | 网关 |
|---|---|---|---|---|
| LVS 服务器 | ens33 | VMnet8 | 192.168.10.133 | 192.168.10.2 |
| LVS 服务器 | ens36 | VMnet1 | 192.168.253.128 | 192.168.253.2 |
| Web01 服务器 | ens33 | VMnet1 | 192.168.253.129 | 192.168.253.128 |
| Web02 服务器 | ens33 | VMnet1 | 192.168.253.130 | 192.168.253.128 |
| Windows 宿主机 | VMnet8 适配器 | - | 192.168.10.1 | 192.168.10.133 |
三、部署步骤
1. LVS 服务器配置
(1)虚拟机配置
LVS服务器,需要开启防火墙、其他两台web服务器关闭防火墙
查看自己LVS服务器的VMnet1的IP地址段是什么区间

添加一张网卡,将网络连接模式设置成自定义的VMnet1(仅主机模式):

(2)网卡配置
复制 ens33 配置文件生成 ens36:cp /etc/sysconfig/network-scripts/ifcfg-ens33 ifcfg-ens36。
1cd /etc/sysconfig/network-scripts/ 2cp ifcfg-ens33 ifcfg-ens36 3
编辑 ifcfg-ens36:修改 NAME、DEVICE 为 ens36,配置内网 IP(192.168.253.128)及子网掩码和网关。
1####ens33网卡配置 2[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 3TYPE=Ethernet 4PROXY_METHOD=none 5BROWSER_ONLY=no 6BOOTPROTO="static" 7DEFROUTE=yes 8IPV4_FAILURE_FATAL=no 9IPV6INIT=yes 10IPV6_AUTOCONF=yes 11IPV6_DEFROUTE=yes 12IPV6_FAILURE_FATAL=no 13IPV6_ADDR_GEN_MODE=stable-privacy 14NAME=ens33 15UUID=2756e2a9-f44e-457e-8865-b7a7ec201c99 16DEVICE=ens33 17ONBOOT=yes 18IPADDR=192.168.10.133 19NETMASK=255.255.255.0 20GATEWAY=192.168.10.2 21DNS1=8.8.8.8 22DNS2=114.114.114.114 23PREFIX=24 24 25 26###ens36网卡配置 27TYPE=Ethernet 28PROXY_METHOD=none 29BROWSER_ONLY=no 30BOOTPROTO="static" 31DEFROUTE=yes 32IPV4_FAILURE_FATAL=no 33IPV6INIT=yes 34IPV6_AUTOCONF=yes 35IPV6_DEFROUTE=yes 36IPV6_FAILURE_FATAL=no 37IPV6_ADDR_GEN_MODE=stable-privacy 38NAME=ens36 修改成网卡名字 39DEVICE=ens36 修改成网卡名字 40ONBOOT=yes 41IPADDR=192.168.253.128 修改IP 42NETMASK=255.255.255.0 43GATEWAY=192.168.253.2 修改网关 44DNS1=8.8.8.8 45DNS2=114.114.114.114 46PREFIX=24 47
重启网络:systemctl restart network,通过ip addr show ens36验证。
1systemctl restart network 2# 查看是否生效 3ip addr show ens36 4
(3)系统环境配置
开启防火墙并清空规则:systemctl start firewalld、iptables -t nat -F、iptables -F。
1#开启防火墙 2systemctl start firewalld 3#清除防火墙规则 4iptables -t nat -F 5iptables -F 6
开启路由转发:编辑/etc/sysctl.conf,添加net.ipv4.ip_forward = 1,执行sysctl -p生效。
1#配置SNAT转发规则 2vim /etc/sysctl.conf 3#开启路由转发的功能 4net.ipv4.ip_forward = 1 5 6#刷新生效 7或 echo '1' > /proc/sys/net/ipv4/ip_forward 8sysctl -p 9
配置 SNAT 规则:iptables -t nat -A POSTROUTING -s 192.168.253.0/24 -o ens33 -j SNAT --to-source 192.168.10.133。
1#自定义路由转发规则,将所有192.168.253.0/24(内网网段)网段的流量全部映射192.168.10.133(外网IP)的地址 2iptables -t nat -A POSTROUTING -s 192.168.253.0/24 -o ens33 -j SNAT --to-source 192.168.10.133 3
(4)LVS 服务配置
安装管理工具:yum -y install ipvsadm。
初始化策略文件:ipvsadm-save > /etc/sysconfig/ipvsadm,启动服务:systemctl start ipvsadm.service。
配置负载策略:
- 清空规则:
ipvsadm -C。 - 定义外网入口与轮询算法:
ipvsadm -A -t 192.168.10.133:80 -s rr。 - 添加后端节点:
ipvsadm -a -t 192.168.10.133:80 -r 192.168.253.129:80 -m、
ipvsadm -a -t 192.168.10.133:80 -r 192.168.253.130:80 -m。 - 保存策略:
ipvsadm-save > /etc/sysconfig/ipvsadm。
1##安装ipvsadm 管理工具 2yum -y install ipvsadm 3 4##启动服务前须保存负载分配策略+ 5ipvsadm-save > /etc/sysconfig/ipvsadm 6或者 ipvsadm --save > /etc/sysconfig/ipvsadm 7 8systemctl start ipvsadm.service 9 10##配置负载分配策略(NAT模式只要在服务器上配置,节点服务器不需要特殊配置) 11#清空规则 12ipvsadm -C 13#重新建立规则 (申明外网网卡是192.168.10.133,负载均衡模式是RR轮询) 14ipvsadm -A -t 192.168.10.133:80 -s rr 15#定义后端地址池(相当于nginx的upstream) 16ipvsadm -a -t 192.168.10.133:80 -r 192.168.253.129:80 -m 17ipvsadm -a -t 192.168.10.133:80 -r 192.168.253.130:80 -m 18#启用策略 19ipvsadm 20 21ipvsadm -ln #查看节点状态,Masq代表 NAT模式 22ipvsadm-save > /etc/sysconfig/ipvsadm #保存策略 23
2. Web 服务器配置
(1)基础配置
内网2台web服务器环境准备:
2台服务器的网卡全部改成VMnet1 仅主机模式:

查看自己虚拟机VMnet1网卡的IP地址段是多少

然后修改自己web服务器的网卡,如: web1 192.168.253.129 web2 192.168.253.130,网卡配置文件
修改如下(web1):

第二台web2

(2)服务部署
搭建本地 YUM 仓库(因内网无法访问外网)。
安装并启动 httpd:yum install -y httpd、systemctl start httpd。
自定义网页内容:Web01 编辑/var/www/html/index.html写入 “this is test01”,Web02 写入 “this is test02”。
1#关闭防火墙: 2systemctl disable firewalld --now 3 4setenforce 0 5####搭建本地yum仓库 6略 7搭建成功 8 9#下载并开启httpd 10yum install -y httpd 11systemctl start httpd 12 13#第一台web服务器(192.168.253.129) 14vim /var/www/html/index.html 15
#第一台web服务器(192.168.253.129)

#第二台web服务器(192.168.253.130)

3. Windows 宿主机配置
打开 VMware Virtual Ethernet Adapter for VMnet8 属性,配置 IPv4:IP 为 192.168.10.1,子网掩码 255.255.255.0,网关 192.168.10.133。

四、验证方法
1. 连通性测试
Web 服务器 ping Windows 宿主机:ping 192.168.10.1,确保网络通畅。
LVS 服务器 curl 后端节点:curl http://192.168.253.129、curl http://192.168.253.130,应显示对应网页内容。

2. 负载均衡验证
Windows 浏览器访问http://192.168.10.133,间隔 20 秒刷新,交替显示 “test01” 和 “test02”。


LVS 服务器查看流量状态:ipvsadm -ln,可见后端节点的连接数分布。

《LVS-NAT 模式负载均衡集群部署与配置》 是转载文章,点击查看原文。
