Linux四种LVS工作模型,十种调度算法

2024-02-17 18:20

本文主要是介绍Linux四种LVS工作模型,十种调度算法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、lVS基本介绍

LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器。也是国人章文嵩博士发起的一个开源项目,现在LVS已经是Linux内核标准的一部分。

该项目在Linux内核中实现了基于IP的数据请求负载均衡调度方案,其体系结构如图1所示,终端互联网用户从外部访问公司的外部负载均衡服务器,终端用户的Web请求会发送给LVS调度器,调度器根据自己预设的算法决定将该请求发送给后端的某台Web服务器,比如,轮询算法可以将外部的请求平均分发给后端的所有服务器,终端用户访问LVS调度器虽然会被转发到后端真实的服务器,但如果真实服务器连接的是相同的存储,提供的服务也是相同的服务,最终用户不管是访问哪台真实服务器,得到的服务内容都是一样的,整个集群对用户而言都是透明的。最后根据LVS工作模式的不同,真实服务器会选择不同的方式将用户需要的数据发送到终端用户,LVS工作模式分为NAT模式、TUN模式、以及DR模式。

利用LVS技术可以实现高性能,高可压缩的网络服务,例如www服务,FTP服务,MAIL服务等。

二、LVS的体系架构

使用LVS架设的服务器集群系统有三个部分组成:最前端的负载均衡层(Loader Balancer),中间的服务器群组层,用Server Array 表示,最底层的数据共享存储层,用Shared Storage表示。在用户看来所有的应用都是透明的,用户只是在使用一个虚拟服务器提供的高性能服务。

1、LVS的体系架构如图

在这里插入图片描述

2、LVS集群分为三层结构:

Load Balancer层:位于整个集群系统的最前端,有一台或者多台负载调度器(Director Server)组成,LVS模块就安装在Director Server 上,而Director 的主要作用类似于一个路由器,它含有完成LVS功能所设定的路由表,通过这些路由表把用户的请求分发给Server Array层的应用服务器上。同时,在Director Server上还要安装对Real Server服务的监控模块Ldirectord,此模块用于监测各个Real Server服务的健康状况。在Real Server不可用时把它从LVS路由表中剔除,恢复时加入。

Server Array层:服务器池(server pool)是一组真正执行clinet请求的服务器,一般是web服务器;除了web,还有FTP、MAIL、DNS等,每个Real Server之间通过高速的LAN或分布在各地的wan相连接。在实际的应用中,Director Server也可以同时兼任Real Server的角色。

Shared Storage层:共享存储(shared stord)它为server pool提供了一个共享的存储区,很容易让服务器池拥有相同的内容,提供相同的服务。

从整个LVS结构可以看出,Director Server是整个LVS的核心,对于Real Server,可以是所有的系统平台,Linux、windows、Solaris、AIX、BSD系列都能很好的支持。

3、LVS相关术语
DS:Director Server。指的是前端负载均衡器节点
RS:Real Server。后端真实的工作服务器
VIP:向外部直接面向用户请求,作为用户请求的目标的IP地址
DIP:Director Server IP,主要用于和内部主机通讯的IP地址
RIP:Real Server IP,后端服务器的IP地址

CIP:Client IP,访问客户端的IP地址

三、LVS集群

1、十种调度算法

(1)静态

  • rr 轮循调度 (Round-Robin Scheduling)

    均等地对待每一台服务器,不管服务器上的实际连接数和系统负载

  • wrr 加权轮循调度 (Weighted Round-Robin Scheduling)

    调度器可以自动问询真实服务器的负载情况,并动态调整权值

  • sh 源地址散列调度 (Source Hashing Scheduling)

    与目标地址散列调度算法类似,但它是根据源地址散列算法进行静态分配固定的服务器资源。

  • dh 目的地址散列调度 (Destination Hashing Scheduling)

    该算法是根据目标 IP 地址通过散列函数将目标 IP 与服务器建立映射关系,出现服务器不可用或负载过高的情况下,发往该目标 IP 的请求会固定发给该服务器。

(2)动态

  • lc 最小连接调度 (Least-Connection Scheduling)

    动态地将网络请求调度到已建立的连接数最少的服务器上
    如果集群真实的服务器具有相近的系统性能,采用该算法可以较好的实现负载均衡

  • wlc 加权最小连接调度 (Weighted Least-Connection Scheduling)

    调度器可以自动问询真实服务器的负载情况,并动态调整权值
    带权重的谁不干活就给谁分配,机器配置好的权重高

  • sed 最短预期延时调度 (Shortest Expected Delay Scheduling)

    不考虑非活动链接,谁的权重大,优先选择权重大的服务器来接收请求,但权重大的机器会比较忙

  • nq 不排队调度 (Never Queue Scheduling)

    无需队列,如果有realserver的连接数为0就直接分配过去

  • lblc 基于局部性的最少连接调度 (Locality-Based Least Connections Scheduling)

    这个算法是请求数据包的目标 IP 地址的一种调度算法,该算法先根据请求的目标 IP 地址寻找最近的该目标 IP 地址所有使用的服务器,如果这台服务器依然可用,并且有能力处理该请求,调度器会尽量选择相同的服务器,否则会继续选择其它可行的服务器

  • lblcr 带复制的基于局部性的最少连接调度 (Locality-Based Least Connections with Replication Scheduling)

    记录的不是要给目标 IP 与一台服务器之间的连接记录,它会维护一个目标 IP 到一组服务器之间的映射关系,防止单点服务器负载过高。

2、三种IP负载均衡技术

(1)IPVS/NAT

d

IPVS/NAT模式的基本原理

用户请求LVS到达director,director将请求的报文的目的IP改为RIP,同时将报文的目标端口也改为realserver的相应端口,最后将报文发送到realserver上,realserver将数据返回给director,director再把数据发送给用户

IPVS/NAT模式优缺点

优点:

  • 容易配置,容易理解,容易管理的工作模式
  • 节省外网IP资源,LVS-NAT工作方式将系统架构封装在局域网中,只需要LVS有一个外网地址或外网地址映射就可实现访问
  • 系统架构相对封闭,内网环境下防火墙的设置要求不会太高,容易进行物理服务器的运维
  • LVS/NAT工作模式下的RS服务器可以是任何操作系统,只要支持TCP/IP协议即可

缺点:

  • LVS-NAT中,负载均衡调度器作为转发点,当RS服务器数量变多时,调度器将会负载,转发点也是瓶颈点

(2)IPVS/DR

网络结构图

img

IPVS/DR模式的基本原理

LVS节点接收到请求报文后,会改写报文的数据链路层格式。将VIP MAC写成RIP的Mac,但是网络层和传输层报文不会改写,然后重新回发给交换机。这里就涉及一个问题,现在RIP和 IP的对应关系的错误的,这个数据报文到了交换机后,由于这种错位的关系,是不能进行三层交换的,只能进行二层交换(一旦进行IP交换,数据报文的验证就会出错,被丢弃)。所以LVS-DR方式要求Real Server和LVS节点必须在同一个局域网内,或者这样说更确切:LVS节点需要找到一个二层链路,将改写了Mac地址的报文发送给Real Server,而不能进行三层交换的校验。

简单来说就是CIP发送一个PV请求给VIP,VIP收到这个请求后会跟LVS设置的LB算法选择一个LB比较合理的realserver,然后将此请求的package的MAC地址修改为realserver的MAC地址;VIP会把这个包广播到当前这个LAN里面,所以,要提前保证VIP和所有的realserver在同一个网段

IPVS/DR 模式的优缺点

优点

  • 解决了LVS-NAT工作模式中的转发瓶颈问题,能够支撑规模更大的负载均衡场
  • 比较耗费网外IP资源,机房的外网IP资源都是有限的,如果在正式生产环境中确实存在这个问题,可以采用LVS-NAT和LVS-DR混合使用的方式来缓解

缺点

  • 配置工作较LVS-NAT方式稍微麻烦一点,您至少需要了解LVS-DR模式的基本工作方式才能更好的指导自己进行LVS-DR模式的配置和运行过程中问题的解决
  • 由于LVS-DR模式的报文改写规则,导致LVS节点和Real Server节点必须在一个网段,因为二层交换是没法跨子网的。但是这个问题针对大多数系统架构方案来说,实际上并没有本质限制

(3)IPVS/TUN

LVS TUN原理详解图

img

LVS TUN原理:用户请求LVS到达director,director通过IP-TUN加密技术将请求报文的包封装到一个新的IP包里面,目的IP为VIP(不变),然后director将报文发送到realserver,realserver基于IP-TUN解密,然后解析出来包的目的为VIP,检测网卡是否绑定了VIP,绑定了就处理这个包,如果在同一个网段,将请求直接返回给用户,否则通过网关返回给用户;如果没有绑定VIP就直接丢掉这个包。

  • 负载均衡器只负责将请求包分发给物理服务器,而物理服务器将应答包直接发给用户。所以,负载均衡器能处理很巨大的请求量,这种方式,一台负载均衡能为超过100台的物理服务器服务,负载均衡器不再是系统的瓶颈。使用VS-TUN方式,如果你的负载均衡器拥有100M的全双工网卡的话,就能使得整个Virtual Server能达到1G的吞吐量。

缺点

  • 这种方式需要所有的服务器支持”IP Tunneling”(IP Encapsulation)协议;

(4) LVS/FULLNAT模式

img
参考链接

这篇关于Linux四种LVS工作模型,十种调度算法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/718619

相关文章

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

linux-基础知识3

打包和压缩 zip 安装zip软件包 yum -y install zip unzip 压缩打包命令: zip -q -r -d -u 压缩包文件名 目录和文件名列表 -q:不显示命令执行过程-r:递归处理,打包各级子目录和文件-u:把文件增加/替换到压缩包中-d:从压缩包中删除指定的文件 解压:unzip 压缩包名 打包文件 把压缩包从服务器下载到本地 把压缩包上传到服务器(zip

康拓展开(hash算法中会用到)

康拓展开是一个全排列到一个自然数的双射(也就是某个全排列与某个自然数一一对应) 公式: X=a[n]*(n-1)!+a[n-1]*(n-2)!+...+a[i]*(i-1)!+...+a[1]*0! 其中,a[i]为整数,并且0<=a[i]<i,1<=i<=n。(a[i]在不同应用中的含义不同); 典型应用: 计算当前排列在所有由小到大全排列中的顺序,也就是说求当前排列是第

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

Andrej Karpathy最新采访:认知核心模型10亿参数就够了,AI会打破教育不公的僵局

夕小瑶科技说 原创  作者 | 海野 AI圈子的红人,AI大神Andrej Karpathy,曾是OpenAI联合创始人之一,特斯拉AI总监。上一次的动态是官宣创办一家名为 Eureka Labs 的人工智能+教育公司 ,宣布将长期致力于AI原生教育。 近日,Andrej Karpathy接受了No Priors(投资博客)的采访,与硅谷知名投资人 Sara Guo 和 Elad G

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

【数据结构】——原来排序算法搞懂这些就行,轻松拿捏

前言:快速排序的实现最重要的是找基准值,下面让我们来了解如何实现找基准值 基准值的注释:在快排的过程中,每一次我们要取一个元素作为枢纽值,以这个数字来将序列划分为两部分。 在此我们采用三数取中法,也就是取左端、中间、右端三个数,然后进行排序,将中间数作为枢纽值。 快速排序实现主框架: //快速排序 void QuickSort(int* arr, int left, int rig

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor