当前位置: 首页 > news >正文

LVS三种模式工作原理

常用负载均衡设备

实现负载均衡的技术的方式有哪些:硬件层面有F5负载均衡器,网络层层面有LVS(Linux Virtual Server),应用层层面就是nginx、Haproxy等。 lvs工作在网络层,nginx工作在应用层。

LVS有三种工作模式

lvs是由章文崇博士发明的,一开始只发明了NAT模式,但是这种模式下数据包的进出都要经过lvs调度器,当后端的web服务器超过20台的时候会导致lvs调度器容易出现瓶颈,为了解决lvs调度器的瓶颈问题,又发明了tunnel模式,tunnel模式中调度器和web服务器不再同一局域网,web服务器可以直接向客户端回复数据包,不再经过调度器,但是这种模式会进行多次封装和解封装的过程,会消耗lvs的性能和有网络延迟,随后又出现了DR模式才大大提高了lvs的性能。

名词解释:
CIP:客户机的ip地址
VIP:调度器(LVS)的虚拟ip地址
DIP:调度器(LVS)的真实ip地址
RIP:真实服务器(WEB_SERVER)的ip地址
RS : Realserver简称RS,真实服务器(WEB_SERVER),通常指后端地址池中的web服务器
LB: lvs调度服务器 Load Balacer

1、NAT模式原理
客户端将封装好的报文发送给lvs调度服务器,lvs调度服务器解封装报文后发现源ip是客户端ip,目标ip是VIP,于是lvs调度器根据算法从后端选择一台web服务器,并通过NAT转换将目标ip改为后端web服务器的ip,然后将报文发送给后端的web服务器,后端web服务器把处理完的报文发送给lvs调度服务器,然后lvs调度服务器再通过NAT转换将报文中的源ip改成VIP,目标ip改成客户端ip,并将报文封装好发送给客户端。
优点:后端RS可以只设置一个私有的ip地址应为调度器是通过NAT的方式把RS的流量转发出去的,这样做就不会把后端RS暴露出去,只需要一个公网ip就行。
缺点:后端RS扩展性有限,应为进出流量都要经过lvs调度器,就会导致lvs成为瓶颈导致用户访问变慢。
适用场景:公网ip比较少并且后端服务器需要隐藏起来的公司。
2、tunnel模式原理
客户端将封装好的报文发送给lvs调度服务器,lvs调度服务器解封装报文后发现源ip是客户端ip,目标ip是VIP,于是lvs调度器根据算法从后端选择了一台web服务器,并将报文重新封装到ip隧道里面,然后发送给后端的web服务器,(调度器和web服务器不在同一局域网所以要重新封装),web服务器收到报文后解封装,并且处理完数据后会将报文中的源ip改成VIP目标ip改成客户端ip,重新封装后再发给客户端。
优点:返回时不需要通过调度器,直接将请求发给客户端,这样就会减少调度器的压力,能代理更多的后端服务器。而且调度器和真实服务器之间不需要在同一网段,即使后端服务器是公网上的某台服务器也可以为它代理。
缺点:如果端服务器是一台云服务器的话,这台服务器需要有一个合法ip并且该服务器需要支持”IP Tunneling”(IP Encapsulation)协议,而有的linux系统是不支持ip  tunneling协议的。
适用场景:当公司有需求比如后端服务器不能在同一网段的情况下。
3、DR模式原理
客户端将封装好的报文发送给lvs调度服务器,lvs调度服务器解封装报文后发现源ip是客户端ip,目标ip是VIP,于是lvs调度器根据算法从后端选择了一台web服务器,并将报文中的目标MAC地址修改为web服务器的MAC地址,然后将报文直接发送给web服务器 (调度器和web服务器处于同一局域网所以不需要重新封装报文),web服务器处理完请求数据后,再将报文中的源ip改成VIP,目标ip改成客户端IP,最后重新封装报文不经过lvs直接发送给客户端。
优点:效率高、返回时无需通过lvs,直接将请求发给客户端,而且后端RS也是只设置一个内网ip就行,可以被很好的保护起来。
缺点:真实服务器和调度器必须在同一物理网段(不能跨vlan通信)
4、lvs的调度算法
常用的调度算法:
(1)轮询算法(RR):当后端服务器性能一样的情况下,采用轮询算法,每次调度器采用平均分配的形式将请求发送给后端服务器。
(2)加权轮询算法(WRR):当后端服务器A的性能不如B的时候,将给A分配权重为1,B的权重为2,每次调度器将请求分配给后端的时候,B收到的请求就是A的两倍。
(3)最小连接算法(LC):这种算法能动态地计算后端服务器的负载情况并把最新请求发送到当前链接数最小的RealServer上,能够动态地调整服务器的负载能力。
(4)hash算法(SH):类似nginx的ip_hash算法,会把来自同一个客户端的请求发送给相同的RealServer。

相关文章:

LVS三种模式工作原理

常用负载均衡设备 实现负载均衡的技术的方式有哪些:硬件层面有F5负载均衡器,网络层层面有LVS(Linux Virtual Server),应用层层面就是nginx、Haproxy等。 lvs工作在网络层,nginx工作在应用层。 LVS有三种工作模式 lvs是由章文崇…...

【二轮征稿启动】第三届环境工程与可持续能源国际会议持续收录优质稿件

第三届环境工程与与可持续能源国际会议(EESE 2024)由中南林业科技大学主办,湖南农业大学协办,将于2024年12月20日-22日在湖南长沙召开。 大会邀请到国家杰出青年科学基金获得者、华中科技大学能源与动力工程学院冯光教授&#xf…...

网络安全——防火墙技术

目录 前言基本概念常见防火墙技术防火墙的主要功能防火墙的不足之处相关题目1.组织外部未授权用户访问内部网络2.DMZ区3.包过滤防火墙和代理服务防火墙 前言 这是在软件设计师备考时编写的资料文章,相关内容偏向软件设计师 基本概念 防火墙技术是网络安全领域中的…...

Missing classes detected while running R8报错解决方案

Android 打包release版本时报错如下: > Task :printlib:minifyReleaseWithR8 FAILED AGPBI: {"kind":"error","text":"Missing classes detected while running R8. Please add the missing classes or apply additional ke…...

智能指针

目录 1. 为什么需要智能指针? 2. 内存泄漏 2.1 什么是内存泄漏,内存泄漏的危害 2.2 内存泄漏分类(了解) 堆内存泄漏(Heap leak) 系统资源泄漏 2.3 如何检测内存泄漏(了解) 2.4如何避免内存泄漏 3.…...

通过DevTools逃离Chrome沙盒(CVE-2024-6778和CVE-2024-5836)

介绍 这篇博文详细介绍了如何发现CVE-2024-6778和CVE-2024-5836的,这是Chromium web浏览器中的漏洞,允许从浏览器扩展(带有一点点用户交互)中进行沙盒逃逸。 简而言之,这些漏洞允许恶意的Chrome扩展在你的电脑上运行…...

手持无人机飞手执照,会组装调试入伍当兵有多香!

手持无人机飞手执照,并具备组装调试技能,在入伍当兵时确实会具有显著的优势和吸引力。以下是对这一情况的详细分析: 一、无人机飞手执照的优势 1. 法规遵从与安全保障: 根据《民用无人驾驶航空器系统驾驶员管理暂行规定》等相关…...

项目经理好累好烦啊,不想干了....

打住! 先问问自己,在所有的项目管理过程中,有没有体验到任和何乐趣。如果没有,请不要再继续内耗。 如果有,慎重考虑,然后适当解压,每个岗位都会不同的烦心事,每个企业都不完美&…...

论技术人员“技术人格”的重要意义

此论题从表面上看,是社会科学的,或者心理学的。然其对于信息技术这种科学的工作,又显得非常的重要。作为信息技术的从业者,或者说科学的从业者,具备良好的“技术人格”,对确保工作的质量,与正确…...

Kafka异常重试方案小记

背景 在最近进行的项目架构升级中,我们对原有的核心项目结构进行了细致的拆分。 现在,核心项目与非核心项目之间的通信和数据交换主要通过Kafka这一中间件来实现。 这种设计主要体现在核心项目向非核心项目发送通知,这些通知大致可以分为三个…...

非页面缓冲池占用过高处理方法

1.现象 电脑变莫名其妙得特别卡,明明16G的内存,理论上日常使用,打游戏之类的使用起来完全不会有什么大问题,但是实际使用却是卡的要死。 下面开始查找原因。 2.查找原因 使用win自带的任务管理器,可以看到日常内存…...

【Linux】进程信号(下)

目录 一、信号的阻塞 1.1 信号在内核中的保存方式 1.2 sigset_t信号集 (1)信号集操作 (2)sigprocmask函数 (3)sigpending函数 二、信号的处理 2.1 用户态和内核态 2.2 重谈进程地址空间 三、信号…...

FlinkCDC 实现 MySQL 数据变更实时同步

文章目录 1、基本介绍2、代码实战2.1、数据源准备2.2、代码实战2.3、数据格式 1、基本介绍 Flink CDC 是 Apache Flink 提供的一个功能强大的组件,用于实时捕获和处理数据库中的数据变更。可以实时地从各种数据库(如MySQL、PostgreSQL、Oracle、MongoDB…...

JavaWeb——Maven(4/8):Maven坐标,idea集成-导入maven项目(两种方式)

目录 Maven坐标 导入Maven项目 第一种方式 第二种方式 Maven坐标 Maven 坐标 是 Maven 当中资源的唯一标识。通过这个坐标,我们就能够唯一定位资源的位置。 Maven 坐标主要用在两个地方。第一个地方:我们可以使用坐标来定义项目。第二个地方&#…...

实现uniapp天地图边界范围覆盖

在uniapp中,难免会遇到使用地图展示的功能,但是百度谷歌这些收费的显然对于大部分开源节流的开发者是不愿意接受的,所以天地图则是最佳选择。 此篇文章,详细的实现地图展示功能,并且可以自定义容器宽高,还可…...

思科网络设备命令

一、交换机巡检命令 接口和流量状态 show interface stats:查看所有接口当前流量。show interface summary:查看所有接口当前状态和流量。show interface status:查看接口状态及可能的错误。show interface | include errors | FastEthernet …...

Egg.js使用ejs快速自动生成resetful风格的CRUD接口

目前的插件能够自动生成egg的crud的都不太好用 我们自己写一个吧 ejs模块 也方便定制 安装依赖 npm install ejs --save ejs 是一个简单易用的模板引擎,常用于 Node.js 应用程序中 在项目根目录下创建 template/controller.ejs 模板文件 use strict;const Co…...

自动化抖音点赞取消脚本批量处理

🌟 前言 欢迎来到我的技术小宇宙!🌌 这里不仅是我记录技术点滴的后花园,也是我分享学习心得和项目经验的乐园。📚 无论你是技术小白还是资深大牛,这里总有一些内容能触动你的好奇心。🔍 &#x…...

基于YOLOv8深度学习的智能车牌检测与识别系统【python源码+Pyqt5界面+数据集+训练代码】目标检测、深度学习实战

背景及意义 智能车牌检测与识别系统通过使用最新的YOLOv8与PaddleOCR算法能够迅速、准确地在多种环境下实现实时车牌的检测和识别。本文基于YOLOv8深度学习框架,通过16770张图片,训练了一个进行车牌检测模型,可以检测蓝牌与绿牌,然后对检测到的车牌使用O…...

qt QGraphicsGridLayout详解

一、概述 QGraphicsGridLayout是Qt框架中用于在QGraphicsScene中布置图形项的一个布局管理器。它类似于QWidget中的QGridLayout,但主要处理的是QGraphicsItem和QGraphicsWidget等图形项。通过合理设置网格位置、伸缩因子和尺寸,可以实现复杂而灵活的布局…...

数字处理系列

&#xff08;1&#xff09;将数字转化成中文的过滤器 <template><div><p>数字转中文&#xff1a;{{ 110 | numberToChinese }}</p></div></template><script>export default {filters: {numberToChinese(num) {const chineseNums …...

基于开源Jetlinks物联网平台协议包-MQTT自定义主题数据的编解码

目录 前言 1.下载官方协议包 2.解压 3.自定义主题 4.重写解码方法 5.以下是我解析后接收到的数据 前言 最近这段时间&#xff0c;一直在用开源的Jetlinks物联网平台在学习&#xff0c;偶尔有一次机会接触到物联网设备对接&#xff0c;在协议对接的时候&#xff0c;遇到了…...

【Python】Python2.7升级Python3

需求背景 服务是跑在docker的容器里的&#xff0c;因此要新建image依赖环境是Ubuntu&#xff0c;老的是16.4。 步骤 先准备环境&#xff0c;因为只有你的环境上去了&#xff0c;运行代码的时候才会报错&#xff0c;这样才会把需要改的代码暴露出来。 python3.5目前也是被遗弃的…...

Python 内置函数 round() 详解

在 Python 编程中&#xff0c;round() 函数是一个非常实用的内置函数&#xff0c;用于对数字进行四舍五入。无论是在数据处理、财务计算还是科学计算中&#xff0c;round() 函数都能帮助我们得到所需的精确值。本文将详细介绍 round() 函数的用法和注意事项。 1. round() 函数…...

JavaScript入门中-流程控制语句

本文转载自&#xff1a;https://fangcaicoding.cn/article/52 大家好&#xff01;我是方才&#xff0c;目前是8人后端研发团队的负责人&#xff0c;拥有6年后端经验&3年团队管理经验&#xff0c;截止目前面试过近200位候选人&#xff0c;主导过单表上10亿、累计上100亿数据…...

kconfig语法(一)

一、安装Kconfiglib python -m pip install windows-curses python -m pip install kconfiglib二、使用样例 ①创建kconfig文件。 ②在kconfig文件添加内容: config KCONFIG_DEMO_ITEM1boolprompt "demonstate item1 for bool learning"config KCONFIG_DEMO_ITE…...

十七、行为型(命令模式)

命令模式&#xff08;Command Pattern&#xff09; 概念 命令模式是一种行为型设计模式&#xff0c;它将请求封装成一个对象&#xff0c;从而使您可以使用不同的请求对客户进行参数化&#xff0c;排队请求&#xff0c;以及支持可撤销操作。通过这种模式&#xff0c;调用操作的…...

原材料供应商的GRS认证证书过期了怎么办?

在全球纺织和时尚产业中&#xff0c;GRS&#xff08;Global Recycle Standard&#xff0c;全球再生标准&#xff09;认证已成为衡量企业环保和可持续发展的重要指标。然而&#xff0c;当原材料供应商的GRS认证证书过期时&#xff0c;企业需迅速采取行动&#xff0c;以确保供应链…...

C++编程:实现一个基于原始指针的环形缓冲区(RingBuffer)缓存串口数据

文章目录 0. 引言1. 使用示例2. 流程图2.1 追加数据流程2.2 获取空闲块流程2.3 处理特殊字符流程2.4 释放块流程2.5 获取下一个使用块流程 3. 代码详解3.1 Block 结构体3.2 RingBuffer 类3.3 主要方法解析append 方法currentUsed 和 currentUsing 方法release 方法nextUsed 方法…...

LangChain 创始人万字科普:手把手教你设计 Agent 用户交互

LangChain 可以算是 LLM 时代做 AI 应用开发必备的框架和平台&#xff0c;从模型选择、数据库链接与各种 Agent 搭建等&#xff0c;AI 应用的搭建、运行和管理都可以在 LangChain 上进行。 某种意义上&#xff0c;LangChain 可能是最了解 Agent&#xff08;智能体&#xff09;…...

凡科建站真的免费吗/百度网站链接

小编改写了一个扫码二维码功能&#xff0c;这个虽然网络上的案例有很多&#xff0c;基本上都是扫一下后就弹出提示框&#xff0c;提示框里就是二维码的链接&#xff0c;小编改成扫描二维码后对应相对的网站&#xff0c;包含了内部浏览器&#xff0c;为什么要弄个内部浏览器呢&a…...

网络招商平台网站怎么做/seo排名如何

MySQL DBA全程实战课程 姜承尧老师MySQL数据库44天实战视频教程 MySQL DBA视频课程课程目录(0);目录中文件数:0个(1)姜承尧MYSQL(44天);目录中文件数:0个(2)文档及sql文件;目录中文件数:27个(1) 07.btree.pdf(2) 1.MySQL_Architecture.pdf(3) 1.MySQL数据类型.pdf(4) 1.磁盘 (1…...

网站后期维护费用/冯耀宗seo视频教程

mongodb 远程效率由于COVID-19的结果&#xff0c;越来越多的人在家工作&#xff0c;习惯现场工作生活的员工将需要适应远程工作的生活方式。 乍一看&#xff0c;这似乎是一个可喜的变化&#xff0c;但过了一会儿&#xff0c;它会感到很奇怪。 一旦工作场所中其他人的日常亲近关…...

网站限制浏览次数是怎么做的/免费推广网站大全集合

如下就是著名额傅里叶变换公式&#xff0c;也是最伟大的数学公式之一我们输入一个有关时间t的函数&#xff0c;就会得到一个有关ω的输出函数&#xff0c;这个公式会告诉我们信号中存在哪些正弦波。为什么这么说呢&#xff1f;如果我们输入一个纯余弦函数或纯正弦波函数&#x…...

邢台做网站推广的公司是哪家?/关键词查询工具包括哪些

1 前话 没难度&#xff0c;但有坑&#xff0c;以此记录。 2 工具 宝塔&#xff08;神器不解释&#xff09;centos7.8 3 步骤 3.1 安装redis 堡塔直接搜redis&#xff0c;安装最新版就可以了。我这里用的是6.2的版本。其实按理说不需要再独立装那些c之类的环境&#xff0c;堡…...

wordpress文章网址采集器/百度高级搜索引擎入口

基本情况 先说一下个人基本情况&#xff0c;计算机科学与技术专业。主要学的Android开发&#xff0c;所以投的岗位都是Android开发工程师。投了知乎&#xff0c;内推了阿里蘑菇街腾讯百度网易。腾讯百度都没有收到面试&#xff0c;知乎Skype面试&#xff0c;蘑菇街阿里电话面试…...