支持哈希调度策略的lvs调度方法、设备及存储介质与流程

文档序号:12887030阅读:250来源:国知局
支持哈希调度策略的lvs调度方法、设备及存储介质与流程

本发明涉及计算机网络技术领域,尤其涉及支持哈希调度策略的lvs调度方法、设备及存储介质。



背景技术:

lvs(即linuxvirtualserver,表示linux虚拟服务器)的sh(souceaddress,即源地址)调度方法不支持源地址一致性hash调度,仅通过普通的hash算法根据源地址选择相应realserver进行调度。当某台realserver(即主机)宕机时,需要将realserver从转发表中删除,否则将出现无法为部分客户端提供服务。当新添加realserver时,需要将该realserver加到转发表中。当前的sh调度方法下,realserver的删除或者添加会引起大量的session(即会话)漂移。

因此,现有技术还有待于改进和发展。



技术实现要素:

鉴于上述现有技术的不足之处,本发明的目的在于提供支持哈希调度策略的lvs调度方法、设备及存储介质,旨在解决现有技术中采用sh调度方法时,主机的删除或者添加会引起大量的会话漂移的问题。

为了达到上述目的,本发明采取了以下技术方案:

一种支持哈希调度策略的lvs调度方法,其中,所述方法包括以下步骤:

获取多个主机的ip地址,以每一主机的ip地址一一进行哈希运算得到对应的第一key值,将第一key值置于指定大小的环形空间中;

获取数据包的源地址,并以数据包的源地址进行哈希运算得到第二key值;

获取环形空间中所存储多个第一key值中最小值,并判断多个第一key值中最小值是否大于第二key值;

当多个第一key值中最小值大于第二key值时,则以多个第一key值中最小值对应的主机作为目的地址发送所述数据包。

所述支持哈希调度策略的lvs调度方法,其中,所述获取多个主机的ip地址,以每一主机的ip地址一一进行哈希运算得到对应的第一key值,将第一key值置于指定大小的环形空间中的步骤包括:

获取多个主机的ip地址,并以每一主机的ip地址一一进行哈希运算得到对应的第一key值;

获取ipv4的地址个数,并以ipv4的地址个数的两倍值作为空间大小设置一环形空间;

将第一key值置于所述环形空间中。

所述支持哈希调度策略的lvs调度方法,其中,所述当多个第一key值中最小值大于第二key值时,则以多个第一key值中最小值对应的主机作为目的地址发送所述数据包的步骤包括:

当多个第一key值中最小值大于第二key值时,则将多个第一key值中最小值记为第一最小key值,并获取与第一最小key值对应主机;

获取与第一最小key值对应主机的ip地址;

以与第一最小key值对应主机的ip地址作为目的地址,将所述数据包发送至所述目的地址,并由该主机转发所述数据包。

所述支持哈希调度策略的lvs调度方法,其中,所述获取多个主机的ip地址,以每一主机的ip地址一一进行哈希运算得到对应的第一key值,将第一key值置于指定大小的环形空间中的步骤之前还包括:

主机通过http和反向代理方式与nginx物理服务器连接;其中,所述nginx物理服务器为imap/pop3/smtp服务器。

所述支持哈希调度策略的lvs调度方法,其中,所述环形空间中每一ipv4的地址对应一个节点,每一节点均复制得到一个对应的虚拟节点。

一种支持哈希调度策略的lvs调度设备,其中,所述支持哈希调度策略的lvs调度设备包括处理器、存储器及通信总线;

所述通信总线用于实现处理器和存储器之间的连接通信;

所述处理器用于执行存储器中存储的支持哈希调度策略的lvs调度程序,以实现以下步骤:

获取多个主机的ip地址,以每一主机的ip地址一一进行哈希运算得到对应的第一key值,将第一key值置于指定大小的环形空间中;

获取数据包的源地址,并以数据包的源地址进行哈希运算得到第二key值;

获取环形空间中所存储多个第一key值中最小值,并判断多个第一key值中最小值是否大于第二key值;

当多个第一key值中最小值大于第二key值时,则以多个第一key值中最小值对应的主机作为目的地址发送所述数据包。

所述支持哈希调度策略的lvs调度设备,其中,所述获取多个主机的ip地址,以每一主机的ip地址一一进行哈希运算得到对应的第一key值,将第一key值置于指定大小的环形空间中的步骤中,所述处理器还用于执行所述支持哈希调度策略的lvs调度程序,以实现以下步骤:

获取多个主机的ip地址,并以每一主机的ip地址一一进行哈希运算得到对应的第一key值;

获取ipv4的地址个数,并以ipv4的地址个数的两倍值作为空间大小设置一环形空间;

将第一key值置于所述环形空间中。

所述支持哈希调度策略的lvs调度设备,其中,所述当多个第一key值中最小值大于第二key值时,则以多个第一key值中最小值对应的主机作为目的地址发送所述数据包的步骤中,所述处理器还用于执行所述支持哈希调度策略的lvs调度程序,以实现以下步骤:

当多个第一key值中最小值大于第二key值时,则将多个第一key值中最小值记为第一最小key值,并获取与第一最小key值对应主机;

获取与第一最小key值对应主机的ip地址;

以与第一最小key值对应主机的ip地址作为目的地址,将所述数据包发送至所述目的地址,并由该主机转发所述数据包。

所述支持哈希调度策略的lvs调度设备,其中,所述获取多个主机的ip地址,以每一主机的ip地址一一进行哈希运算得到对应的第一key值,将第一key值置于指定大小的环形空间中的步骤之前还包括:

主机通过http和反向代理方式与nginx物理服务器连接;其中,所述nginx物理服务器为imap/pop3/smtp服务器。

一种存储介质,其中,所述存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现所述的支持哈希调度策略的lvs调度方法的步骤。

有益效果:本发明提供的支持哈希调度策略的lvs调度方法、设备及存储介质,当有某个主机连接到nginx物理服务器上时,调度到相邻hash节点上的连接漂移到加入的主机;当有某个主机退出时,调度到其他主机的会话不会漂移,只有调度到退出的主机上的会话会重新分布,实现了降低会话漂移,提升负载均衡服务质量。

附图说明

图1为本发明所述的支持哈希调度策略的lvs调度方法较佳实施例的流程图。

图2为本发明所述的支持哈希调度策略的lvs调度方法中步骤s100的流程图。

图3为本发明所述的支持哈希调度策略的lvs调度方法较佳实施例中步骤s400的流程图。

图4为本发明所述的支持哈希调度策略的lvs调度程序较佳实施例的运行环境示意图。

图5为本发明所述的支持哈希调度策略的lvs调度程序较佳实施例的功能模块图。

具体实施方式

本发明提供支持哈希调度策略的lvs调度方法、设备及存储介质,为使本发明的目的、技术方案及效果更加清楚、明确,以下参照附图并举实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。

请参阅图1,是本发明所述的支持哈希调度策略的lvs调度方法较佳实施例的流程图。如图1所示,所述支持哈希调度策略的lvs调度方法,包括以下步骤:

步骤s100、获取多个主机的ip地址,以每一主机的ip地址一一进行哈希运算得到对应的第一key值,将第一key值置于指定大小的环形空间中。

本实施例中,获取了主机的ip地址后,并不是与现有sh调度方法一样先根据源地址选择相应主机进行调度,而是先对主机的ip地址进行哈希运算,得到第一key值。例如有4台主机,分别记为主机1、主机2、主机3和主机4,其中主机1的ip地址为192.168.1.100,主机2的ip地址为192.168.1.101,主机3的ip地址为192.168.1.102,主机4的ip地址为192.168.1.104;分别对3台主机的ip地址进行哈希运算,并得到对应的第一key值,具体的hash(“192.168.1.100”)=key1、hash(“192.168.1.101”)=key2、hash(“192.168.1.102”)=key3、hash(“192.168.1.103”)=key4,得到的key1、key2、key3和key4都为第一key值;将上述key1、key2、key3和key4都映射到一个环形空间中,然后以顺时针的方向计算将所有的第一key值存储到离自己最近的主机中。

可以看出,第一key值与主机处于同一个哈希空间中。在这样的部署环境中,哈希环是不会更改的,只要算出了对象的hash值就能快速的定位到对应的机器中,这样就能找到对象真正的存储位置了。

步骤s200、获取数据包的源地址,并以数据包的源地址进行哈希运算得到第二key值;

同样的,本实施例中,在获取了数据包的源地址之后,直接对数据包的源地址进行哈希运算,即进行hash(packet.source_ip)的运算,得到第二key值。获取的第二key值并不是部署到环形空间(即哈希环)中,而是作为一个寻址用的中间值。

步骤s300、获取环形空间中所存储多个第一key值中最小值,并判断多个第一key值中最小值是否大于第二key值。

在本实施例中,先获取环形空间中所存储多个第一key值中最小值,即进行min{hash(realserver.ip)}的运算,当得到了min{hash(realserver.ip)}后与hash(packet.source_ip)(即第二key值)进行比较,这一比较结果决定了目的地址的选定方向。

步骤s400、当多个第一key值中最小值大于第二key值时,则以多个第一key值中最小值对应的主机作为目的地址发送所述数据包。

在步骤s400中,若判断了多个第一key值中最小值大于第二key值时,则获取min{hash(realserver.ip)}对应的主机,并以该主机对应的ip地址作为目的地址,数据包根据该目的地址向此处发送。这样,实现了当有某个主机连接到nginx物理服务器上时,调度到相邻hash节点上的连接漂移到加入的主机,不会引发大量的会话漂移,提升负载均衡服务质量。

优选的,如图2所示,所述步骤s100包括:

步骤s101、获取多个主机的ip地址,并以每一主机的ip地址一一进行哈希运算得到对应的第一key值;

步骤s102、获取ipv4的地址个数,并以ipv4的地址个数的两倍值作为空间大小设置一环形空间;

步骤s103、将第一key值置于所述环形空间中。

在步骤s101中,所获取的主机个数可能为0,也可能是大于0的正整数。当有至少一个主机与nginx物理服务器连接时,则获取每一主机的ip地址,并将每一主机的ip地址都进行哈希运算得到第一key值。这样,多个主机的ip地址经哈希运算得到的key值均不一样,也就是每个key值都是唯一的,确保了后面的寻址不会出错。

在步骤s102中,为了确保环形空间中有足够的节点,需至少保证环形空间的大小是ipv4的地址个数的两倍。这与现有技术中采用sh调度时采用232-1的环形空间相比,节省了很多空间大小,以最小的空间大小满足了调度的基本需求。本实施中选择ipv4的地址个数的两倍值作为环形空间的空间大小,是因为目前主机的ip地址格式是ipv4。显然,当主机的ip地址为ipv6的格式,同样可以选择ipv6的地址个数的两倍值作为环形空间的空间大小。

而在步骤s103中,当有多个第一key值需置于所述环形空间中时,是按照第一key值得到的先后顺序,按照顺时针方向依次插入所述环形空间。

普通的sh调度方法中,采用的是hash求余算法,其最为不妥的地方就是在有机器的添加或者删除之后会照成大量的对象存储位置失效,这样就大大的不满足单调性了。基于步骤s101-s103的所采用的基于一致性哈希算法的处理方式,与普通的sh调度方法相比,能有效满足单独性。

以上面4台主机的例子继续举例说明。如果按照顺时针的方向,将key1存储到哈希环中的node1,将key3存储到哈希环中的node2,将key2和key4存储到哈希环中的node3,如果node2出现故障被删除了,那么按照顺时针迁移的方法,object3将会被迁移到node3中,这样仅仅是object3的映射位置发生了变化,其它的对象没有任何的改动。

如果往集群中添加一个新的节点node4,通过对应的哈希算法得到key4,并映射到哈希环中。通过按顺时针迁移的规则,那么object2被迁移到了node4中,其它对象还保持这原有的存储位置。通过对节点的添加和删除的分析,一致性哈希算法在保持了单调性的同时,还是数据的迁移达到了最小,这样的算法对分布式集群来说是非常合适的,避免了大量数据迁移,减小了服务器的的压力。

优选的,如图3所示,所示步骤s400包括:

步骤s401、当多个第一key值中最小值大于第二key值时,则将多个第一key值中最小值记为第一最小key值,并获取与第一最小key值对应主机;

步骤s402、获取与第一最小key值对应主机的ip地址;

步骤s403、以与第一最小key值对应主机的ip地址作为目的地址,将所述数据包发送至所述目的地址,并由该主机转发所述数据包。

优选的,在所述支持哈希调度策略的lvs调度方法中,所述步骤s100之前还包括:

步骤s10、主机通过http和反向代理方式与nginx物理服务器连接;其中,所述nginx物理服务器为imap/pop3/smtp服务器。

更具体的,所述步骤s10包括:

1)nginx物理服务器(即高性能的http和反向代理服务器)中的lxc1-lxc8分别使用vf1-vf8连接至pf1-1,lxc1-lxc8还分别使用vf1-vf8连接只pf1-2;lxc9-lxc16分别使用vf1-vf8连接至pf2-1,lxc9-lxc16还分别使用vf1-vf8连接只pf2-2;其中pf1-1和pf2-1为vlanexternal接口(即外部虚拟局域网接口)、pf1-2、pf2-2均为vlaninternal接口(即内部虚拟局域网接口)

2)nginx物理服务器与ipsv(即ip虚拟服务器)通过后端服务器负载均衡器ipvs-dr连接;

3、)ipsv通过realip与tor建立bgppeer,并发布vip的主机路由,形成ecmp(即等价路由)后与cxp交换机连接,cxp交换机接收来自外网客户端的连接请求。通过上述方式,来实现lvs负载均衡。

优选的,在所述支持哈希调度策略的lvs调度方法中,所述环形空间中每一ipv4的地址对应一个节点,每一节点均复制得到一个对应的虚拟节点。在一致性哈希算法中,为了尽可能的满足平衡性,其引入了虚拟节点。“虚拟节点”(virtualnode)是实际节点(机器)在hash空间的复制(replica),一实际个节点(机器)对应了若干个“虚拟节点”,这个对应个数也成为“复制个数”,“虚拟节点”在hash空间中以hash值排列。通过虚拟节点的引入,对象的分布就比较均衡了。虚拟节点的hash计算可以采用对应节点的ip地址加数字后缀的方式。例如假设node1的ip地址为192.168.1.100。引入“虚拟节点”前,计算cachea的hash值:hash(“192.168.1.100”);

引入“虚拟节点”后,计算“虚拟节”点node1-1和node1-2的hash值:hash(“192.168.1.100#1”);//node1-1,hash(“192.168.1.100#2”);//node1-2。

可见,本发明所述的支持哈希调度策略的lvs调度方法中,当有某个主机连接到nginx物理服务器上时,调度到相邻hash节点上的连接漂移到加入的主机;当有某个主机退出时,调度到其他主机的会话不会漂移,只有调度到退出的主机上的会话会重新分布,实现了降低会话漂移,提升负载均衡服务质量。

基于上述支持哈希调度策略的lvs调度方法,本发明还提供了一种支持哈希调度策略的lvs调度设备。如图4所示,所述支持哈希调度策略的lvs调度设备包括处理器11、存储器12及通信总线;

所述通信总线用于实现处理器和存储器之间的连接通信;

所述处理器用于执行存储器中存储的支持哈希调度策略的lvs调度程序,以实现以下步骤:

获取多个主机的ip地址,以每一主机的ip地址一一进行哈希运算得到对应的第一key值,将第一key值置于指定大小的环形空间中;

获取数据包的源地址,并以数据包的源地址进行哈希运算得到第二key值;

获取环形空间中所存储多个第一key值中最小值,并判断多个第一key值中最小值是否大于第二key值;

当多个第一key值中最小值大于第二key值时,则以多个第一key值中最小值对应的主机作为目的地址发送所述数据包。

在本实施例中,所述的支持哈希调度策略的lvs调度程序10安装并运行于电子装置1中。所述电子装置1可以是桌上型计算机、笔记本、掌上电脑及服务器等计算设备。该电子装置1可包括,但不仅限于,存储器11、处理器12及显示器13。图4仅示出了具有组件11-13的电子装置1,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。

所述存储器11在一些实施例中可以是所述电子装置1的内部存储单元,例如该电子装置1的硬盘或内存。所述存储器11在另一些实施例中也可以是所述电子装置1的外部存储设备,例如所述电子装置1上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。进一步地,所述存储器11还可以既包括所述电子装置1的内部存储单元也包括外部存储设备。所述存储器11用于存储安装于所述电子装置1的应用软件及各类数据,例如所述支持哈希调度策略的lvs调度程序的程序代码等。所述存储器11还可以用于暂时地存储已经输出或者将要输出的数据。

所述处理器12在一些实施例中可以是一中央处理器(centralprocessingunit,cpu),微处理器或其他数据处理芯片,用于运行所述存储器11中存储的程序代码或处理数据,例如执行所述支持哈希调度策略的lvs调度程序10等。

所述显示器13在一些实施例中可以是led显示器、液晶显示器、触控式液晶显示器以及oled(organiclight-emittingdiode,有机发光二极管)触摸器等。所述显示器13用于显示在所述电子装置1中处理的信息以及用于显示可视化的用户界面,例如应用菜单界面、应用图标界面等。所述电子装置1的部件11-13通过系统总线相互通信。

进一步的,在所述支持哈希调度策略的lvs调度设备中,所述获取多个主机的ip地址,以每一主机的ip地址一一进行哈希运算得到对应的第一key值,将第一key值置于指定大小的环形空间中的步骤中,所述处理器还用于执行所述支持哈希调度策略的lvs调度程序10,以实现以下步骤:

获取多个主机的ip地址,并以每一主机的ip地址一一进行哈希运算得到对应的第一key值;

获取ipv4的地址个数,并以ipv4的地址个数的两倍值作为空间大小设置一环形空间;

将第一key值置于所述环形空间中。

进一步的,在所述支持哈希调度策略的lvs调度设备中,所述当多个第一key值中最小值大于第二key值时,则以多个第一key值中最小值对应的主机作为目的地址发送所述数据包的步骤中,所述处理器还用于执行所述支持哈希调度策略的lvs调度程序10,以实现以下步骤:

当多个第一key值中最小值大于第二key值时,则将多个第一key值中最小值记为第一最小key值,并获取与第一最小key值对应主机;

获取与第一最小key值对应主机的ip地址;

以与第一最小key值对应主机的ip地址作为目的地址,将所述数据包发送至所述目的地址,并由该主机转发所述数据包。

进一步的,在所述支持哈希调度策略的lvs调度设备中,所述获取多个主机的ip地址,以每一主机的ip地址一一进行哈希运算得到对应的第一key值,将第一key值置于指定大小的环形空间中的步骤之前,所述处理器还用于执行所述支持哈希调度策略的lvs调度程序10,以实现以下步骤:

主机通过http和反向代理方式与nginx物理服务器连接;其中,所述nginx物理服务器为imap/pop3/smtp服务器。

请参阅图5,是本发明安装支持哈希调度策略的lvs调度程序10较佳实施例的功能模块图。在本实施例中,所述的支持哈希调度策略的lvs调度程序10包括至少一个计算机程序指令段,该计算机程序指令段基于各部分实现的功能不同,可以分成一个或多个模块,所述一个或者多个模块被存储于所述存储器11中,并由一个或多个处理器(本实施例为所述处理器12)所执行,以完成本申请各实施例的支持哈希调度策略的lvs调度方法。例如,在图5中,所述的支持哈希调度策略的lvs调度程序10包括第一获取模块21、第二获取模块22、判断模块23及目的地址获取模块24;其中,第一获取模块21,用于获取多个主机的ip地址,以每一主机的ip地址一一进行哈希运算得到对应的第一key值,将第一key值置于指定大小的环形空间中;第二获取模块22,用于获取数据包的源地址,并以数据包的源地址进行哈希运算得到第二key值;判断模块23,用于获取环形空间中所存储多个第一key值中最小值,并判断多个第一key值中最小值是否大于第二key值;目的地址获取模块24,用于当多个第一key值中最小值大于第二key值时,则以多个第一key值中最小值对应的主机作为目的地址发送所述数据包。

这些模块由处理器12执行,从而实现以下步骤:

获取多个主机的ip地址,以每一主机的ip地址一一进行哈希运算得到对应的第一key值,将第一key值置于指定大小的环形空间中;

获取数据包的源地址,并以数据包的源地址进行哈希运算得到第二key值;

获取环形空间中所存储多个第一key值中最小值,并判断多个第一key值中最小值是否大于第二key值;

当多个第一key值中最小值大于第二key值时,则以多个第一key值中最小值对应的主机作为目的地址发送所述数据包。具体实现与前面的实施例相同,在此不再赘述。

所述获取多个主机的ip地址,以每一主机的ip地址一一进行哈希运算得到对应的第一key值,将第一key值置于指定大小的环形空间中的步骤包括:

获取多个主机的ip地址,并以每一主机的ip地址一一进行哈希运算得到对应的第一key值;

获取ipv4的地址个数,并以ipv4的地址个数的两倍值作为空间大小设置一环形空间;

将第一key值置于所述环形空间中。具体实现与前面的实施例相同,在此不再赘述。

所述当多个第一key值中最小值大于第二key值时,则以多个第一key值中最小值对应的主机作为目的地址发送所述数据包的步骤包括:

当多个第一key值中最小值大于第二key值时,则将多个第一key值中最小值记为第一最小key值,并获取与第一最小key值对应主机;

获取与第一最小key值对应主机的ip地址;

以与第一最小key值对应主机的ip地址作为目的地址,将所述数据包发送至所述目的地址,并由该主机转发所述数据包。具体实现与前面的实施例相同,在此不再赘述。

所述获取多个主机的ip地址,以每一主机的ip地址一一进行哈希运算得到对应的第一key值,将第一key值置于指定大小的环形空间中的步骤之前还包括:

主机通过http和反向代理方式与nginx物理服务器连接;其中,所述nginx物理服务器为imap/pop3/smtp服务器。具体实现与前面的实施例相同,在此不再赘述。

所述环形空间中每一ipv4的地址对应一个节点,每一节点均复制得到一个对应的虚拟节点。具体实现与前面的实施例相同,在此不再赘述。

基于上述支持哈希调度策略的lvs调度方法,本发明还提供了一种存储介质(及计算机可读存储介质)。所述存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现所述的支持哈希调度策略的lvs调度方法的步骤。

综上所述,本发明所提供的支持哈希调度策略的lvs调度方法、设备及存储介质,当有某个主机连接到nginx物理服务器上时,调度到相邻hash节点上的连接漂移到加入的主机;当有某个主机退出时,调度到其他主机的会话不会漂移,只有调度到退出的主机上的会话会重新分布,实现了降低会话漂移,提升负载均衡服务质量。

可以理解的是,对本领域普通技术人员来说,可以根据本发明的技术方案及本发明构思加以等同替换或改变,而所有这些改变或替换都应属于本发明所附的权利要求的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1