
技术摘要:
本发明公开了负载均衡方法、装置、前端调度服务器、存储介质及设备,负载均衡方法包括:接收请求数据包;根据预设均衡条件确定请求数据包分配的相同的下一跳地址;选取等价ECMP路由表项中与所述下一跳地址对应的路径条目;按照所述路径条目对应的通信链路发送请求数据 全部
背景技术:
LVS是Linux Virtual Server的简写,是一个虚拟的服务器集群系统,采用IP负载 均衡技术和基于内容请求分发技术实现的负载均衡。 IP负载均衡技术是在负载调度器的实现技术中效率最高的。在已有的IP负载均衡 技术中,主要有通过网络地址转换(NAT,Network Address Translation)将一组服务器构 成一个高性能的、高可用的虚拟服务器,称之为VS/NAT技术(Virtual Server via Network Address Translation)。在分析VS/NAT的缺点和网络服务的非对称性的基础上,还提出了 通过直接路由实现虚拟服务器的方法VS/DR(Virtual Server via Direct Routing)和通 过IP隧道实现虚拟服务器的方法VS/TUN(Virtual Server via IP Tunneling),它们可以 极大地提高系统的伸缩性。VS/NAT、VS/DR和VS/TUN技术是LVS集群中实现的三种IP负载均 衡技术。除此之外,还有一种名为“FullNat”的负载均衡技术。 如图1所示,采用IP负载均衡技术的LVS集群服务通过分层方式来提供服务。 1、负载调度层:它位于整个集群系统的最前端,有两台(NAT、DR或TUN方式)或者两 台以上(FullNat方式)的负载调度器(即前端调度服务器,或者简称调度器)组成。 2、后端应用服务层:实际是由一组运行应用服务的机器组成。后端应用服务层的 机器(简称Realserver)的硬件性能并不需要完全统一,可以各异,因为前端调度服务器可 以人为地定义调度机制去调度后端应用服务器。 其工作原理如下:当有大量的数据需要访问某种应用服务(WWW服务、DNS服务)时, 数据首先经过负载调度器。负载调度器通过各种调度算法,比如,轮询调度算法、加权调度 算法、ECP算法等,将数据有目标地发送到多台后端应用服务器,使得后端应用服务器比较 有效地、均衡地提供服务。当后端应用服务器宕机,或者不能提供服务的时候,负载调度器 也能通过检测机制(如Keep alive)发现,然后将不能提供服务的后端应用服务器剔除。 现有的LVS集群服务可以有效地提供稳定、可靠的服务,但同时也带来了如下问 题: 1、LVS集群服务系统中前端的调度服务器都是主备架构,也就是说,只有一台服务 器能提供服务,剩余的一台或者多台调度服务器都是备用的,并且主备架构的联系机制也 是比较复杂的。当主调度服务器出现异常不能提供服务,主备服务器需要有各种机制去发 现主调度器宕机以后,备用调度服务器接管主调度服务器的角色,从而使得主备调度服务 4 CN 111600806 A 说 明 书 2/11 页 器的角色不能充分利用资源,备用调度服务器是一种长时间等待的角色,不能主动提供服 务器,导致资源浪费。 当出现大规模的SYN Flood攻击的时候,前端调度服务器提供服务的只有一台主 调度服务器,不能很好的抵抗恶意的大量访问,会出现主调度服务器负载过大的问题,甚至 会造成主调度服务器不能对外提供服务的情况发生。 2、主备架构或者一主多备架构的负载调度服务器扩展性比较差,不能同时提供两 个或者两个上的调度服务器提供服务。 也就是说,现有LVS集群服务系统存在资源浪费、抗干扰能力差以及扩展性差等问 题。
技术实现要素:
本发明实施例提供了一种负载均衡方法、装置、前端调度服务器、存储介质及设 备,用以解决现有LVS集群服务系统存在资源浪费、抗干扰能力差以及扩展性差的问题。 本发明实施例提供了一种基于交换机的负载均衡系统,包括:交换机、N台前端调 度服务器、M台应用服务器,其中,N和M均为大于1的整数; 所述交换机,用于接收用户端发送的请求数据包,并根据预设均衡条件确定所述 请求数据包分配的相同的下一跳地址,根据确定的所述下一跳地址,从等价路由ECMP路由 表项中选取与所述下一跳地址相对应的路径条目,并将所述请求数据包按照所选的所述路 径条目对应的通信链路发送至相应的所述前端调度服务器,以由该前端调度服务器将接收 到的所述请求数据包发送至相应的所述应用服务器,经由所述应用服务器将所述请求数据 包的响应结果返回给所述用户端; 所述前端调度服务器,用于将接收到的所述请求数据包发送至相应的所述应用服 务器; 所述应用服务器,用于响应所述前端调度服务器发送的所述请求数据包,并将相 应的响应结果返回给所述用户端; 所述预设均衡条件:芯片计算的哈希值相同、ECMP路由表项中各路径条目的下一 跳个数的总数相同、相同偏移的下一跳存储的出口信息相同; 其中,所述交换机接收用户端发送的请求数据包,这一操作,还用于抵抗SYN Flood攻击。 进一步地,所述交换机,还用于在接收用户端发送的请求数据包之前,获取与各所 述前端调度服务器之间的通信链路的链路状态信息,并根据所述链路状态信息更新所述 ECMP路由表项中的各路径条目对应的链路信息,以及向各所述前端调度服务器广播更新后 的链路状态信息; 所述前端调度服务器,还用于发送和接收所述链路状态信息。 进一步地,所述交换机,还用于将所述ECMP路由表项中各路径条目进行取模计算, 并根据更新后的所述链路状态信息确定是否有与所述前端调度服务器之间的通信链路的 增减变化,若确定任一条与所述前端调度服务器之间的通信链路断开后,则保持所述ECMP 路由表项中其他通信链路对应的所述路径条目的取模不变,并将断开的通信链路的流量重 新进行哈希计算,分配到其他的通信链路上;若确定所述ECMP路由表项中通信链路对应的 5 CN 111600806 A 说 明 书 3/11 页 路径条目增多,则将活跃的通信链路上的部分流量分配至新增通信链路上。 进一步地,本发明实施例还提供了基于上述负载均衡系统的负载均衡方法,该方 法包括: 交换机接收用户端发送的请求数据包,并根据预设均衡条件确定所述请求数据包 分配的相同的下一跳地址; 根据确定的所述下一跳地址,从等价路由ECMP路由表项中选取与所述下一跳地址 相对应的路径条目; 将所述请求数据包按照所选的所述路径条目对应的通信链路发送至相应的所述 前端调度服务器,以由该前端调度服务器将接收到的所述请求数据包发送至相应的所述应 用服务器,经由所述应用服务器将所述请求数据包的响应结果返回给所述用户端; 所述预设均衡条件:芯片计算的哈希值相同、ECMP路由表项中各路径条目的下一 跳个数的总数相同、相同偏移的下一跳存储的出口信息相同。 其中,所述交换机接收用户端发送的请求数据包,这一操作,还用于抵抗SYN Flood攻击。 进一步地,所述在接收用户端发送的请求数据包之前,所述方法还包括: 获取与各所述前端调度服务器之间的通信链路的链路状态信息; 根据所述链路状态信息更新所述ECMP路由表项中的各路径条目对应的链路信息, 并向各所述前端调度服务器广播更新后的链路状态信息。 进一步地,所述方法还包括: 将所述ECMP路由表项中各路径条目进行取模计算; 根据更新后的所述链路状态信息确定是否有与所述前端调度服务器之间的通信 链路的增减变化,若确定任一条与所述前端调度服务器之间的通信链路断开后,则保持所 述ECMP路由表项中其他通信链路对应的所述路径条目的取模不变,并将断开的通信链路的 流量重新进行哈希计算,分配到其他的通信链路上;若确定所述ECMP路由表项中通信链路 对应的路径条目增多,则将活跃的通信链路上的部分流量分配至新增通信链路上。 进一步地,本发明实施例还提供了另一基于上述负载均衡系统的负载均衡方法, 该方法包括: 前端调度服务器接收所述交换机发送的来自用户端的请求数据包;其中,所述请 求数据包是由所述交换机根据预设均衡条件确定所述请求数据包分配的相同的下一跳地 址,根据确定的所述下一跳地址,从等价路由ECMP路由表项中选取与所述下一跳地址相对 应的路径条目,并将所述请求数据包按照所选的所述路径条目对应的通信链路发送至相应 的所述前端调度服务器; 将所述请求数据包发送至相应的所述应用服务器,以由所述应用服务器将所述请 求数据包的响应结果返回给所述用户端; 所述预设均衡条件:芯片计算的哈希值相同、ECMP路由表项中各路径条目的下一 跳个数的总数相同、相同偏移的下一跳存储的出口信息相同; 其中,所述交换机接收用户端发送的请求数据包,这一操作,还用于抵抗SYN Flood攻击。 进一步地,所述方法还包括:所述前端调度服务器发送和接收与所述交换机之间 6 CN 111600806 A 说 明 书 4/11 页 的链路状态信息。 进一步地,本发明实施例还提供了另一基于上述负载均衡系统的负载均衡方法, 该方法包括: 应用服务器响应所述前端调度服务器发送的来自所述用户端的所述请求数据包, 并将相应的响应结果返回给所述用户端; 其中,所述请求数据包是由所述交换机根据预设均衡条件确定所述请求数据包分 配的相同的下一跳地址,根据确定的所述下一跳地址,从等价路由ECMP路由表项中选取与 所述下一跳地址相对应的路径条目,并将所述请求数据包按照所选的所述路径条目对应的 通信链路发送至相应的所述前端调度服务器; 所述预设均衡条件:芯片计算的哈希值相同、ECMP路由表项中各路径条目的下一 跳个数的总数相同、相同偏移的下一跳存储的出口信息相同; 其中,所述交换机接收用户端发送的请求数据包,这一操作,还用于抵抗SYN Flood攻击。 本发明有益效果如下: 本发明实施例采用基于交换机的负载均衡架构,根据预设均衡条件确定来自用户 端的请求数据包分配的相同的下一跳地址,并将交换机接收到的请求数据包根据确定的相 同的下一跳地址发送至前端调度服务器,再转发至应用服务器,从而实现了负载均衡,其 中,前端调度服务器与应用服务器的个数均大于1。在本发明实施例所述的负载均衡系统 中,由于交换机转发为纯硬件转发,端口均为线速,所以交换机做负载均衡相较于LVS性能 更好,并且避免了故障切换时各种复杂的主备联系机制,提高了资源的利用率,扩展性强, 同时还解决了传统主备LVS架构服务集群的负载过大的问题,另外,由于本系统是由交换机 接收用户端的访问请求,因此还具有能够抵御大规模的SYN Flood攻击的效果。 附图说明 为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使 用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本 领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他 的附图。 图1所示为现有采用LVS集群服务的负载均衡系统; 图2所示为本发明实施例一所述的基于交换机的负载均衡系统的结构示意图; 图3所示为本发明实施例一所述的负载均衡系统的具体工作流程图; 图4所示为本发明实施例一中具体的Hash计算过程; 图5所示为本发明实施例二所述的负载均衡方法的流程示意图; 图6所示为本发明实施例三所述的负载均衡方法的流程示意图。