LVS-NAT 负载均衡群集
目录
简介
一、LVS 与群集技术基础
1.1 群集技术概述
1.2 负载均衡群集的分层结构
1.3 负载均衡工作模式
二、LVS 虚拟服务器核心组件与配置
2.1 LVS 内核模块与管理工具
2.2 负载调度算法解析
2.3 ipvsadm 管理工具实战
三、NFS 共享存储服务配置
3.1 NFS 服务基础配置
3.2 客户端访问 NFS 共享
四、案例:LVS-NAT 负载均衡群集
4.1 案例环境准备
4.2 配置负载调度器
4.3 配置真实服务器节点
4.4 测试 LVS 群集效果
五、总结
简介
在当今互联网应用场景中,单台服务器早已无法满足高并发、高可用的服务需求。LVS(Linux Virtual Server)作为 Linux 平台下的高性能负载均衡解决方案,通过整合多台服务器资源,以统一入口提供服务,成为企业构建高可用集群的核心技术之一。
一、LVS 与群集技术基础
1.1 群集技术概述
群集(Cluster)是一组服务器的集合体,对外表现为一个整体服务单元。根据目标不同,群集主要分为三类:
- 负载均衡群集:提升系统响应能力,处理高并发请求(如 DNS 轮询、反向代理)
- 高可用群集:确保服务连续性,减少中断时间(如双机热备、故障切换)
- 高性能运算群集:整合计算资源,实现分布式运算(如云计算、网格计算)
1.2 负载均衡群集的分层结构
典型的负载均衡群集包含三个层次:
- 负载调度器:唯一入口,使用群集 IP(VIP),支持主备热备
- 服务器池:真实服务器(RIP)组成,处理调度器分发的请求
- 共享存储:确保各节点数据一致性,常用 NFS 或 NAS
1.3 负载均衡工作模式
LVS 支持三种核心工作模式:
- NAT 模式(地址转换):调度器作为网关,服务器使用私有 IP,安全性高
- TUN 模式(IP 隧道):服务器分散在公网,通过隧道与调度器通信
- DR 模式(直接路由):服务器与调度器同网络,性能更高
二、LVS 虚拟服务器核心组件与配置
2.1 LVS 内核模块与管理工具
LVS 作为 Linux 内核模块(ip_vs),默认已编译。可通过以下命令加载并查看版本:
modprobe ip_vs # 手动加载ip_vs模块
cat /proc/net/ip_vs # 查看LVS模块版本信息
2.2 负载调度算法解析
LVS 提供多种调度算法,常用四种:
- 轮询(RR):顺序分配请求,不考虑服务器负载
- 加权轮询(WRR):按权重分配,性能高的节点承担更多请求
- 最少连接(LC):将请求分配给连接数最少的节点
- 加权最少连接(WLC):结合权重与连接数,动态调整分配
2.3 ipvsadm 管理工具实战
(1)安装 ipvsadm 工具
dnf install ipvsadm # 在OpenEuler系统中安装ipvsadm管理工具
ipvsadm -v # 查看ipvsadm版本信息
(2)创建虚拟服务器
ipvsadm -A -t 172.16.16.172:80 -s rr # -A添加虚拟服务器,-t指定VIP和端口,-s指定轮询算法
(3)添加真实服务器节点
ipvsadm -a -t 172.16.16.172:80 -r 192.168.7.21:80 -m -w 1 # -a添加真实服务器,-r指定RIP和端口,-m指定NAT模式,-w设置权重为1
(4)查看群集状态
ipvsadm -ln # -l列表显示,-n以数字形式显示IP和端口,避免DNS解析
(5)保存与恢复策略
ipvsadm-save > /etc/sysconfig/ipvsadm # 保存当前LVS策略到配置文件
systemctl start ipvsadm # 启动ipvsadm服务,应用保存的策略
三、NFS 共享存储服务配置
3.1 NFS 服务基础配置
NFS(网络文件系统)用于群集节点间数据共享,基于 RPC 机制实现:
(1)安装 NFS 服务组件
yum -y install nfs-utils rpcbind # 安装NFS服务和RPC支持组件
systemctl enable nfs-server rpcbind # 设置服务开机自启动
(2)配置共享目录
vi /etc/exports # 编辑NFS配置文件
# 添加以下内容(示例):
/opt/wwwroot 192.168.10.0/24(rw,sync,no_root_squash) # 共享/opt/wwwroot目录给192.168.10.0/24网段,允许读写
(3)启动 NFS 服务
systemctl start rpcbind # 先启动RPC服务
systemctl start nfs-server # 再启动NFS服务
netstat -anpt | grep rpc # 检查RPC相关端口是否正常监听
(4)查看共享目录
showmount -e # 查看本机发布的NFS共享目录
3.2 客户端访问 NFS 共享
(1)客户端环境准备
yum -y install rpcbind nfs-utils # 安装客户端所需组件
systemctl enable rpcbind # 启用RPC服务并设置自启动
systemctl start rpcbind
(2)手动挂载 NFS 共享
mount 192.168.10.104:/opt/wwwroot /var/www/html # 挂载NFS共享目录到本地路径
tail -1 /etc/mtab # 确认挂载结果
(3)设置自动挂载
vi /etc/fstab # 编辑fstab文件
# 添加以下内容:
192.168.10.104:/opt/wwwroot /var/www/html nfs defaults,_netdev 0 0 # _netdev参数表示设备依赖网络
四、案例:LVS-NAT 负载均衡群集
4.1 案例环境准备
主机 | 操作系统 | IP 地址 | 应用 |
lvs | OpenEuler 24.03 | 192.168.10.101 | ipvsadm(调度器) |
web1 | OpenEuler 24.03 | 192.168.10.102 | Apache(真实服务器) |
web2 | OpenEuler 24.03 | 192.168.10.103 | Apache(真实服务器) |
nfs | OpenEuler 24.03 | 192.168.10.104 | NFS(共享存储) |
4.2 配置负载调度器
(1)开启路由转发
vi /etc/sysctl.conf # 编辑系统参数配置文件
# 添加:
net.ipv4.ip_forward=1 # 启用IP转发功能
sysctl -p # 立即生效配置
(2)配置 VIP 地址
ifconfig ens36 inet 192.168.74.129 netmask 255.255.255.0 # 为ens36网卡配置VIP地址
# 若网卡配置文件不存在,创建并编辑:
vi /etc/sysconfig/network-scripts/ifcfg-ens36
# 内容示例:
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
NAME=ens36
DEVICE=ens36
ONBOOT=yes
IPADDR=192.168.74.129
NETMASK=255.255.255.0
(3)配置 LVS 负载策略
ipvsadm -C # 清除原有LVS策略
ipvsadm -A -t 192.168.74.129:80 -s rr # 创建虚拟服务器,使用轮询算法
ipvsadm -a -t 192.168.74.129:80 -r 192.168.10.102:80 -m -w 1 # 添加真实服务器1,NAT模式,权重1
ipvsadm -a -t 192.168.74.129:80 -r 192.168.10.103:80 -m -w 1 # 添加真实服务器2,NAT模式,权重1
ipvsadm --save # 保存LVS策略
systemctl enable ipvsadm # 设置ipvsadm服务开机自启动
4.3 配置真实服务器节点
(1)设置网关指向调度器
route del default gw 192.168.10.254 # 删除原有默认网关
route add default gw 192.168.10.101 # 设置LVS调度器为新网关
(2)安装 Web 服务并配置
yum -y install httpd # 安装Apache服务
mount 192.168.10.104:/opt/wwwroot /var/www/html # 挂载NFS共享目录
vi /var/www/html/index.html # 创建测试网页(不同节点可设置不同内容用于测试)
# 示例内容:
<h1>LVS负载均衡群集--节点1测试网页</h1>
systemctl start httpd # 启动Apache服务
systemctl enable httpd # 设置开机自启动
4.4 测试 LVS 群集效果
(1)查看 LVS 节点状态
ipvsadm -ln # 查看LVS群集配置和节点状态
# 输出示例:
TCP 192.168.74.129:80 rr
->192.168.10.102:80 Masq 1 0 0
->192.168.10.103:80 Masq 1 0 0
(2)查看连接记录
ipvsadm -lnc # 查看客户端连接详细信息
(3)浏览器访问测试
通过浏览器多次访问http://192.168.74.129
,观察网页内容是否在不同节点间切换,验证负载均衡效果。
五、总结
LVS-NAT 模式作为最基础的负载均衡方案,通过地址转换实现请求分发,具有配置简单、安全性高的特点,适合中小规模应用场景。在实际生产环境中,可根据需求进一步扩展:
- 性能优化:切换至 DR 模式或 TUN 模式,提升吞吐量
- 高可用增强:结合 Keepalived 实现调度器热备
- 复杂场景:与 Docker、Kubernetes 等容器技术结合,构建弹性集群
- 监控体系:集成 Prometheus、Grafana 等工具,实时监控集群状态
LVS 作为 Linux 内核级的负载均衡方案,凭借其高效性和稳定性,在金融、电商、云计算等领域广泛应用。掌握 LVS 核心原理与配置,是构建高可用、可扩展服务架构的重要基础。
相关文章:
LVS-NAT 负载均衡群集
目录 简介 一、LVS 与群集技术基础 1.1 群集技术概述 1.2 负载均衡群集的分层结构 1.3 负载均衡工作模式 二、LVS 虚拟服务器核心组件与配置 2.1 LVS 内核模块与管理工具 2.2 负载调度算法解析 2.3 ipvsadm 管理工具实战 三、NFS 共享存储服务配置 3.1 NFS 服务基础…...

免费文本转语音工具体验:祈风TTS使用
简介:语音生成的另一种方式 现在很多人通过视频记录生活,表达观点。拍摄剪辑不难,配音成了常见难题。部分人对自己的声音不够自信,也有人在特定场景下不便出声。文本转语音工具可以成为解决方案。 常见的TTS(Text To…...
ipv6与p2p的关系
在PCDN(P2P内容分发网络)领域,IPv6与PCDN盒子的关系紧密且相互影响,主要体现在以下几个方面: 一、IPv6的部署推动PCDN盒子普及 地址资源充足 IPv6采用128位地址,解决了IPv4地址枯竭的问题,为PC…...

JS和TS的区别
JavaScript 与 TypeScript 的主要区别和特性对比 1. 基础定义 JavaScript 是一种动态、弱类型的编程语言,广泛应用于前端开发以及通过 Node.js 扩展到后端开发。TypeScript 则是 JavaScript 的超集,它在 JavaScript 的基础上添加了静态类型系统和其他增…...

Python实现P-PSO优化算法优化BP神经网络分类模型项目实战
说明:这是一个机器学习实战项目(附带数据代码文档),如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 随着人工智能技术的快速发展,神经网络在分类任务中展现了强大的性能。BP(Back Propagation&…...

Linux --进度条小程序更新
这里使用随机数来模拟下载量,来实现一个下载进度更新的小程序 main.c 的代码,其中downlod这个函数使用的是函数指针,如果有多个进度条函数可以传入进行多样化的格式下载显示,还需要传入一个下载总量,每次"下载以…...
JVM——回顾:JVM的起源、特性与系统构成
引入 在当今数字化时代,Java语言及其运行环境Java虚拟机(JVM)在软件开发领域占据着举足轻重的地位。从大型企业级应用到各类移动应用,JVM凭借其独特的特性和强大的功能,为开发者提供了高效且稳定的运行环境。 JVM的起…...
实现MPC钱包
多方计算(MPC,Multiparty Computation)钱包是一种利用密码学技术实现的加密货币钱包,它允许多个参与者共同生成和管理钱包的私钥,而无需将私钥暴露给任何单个参与者。这种钱包具有高度的安全性和隐私性。实现一个 MPC …...
每日算法刷题Day19 5.31:leetcode二分答案3道题,用时1h
6. 475.供暖器(中等,学习check函数双指针思想) 475. 供暖器 - 力扣(LeetCode) 思想 1.冬季已经来临。 你的任务是设计一个有固定加热半径的供暖器向所有房屋供暖。在加热器的加热半径范围内的每个房屋都可以获得供暖。现在,给出…...
【线上故障排查】缓存热点Key导致Redis性能下降的排查与优化
一、高频面试题 什么是缓存热点Key?它会对Redis性能产生哪些影响? 缓存热点Key是指在某段时间内,被大量请求访问的缓存Key。由于Redis是单线程模型,大量针对热点Key的请求会导致该线程长时间处于忙碌状态,其他请求只能排队等待处理,从而使Redis整体响应延迟增加,吞吐量下…...

关于镜像如何装进虚拟机
本篇文章为感谢小仙猪老师特别编写 本篇文章仅以Ubuntu为例 目录 创建虚拟机 汉化 如果没有China选项 检查网络 创建虚拟机 第一步,创建虚拟机 因为,第一个选项是会把虚拟机的文件放在c盘因此,这里博主选择自定义,然后下一…...
CPU特权级别:硬件与软件协同构建系统安全的基石
在计算机系统的底层架构中,用户模式(User Mode)与内核模式(Kernel Mode)的划分是保障系统安全与稳定的核心机制。这一机制的实现既依赖于CPU硬件的特权级别设计,也离不开操作系统的精细化管理。本文将从硬件…...

智慧体育馆数字孪生,场馆管理智能化
图扑数字孪生智慧体育馆可视化管理平台。通过高精度三维建模,对体育馆建筑结构、设施设备等进行 1:1 虚拟映射,全方位还原场馆物理实体。系统集成多维度传感器数据,实现对人流量、客流密度、区域拥堵指数等信息的实时采集与分析,动…...

回归算法模型之线性回归
哈喽!我是 我不是小upper~ 今天来和大家聊聊「线性回归」—— 这是机器学习里最基础、最直观的算法之一,咱们用一个超简单的例子就能搞懂它! 先看一个生活场景 假设你是房产中介,遇到一个灵魂拷问: 客户有…...

【深度学习】10. 深度推理(含链式法则详解)RNN, LSTM, GRU,VQA
深度推理(含链式法则详解)RNN, LSTM, GRU,VQA RNN 输入表示方式 在循环神经网络(Recurrent Neural Network, RNN)中,我们处理的是一段文字或语音等序列数据。对于文本任务,输入通常是单词序列…...
【Java】在 Spring Boot 中连接 MySQL 数据库
在 Spring Boot 中连接 MySQL 数据库是一个常见的任务。Spring Boot 提供了自动配置功能,使得连接 MySQL 数据库变得非常简单。以下是详细的步骤: 一、添加依赖 首先,确保你的pom.xml文件中包含了 Spring Boot 的 Starter Data JPA 和 MySQ…...
影响服务器稳定性的因素都有什么?
服务器的稳定性会影响到业务是否能够持续运行,用户在进行访问网站的过程中是否出现页面卡顿的情况,本文就来了解一下都是哪些因素影响着服务器的稳定性。 服务器中的硬件设备是保证服务器稳定运行的基础,企业选择高性能的处理器和大容量且高速…...

【Qt】Bug:findChildren找不到控件
使用正确的父对象调用 findChildren:不要在布局对象上调用 findChildren,而应该在布局所在的窗口或控件上调用。...
GitHub 趋势日报 (2025年05月30日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 833 agenticSeek 789 prompt-eng-interactive-tutorial 466 ai-agents-for-beginn…...

【linux】linux进程概念(四)(环境变量)超详细版
小编个人主页详情<—请点击 小编个人gitee代码仓库<—请点击 linux系列专栏<—请点击 倘若命中无此运,孤身亦可登昆仑,送给屏幕面前的读者朋友们和小编自己! 目录 前言一、基本概念二、认识常见的几个环境变量echo $ 查看某个环境变量env 显示…...
Qt程序添加调试输出窗口:CONFIG += console
目录 1.背景 2.解决方案 3.原理详解 4.控制台窗口的行为 5.条件编译(仅调试模式显示控制台) 6.替代方案 7.总结 1.背景 在Qt程序开发中,开发者经常遇到这样的困扰: 开发机上程序运行正常 发布到其他机器后程序无法启动 …...

从零开始的二三维CAD|CAE软件: 解决VTK,DICOM体素化-失效问题.
背景: 在从零开始的二三维软件开发中, 需要加载CT的dicoms影像文件, 并将其序列化之后的数据,体素化 可惜..vtk的c#库,将其体素化的时候,竟然失败... 使用vtkDicomReader ,设置 Dicom文件夹读取,竟然不停的失败...从网上找了一些版本.也没啥可用的资料... 解决办法: 直接…...
android协程异步编程常用方法
在 Android 开发中,Kotlin 协程是处理异步操作的首选方案,它能让异步代码更简洁、更易读。以下是 Android 协程异步编程的常用方法和模式: 一、基础构建块 1. launch 作用:启动一个新协程,不返回结果。适用场景&…...

【计算机网络】应用层协议Http——构建Http服务服务器
🔥个人主页🔥:孤寂大仙V 🌈收录专栏🌈:计算机网络 🌹往期回顾🌹: 【Linux笔记】——进程间关系与守护进程 🔖流水不争,争的是滔滔不息 一、Http协…...
【求A类B类月】2022-2-9
缘由编程求解,如内容所示题-Python-CSDN问答只写示例及注释 每月工作日只考虑周末情况,即只有周六、周日放假。每月第一个工作日如果是星期一则该月是A类月,每月最后一个工作日如果是星期五则该月是B类月。一个月可能是A类月也可能是B类月。…...
信息安全之为什么引入公钥密码
在对称密码中,由于加密和解密的密钥是相同的,因此必须向接收者配送密钥,这里就涉及到密钥配送问题 那么什么时候密钥配送问题呢?举个简单的例子大家就清楚了, Alice 前几天在网上认识了Bob,现在她想给Bob…...

linux版本vmware修改ubuntu虚拟机为桥接模式
1、先打开linux版本vmware操作界面 2、设置虚拟路由编辑器的桥接模式 输入账号密码 自动模式 不需要进行任何操作 3、修改虚拟机设置网络模式为桥接模式 然后save保存一下配置 4、现在进入虚拟机查看ens33配置 网卡启动但是没有ip 5、自己进行设置修改ubuntu网络配置文件 cd …...
pytest 常见问题解答 (FAQ)
pytest 常见问题解答 (FAQ) 1. 基础问题 Q1: 如何让 pytest 发现我的测试文件? 测试文件命名需符合 test_*.py 或 *_test.py 模式测试函数/方法需以 test_ 开头测试类需以 Test 开头(且不能有__init__方法) Q2: 如何运行特定测试? pytest path/to/t…...

从0到1上手Trae:开启AI编程新时代
摘要:字节跳动 2025 年 1 月 19 日发布的 Trae 是一款 AI 原生集成开发环境工具,3 月 3 日国内版推出。它具备 AI 问答、代码自动补全、基于 Agent 编程等功能,能自动化开发任务,实现端到端开发。核心功能包括智能代码生成与补全、…...
HTTPS 协议:数据传输安全的坚实堡垒
在互联网技术飞速发展的今天,数据在网络中的传输无处不在。从日常浏览网页、在线购物,到企业间的数据交互,每一次信息传递都关乎着用户隐私、企业利益和网络安全。HTTP 协议作为互联网应用层的基础协议,曾经承担着数据传输的重任&…...