CN114640682B - 一种基于改进无状态哈希的负载均衡方法和系统 - Google Patents
一种基于改进无状态哈希的负载均衡方法和系统 Download PDFInfo
- Publication number
- CN114640682B CN114640682B CN202210506380.0A CN202210506380A CN114640682B CN 114640682 B CN114640682 B CN 114640682B CN 202210506380 A CN202210506380 A CN 202210506380A CN 114640682 B CN114640682 B CN 114640682B
- Authority
- CN
- China
- Prior art keywords
- server
- data packet
- value
- sequence number
- servers
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
- H04L67/1023—Server selection for load balancing based on a hash applied to IP addresses or costs
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
- H04L45/7453—Address table lookup; Address filtering using hashing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/12—Avoiding congestion; Recovering from congestion
- H04L47/125—Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提出一种基于改进无状态哈希的负载均衡方法和系统,属于数据处理技术领域。所述方法基于交换机内的负载均衡器来实现,所述交换机包括入端口、出端口和一个所述负载均衡器。具体包括:对于经由路由器进入交换机的入端口的数据包,负载均衡器计算其连接标识Conn.ID的哈希值,通过对哈希值进行对哈希表长度M取余来确定数据包的序号值,基于序号值与各个服务器的映射表获取与序号值对应的服务器的IP地址,并经由交换机的出端口将数据包发送至与IP地址对应的服务器,以进行数据包的处理。本发明在有效保证连接服务质量的同时充分利用内存资源,并兼容现有的负载均衡体系。
Description
技术领域
本发明属于数据处理技术领域,尤其涉及一种基于改进无状态哈希的负载均衡方法和系统。
背景技术
近些年来,随着现有网络应用(在线视频、移动支付、购物等)的不断发展,以及新兴应用(虚拟现实/增强现实、自动驾驶、元宇宙等)的不断涌现,数据中心云网络的流量规模爆炸式增长。云网络使用负载均衡机制将大量的服务请求分发到部署了同类服务的服务器集群,以成本较低、部署便捷的横向扩展方式实现服务容量的可扩展性。现有云网络的负载均衡系统是多层的结构,第一层是网关路由器,通过ECMP(Equal-Cost Multi-pathRouting,等价多路径)的简单方式将发往同一目的地的流量进行链路负载均衡,负责快速、大粒度的包分发。第二层是负载均衡,载体是交换机或者x86商用服务器,将访问某一服务的流分发到集群中不同的服务器上,负责连接的分发和服务质量的保障和优化。负载均衡实现了服务的代理,在连接层面与服务器处于同一地位,并且不是负载均衡部署的必要部分,不作为一般负载均衡系统的组成。为了适应流量规模不断增长、网络应用的需求多样化和高质量要求等问题,四层负载均衡机制的可扩展性、资源效率、服务质量等方面成为改进的热点。
现有的服务器负载均衡机制可以分为两类。第一类是无状态的方案,此类机制不会在负载均衡器上存储一些逐流的状态,只是进行简单的选择和分发操作,空间效率和性能比较高。第二类是有状态的方案,该类方案在为连接选择分发结果之后,会将分发结果存储在负载均衡器中,用以之后同一连接的数据包的查表转发,能够保障服务的稳定性。
综上,目前大多数方案都是单一在资源效率或服务质量方面进行优化,没有进行整体考虑进行优化。无状态方案的基本思想是使用无状态的函数,比如哈希、轮询、随机,对分发目标进行选择并转发,此类方法有处理快、空间效率高的优点,但是在动态环境条件下,连接服务质量不稳定。有状态方案的基本思想是存储分发目标选择结果,对非新连接的包进行状态查表转发,此类方法能保证动态环境下的连接服务质量,但是相较空间效率低,大表查询带来可观的处理时延。可见,在目前的机制下,效率和服务质量不能得到统一的优化和实现,难以满足应用复杂化、高需求的未来趋势,提出一种综合考虑空间效率和服务质量的负载均衡机制是亟待解决的问题。
ECMP等价多路径是典型的无状态方案。在存在多条不同链路到达同一目的地址的网络环境中,如果使用传统的路由技术,发往该目的地址的数据包只能利用其中的一条链路,其它链路处于备份状态或无效状态,并且在动态路由环境下相互的切换需要一定时间,而等值多路径路由协议可以在该网络环境下同时使用多条链路,不仅增加了传输带宽,并且可以无时延无丢包地备份失效链路的数据传输。ECMP最大的特点是实现了等值情况下,多路径负载均衡和链路备份的目的,在静态路由和OSPF中基本上都支持ECMP功能。ECMP使用无状态的操作(比如哈希、轮询)将流量分发到不同的链路,分发的映射结果取决于可用的链路数量。在动态环境中,链路数量很可能发生变化,导致ECMP分发流量的映射发生剧烈重分布,很可能导致连接被打破、服务被中断,无状态导致的低鲁棒性不能保障稳定的服务质量。
以Silkroad为代表的的有状态方案会存储流量分发结果的状态信息,对基于TCP连接的流量来说,存储的是TCP五元组和后端服务器IP地址的映射项信息,即连接标识与目的地的映射。对于新连接,有状态方案会使用和无状态类似的负载均衡算法(比如哈希、轮询)进行分发选择,然后会记录此连接的选择结果信息即连接标识和IP地址映射,存储在状态表中,随后此连接的流量会经过状态表的匹配并直接根据选择结果进行转发。相比于无状态方案仅需要少量的与可用路径相关的表项的存储和匹配,有状态方案需要存储与服务的连接数量相关联的表项并进行匹配,在数据中心云网络中动辄上百万的服务连接规模下,有状态方案的空间开销带来巨大的成本。在可编程设备应用加速不断推广的背景下,有状态方案的弊端更加突出。
发明内容
针对上述技术问题,本发明提出一种基于改进无状态哈希的负载均衡方案。
本发明第一方面公开了一种基于改进无状态哈希的负载均衡方法。所述方法基于交换机内的负载均衡器来实现,所述交换机包括入端口、出端口和一个所述负载均衡器,所述方法包括:
所述交换机接收由网关路由器发送的数据包,所述数据包在进入所述交换机的入端口后,所述负载均衡器获取所述数据包的源IP、目的IP、源MAC、目的MAC以及协议类型,并将提取到的上述信息通过拼接组成所述数据包的连接标识Conn.ID;
计算所述连接标识Conn.ID的哈希值,通过对所述哈希值进行对M取余来确定所述数据包的序号值,基于所述序号值与各个服务器的映射表获取与所述序号值对应的服务器的IP地址,并经由所述交换机的出端口将所述数据包发送至与所述IP地址对应的服务器,以进行所述数据包的处理;
其中,所述映射表中包含M个序号值,所述M个序号值中的每一个序号值都唯一地指向N台服务器中的一台服务器的IP值;后续抵达的具有相同连接标识Conn.ID的数据包都将被发送至相同IP值对应的服务器;M和N均为正整数;
其中,在检测到所述N个服务器中的任一服务器出现负载过量时,确定要修改的映射关系,修改映射关系指:将所述要修改的映射关系中的目的序号值从其指向的当前服务器的IP值修改为目的服务器的IP值,使得后续抵达的序号值为所述目的序号值的数据包被发送至所述目的服务器。
根据本发明第一方面的方法,所述映射表中包含M个序号值为0,1,2,...M-2,M-1;基于所述M个序号值与所述N个服务器的映射表获取与所述数据包的序号值对应的服务器的IP地址之后,将所述数据包的目的IP修改为所述对应的服务器的IP地址,经由所述交换机的出端口将所述数据包发送至与经修改的所述IP地址对应的服务器;当所述网关路由器将多个数据包发送至多个所述交换机时,所述多个交换机中的多个所述负载均衡器使用相同的哈希函数,且各自保持独立的映射表。
根据本发明第一方面的方法,在检测到所述N个服务器中的任一服务器出现负载过量时,确定所述要修改的映射关系,具体包括:
当检测到所述N个服务器中的任一服务器的负载值超过其负载阈值时,判定所述任一服务器负载过量,并从所述映射表上提取映射到所述任一服务器的K个序号值,从中确定所述要修改的映射关系中的L个目的序号值;K为正整数且K<M,L为正整数且L≤K;
获取所述N个服务器中除所述任一服务器之外的N-1个服务器的负载值,基于所述负载值确定所述N-1个服务器的算力使用率,将所述算力使用率低于使用率阈值的服务器作为候选服务器,从所述候选服务器中确定所述L个目的序号值在修改所述映射关系后要指向的D个目的服务器;D为正整数且D<N;
基于所述L个目的序号值和所述D个目的服务器的IP值建立所述要修改的映射关系,所述L个目的序号值中的每一个目的序号值都唯一地指向所述D个目的服务器中的一个目的服务器的IP值,并对所述映射表进行修改和更新,使得后续抵达的序号值为所述目的序号值的数据包都被发送至与所述目的序号值对应的所述目的服务器。
根据本发明第一方面的方法,所述方法还包括:
基于所述K个序号值提取挂载在所述任一服务器上的数据包的连接标识Conn.ID,建立由所述挂载的数据包的连接标识Conn.ID和所述任一服务器的IP值构成的暂存表;
获取后续抵达的数据包的连接标识Conn.ID;其中:
若所述后续抵达的数据包的连接标识Conn.ID在所述暂存表中,则直接将所述后续抵达的数据包经由所述出端口发送至所述暂存表中指向的所述任一服务器;
否则,对所述后续抵达的数据包的连接标识Conn.ID计算哈希值并对M取余来确定序号值进和对应的服务器的IP值,并经由所述出端口将所述后续抵达的数据包发送至对应的服务器。
本发明第二方面公开了一种基于改进无状态哈希的负载均衡系统。所述系统包括网关路由器、若干交换机和服务器集群,每个所述交换机包括入端口、出端口和一个负载均衡器;其中:
所述交换机接收由网关路由器发送的数据包,所述数据包在进入所述交换机的入端口后,所述负载均衡器被配置为:
获取所述数据包的源IP、目的IP、源MAC、目的MAC以及协议类型,并将提取到的上述信息通过拼接组成所述数据包的连接标识Conn.ID;
计算所述连接标识Conn.ID的哈希值,通过对所述哈希值进行对M取余来确定所述数据包的序号值,基于所述序号值与各个服务器的映射表获取与所述序号值对应的服务器的IP地址,并经由所述交换机的出端口将所述数据包发送至与所述IP地址对应的服务器,以进行所述数据包的处理;
其中,所述映射表中包含M个序号值,所述M个序号值中的每一个序号值都唯一地指向N台服务器中的一台服务器的IP值;后续抵达的具有相同连接标识Conn.ID的数据包都将被发送至相同IP值对应的服务器;M和N均为正整数;
其中,在检测到所述N个服务器中的任一服务器出现负载过量时,确定要修改的映射关系,修改映射关系指:将所述要修改的映射关系中的目的序号值从其指向的当前服务器的IP值修改为目的服务器的IP值,使得后续抵达的序号值为所述目的序号值的数据包被发送至所述目的服务器。
根据本发明第二方面的系统,所述映射表中包含M个序号值为0,1,2,...M-2,M-1;所述负载均衡器基于所述M个序号值与所述N个服务器的映射表获取与所述数据包的序号值对应的服务器的IP地址之后,将所述数据包的目的IP修改为所述对应的服务器的IP地址,经由所述交换机的出端口将所述数据包发送至与经修改的所述IP地址对应的服务器;当所述网关路由器将多个数据包发送至多个所述交换机时,所述多个交换机中的多个所述负载均衡器使用相同的哈希函数,且各自保持独立的映射表。
根据本发明第二方面的系统,在检测到所述N个服务器中的任一服务器出现负载过量时,确定所述要修改的映射关系,具体包括:
当检测到所述N个服务器中的任一服务器的负载值超过其负载阈值时,判定所述任一服务器负载过量,并从所述映射表上提取映射到所述任一服务器的K个序号值,从中确定所述要修改的映射关系中的L个目的序号值;K为正整数且K<M,L为正整数且L≤K;
获取所述N个服务器中除所述任一服务器之外的N-1个服务器的负载值,基于所述负载值确定所述N-1个服务器的算力使用率,将所述算力使用率低于使用率阈值的服务器作为候选服务器,从所述候选服务器中确定所述L个目的序号值在修改所述映射关系后要指向的D个目的服务器;D为正整数且D<N;
基于所述L个目的序号值和所述D个目的服务器的IP值建立所述要修改的映射关系,所述L个目的序号值中的每一个目的序号值都唯一地指向所述D个目的服务器中的一个目的服务器的IP值,并对所述映射表进行修改和更新,使得后续抵达的序号值为所述目的序号值的数据包都被发送至与所述目的序号值对应的所述目的服务器。
根据本发明第二方面的系统,所述系统还包括:
基于所述K个序号值提取挂载在所述任一服务器上的数据包的连接标识Conn.ID,建立由所述挂载的数据包的连接标识Conn.ID和所述任一服务器的IP值构成的暂存表;
获取后续抵达的数据包的连接标识Conn.ID;其中:
若所述后续抵达的数据包的连接标识Conn.ID在所述暂存表中,则直接将所述后续抵达的数据包经由所述出端口发送至所述暂存表中指向的所述任一服务器;
否则,对所述后续抵达的数据包的连接标识Conn.ID计算哈希值并对M取余来确定序号值进和对应的服务器的IP值,并经由所述出端口将所述后续抵达的数据包发送至对应的服务器。
本发明第三方面公开了一种电子设备。所述电子设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时,实现本公开第一方面中任一项所述的一种基于改进无状态哈希的负载均衡方法中的步骤。
本发明第四方面公开了一种计算机可读存储介质。所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时,实现本公开第一方面中任一项所述的一种基于改进无状态哈希的负载均衡方法中的步骤。
综上,本发明提供的技术方案将结合无状态方案和有状态方案各自在资源效率、服务质量保障方面的优势提出一种效率和服务质量联合优化,并实现低耦合特性的四层负载均衡机制。这种方法能同时结合无状态和有状态的优势并相互弥补缺陷,使得四层负载均衡能够在有效保证连接服务质量的同时,充分利用载体的内存资源,兼容现有的负载均衡体系。
具体地,基于无状态算法的多级负载均衡架构。
使用多层次的负载均衡机制,按照数据中心云网络的结构层次进行划分:核心层的网关路由器运行ECMP进行链路的负载均衡,将访问某个服务IP(VIP)的流量分发到多个服务此VIP的四层负载均衡器;汇聚层的四层负载均衡器运行一致的改进的无状态哈希负载均衡机制,将访问某VIP的流量分发到可用的后端服务器上。网关路由器运行常用的BGP路由协议,ECMP的可用路径信息通过四层负载均衡器或控制器发送BGP消息告知和更新,四层负载均衡器上的表项信息由控制器进行更新。
具体地,改进的无状态哈希的四层负载均衡机制。
提出改进的无状态哈希负载均衡方法。ECMP使用无状态哈希实现负载均衡的空间效率很高,但是ECMP在可用链路变化的情况下,流量分发结果会发生剧烈变化,很可能导致服务质量的不稳定。为了保留无状态哈希的高空间效率的优势,同时保证连接服务质量的稳定,本发明设计了改进的无状态哈希实现方法,通过固定哈希表的大小方式,保证连接与哈希表序号的哈希映射关系不变化,同时将哈希表序号与可用服务器IP的对应关系设置为可变的,这样就能够动态的添加或删除服务器同时不影响哈希映射。哈希表的空间开销相对于记录与云网络中服务连接数量的相关的状态来说可以忽略不计。
具体地,具有松耦合特性的服务质量保障机制。
在四层(传输层)负载均衡机制中,当进行动态的服务器数量配置、动态平衡服务器负载等操作时,都需要修改序号-服务器的映射关系,而这会导致此映射上运行的连接被中断错误转发,影响了服务质量。本发明设计了数/控联合的服务质量保障机制,在数据面的负载均衡器上使用暂存表和相关处理流程,在控制面的控制器上存储每个序号-服务器映射上运行的连接信息,当修改映射的操作执行前,控制器会下发这些可能被中断的连接信息(连接标识和对应服务器)到负载均衡器的暂存表上,然后再执行修改操作,负载均衡器对于数据包会先在暂存表中进行匹配,如果匹配则直接转发,否则进行正常的处理流程。而一旦连接完成,这些连接的维护表项信息也会在数据面和控制面进行删除。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为根据本发明实施例的基于改进无状态哈希的负载均衡方法的流程示意图;
图2为根据本发明实施例的在传输层部署多个负载均衡器的结构示意图;
图3为根据本发明实施例的一种电子设备的结构图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例只是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明第一方面公开了一种基于改进无状态哈希的负载均衡方法。图1为根据本发明实施例的基于改进无状态哈希的负载均衡方法的流程示意图;如图1所示,所述方法基于交换机内的负载均衡器来实现,所述交换机包括入端口、出端口和一个所述负载均衡器,所述方法包括:
所述交换机接收由网关路由器发送的数据包,所述数据包在进入所述交换机的入端口后,所述负载均衡器获取所述数据包的源IP、目的IP、源MAC、目的MAC以及协议类型,并将提取到的上述信息通过拼接组成所述数据包的连接标识Conn.ID。
计算所述连接标识Conn.ID的哈希值,通过对所述哈希值进行对M取余来确定所述数据包的序号值,基于所述序号值与各个服务器的映射表获取与所述序号值对应的服务器的IP地址,并经由所述交换机的出端口将所述数据包发送至与所述IP地址对应的服务器,以进行所述数据包的处理。
在一些实施例中,所述映射表中包含M个序号值,所述M个序号值中的每一个序号值都唯一地指向N台服务器中的一台服务器的IP值;后续抵达的具有相同连接标识Conn.ID的数据包都将被发送至相同IP值对应的服务器;M和N均为正整数。
在一些实施例中,所述映射表中包含M个序号值为0,1,2,...M-2,M-1;基于所述M个序号值与所述N个服务器的映射表获取与所述数据包的序号值对应的服务器的IP地址之后,将所述数据包的目的IP修改为所述对应的服务器的IP地址,经由所述交换机的出端口将所述数据包发送至与经修改的所述IP地址对应的服务器。
具体实施例1,基于改进无状态哈希的四层负载均衡机制。
对于一般的负载均衡服务的流量,会提取数据包头部的源IP、目的IP、源MAC、目的MAC、协议类型等构成连接标识的信息,通过如图的红框所示的黑色箭头路线,根据连接标识计算哈希函数值,根据哈希函数值再进行对应服务器的选取,然后转发到出端口,具体流程如下(以TCP连接为例):
(1)对于进入交换机端口的数据包,提取源IP、目的IP、源MAC、目的MAC、协议类型,组成连接标识Conn.ID。
(2)将Conn输入哈希函数,通过hash(Conn.ID)%M计算得到哈希值作为序号,每个序号被映射到一个后端服务器的IP上,被称为DIP(Direct IP)。序号集合的大小始终固定,每个连接标识计算得到的哈希序号不会变化。
(3)由选择的DIP,根据对应的内置参数,修改目的IP、目的MAC,转发到相应的出端口,完成负载均衡操作。
在一些实施例中,在检测到所述N个服务器中的任一服务器出现负载过量时,确定要修改的映射关系,修改映射关系指:将所述要修改的映射关系中的目的序号值从其指向的当前服务器的IP值修改为目的服务器的IP值,使得后续抵达的序号值为所述目的序号值的数据包被发送至所述目的服务器。
在一些实施例中,在检测到所述N个服务器中的任一服务器出现负载过量时,确定所述要修改的映射关系,具体包括:
当检测到所述N个服务器中的任一服务器的负载值超过其负载阈值时,判定所述任一服务器负载过量,并从所述映射表上提取映射到所述任一服务器的K个序号值,从中确定所述要修改的映射关系中的L个目的序号值;K为正整数且K<M,L为正整数且L≤K;
获取所述N个服务器中除所述任一服务器之外的N-1个服务器的负载值,基于所述负载值确定所述N-1个服务器的算力使用率,将所述算力使用率低于使用率阈值的服务器作为候选服务器,从所述候选服务器中确定所述L个目的序号值在修改所述映射关系后要指向的D个目的服务器;D为正整数且D<N;
基于所述L个目的序号值和所述D个目的服务器的IP值建立所述要修改的映射关系,所述L个目的序号值中的每一个目的序号值都唯一地指向所述D个目的服务器中的一个目的服务器的IP值,并对所述映射表进行修改和更新,使得后续抵达的序号值为所述目的序号值的数据包都被发送至与所述目的序号值对应的所述目的服务器。
在一些实施例中,所述方法还包括:
基于所述K个序号值提取挂载在所述任一服务器上的数据包的连接标识Conn.ID,建立由所述挂载的数据包的连接标识Conn.ID和所述任一服务器的IP值构成的暂存表;
获取后续抵达的数据包的连接标识Conn.ID;其中:
若所述后续抵达的数据包的连接标识Conn.ID在所述暂存表中,则直接将所述后续抵达的数据包经由所述出端口发送至所述暂存表中指向的所述任一服务器;
否则,对所述后续抵达的数据包的连接标识Conn.ID计算哈希值并对M取余来确定序号值进和对应的服务器的IP值,并经由所述出端口将所述后续抵达的数据包发送至对应的服务器。
具体实施例2,具有松耦合特性的服务质量保障机制。
改进的无状态哈希只能保证在静态环境下连接服务质量的稳定,在序号-服务器映射需要更改的时候,序号上已有连接需要其他机制提供保障。如图中红框所示,引入暂存表(TS table)存储序号-服务器映射修改时需要维护的连接的状态信息,增加负载均衡器和控制器的少量交互操作,在进行正常负载均衡逻辑前进行匹配提取,如果是序号上的旧连接则直接转发到正确的后端服务器,具体流程如下:
(1)对于进入交换机端口的数据包,提取源IP、目的IP、源MAC、目的MAC、协议类型,组成连接标识Conn.ID。
(2)判断是否为新连接,如果是新连接(SYN=1)则需要上报控制器进行注册,用于映射修改时维护已有的连接。如果是连接的结束(FIN=1),需要上报控制器,控制器会在数据库中以及数据面的暂存表中进行相应表项的注销。
(3)在暂存表中通过连接标识Conn.ID进行表项的匹配,如果命中,则说明为某个序号-服务器映射迁移时需要维护的旧连接,通过匹配结果的目的地信息,修改目的IP、目的MAC,转发到相应的出端口。如果没有命中,则进入正常的负载均衡过程。
(4)当控制器发起序号-服务器的修改操作,会先搜寻序号对应的正在运行的连接的信息,组合成结构化的表项信息(Conn.ID,DIP),然后下发到负载均衡器的暂存表中,之后再立刻进行映射的修改。
在一些实施例中,当所述网关路由器将多个数据包发送至多个所述交换机时,所述多个交换机中的多个所述负载均衡器使用相同的哈希函数,且各自保持独立的映射表。
具体实施例3,基于无状态算法的多级负载均衡架构。
图2为根据本发明实施例的在传输层部署多个负载均衡器的结构示意图;如图2所示,兼容数据中心云网络现有架构的多级负载均衡结构,第一级的网关路由器使用ECMP进行无状态的、快速的数据包链路分发;第二级的交换机实现了数控结合的基于改进的无状态哈希的四层负载均衡方法,实现连接层面的数据包分发,总体流程如下:
(1)当访问某一服务VIP的数据包到达网关路由器之后,通过基于哈希的ECMP将数据包分发到可用的服务于此VIP的四层负载均衡器。
(2)四层负载均衡器接收到访问VIP的流量,按照上述的四层负载均衡机制进行连接层面的数据包分发。负载均衡器使用相同的哈希函数,使得不同的负载均衡器对于某一个连接都能选择同样的DIP,在一二级负载均衡间路由变化的情况下,保证连接服务的稳定。
(3)对于序号-服务器映射需要发生改变的情况,按照上述具有松耦合特性的服务质量保障机制进行旧连接的维护,保证连接服务质量。
综上,本发明第一方面的方法以现有的数据中心云网络核心-汇聚-介入三层网络架构为基础,部署了多级网络负载均衡架构,在汇聚层交换机上实现基于改进无状态哈希的四层负载均衡方法,使得交换机能够快速、低开销地进行大规模流量负载均衡,结合控制面实现了稳定的连接服务质量保证。
本发明第二方面公开了一种基于改进无状态哈希的负载均衡系统。所述系统包括网关路由器、若干交换机和服务器集群,每个所述交换机包括入端口、出端口和一个负载均衡器;其中:
所述交换机接收由网关路由器发送的数据包,所述数据包在进入所述交换机的入端口后,所述负载均衡器被配置为:
获取所述数据包的源IP、目的IP、源MAC、目的MAC以及协议类型,并将提取到的上述信息通过拼接组成所述数据包的连接标识Conn.ID;
计算所述连接标识Conn.ID的哈希值,通过对所述哈希值进行对M取余来确定所述数据包的序号值,基于所述序号值与各个服务器的映射表获取与所述序号值对应的服务器的IP地址,并经由所述交换机的出端口将所述数据包发送至与所述IP地址对应的服务器,以进行所述数据包的处理;
其中,所述映射表中包含M个序号值,所述M个序号值中的每一个序号值都唯一地指向N台服务器中的一台服务器的IP值;后续抵达的具有相同连接标识Conn.ID的数据包都将被发送至相同IP值对应的服务器;M和N均为正整数;
其中,在检测到所述N个服务器中的任一服务器出现负载过量时,确定要修改的映射关系,修改映射关系指:将所述要修改的映射关系中的目的序号值从其指向的当前服务器的IP值修改为目的服务器的IP值,使得后续抵达的序号值为所述目的序号值的数据包被发送至所述目的服务器。
根据本发明第二方面的系统,所述映射表中包含M个序号值为0,1,2,...M-2,M-1;所述负载均衡器基于所述M个序号值与所述N个服务器的映射表获取与所述数据包的序号值对应的服务器的IP地址之后,将所述数据包的目的IP修改为所述对应的服务器的IP地址,经由所述交换机的出端口将所述数据包发送至与经修改的所述IP地址对应的服务器;当所述网关路由器将多个数据包发送至多个所述交换机时,所述多个交换机中的多个所述负载均衡器使用相同的哈希函数,且各自保持独立的映射表。。
根据本发明第二方面的系统,在检测到所述N个服务器中的任一服务器出现负载过量时,确定所述要修改的映射关系,具体包括:
当检测到所述N个服务器中的任一服务器的负载值超过其负载阈值时,判定所述任一服务器负载过量,并从所述映射表上提取映射到所述任一服务器的K个序号值,从中确定所述要修改的映射关系中的L个目的序号值;K为正整数且K<M,L为正整数且L≤K;
获取所述N个服务器中除所述任一服务器之外的N-1个服务器的负载值,基于所述负载值确定所述N-1个服务器的算力使用率,将所述算力使用率低于使用率阈值的服务器作为候选服务器,从所述候选服务器中确定所述L个目的序号值在修改所述映射关系后要指向的D个目的服务器;D为正整数且D<N;
基于所述L个目的序号值和所述D个目的服务器的IP值建立所述要修改的映射关系,所述L个目的序号值中的每一个目的序号值都唯一地指向所述D个目的服务器中的一个目的服务器的IP值,并对所述映射表进行修改和更新,使得后续抵达的序号值为所述目的序号值的数据包都被发送至与所述目的序号值对应的所述目的服务器。
根据本发明第二方面的系统,所述系统还包括:
基于所述K个序号值提取挂载在所述任一服务器上的数据包的连接标识Conn.ID,建立由所述挂载的数据包的连接标识Conn.ID和所述任一服务器的IP值构成的暂存表;
获取后续抵达的数据包的连接标识Conn.ID;其中:
若所述后续抵达的数据包的连接标识Conn.ID在所述暂存表中,则直接将所述后续抵达的数据包经由所述出端口发送至所述暂存表中指向的所述任一服务器;
否则,对所述后续抵达的数据包的连接标识Conn.ID计算哈希值并对M取余来确定序号值进和对应的服务器的IP值,并经由所述出端口将所述后续抵达的数据包发送至对应的服务器。
本发明第三方面公开了一种电子设备。所述电子设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时,实现本公开第一方面中任一项所述的一种基于改进无状态哈希的负载均衡方法中的步骤。
图3为根据本发明实施例的一种电子设备的结构图,如图3所示,电子设备包括通过系统总线连接的处理器、存储器、通信接口、显示屏和输入装置。其中,该电子设备的处理器用于提供计算和控制能力。该电子设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该电子设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、运营商网络、近场通信(NFC)或其他技术实现。该电子设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该电子设备的输入装置可以是显示屏上覆盖的触摸层,也可以是电子设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图3中示出的结构,仅仅是与本公开的技术方案相关的部分的结构图,并不构成对本申请方案所应用于其上的电子设备的限定,具体的电子设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
本发明第四方面公开了一种计算机可读存储介质。所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时,实现本公开第一方面中任一项所述的一种基于改进无状态哈希的负载均衡方法中的步骤。
综上,本发明提供的技术方案将结合无状态方案和有状态方案各自在资源效率、服务质量保障方面的优势提出一种效率和服务质量联合优化,并实现低耦合特性的四层负载均衡机制。这种方法能同时结合无状态和有状态的优势并相互弥补缺陷,使得四层负载均衡能够在有效保证连接服务质量的同时,充分利用载体的内存资源,兼容现有的负载均衡体系。
具体地,基于无状态算法的多级负载均衡架构。
使用多层次的负载均衡机制,按照数据中心云网络的结构层次进行划分:核心层的网关路由器运行ECMP进行链路的负载均衡,将访问某个服务IP(VIP)的流量分发到多个服务此VIP的四层负载均衡器;汇聚层的四层负载均衡器运行一致的改进的无状态哈希负载均衡机制,将访问某VIP的流量分发到可用的后端服务器上。网关路由器运行常用的BGP路由协议,ECMP的可用路径信息通过四层负载均衡器或控制器发送BGP消息告知和更新,四层负载均衡器上的表项信息由控制器进行更新。
具体地,改进的无状态哈希的四层负载均衡机制。
提出改进的无状态哈希负载均衡方法。ECMP使用无状态哈希实现负载均衡的空间效率很高,但是ECMP在可用链路变化的情况下,流量分发结果会发生剧烈变化,很可能导致服务质量的不稳定。为了保留无状态哈希的高空间效率的优势,同时保证连接服务质量的稳定,本发明设计了改进的无状态哈希实现方法,通过固定哈希表的大小方式,保证连接与哈希表序号的哈希映射关系不变化,同时将哈希表序号与可用服务器IP的对应关系设置为可变的,这样就能够动态的添加或删除服务器同时不影响哈希映射。哈希表的空间开销相对于记录与云网络中服务连接数量的相关的状态来说可以忽略不计。
具体地,具有松耦合特性的服务质量保障机制。
在四层(传输层)负载均衡机制中,当进行动态的服务器数量配置、动态平衡服务器负载等操作时,都需要修改序号-服务器的映射关系,而这会导致此映射上运行的连接被中断错误转发,影响了服务质量。本发明设计了数/控联合的服务质量保障机制,在数据面的负载均衡器上使用暂存表和相关处理流程,在控制面的控制器上存储每个序号-服务器映射上运行的连接信息,当修改映射的操作执行前,控制器会下发这些可能被中断的连接信息(连接标识和对应服务器)到负载均衡器的暂存表上,然后再执行修改操作,负载均衡器对于数据包会先在暂存表中进行匹配,如果匹配则直接转发,否则进行正常的处理流程。而一旦连接完成,这些连接的维护表项信息也会在数据面和控制面进行删除。
本发明的技术方案能够达到的技术效果包括但不限于:
(1)改进的无状态哈希的四层负载均衡机制带来的效果:
快速处理:无状态选取后端服务器的操作更加快速,也容易在硬件加速器上进行部署。
保障服务质量:基于固定大小的哈希序号集合,能够在动态环境下保证连接-序号映射的一致性,减少连接被中断的可能。
高空间效率:无状态的哈希方式只需要存储数目与可选目的地相关的表项,而不需要存储所有连接对应的选择结果,大大减少空间开销。
(2)具有松耦合特性的服务质量保障机制带来的效果:
保障服务质量:在配置服务器集群或动态均衡负载时,需要更改序号-服务器映射。机制能够维护这个过程中可能被中断的旧连接,保障连接服务质量。
松耦合:此机制只涉及四层负载均衡器和额外的控制器,不影响现有云网络架构和其他应用,能够无缝、便捷地进行部署和更新。
请注意,以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种基于改进无状态哈希的负载均衡方法,其特征在于,所述方法基于交换机内的负载均衡器来实现,所述交换机包括入端口、出端口和一个所述负载均衡器,所述方法包括:
所述交换机接收由网关路由器发送的数据包,所述数据包在进入所述交换机的入端口后,所述负载均衡器获取所述数据包的源IP、目的IP、源MAC、目的MAC以及协议类型,并将提取到的上述信息通过拼接组成所述数据包的连接标识Conn.ID;
计算所述连接标识Conn.ID的哈希值,通过对所述哈希值进行对M取余来确定所述数据包的序号值,基于所述序号值与各个服务器的映射表获取与所述序号值对应的服务器的IP地址,并经由所述交换机的出端口将所述数据包发送至与所述IP地址对应的服务器,以进行所述数据包的处理;
其中,所述映射表中包含M个序号值,所述M个序号值中的每一个序号值都唯一地指向N台服务器中的一台服务器的IP值;后续抵达的具有相同连接标识Conn.ID的数据包都将被发送至相同IP值对应的服务器;M和N均为正整数;
其中,在检测到所述N个服务器中的任一服务器出现负载过量时,确定要修改的映射关系,修改映射关系指:将所述要修改的映射关系中的目的序号值从其指向的当前服务器的IP值修改为目的服务器的IP值,使得后续抵达的序号值为所述目的序号值的数据包被发送至所述目的服务器。
2.根据权利要求1所述的一种基于改进无状态哈希的负载均衡方法,其特征在于:
所述映射表中包含M个序号值为0,1,2,...M-2,M-1;
基于所述M个序号值与所述N个服务器的映射表获取与所述数据包的序号值对应的服务器的IP地址之后,将所述数据包的目的IP修改为所述对应的服务器的IP地址,经由所述交换机的出端口将所述数据包发送至与经修改的所述IP地址对应的服务器;
当所述网关路由器将多个数据包发送至多个所述交换机时,所述多个交换机中的多个所述负载均衡器使用相同的哈希函数,且各自保持独立的映射表。
3.根据权利要求1所述的一种基于改进无状态哈希的负载均衡方法,其特征在于,在检测到所述N个服务器中的任一服务器出现负载过量时,确定所述要修改的映射关系,具体包括:
当检测到所述N个服务器中的任一服务器的负载值超过其负载阈值时,判定所述任一服务器负载过量,并从所述映射表上提取映射到所述任一服务器的K个序号值,从中确定所述要修改的映射关系中的L个目的序号值;K为正整数且K<M,L为正整数且L≤K;
获取所述N个服务器中除所述任一服务器之外的N-1个服务器的负载值,基于所述负载值确定所述N-1个服务器的算力使用率,将所述算力使用率低于使用率阈值的服务器作为候选服务器,从所述候选服务器中确定所述L个目的序号值在修改所述映射关系后要指向的D个目的服务器;D为正整数且D<N;
基于所述L个目的序号值和所述D个目的服务器的IP值建立所述要修改的映射关系,所述L个目的序号值中的每一个目的序号值都唯一地指向所述D个目的服务器中的一个目的服务器的IP值,并对所述映射表进行修改和更新,使得后续抵达的序号值为所述目的序号值的数据包都被发送至与所述目的序号值对应的所述目的服务器。
4.根据权利要求3所述的一种基于改进无状态哈希的负载均衡方法,其特征在于,所述方法还包括:
基于所述K个序号值提取挂载在所述任一服务器上的数据包的连接标识Conn.ID,建立由所述挂载的数据包的连接标识Conn.ID和所述任一服务器的IP值构成的暂存表;
获取后续抵达的数据包的连接标识Conn.ID;其中:
若所述后续抵达的数据包的连接标识Conn.ID在所述暂存表中,则直接将所述后续抵达的数据包经由所述出端口发送至所述暂存表中指向的所述任一服务器;
否则,对所述后续抵达的数据包的连接标识Conn.ID计算哈希值并对M取余来确定序号值进和对应的服务器的IP值,并经由所述出端口将所述后续抵达的数据包发送至对应的服务器。
5.一种基于改进无状态哈希的负载均衡系统,其特征在于,所述系统包括网关路由器、若干交换机和服务器集群,每个所述交换机包括入端口、出端口和一个负载均衡器;其中:
所述交换机接收由网关路由器发送的数据包,所述数据包在进入所述交换机的入端口后,所述负载均衡器被配置为:
获取所述数据包的源IP、目的IP、源MAC、目的MAC以及协议类型,并将提取到的上述信息通过拼接组成所述数据包的连接标识Conn.ID;
计算所述连接标识Conn.ID的哈希值,通过对所述哈希值进行对M取余来确定所述数据包的序号值,基于所述序号值与各个服务器的映射表获取与所述序号值对应的服务器的IP地址,并经由所述交换机的出端口将所述数据包发送至与所述IP地址对应的服务器,以进行所述数据包的处理;
其中,所述映射表中包含M个序号值,所述M个序号值中的每一个序号值都唯一地指向N台服务器中的一台服务器的IP值;后续抵达的具有相同连接标识Conn.ID的数据包都将被发送至相同IP值对应的服务器;M和N均为正整数;
其中,在检测到所述N个服务器中的任一服务器出现负载过量时,确定要修改的映射关系,修改映射关系指:将所述要修改的映射关系中的目的序号值从其指向的当前服务器的IP值修改为目的服务器的IP值,使得后续抵达的序号值为所述目的序号值的数据包被发送至所述目的服务器。
6.根据权利要求5所述的一种基于改进无状态哈希的负载均衡系统,其特征在于:
所述映射表中包含M个序号值为0,1,2,...M-2,M-1;
所述负载均衡器基于所述M个序号值与所述N个服务器的映射表获取与所述数据包的序号值对应的服务器的IP地址之后,将所述数据包的目的IP修改为所述对应的服务器的IP地址,经由所述交换机的出端口将所述数据包发送至与经修改的所述IP地址对应的服务器;
当所述网关路由器将多个数据包发送至多个所述交换机时,所述多个交换机中的多个所述负载均衡器使用相同的哈希函数,且各自保持独立的映射表。
7.根据权利要求5所述的一种基于改进无状态哈希的负载均衡系统,其特征在于,在检测到所述N个服务器中的任一服务器出现负载过量时,确定所述要修改的映射关系,具体包括:
当检测到所述N个服务器中的任一服务器的负载值超过其负载阈值时,判定所述任一服务器负载过量,并从所述映射表上提取映射到所述任一服务器的K个序号值,从中确定所述要修改的映射关系中的L个目的序号值;K为正整数且K<M,L为正整数且L≤K;
获取所述N个服务器中除所述任一服务器之外的N-1个服务器的负载值,基于所述负载值确定所述N-1个服务器的算力使用率,将所述算力使用率低于使用率阈值的服务器作为候选服务器,从所述候选服务器中确定所述L个目的序号值在修改所述映射关系后要指向的D个目的服务器;D为正整数且D<N;
基于所述L个目的序号值和所述D个目的服务器的IP值建立所述要修改的映射关系,所述L个目的序号值中的每一个目的序号值都唯一地指向所述D个目的服务器中的一个目的服务器的IP值,并对所述映射表进行修改和更新,使得后续抵达的序号值为所述目的序号值的数据包都被发送至与所述目的序号值对应的所述目的服务器。
8.根据权利要求7所述的一种基于改进无状态哈希的负载均衡系统,其特征在于,所述系统还包括:
基于所述K个序号值提取挂载在所述任一服务器上的数据包的连接标识Conn.ID,建立由所述挂载的数据包的连接标识Conn.ID和所述任一服务器的IP值构成的暂存表;
获取后续抵达的数据包的连接标识Conn.ID;其中:
若所述后续抵达的数据包的连接标识Conn.ID在所述暂存表中,则直接将所述后续抵达的数据包经由所述出端口发送至所述暂存表中指向的所述任一服务器;
否则,对所述后续抵达的数据包的连接标识Conn.ID计算哈希值并对M取余来确定序号值进和对应的服务器的IP值,并经由所述出端口将所述后续抵达的数据包发送至对应的服务器。
9.一种电子设备,其特征在于,所述电子设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时,实现权利要求1至4中任一项所述的一种基于改进无状态哈希的负载均衡方法中的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时,实现权利要求1至4中任一项所述的一种基于改进无状态哈希的负载均衡方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210506380.0A CN114640682B (zh) | 2022-05-11 | 2022-05-11 | 一种基于改进无状态哈希的负载均衡方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210506380.0A CN114640682B (zh) | 2022-05-11 | 2022-05-11 | 一种基于改进无状态哈希的负载均衡方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114640682A CN114640682A (zh) | 2022-06-17 |
CN114640682B true CN114640682B (zh) | 2022-07-19 |
Family
ID=81953062
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210506380.0A Active CN114640682B (zh) | 2022-05-11 | 2022-05-11 | 一种基于改进无状态哈希的负载均衡方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114640682B (zh) |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10038626B2 (en) * | 2013-04-16 | 2018-07-31 | Amazon Technologies, Inc. | Multipath routing in a distributed load balancer |
CN107438012B (zh) * | 2016-05-27 | 2020-07-28 | 北京金山云网络技术有限公司 | 一种负载均衡服务转发方法、系统、均衡装置和宿主机 |
CN109617986B (zh) * | 2018-12-27 | 2020-08-07 | 华为技术有限公司 | 一种负载均衡方法及网络设备 |
-
2022
- 2022-05-11 CN CN202210506380.0A patent/CN114640682B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN114640682A (zh) | 2022-06-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107465590B (zh) | 网络基础设施系统、路由网络业务的方法及计算机可读介质 | |
US20240129238A1 (en) | Flow-Based Load Balancing | |
US10320683B2 (en) | Reliable load-balancer using segment routing and real-time application monitoring | |
CN107995123B (zh) | 一种基于交换机的负载均衡系统及方法 | |
US10534601B1 (en) | In-service software upgrade of virtual router with reduced packet loss | |
EP3125505B1 (en) | Method, apparatus and system for load balancing of service chain | |
EP2520052B1 (en) | Multicast traffic distribution on link-aggregate-group | |
US9521028B2 (en) | Method and apparatus for providing software defined network flow distribution | |
CN110417924B (zh) | 分布式设备中的报文处理方法和分布式设备 | |
EP3399703B1 (en) | Method for implementing load balancing, apparatus, and network system | |
US9742659B2 (en) | Multipath bandwidth usage | |
US20160241669A1 (en) | Temporal caching for icn | |
KR20160099473A (ko) | 모듈식 포워딩 테이블 확장성을 위한 기술 | |
US9917891B2 (en) | Distributed in-order load spreading resilient to topology changes | |
WO2015100487A1 (en) | Distributed multi-level stateless load balancing | |
US8989189B2 (en) | Scaling IPv4 in data center networks employing ECMP to reach hosts in a directly connected subnet | |
WO2021008591A1 (zh) | 数据传输方法、装置及系统 | |
CN113839862A (zh) | Mclag邻居之间同步arp信息的方法、系统、终端及存储介质 | |
KR102376496B1 (ko) | 서비스 스트림 분산 포워딩 시스템 및 그 방법 | |
Aghdai et al. | In-network congestion-aware load balancing at transport layer | |
CN113965521B (zh) | 数据包的传输方法、服务器及存储介质 | |
CN114640682B (zh) | 一种基于改进无状态哈希的负载均衡方法和系统 | |
CN109861908B (zh) | 一种路由转发方法及设备 | |
CN113329048B (zh) | 基于交换机的云负载均衡方法、装置及存储介质 | |
Kondo et al. | Resource discovery for edge computing over named data networking |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |