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

作者:ttthe_MOon日期:2025/11/18

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

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 firewalldiptables -t nat -Fiptables -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

配置负载策略:

  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
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 httpdsystemctl 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仓库
67搭建成功
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.129curl http://192.168.253.130,应显示对应网页内容。

在这里插入图片描述

2. 负载均衡验证

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

在这里插入图片描述

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


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


相关推荐


关于No Chatbot的思考
HeteroCat2025/11/17

前言 近期在大模型圈子里,“No Chatbot”这一概念潇潇浮出江面,它意指不再将智能体局限于传统的对话式问答系统,而是发展为具备主动规划、调用工具和协作能力的智能助理。作为一名长期研究提示词工程和智能体应用的创作者,我想结合最近的思考,与大家探讨这一趋势的内涵与意义。 什么是“No Chatbot” “No Chatbot”并不是不要聊天机器人,而是指下一代智能体需要突破单纯聊天交互的框架,具备更强的自主性和执行力。它主要包含以下特征: 任务导向:关注完成复杂任务,而不是只回答问题。系统会


Spring boot启动原理及相关组件
q***38512025/11/16

优质博文:IT-BLOG-CN 一、Spring Boot应用启动 一个Spring Boot应用的启动通常如下: @SpringBootApplication @Slf4j public class ApplicationMain { public static void main(String[] args) { ConfigurableApplicationContext ctx = SpringApplication.run(ApplicationMain.


UDP服务端绑定INADDR_ANY后,客户端该用什么IP访问?
咸鱼_要_翻身2025/11/15

目录 一、问题 二、详细解释 1、INADDR_ANY 到底是什么? 2、客户端可以使用什么IP访问? 三、为什么要传IP? 1、网络层寻址的需要 2、操作系统协议栈的需要 3、服务端主机区分流量的需要 四、总结 一、问题         在UDP协议中,服务端使用INADDR_ANY了,然后客户端可以使用什么IP可以访问服务端?为什么要传IP?这是一个非常经典且重要的问题。我们来分步拆解和解答。 核心答案:当UDP服务端绑定到 INADDR_ANY (其值通常是


【Kubernetes】K8s 集群 Ingress 入口规则
陈陈CHENCHEN2025/11/14

Ingress 是管理从集群外部访问集群内部服务的入口规则(HTTP 和 HTTPS)的 API 对象,核心功能是将外部到达集群的 HTTP/HTTPS 请求,根据主机名(host)和路径(path)转发到不同的后端 Service,一起来看看如何使用吧! 1、概念 1.1、Ingress(资源) 在 K8s 中创建的 YAML 文件,只是一份规则声明,定义 “当访问 a.example.com 时,将流量转发给 service-a” 之类的规则 1.2、Ingress Control


11种方法解决iPhone上共享相册不显示的问题[2025]
Digitally2025/11/12

如果你想查看或下载朋友或家人通过iCloud链接邀请与你共享的照片,你可以利用iPhone上的共享相册功能。然而,有时这个看似无缝的过程会出现问题,让用户不禁想问:“为什么我没有收到共享相册邀请?”或“如何修复共享相册不显示”。好的,本页面致力于揭示背后的原因,并提供有效的解决方法,确保你的共享相册体验保持完美。但在那之前,让我们先简要了解一下“共享相册”。 第一部分:什么是共享相册?如何接受共享相册邀请? 什么是共享相册?“共享相册”是一个在线空间,多人可以在此添加、查看和互动照片和视频。


Java 17 密封类(Sealed Classes)实战:从类型安全到架构解耦的范式升级
听风吟丶2025/11/10

在 Java 17 之前,面向对象编程中的 “类继承” 一直存在一个痛点:一个公开类(public class)可以被任何其他类无限制继承,导致类型体系失控、代码维护成本升高。例如,定义一个 “支付方式” 基类后,开发者可能会随意继承出不符合业务逻辑的子类(如 “现金支付” 继承 “电子支付”),破坏类型体系的完整性。为解决这一问题,Java 17 正式将密封类(Sealed Classes) 纳入标准特性,通过 “显式指定子类范围”“限制继承权限”“强制类型覆盖”,从语言层面实现了类型体系的可


网络协议之传统DNS存在的问题以及httpdns
小董亮出你的8块腹肌吧!2025/11/8

写在前面 传统的DNS虽然使用的非常广泛,但是也是存在一些问题的,本文就来一起来看下,以及其解决方案http dns。 1:传统DNS存在的问题 1.1:域名缓存问题 用户某次访问时,可能已经有了距离用户更近的服务IP,但是因为还是使用缓存的那个服务IP(注意并不是不能用了),所以就无法拿到最优的那个IP了。 1.2:域名转发问题 存在这个问题的原因是,有些运营商,自己并不会取获取DNS信息,而是将这个工作转发到其他的运营商来做,而DNS服务器来返回IP地址时会根据当前请求者所在的运


Python编程实战 · 基础入门篇 | 集合(set)
程序员爱钓鱼2025/11/6

在 Python 的基础数据结构中,除了列表(list)、元组(tuple)、字典(dict),还有一种特殊但非常实用的数据类型——集合(set)。 集合的最大特点是:不重复、无序、可进行集合运算。 它常用于去重、数据筛选、关系判断等场景,是数据处理中的高效利器。 一 什么是集合(set) 集合(Set)是一种 无序、可变 的数据容器, 用于存放 不重复的元素。 在 Python 中,可以通过 {} 或 set() 创建集合。 fruits = {"apple", "banana", "ch


(3)100天python从入门到拿捏
硅基工坊2025/11/1

Python3 基本数据类型 Python 中的变量不需要声明,它没有类型,每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建 文章目录 Python3 基本数据类型一、数据类型介绍1. 数值类型(Numeric Types)1.1 整数(int)1.2 浮点数(float)1.3 复数(complex) 2. 字符串类型(String)3. 布尔类型(Boolean)4. 列表类型(List)5. 元组类型(Tuple)6. 字典类型(Dictionary)


数据库连接详解:从基础到实践
培风图南以星河揽胜2025/10/30

数据库连接详解:从基础到实践 在现代软件开发中,数据库是存储和管理数据的核心组件。无论是Web应用、移动应用还是数据分析系统,都离不开与数据库的交互。而这一切的基础,就是数据库连接。本文将深入浅出地介绍数据库连接的基本概念、原理、实现方式以及最佳实践,帮助你构建高效、稳定的数据库访问层。 1. 什么是数据库连接? 简单来说,数据库连接(Database Connection) 是应用程序与数据库服务器之间建立的一个通信通道。通过这个通道,应用程序可以发送SQL查询、接收查询结果、执行事

首页编辑器站点地图

Copyright © 2025 聚合阅读

License: CC BY-SA 4.0