LVS-NAT 模式负载均衡集群部署与配置指南

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 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,可见后端节点的连接数分布。

相关推荐
ttthe_MOon1 小时前
动静分离 + 负载均衡:Nginx 与 Tomcat 深度整合实战
nginx·tomcat·负载均衡
Shylock_Mister7 小时前
Linux C线程编程全指南
linux·运维·c语言
Autism....8 小时前
服务器理解
运维·服务器
天亮之前_ict8 小时前
【故障排查】intel 服务器安装Win server 2019蓝屏解决方法
运维·服务器
熙客9 小时前
Linux:监控命令
linux·运维
飞鱼&9 小时前
Linux 常用命令
linux·运维·服务器
喵了几个咪9 小时前
使用Bazel构建你的Kratos微服务
java·运维·微服务
偶像你挑的噻9 小时前
4-Linux驱动开发-字符设备驱动
linux·运维·驱动开发
2401_865854889 小时前
AI软件可以帮助我自动化哪些日常任务?
运维·人工智能·自动化