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 服务器ens33VMnet8192.168.10.133192.168.10.2
LVS 服务器ens36VMnet1192.168.253.128192.168.253.2
Web01 服务器ens33VMnet1192.168.253.129192.168.253.128
Web02 服务器ens33VMnet1192.168.253.130192.168.253.128
Windows 宿主机VMnet8 适配器-192.168.10.1192.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 firewalldiptables -t nat -Fiptables -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

配置负载策略:

  1. 清空规则:ipvsadm -C

  2. 定义外网入口与轮询算法:ipvsadm -A -t 192.168.10.133:80 -s rr

  3. 添加后端节点: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

  4. 保存策略:ipvsadm-save > /etc/sysconfig/ipvsadm

##安装ipvsadm 管理工具
yum -y install ipvsadm
##启动服务前须保存负载分配策略+
ipvsadm-save > /etc/sysconfig/ipvsadm
或者 ipvsadm --save > /etc/sysconfig/ipvsadm
systemctl 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
#启用策略
ipvsadm
ipvsadm -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 httpdsystemctl 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.129curl http://192.168.253.130,应显示对应网页内容。

在这里插入图片描述

2. 负载均衡验证

Windows 浏览器访问http://192.168.10.133,间隔 20 秒刷新,交替显示 “test01” 和 “test02”。
在这里插入图片描述

在这里插入图片描述

LVS 服务器查看流量状态:ipvsadm -ln,可见后端节点的连接数分布。
在这里插入图片描述