LVS的三种工作模式简述
一、引言
在过去的十几年中,Internet从几个研究机构相连为信息共享的网络发展成为拥有大量应用和服务的全球性网络,它正成为人们生活中不可缺少的 一部分。虽然Internet发展速度很快,但建设和维护大型网络服务依然是一项挑战性的任务,因为系统必须是高性能的、高可靠的,尤其当访问负载不断增 长时,系统必须能被扩展来满足不断增长的性能需求。由于缺少建立可伸缩网络服务的框架和设计方法,这意味着只有拥有非常出色工程和管理人才的机构才能建立 和维护大型的网络服务。
针对这种情形,本文先给出LVS集群的通用体系结构,并讨论了其的设计原则和相应的特点;最后将LVS集群应用于建立可伸缩的Web、Media、Cache和Mail等网络服务。
二、LVS简介
LVS(Linux Virtual Server)是一个基于Linux平台的开源负载均衡系统。它通过将多个服务器组成一个虚拟服务器集群,实现了高效的负载均衡和流量分发。LVS的核心思想是利用IP负载均衡技术和内容请求分发机制,将客户端的请求均衡地分配给服务器集群中的各个节点。这种机制能够有效地提高服务器的利用率,降低单点故障的风险,并提供高可用性和可伸缩性的服务。
LVS的三种工作模式分别是NAT模式、IP隧道模式(TUN)和直接路由模式(DR)
1、LVS的工作原理
LVS通过负载均衡技术将用户请求分发到后端服务器,从而实现高性能、高可用的服务。LVS的基本工作原理是用户请求到达LVS的虚拟IP(VIP),LVS根据转发方式和算法,将请求转发给后端服务器,后端服务器处理请求并返回结果给用户。
2、LVS集群的体系结构
LVS集群采用IP负载均衡技术和基于内容请求分发技术。调度器具有很好的吞吐率,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服 务器的故障,从而将一组服务器构成一个高性能的、高可用的虚拟服务器。整个服务器集群的结构对客户是透明的,而且无需修改客户端和服务器端的程序。
体系结构如图1所示,三层主要组成部分为:
- 负载调度器(load balancer),它是整个集群对外面的前端机,负责将客户的请求发送到一组服务器上执行,而客户认为服务是来自一个IP地址(我们可称之为虚拟IP地址)上的。
- 服务器池(server pool),是一组真正执行客户请求的服务器,执行的服务有WEB、MAIL、FTP和DNS等。
- 共享存储(shared storage),它为服务器池提供一个共享的存储区,这样很容易使得服务器池拥有相同的内容,提供相同的服务。
三、LVS三种工作模式
1、NAT模式
NAT模式工作原理:用户请求到达LVS的调度器,调度器将请求的目标IP改为后端服务器的IP,同时修改目标端口,然后将请求发送到后端服务器。后端服务器处理请求后,将响应返回给调度器,再由调度器返回给用户
1.1NAT模式体系结构
在一组服务器前有一个调度器,它们是通过Switch/HUB相连接的。这些服务器 提供相同的网络服务、相同的内容,即不管请求被发送到哪一台服务器,执行结果是一样的。服务的内容可以复制到每台服务器的本地硬盘上,可以通过网络文件系 统(如NFS)共享,也可以通过一个分布式文件系统来提供。
1.2NAT体系结构图
2、DR模式
DR模式的工作原理:用户请求到达LVS的调度器,调度器将请求的目标MAC地址改为后端服务器的MAC地址,目标IP保持不变,然后将请求发送到后端服务器。后端服务器直接将响应返回给用户。
2.1DR模式的体系结构
调度器和服务器组都必须在物理上有一个网卡通过不分断的局域网相连,如通过高速的交换机或者HUB相连。VIP地址为调度器和服务器组共享,调度 器配置的VIP地址是对外可见的,用于接收虚拟服务的请求报文;所有的服务器把VIP地址配置在各自的Non-ARP网络设备上,它对外面是不可见的,只是用于处理目标地址为VIP的网络请求。
2.2DR模式体系结构图

3、TUN模式
TUN模式工作原理:用户请求到达LVS的调度器,调度器通过IP隧道技术将请求封装到一个新的IP包中,然后发送到后端服务器。后端服务器解封装后处理请求,并直接将响应返回给用户
3.1TUN模式的体系结构
利用IP隧道技术将请求报文封装转 发给后端服务器,响应报文能从后端服务器直接返回给客户。但在这里,后端服务器有一组而非一个,所以我们不可能静态地建立一一对应的隧道,而是动态地选择 一台服务器,将请求报文封装和转发给选出的服务器。这样,我们可以利用IP隧道的原理将一组服务器上的网络服务组成在一个IP地址上的虚拟网络服务。
3.2TUN模式体系结构图
以上内容均来自LVS官方文档详情请自行访问该网站LVS项目中的有关中文文档
四、LVS负载均衡的搭建
注意:开始搭建之前所有虚拟机都需要关闭防火墙和SELinux
基于NAT的LVS负载均衡
1、节点规划
| 主机 | 角色 | 系统 | 网络 | IP |
|---|---|---|---|---|
| client | client | redhat 9.5 | 仅主机 | 192.168.75.100/24 |
| lvs | lvs | redhat 9.5 | 仅主机 NAT | 192.168.75.200/24 VIP 192.168.250.8/24 DIP |
| nginx | rs1 | redhat 9.5 | NAT | 192.168.250.7/24 |
| nginx | rs2 | redhat 9.5 | NAT | 192.168.250.17/24 |
| nginx | rs3 | redhat9.5 | NAT | 192.168.250.27/24 |
2、实验搭建
(1)更改网络设置
将主机lvs增加一块虚拟网卡模式为仅主机,将客户机的网卡改成仅主机模式,然后查看仅主机的网段。
注意:每个人的仅主机模式网段各不相同,需要查看后自行修改,否则将会出现连不上xshell的问题。
查看仅主机模式网段方法:1、打开vm点击编辑2、点击虚拟网络编辑器3、单击仅主机模式

网段查看好以后,使用nmcli命令修改IP地址。
注意:修改各主机ip时,要将LVS的ip作为rs1、rs2、rs3的网关
(2)配置RS
先从rs1开始逐一配置
a、rs1
安装nginx
dnf install nginx -y
修改nginx的默认访问页
修改前如果忘记路径可使用rpm -ql nginx查看
echo $(hostname) $(hostname -I) > /usr/share/nginx/html/index.html
b、rs2
安装nginx
dnf install nginx -y
修改nginx的默认访问页
echo $(hostname) $(hostname -I) > /usr/share/nginx/html/index.html
c、rs3
安装nginx
dnf install nginx -y
修改nginx的默认访问页
echo $(hostname) $(hostname -I) > /usr/share/nginx/html/index.html
(3)配置LVS
修改网卡名称
nmcli c modify 'Wired connection 1' connection.id ens224
安装ipvsadm
dnf install ipvsadm -y
客户端只需要修改ip即可,无需任何配置。
启动ipvsadm
ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl start ipvsadm
需要在 LVS 服务器上配置ip转发内核参数
vim /etc/sysctl.conf
net.ipv4.ip_forward=1
配置LVS规则匹配
ipvsadm -A -t 192.168.75.200:80 -s rr
为规则增加RS
ipvsadm -a -t 192.168.75.200:80 -r 192.168.250.7:80 -m -w 2
ipvsadm -a -t 192.168.75.200:80 -r 192.168.250.17:80 -m -w 2
ipvsadm -a -t 192.168.75.200:80 -r 192.168.250.27:80 -m -w 2
查看LVS规则
[root@lvs ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.75.200:80 rr-> 192.168.250.7:80 Masq 2 0 0 -> 192.168.250.17:80 Masq 2 0 0 -> 192.168.250.27:80 Masq 2 0 0
重新启动ipvsadm服务
systemctl restart ipvsadm
(4)测试
在客户机上使用curl命令测试RS上的nginx服务
[root@client ~]# curl 192.168.75.200
RS3 192.168.250.27
[root@client ~]# curl 192.168.75.200
RS2 192.168.250.17
[root@client ~]# curl 192.168.75.200
RS1 192.168.250.7
(5)总结
1、LVS服务器需要有两块网卡,一块用于虚拟IP,便于用户访问;另一块作为后端真实主机的网关。
2、在配置规则时,需要通过 -m 参数来指定是 NAT 模式
3、需要在 LVS 服务器上配置ip转发内核参数
相关文章:
LVS的三种工作模式简述
一、引言 在过去的十几年中,Internet从几个研究机构相连为信息共享的网络发展成为拥有大量应用和服务的全球性网络,它正成为人们生活中不可缺少的 一部分。虽然Internet发展速度很快,但建设和维护大型网络服务依然是一项挑战性的任务…...
Ribbon负载均衡的深度解析与应用
在微服务架构中,服务之间的调用频繁且复杂,因此负载均衡显得尤为重要。Spring Cloud生态系统中,Ribbon作为一个客户端负载均衡器,扮演着关键的角色。它不仅能提高系统的响应速度,还能确保系统的稳定性和可用性。接下来…...
使用 Layers 扩展你的 Nuxt4 应用
面对一个臃肿的页面或项目,你会如何简化重构、扩展它? 当单个 Vue 文件中界面/业务足够多时,通常我们会把它拆分成多个 components 或 composables 来引入,以此来减少此文件复杂度和增加可维护性。 当一个项目的界面/业务逻辑足…...
Excel处理控件Aspose.Cells指南:如何在不使用 Microsoft Excel 的情况下解锁 Excel 工作表
Microsoft Excel 允许用户使用密码保护工作表,以防止未经授权的更改。但是,在某些情况下,您可能需要在不使用 Microsoft Excel 的情况下解锁 Excel 工作表。在本指南中,我们将探讨解锁 Excel 工作表的不同方法,例如使用…...
进军场景智能体,云迹机器人又快了一步
(图片来源:Pixels) 2025年,AI和机器人行业都发生了巨大改变。 数科星球原创 作者丨苑晶 编辑丨大兔 2025年,酒店行业正掀起一股批量采购具备AI功能的软硬一体解决方案的热潮。 在DeepSeek、Manus等国产AI软件的推动…...
vue 使用v-model实现父子组件传值——子父组件同步更新
基于vue2和vue3两个版本的框架略显不同,所以我分开的来讲: 1、vue2 子组件(my-input.vue): <template><input type"text" :value"name" input"inputChange" /> </tem…...
PHP 应用SQL 注入符号拼接请求方法HTTP 头JSON编码类
#PHP-MYSQL- 数据请求类型 SQL 语句由于在黑盒中是无法预知写法的, SQL 注入能发成功是需要拼接原 SQL 语句, 大部分黑盒能做的就是分析后各种尝试去判断,所以有可能有注入但可能出现无法注入成 功的情况。究其原因大部分都是原 SQL …...
【React】基础版React + Redux实现教程,自定义redux库,Redux Toolkit教程
本项目是一个在react中,使用 redux 管理状态的基础版实现教程,用简单的案例练习redux的使用,旨在帮助学习 redux 的状态管理机制,包括 store、action、reducer、dispatch 等核心概念。 项目地址:https://github.com/Yv…...
23种设计模式-适配器(Adapter)设计模式
适配器设计模式 🚩什么是适配器设计模式?🚩适配器设计模式的特点🚩适配器设计模式的结构🚩适配器设计模式的优缺点🚩适配器设计模式的Java实现🚩代码总结🚩总结 🚩什么是…...
debug 笔记:llama 3.2 部署bug 之cutlassF: no kernel found to launch!
1 问题描述 按照官方的写法 import torch from transformers import pipeline import os os.environ["HF_TOKEN"] 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 model_id "meta-llama/Llama-3.2-3B"pipe pipeline("text-generation", modelmode…...
TCP的长连接和短连接,以及它们分别适用于什么场合
TCP长连接与短连接详解 一、核心概念对比 特性长连接(Persistent Connection)短连接(Short-lived Connection)连接生命周期一次建立后长期保持,多次数据交互复用同一连接每次数据交互均需新建连接,完成后…...
【操作系统】(五)操作系统引导(Boot)
视频参考:王道计算机2.了解计算机的启动过程和主引导扇区,让你的计算机从这里起飞吧_哔哩哔哩_bilibili 操作系统引导(Boot)就是在开机的时候,如何让操作系统运行起来? 主存分成RAM小部分ROM,其中ROM里面存放的是BIOS(…...
蓝桥与力扣刷题(蓝桥 山)
题目:这天小明正在学数数。 他突然发现有些止整数的形状像一挫 “山”, 比㓚 123565321、145541123565321、145541, 它 们左右对称 (回文) 且数位上的数字先单调不减, 后单调不增。 小朋数了衣久也没有数完, 他惒让你告诉他在区间 [2022,2022222022] 中有 多少个数…...
211数学专业大三想转码C++方向,目前在学算法,没系统学习计算机专业课,要先定方向吗?
今天给大家分享的是一位粉丝的提问,211数学专业大三想转码C方向,目前在学算法,没系统学习计算机专业课,要先定方向吗? 接下来把粉丝的具体提问和我的回复分享给大家,希望也能给一些类似情况的小伙伴一些启…...
场馆预约小程序的设计与实现
摘 要 时代在进步,人们对日常生活质量的要求不再受限于衣食住行。现代人不仅想要一个健康的身体,还想拥有一身宛如黄金比例的身材。但是人们平常除了上下班和上下学的时间,其余空余时间寥寥无几,所以我们需要用体育场馆预约来节省…...
黑苹果及OpenCore Legacy Patcher
黑苹果及OpenCore Legacy Patcher OpenCoreUnable to resolve dependencies, error code 71 OpenCore Unable to resolve dependencies, error code 71 黑苹果升级后打补丁不成功,比如提示以下错误,可参考官方文档进行修复。 Open TerminalType sudo …...
记一个阿里云CDN域名配置不当引起服务鉴权失效问题
背景:公司最近需要通过不同的域名提供给不同角色的用户使用,在阿里云上新增了多个域名,新域名与原域名指向的是一样的服务器地址。 问题现象:用户使用新域名登录后,返回的不是该用户的身份信息,不管是哪个…...
Pytorch学习笔记(十二)Learning PyTorch - NLP from Scratch
这篇博客瞄准的是 pytorch 官方教程中 Learning PyTorch 章节的 NLP from Scratch 部分。 官网链接:https://pytorch.org/tutorials/intermediate/nlp_from_scratch_index.html 完整网盘链接: https://pan.baidu.com/s/1L9PVZ-KRDGVER-AJnXOvlQ?pwdaa2m 提取码: …...
遗传算法优化支持向量机分类是一种将遗传算法与支持向量机相结合的方法
遗传算法优化支持向量机分类是一种将遗传算法与支持向量机相结合的方法,旨在提高支持向量机的分类性能。以下是其相关内容的详细介绍: 支持向量机(SVM) 原理:SVM是一种基于统计学习理论的机器学习方法,其…...
Axure项目实战:智慧运输平台后台管理端-母版、登录(文本框高级交互)
亲爱的小伙伴,在您浏览之前,烦请关注一下,在此深表感谢! 课程主题:智慧运输平台后台管理端 主要内容:母版、登录页制作 应用场景:母版、登录、注册、密码找回 案例展示: 案例视频…...
时序数据库 InfluxDB(一)
时序数据库 InfluxDB(一) 数据库种类有很多,比如传统的关系型数据库 RDBMS( 如 MySQL ),NoSQL 数据库( 如 MongoDB ),Key-Value 类型( 如 redis )…...
java开发环境本地全套
文章目录 1、jdk下载安装1.1、下载地址:1.2、安装1.3、验证 2、maven下载安装2.1、下载地址2.2、安装2.3、验证 3、git下载。3.1、下载地址 4、ideal下载5、dbeaver下载 1、jdk下载安装 1.1、下载地址: https://www.oracle.com/java/technologies/down…...
优化 K8s负载平衡之方法(Method for Optimizing K8s Load Balancing)
优化 K8s 负载平衡的 11 种方法 优化 Kubernetes 中的负载平衡对于保持应用程序的高可用性、可扩展性和性能至关重要。有效的负载平衡可确保流量在 Pod 之间高效分配,防止任何单个 Pod 成为瓶颈并确保无缝的用户体验。本指南探讨了优化 Kubernetes 负载平衡的 11 种…...
华为配置篇-ISIS基础实验
ISIS 一、简述二、常用命令总结三、实验 一、简述 一、基本定义与历史背景 IS-IS(Intermediate System to Intermediate System,中间系统到中间系统)是一种链路状态路由协议,最初由ISO设计用于OSI(开放系统互联&#…...
QTcpSocket(客户端实现)多线程连接慢问题
20250325记录 环境 Qt5.14.2 64位 msvc编译 在多线程环境下,使用QTcpSocket实现客户端,发现在少部分电脑上,连接时间过长,定时器检查套接字状态时,发现连接处于QAbstractSocket::ConnectingState状态。 //声明为一…...
【深度学习】【目标检测】【OnnxRuntime】【C++】YOLOV3模型部署
【深度学习】【目标检测】【OnnxRuntime】【C】YOLOV3模型部署 提示:博主取舍了很多大佬的博文并亲测有效,分享笔记邀大家共同学习讨论 文章目录 【深度学习】【目标检测】【OnnxRuntime】【C】YOLOV3模型部署前言Windows平台搭建依赖环境模型转换--pytorch转onnxONNXRuntime推…...
【力扣hot100题】(008)找到字符串中所有字母异位词
我果然还是太菜了(点烟)。 一开始想法是构建map,记录每个字母出现的位置,后来想了好久滑动窗口该怎么移动。 后来看了答案才明白滑动窗口是固定的啊啊啊,每次向右滑就两指针同时右移就行。 好简单……为什么我做了这…...
【计科】从操作系统到虚拟化技术(进程调度,内存映射,设备IO,文件、网络管理)
【计科】操作系统基础与虚拟化技术拓展的关系(进程调度,内存映射,设备IO,文件、网络管理) 文章目录 1、进程管理与调度机制(计算)2、内存管理与双重映射3、设备管理与IO机制4、文件管理5、网络与…...
ECharts各类炫酷图表/3D柱形图
一、前言 最近鸡米花实现了各类的炫酷的图表,有3D柱形图、双边柱形图以及异形柱形图,好了,直接上图: 二、效果图 一个个来吧,下面就是代码啦,注意,一下图表展示的宽高均为800px*300px 三、异形横…...
系统与网络安全------网络应用基础(6)
资料整理于网络资料、书本资料、AI,仅供个人学习参考。 Win10系统安装 安装Win10系统 安装准备 Windows10系统的安装光盘 虚拟机可采用ISO文件,windows_10_professional_x64_2024.iso Windows10系统的硬件要求 CPU处理器:1.0Ghz或更快 …...
