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。
cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens36
编辑 ifcfg-ens36:修改 NAME、DEVICE 为 ens36,配置内网 IP(192.168.253.128)及子网掩码和网关。
####ens33网卡配置
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO="static"
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=2756e2a9-f44e-457e-8865-b7a7ec201c99
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.10.133
NETMASK=255.255.255.0
GATEWAY=192.168.10.2
DNS1=8.8.8.8
DNS2=114.114.114.114
PREFIX=24
###ens36网卡配置
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO="static"
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens36 修改成网卡名字
DEVICE=ens36 修改成网卡名字
ONBOOT=yes
IPADDR=192.168.253.128 修改IP
NETMASK=255.255.255.0
GATEWAY=192.168.253.2 修改网关
DNS1=8.8.8.8
DNS2=114.114.114.114
PREFIX=24
重启网络:systemctl restart network,通过ip addr show ens36验证。
systemctl restart network
# 查看是否生效
ip addr show ens36
(3)系统环境配置
开启防火墙并清空规则:systemctl start firewalld、iptables -t nat -F、iptables -F。
#开启防火墙
systemctl start firewalld
#清除防火墙规则
iptables -t nat -F
iptables -F
开启路由转发:编辑/etc/sysctl.conf,添加net.ipv4.ip_forward = 1,执行sysctl -p生效。
#配置SNAT转发规则
vim /etc/sysctl.conf
#开启路由转发的功能
net.ipv4.ip_forward = 1
#刷新生效
或 echo '1' > /proc/sys/net/ipv4/ip_forward
sysctl -p
配置 SNAT 规则:iptables -t nat -A POSTROUTING -s 192.168.253.0/24 -o ens33 -j SNAT --to-source 192.168.10.133。
#自定义路由转发规则,将所有192.168.253.0/24(内网网段)网段的流量全部映射192.168.10.133(外网IP)的地址
iptables -t nat -A POSTROUTING -s 192.168.253.0/24 -o ens33 -j SNAT --to-source 192.168.10.133
(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。##安装ipvsadm 管理工具
yum -y install ipvsadm##启动服务前须保存负载分配策略+
ipvsadm-save > /etc/sysconfig/ipvsadm
或者 ipvsadm --save > /etc/sysconfig/ipvsadmsystemctl start ipvsadm.service
##配置负载分配策略(NAT模式只要在服务器上配置,节点服务器不需要特殊配置)
#清空规则
ipvsadm -C
#重新建立规则 (申明外网网卡是192.168.10.133,负载均衡模式是RR轮询)
ipvsadm -A -t 192.168.10.133:80 -s rr
#定义后端地址池(相当于nginx的upstream)
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
#启用策略
ipvsadmipvsadm -ln #查看节点状态,Masq代表 NAT模式
ipvsadm-save > /etc/sysconfig/ipvsadm #保存策略
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"。
#关闭防火墙:
systemctl disable firewalld --now
setenforce 0
####搭建本地yum仓库
略
搭建成功
#下载并开启httpd
yum install -y httpd
systemctl start httpd
#第一台web服务器(192.168.253.129)
vim /var/www/html/index.html
#第一台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,可见后端节点的连接数分布。
