LVS负载均衡(LVS简介、三种工作模式、十种调度算法)

news2024/9/23 17:22:07

LVS简介

LVS(Linux Virtual Server)是一种基于Linux内核的高可用性负载均衡软件。它通过将客户端请求分发到多个后端真实服务器,提高系统性能和可靠性。LVS支持多种调度算法,如轮询、最少连接、源地址哈希等,用于决定请求的转发方式。它还提供了高可用性的机制,包括热备份和故障自动切换。LVS具有灵活的配置和扩展性,适用于各种网络环境和应用场景。通过实现负载均衡,LVS能够提供稳定、高效的服务,满足大规模系统的需求。

三种工作模式

1.LVS-NAT模式

NAT(Network Address Translation)是一种外网和内网地址映射的技术。NAT模式下,LVS需要作为RS的网关,当网络包到达LVS时,LVS做目标地址转换(DNAT),将目标IP改为RS的IP。RS接收到包以后,处理完,返回响应时,源IP是RS IP,目标IP是客户端的IP,这时RS的包通过网关(LVS)中转,LVS会做源地址转换(SNAT),将包的源地址改为VIP,对于客户端只知道是LVS直接返回给它的。

2.LVS-DR 模式

LVS-DR(Direct Routing)模式是LVS负载均衡的一种实现方式,通过在前端负载均衡器和后端真实服务器之间建立虚拟IP地址和ARP代理,将请求直接路由到后端服务器上,避免了数据包的二次复制和转发,提高了系统的性能和可靠性。这种模式需要在后端服务器上配置虚拟IP地址和直接路由规则,并保证后端服务器之间的网络互通。

3.LVS-TUN模式 

LVS-TUN(Tunneling)模式是LVS负载均衡的一种实现方式,通过在前端负载均衡器和后端真实服务器之间建立隧道连接,将客户端请求封装在隧道中传输到后端服务器上进行处理。这种模式需要在前端负载均衡器和后端服务器上配置隧道设备,并使用隧道协议进行数据传输。LVS-TUN模式适用于跨子网或跨网络的场景,可以实现灵活的负载均衡和高可用性,但会引入额外的网络开销和延迟。

三种工作模式优缺点

以下是LVS三种工作模式(LVS-NAT、LVS-DR、LVS-TUN)的优缺点对比表格:

模式                                    优点                                        缺点
LVS-NAT- 简单易配置,不需要对后端服务器进行额外配置- 性能较低,数据包需要经过两次NAT转发
- 支持跨子网负载均衡- 后端服务器的响应数据包需要经过前端负载均衡器再返回给客户端
- 可以隐藏后端服务器的真实IP地址- 单个NAT节点成为性能瓶颈
LVS-DR- 性能高,请求直接路由到后端服务器,避免了数据包的二次复制- 需要在后端服务器上配置虚拟IP地址和直接路由规则
- 后端服务器可以直接与客户端通信,提高响应速度- 后端服务器之间需要保证网络互通
- 可以支持大规模部署和高并发流量- 不支持跨子网负载均衡
LVS-TUN- 支持跨子网和跨网络负载均衡- 引入额外的网络开销和延迟
- 灵活配置,适用于复杂网络环境- 需要在前端负载均衡器和后端服务器上配置隧道设备及协议
- 可以实现灵活的负载均衡和高可用性- 隧道连接的建立和维护需要额外的管理和资源消耗

需要注意的是,选择合适的工作模式取决于具体的应用场景和需求,每种模式都有其适用的情况和限制。

十种调度算法

1.轮询调度

按照顺序依次分配任务,每个处理器或资源依次处理一个任务,然后再循环到下一个任务。

2.加权轮询调度

在轮询调度的基础上,为不同的处理器或资源设置不同的权重,以实现更精细的负载均衡。

3.最小连接调度

将任务分配给当前连接数最少的处理器或资源,以保证负载均衡。

4.加权最小连接调度

在最小连接调度的基础上,为不同的处理器或资源设置不同的权重,以实现更精细的负载均衡。

5.基于局部的最少连接调度

根据客户端IP地址和服务器IP地址的局部性原则,将任务分配给距离客户端最近、连接数最少的处理器或资源。

6.带复制的基于局部性的最少连接调度

在基于局部的最少连接调度的基础上,将任务复制到多个处理器或资源上,以提高可用性和容错性。

7.目标地址散列调度

根据客户端IP地址或请求的目标地址,将任务分配给特定的处理器或资源,以实现精细的负载均衡。

8.源地址散列调度

根据客户端IP地址或请求的源地址,将任务分配给特定的处理器或资源,以实现精细的负载均衡。

9.最短的期望延迟

是一种基于网络拓扑结构的调度算法。它通过计算每个服务器到客户端的期望延迟,并将请求分配给具有最短期望延迟的服务器来实现负载均衡。

10.最少队列调度

最少队列调度算法根据服务器的队列长度来进行任务分配。它将任务分配给当前队列长度最短的服务器,以实现负载均衡。这个算法的思想是假设队列长度越短,服务器的处理能力越强,因此将任务分配给队列长度最短的服务器可以更好地利用服务器资源。

十种调度算法的优缺点

下面是一个表格,用于表示LVS中常见的调度算法及其优缺点:

                  调度算法                             优点                            缺点
轮询调度 (Round Robin)- 简单、公平<br>- 易于实现- 不能根据服务器负载动态调整<br>- 可能导致某些服务器负载过高,而其他服务器负载较低
加权轮询调度 (Weighted Round Robin)- 可以为不同服务器设置不同权重,实现更精细的负载均衡<br>- 相对于轮询调度,更适合处理性能差异较大的服务器- 仍然无法根据服务器负载动态调整
最小连接调度 (Least Connection)- 根据服务器当前连接数分配请求,实现负载均衡<br>- 能够自动适应服务器的负载情况- 需要实时监测服务器连接数,增加了一定的开销<br>- 可能会因为服务器处理速度不同而导致负载不均衡
加权最小连接调度 (Weighted Least Connection)- 可以为不同服务器设置不同权重,实现更精细的负载均衡<br>- 能够自动适应服务器的负载情况- 需要实时监测服务器连接数,增加了一定的开销<br>- 仍然可能因为服务器处理速度不同而导致负载不均衡
基于局部的最少连接调度 (Locality-Based Least Connection)- 考虑到客户端和服务器之间的网络距离,减少网络延迟和丢包率<br>- 能够自动适应服务器的负载情况- 需要使用专门的网络测量工具和算法来计算网络距离,增加了一定的开销<br>- 仍然可能因为服务器处理速度不同而导致负载不均衡
带复制的基于局部性的最少连接调度 (Locality-Based Least Connection with Replication)- 考虑到客户端和服务器之间的网络距离,减少网络延迟和丢包率<br>- 能够自动适应服务器的负载情况<br>- 通过复制服务器,提高了可用性和容错性- 需要使用专门的网络测量工具和算法来计算网络距离,增加了一定的开销<br>- 需要维护复制服务器的同步和一致性
目标地址散列调度 (Destination IP Hash)- 根据请求的目标地址进行散列,将请求分配给对应的服务器,实现负载均衡<br>- 可以保证相同目标地址的请求始终分配到同一台服务器- 如果目标地址变化频繁,可能导致负载不均衡
源地址散列调度 (Source IP Hash)- 根据请求的源地址进行散列,将请求分配给对应的服务器,实现负载均衡<br>- 可以保证相同源地址的请求始终分配到同一台服务器- 如果源地址变化频繁,可能导致负载不均衡
最短的期望延迟调度 (Shortest Expected Delay Scheduling)- 考虑服务器之间的网络距离,减少网络延迟和丢包率<br>- 提高用户体验- 需要使用专门的网络测量工具和算法来计算期望延迟,增加了一定的开销
最少队列调度 (Least Queue Length Scheduling)- 将任务分配给队列长度最短的服务器,实现负载均衡<br>- 简单、易于实现- 不能考虑服务器的实际处理能力<br>- 可能存在某些服务器的负载过高问题

需要根据具体的应用场景和需求选择合适的调度算法,以实现高效、稳定、可靠的负载

参考文章

图片原址:

http://www.linuxvirtualserver.org/architecture.html

https://www.cnblogs.com/arjenlee/p/9262737.html#auto_id_13

参考文章:

https://www.cnblogs.com/arjenlee/p/9262737.html#auto_id_13

https://blog.csdn.net/weixin_40470303/article/details/80541639

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1134548.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

番外8.2---配置/管理硬盘

""" Step1&#xff1a;清楚磁盘、硬盘&#xff08;HDD&#xff09;、光驱的概念及是否具有包含关系。 Step2&#xff1a;硬件设备&#xff08;IDE、SCSI、SATA、NVMe、软驱等&#xff09;命名方式及在linux系统里对应的文件名称。 Step3&#xff1a;&#xff1…

保存 uboot图像配置

一. 简介 本文学习如何保存经过图像配置&#xff0c;与加载 自己的配置文件。 之前几篇文章学习了&#xff1a;uboot 经过图形化配置 dns 命令功能。地址如下&#xff1a; uboot通过图像化界面配置 dns命令-CSDN博客 uboot通过图像化界面配置 dns命令验证-CSDN博客 二. 保…

微信管理系统的便捷功能:自动回复

宝子们 你有遇到以下头疼的问题吗&#xff1f; 1、每日手动一遍又一遍点“添加”来通过大量好友? 2、每日总要花至少半个或1个小时来回复刚通过的好友? 3、经常切换聊天窗口复制粘贴同样的内容回复客户&#xff1f; 4、一键转发操作多了被系统提示过于频繁&#xff1f; 5、…

虹科 | 解决方案 | 汽车示波器 学校教学方案

虹科Pico汽车示波器是基于PC的设备&#xff0c;特别适用于大课堂的教学、备课以及与师生的互动交流。老师展现讲解波形数据&#xff0c;让学生直观形象地理解汽车的工作原理 高效备课 课前实测&#xff0c;采集波形数据&#xff0c;轻松截图与标注&#xff0c;制作优美的课件&…

Ubuntu22.04 交叉编译阿里oss c-sdk

一、交叉编译openssl Ubuntu20.04 交叉编译openssl 1.0.1f_编译前去除 makefile 中所有的"-m64"字段_qq76211822的博客-CSDN博客文章浏览阅读319次。Ubuntu20.04 交叉编译openssl_编译前去除 makefile 中所有的"-m64"字段https://blog.csdn.net/sz7621182…

windows下使用FFmpeg开源库进行视频编解码完整步聚

最终解码效果: 1.UI设计 2.在控件属性窗口中输入默认值 3.复制已编译FFmpeg库到工程同级目录下 4.在工程引用FFmpeg库及头文件 5.链接指定FFmpeg库 6.使用FFmpeg库 引用头文件 extern "C" { #include "libswscale/swscale.h" #include "libavdevic…

Spring关于注解的使用

目录 一、使用注解开发的前提 1.1 配置注解扫描路径 二、使用注解创建对象 2.1 Controller&#xff08;控制器储存&#xff09; 2.2 Service&#xff08;服务储存&#xff09; 2.3 Repository&#xff08;仓库储存&#xff09; 2.4 Component&#xff08;组件储存&#xff09; …

自研框架跻身全球 JS 框架榜单,排名紧随 React、Angular 之后!

前言 终于实现了一个重要目标&#xff01;我独立研发的 JavaScript 框架 Strve&#xff0c;最近发布了重大版本 6.0.2。距离上次大版本发布已经接近两个月&#xff0c;期间进行了大量的优化&#xff0c;使得框架性能和稳定性都得到了大幅度的提升。在上次的大版本更新中&#…

DevOps持续集成-Jenkins(2)

文章目录 DevOpsDevOps概述Integrate工具&#xff08;centos7-jenkins主机&#xff09;Integrate概述Jenkins介绍CI/CD介绍Linux下安装最新版本的Jenkins⭐Jenkins入门配置安装必备插件⭐安装插件&#xff08;方式一&#xff1a;可能有时会下载失败&#xff09;安装插件&#x…

负载均衡--Haproxy

haproxy 他也是常用的负载均衡软件 nginx 支持四层转发&#xff0c;七层转发 haproxy也可以四层和七层转发 haproxy&#xff1a;法国人开发的威利塔罗在2000年基于C语言开发的一个开源软件 可以支持一万以上的并发请求 高性能的tcp和http负载均衡2.4 1.5.9 haproxy&#…

微服务-Eureka

文章目录 提供者与消费者Eureka注册中心搭建EurekaServer服务注册服务发现项目结构 提供者与消费者 Eureka注册中心 服务消费者该如何获取服务提供者的地址信息&#xff1f; 服务提供者启动时向eureka注册自己的信息 eureka保存这些信息 消费者根据服务名称向eureka拉取提供者信…

10.Z-Stack协议栈移植

一、下载Z-Stack协议栈源文件 安装过程全部默认下一步即可&#xff0c;安装完成后会在C盘根目录下生成一个【Texas Instruments】文件夹 二、删除一些不必要的文件 将【ZStack-CC2530-2.3.0-1.4.0】文件夹&#xff0c;复制到自己放置ZigBee工程的文件夹下进入到【ZStack-CC253…

vue + html + Lodop打印功能

1.官网下载 http://www.lodop.net/download.html 2.解压安装运行 点击CLodop_Setup_for_Win32NT.exe进行安装 3.vue代码实现&#xff08;具体操作见官网&#xff1a;http://www.lodop.net/faq/pp35.html&#xff09; 3.1把官方提供的LodopFuncs.js文件保存到项目某个目录下 …

C# 使用base64编码用于加密和解密

base64编码原理&#xff1a;Base64编码是一种将二进制数据转换为ASCII字符的编码方式。它使用64个字符来表示二进制数据&#xff0c;包括大小写字母、数字和两个符号。将3个字节的二进制数据转换为4个字符的文本数据&#xff0c;如果不足3个字节&#xff0c;则在末尾补0&#x…

el-tree横向纵向滚动条

el-tree未展开时样式 el-tree展开时样式 给容器一个高度&#xff0c;然后样式加上overflow: scroll&#xff0c;这样纵向滚动条就出来了。 <el-card style"height: 528px;overflow: scroll"><el-inputplaceholder"输入关键字进行过滤"v-model&…

是顺流还是逆流?未来物流作业是否将被机器人全面取代?

原创 | 文 BFT机器人 随着人工智能的加速发展&#xff0c;各行业为适应数字时代的潮流&#xff0c;纷纷引入智能制造&#xff0c;帮助企业实现产业升级。而物流行业也不例外&#xff0c;现今人们的生活速度加快&#xff0c;为了快捷便利&#xff0c;很多的人喜欢通过网购、快递…

【Linux】Ubuntu升级nodejs版本

在下载nvm对nodejs版本进行管理时&#xff0c;由于网络因素一直下载失败&#xff0c;于是采用了新的方法对nodejs版本进行升级。 首先我们先查询一下现存的nodejs版本号&#xff0c;发现是12 我们下载一个名为n的软件包&#xff0c;n 是一个非常方便的 Node.js 版本管理工具&am…

【C++】Map和Set -- 详解

一、关联式容器 在初阶阶段&#xff0c;我们已经接触过 STL 中的部分容器&#xff0c;比如&#xff1a;vector、list、deque、forward_list&#xff08;C11&#xff09;等&#xff0c;这些容器统称为 序列式容器 &#xff0c;因为其底层为线性序列的数据结构&#xff0c;里面存…

CCF中国开源大会,中电金信与行业共探AI技术在金融行业的应用和前景

10月21日&#xff0c;以“开源联合&#xff0c;聚力共赢”为主题的2023 CCF中国开源大会在长沙开幕。中电金信副总经理、研究院院长况文川参加峰会&#xff0c;在“算力与大模型”主题论坛上发表演讲&#xff0c;与行业共同交流AI、大模型等技术在金融行业的应用与前景。 况文川…

bp前端验证码绕过及token绕过

前端验证码绕过及token绕过 原文参考&#xff1a;xiu 文章目录 前端验证码绕过及token绕过原文参考&#xff1a;[xiu](http://www.xiusafe.com/2023/10/25/%E9%AA%8C%E8%AF%81%E7%A0%81%E7%BB%95%E8%BF%87/)1 验证码爆破1. 登录Pikachu&#xff0c;先获取登录的api接口2 验证码…