利用一致性哈希策略实现网络流量负载均衡的方法与流程

文档序号:11253889阅读:696来源:国知局
利用一致性哈希策略实现网络流量负载均衡的方法与流程

本发明涉及互联网技术领域,尤其是涉及一种利用一致性哈希策略实现网络流量负载均衡的方法。



背景技术:

随着社会的发展,互联网用户快速增长带动了互联网经济的蓬勃发展,移动互联网、电子商务、网络视频、品牌网络广告、网上招聘、网络游戏等在极短的时间得到快速发展并积累了众多用户,成为了人们生活中不可或缺的一部分。

在现有cdn技术中,用户使用互联网服务时,一般先访问域名,通过dns协议获取服务的ip地址,再通过ip地址去访问真正的服务。随时服务规模逐步扩大,访问请求也越来越多,此时会使用一组服务器组成服务器集群,由服务器集群一并对外提供服务。此时,用户访问的入口点仍是域名,通过dns协议解析出此集群的ip地址。

目前常见的解析方式有如下几种:

方案一:解析出来一个ip,此ip落在单独的负载均衡设备上面,由负载均衡设备进行集群内部的调度。此方案在某一台失败时能够自动在内部剔除掉,故障机器剔除时间在1s内。此方案的缺点:需要增加额外的负载均衡设备,增加了成本。

方案二:解析出来一组ip,每个ip对应集群中的一台设备。与方案一相比,此方案不需要额外的负载均衡机器。但是,此方案的缺点也很明显:故障恢复依赖于dns解析,时间在1min以上,尤其是部分省份运营商的localdns不遵循协议。

方案三:解析出来一个ip,此ip经交换机ecmp协议等价路由分配到多台设备上。相对于方案一、二,此方案既不需要额外的负载均衡机器,而且故障恢复时间在1s内。但是,此方案的缺点为:故障恢复时,受限于ecmp协议收敛,会发生整个集群全网抖动。

综上所述,这三各方案的缺点都很明显,没有办法很好的实现网络流量负载的均衡。



技术实现要素:

本发明的目的在于提供一种利用一致性哈希策略实现网络流量负载均衡的方法,以解决上述背景技术中提出的问题和缺陷,在不增加设备的前提下,降低了故障处理时间,同时也不会导致设备异常时的收敛和抖动。

为实现上述目的,本发明提供如下技术方案:

一种利用一致性哈希策略实现网络流量负载均衡的方法,由dns解析出ip地址,ip地址对应一组服务设备,这组设备同时对外提供服务;交换机采用一致性哈希策略,将流量按一致性哈希算法,分配到这组服务设备中对应的服务设备上;

当其中的某台服务设备发生故障不能提供服务时,通过交换机的一致性哈希算法,将故障设备的流量选出,再次平均分配给这组服务设备中其他正常的设备,即将流量尽可能均匀分布到所有的节点上去,使得正常设备的流量受到的抖动影响较小,能够不中断地提供服务;

当新增服务设备时,同样通过交换机的一致性哈希算法,将流量尽可能均匀分布到所有的节点上去,即将流量在这组服务设备中所有的设备上进行均衡分配。

作为上述技术方案的优选,集群维护主备两个ip地址,正常情况下通过dns解析到主ip提供服务,备用ip不服务,当某故障设备恢复后、或新增服务设备时启用配置备用ip,再将dns解析从主ip调整为备用ip。

作为上述技术方案的进一步说明,利用一致性哈希策略实现网络流量负载均衡的方法,具体实现方式为:

当有域名被解析到不同的服务设备上,在交换机上利用服务设备的ip为关键字进行哈希算法,使不同的服务设备分别确定其在哈希环上的位置;

当有网络流量解析过来时,交换机通过一致性哈希算法计确定此网络流量在环上的位置,从此位置沿环顺时针“行走”,第一台遇到的服务设备就是其应该定位到的服务设备,因此该网络流量将被定为到该服务设备上;同理,当有其他的流量过来时,通过同样的方法均衡地解析到其他的服务设备上;

当其中的某台服务设备发生故障不能提供服务时,通过交换机的一致性哈希算法,将故障设备的流量再次平均分配给这组服务设备中其他正常的设备,即将流量尽可能均匀分布到所有的节点上去,使得正常设备的流量受到的抖动影响较小,能够不中断地提供服务;

当新增一台服务设备时,同样通过交换机的一致性哈希算法,启用配置备用ip,将流量尽可能均匀分布到所有的节点上去,即将流量在这组服务设备中所有的设备上进行均衡分配。

作为上述技术方案的优选,所述的一组服务设备是指多台服务器。

作为上述技术方案的优选,所述的对外提供服务包括访问域名、登陆操作、提供新闻类的服务、视频浏览服务、软件下载服务。

本发明的优点:

1.没有增加新的负载均衡设备,完全借助交换机的路由功能,实现负载均衡功能。

2.当一台设备故障时,通过交换机的一致性哈希算法,将故障设备的流量分配给其他正常的设备,正常设备的流量受到的抖动影响较小,能够不中断地提供服务。

3.当发生故障时,由于是设备集群同时承载流量,可不中断提供服务。

4.当某台设备故障恢复时,重新加入到交换机一致性哈希列表里,会导致一致性哈希部分流量的重新分配,产生抖动。为解决该问题,集群维护主备两个ip,正常情况下通过dns解析到主ip提供服务,备ip不服务。当某故障设备恢复后配置备用ip,再将dns解析从主ip调整为备ip,从而使流量平滑切换避免抖动。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例的一种利用一致性哈希策略实现网络流量负载均衡的方法的整个哈希空间环示意图。

图2为本发明实施例的一种利用一致性哈希策略实现网络流量负载均衡的方法的使用ip地址哈希后在环空间的位置的示意图。

图3为本发明实施例的一种利用一致性哈希策略实现网络流量负载均衡的方法的四个流量对象在环空间的位置的示意图。

图4为本发明实施例的一种利用一致性哈希策略实现网络流量负载均衡的方法的需要删除某个节点设备的示意图。

图5为本发明实施例的一种利用一致性哈希策略实现网络流量负载均衡的方法的需要增加某个节点设备的示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明实施例中,一致性哈希策略提出了在动态变化的cache环境中,哈希算法应该满足的4个适应条件:

均衡性:是指哈希的结果能够尽可能分布到所有的缓冲中去,这样可以使得所有的缓冲空间都得到利用。

单调性:单调性是指如果已经有一些内容通过哈希分派到了相应的缓冲中,又有新的缓冲区加入到系统中,那么哈希的结果应能够保证原有已分配的内容可以被映射到新的缓冲区中去,而不会被映射到旧的缓冲集合中的其他缓冲区。

分散性:在分布式环境中,终端有可能看不到所有的缓冲,而是只能看到其中的一部分。当终端希望通过哈希过程将内容映射到缓冲上时,由于不同终端所见的缓冲范围有可能不同,从而导致哈希的结果不一致,最终的结果是相同的内容被不同的终端映射到不同的缓冲区中。这种情况显然是应该避免的,因为它导致相同内容被存储到不同缓冲中去,降低了系统存储的效率。分散性就是上述情况发生的严重程度,尽量避免不一致的情况发生,也就是尽量降低分散性。

负载:既然不同的终端可能将相同的内容映射到不同的缓冲区中,那么对于一个特定的缓冲区而言,也可能被不同的用户映射为不同的内容。与分散性一样,这种情况也是应当避免的,尽量降低缓冲的负荷。

本发明实施例中,所述的一致性哈希策略具体是指,主要使用在分布式数据存储系统中,按照一定的策略将数据尽可能均匀分布到所有的存储节点上去,使得系统具有良好的负载均衡性能和扩展性。首先,一致性哈希策略对“存储节点”的哈希值进行计算,其将存储空间抽象为一个环。其次,对要存储的数据也进行同样的哈希计算,按顺时针方向将其映射到离其最近的节点上去。

假设有一个域名,被解析到4台不同的服务设备上,在交换机上利用服务设备的ip为关键字进行哈希,这样这4台服务设备就能确定其在哈希环上的位置。

当有网络流量解析过来时,交换机通过一致性哈希算法计确定此网络流量在环上的位置,从此位置沿环顺时针“行走”,第一台遇到的服务设备就是其应该定位到的服务设备,因此该网络流量将被定为到该服务设备上。同样的道理,当有其他的流量过来时,通过同样的方法均衡地解析到其他的服务设备。

当其中的服务设备3发生故障不能提供服务时,通过交换机的一致性哈希算法,将故障设备的流量分配给其他正常的设备1、2、4,正常设备的流量受到的抖动影响较小,能够不中断地提供服务。

当新增一台服务设备5时,同样通过交换机的一致性哈希算法,将流量在这5台设备上进行均衡分配。

实施例

本发明实施例其具体实现过程如下:

如图1所示,一致性哈希策略将整个哈希值空间组织成一个虚拟的圆环,如假设某哈希函数h的值空间为0至(232-1)(即哈希值是一个32位无符号整形):

整个空间按顺时针方向组织。

0和232-1在零点中方向重合。

下一步将各个服务器使用hash算法进行一个哈希,具体可以选择服务器的ip或主机名作为关键字进行哈希,这样每台机器就能确定其在哈希环上的位置。这里假设有三台服务设备,使用ip地址哈希后在环空间的位置如图2所示。

接下来使用如下算法定位流量访问到相应服务设备:将流量key使用相同的函数hash计算出哈希值h,通根据h确定此数据在环上的位置,从此位置沿环顺时针“行走”,第一台遇到的服务器就是其应该定位到的服务器。

例如我们有a、b、c、d四个流量对象,经过哈希计算后,在环空间上的位置如图3所示。

根据一致性哈希算法,流量a会被定位到服务设备1上,d被定为到服务设备3上,而b、c分别被定为到服务设备2上。因此,通过交换机的一致性哈希算法可以使得多个服务节点间的负载相对均衡,可以最大程度的避免资源的浪费以及服务器过载。

另外,致性哈希在删除或增加节点时,不会对其他节点所有流量重新分配,不会对其他节点的流量产生太多影响,避免流量产生抖动:

1.删除节点:如图4所示,现假设删除服务设备3:

可以看到此时a、c、b不会受到影响,只有d被重定位到服务设备2。一般的,在一致性哈希算法中,如果一台服务设备不可用,则受影响的流量仅仅是此服务设备到其环空间中前一台服务设备(即顺着逆时针方向行走遇到的第一台服务器)之间数据,其它不会受到影响。

2.增加节点:如图5所示,假设一台服务设备4:

此时a、d、c不受影响,只有b需要重定位到新的服务设备4。一般的,在一致性哈希算法中,如果增加一台服务设备,则受影响的流量仅仅是新服务设备到其环空间中前一台服务设备(即顺着逆时针方向行走遇到的第一台服务器)之间数据,其它不会受到影响。

综上所述,一致性哈希算法对于节点的增减都只需重定位环空间中的一小部分数据,具有较好的容错性和可扩展性。

以上所述仅为本发明的较佳实施方式作了详细说明,但是本发明并不限于上述实施方式,保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内,本发明实施例还可以在不脱离本专利宗旨的前提下做出各种变化。因此,本发明的保护范围应该以权利要求的保护范围为准。

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