专利名称:一种双控制器系统的负载均衡方法
技术领域:
本发明涉及一种双控制器系统的负载均衡方法,特别是涉及一种使用公用IP地址的双控制器系统的负载均衡方法。
背景技术:
计算机集群简称集群(Cluster),是一起运作以提供高可用性资源的许多服务器的集合。就像冗余部件可以使用户免于硬件故障一样,集群技术则可以使用户免于整个系统的瘫痪以及操作系统和应用层次的故障。一个服务器集群包含多台拥有共享数据存储空间的服务器,每台服务器通常被称为节点(node),各服务器之间通过局域网进行互相连接; 当其中一台服务器发生故障时,它所运行的应用程序将交由与之相连的服务器自动接管。 集群技术不仅仅能够提供更长的运行时间,它在尽可能地减少与既定停机有关的停机时间方面同样有着重要意义。例如,如果使用集群,用户可以在关闭一台服务器的同时,不必与用户断开即可进行应用、硬件、操作系统的“流动升级”。集群系统通过功能整合和故障过渡技术实现了系统的高可用性和高可靠性并且集群技术还能够提供相对低廉的总体拥有成本和强大灵活的系统扩充能力。目前在计算机虚拟化集群中,双控制器(dual controller)系统作为一个从 (slave)节点,统一由主(master)节点来分配负载以达到负载均衡(loadbalancing);在一个从节点的双控制器,各自又把自己本地的网卡(Networldnterface Card,简称NIC)绑定 (bonding)。上述两种方法,均提供了高可用性、高能效的虚拟化服务。在双控制器节点中,两个控制器彼此的网卡相对独立,每个控制器的网络设备至少有一个IP地址,以供用户分别访问,当其中一个控制器发生故障时,另一个控制器可提供失效备援(failover),失效备援为系统备援能力的一种,当系统中一项设备失效而无法运行时,另一项设备可自动接替原失效设备所执行的工作。如此便实现了高可用性的虚拟化服务。但是,现有技术中当用户访问系统并发出任务请求时,主节点根据特定的算法,选择承担该任务的控制器,同一节点上的两个控制器之间仅存在失效备援的关系。当所有用户都访问双控制器节点中的某一个控制器时,该控制器满负载而另一个控制器却空闲,这样会导致负载失衡,出现热点。此外,理论上,不同MAC(英文全称Media Access Control,中文名称介质访问控制)地址(MAC地址,或称为硬件地址,用来定义网络设备的位置。一个主机会有一个IP 地址,而每个网络设备会有一个专属于它的MAC地址,MAC地址是烧录在网卡内的)、相同IP 地址,会形成冲突,致使TCP/IP网络无法通讯。因为,当某客户端主机想访问某IP地址却发现ARP(英文全称Address Resolution Protocol,中文名称地址解析协议,数据包在节点之间的移动都是由ARP负责将IP地址映射到MAC地址上来完成的)缓存表中没有对应的MAC地址时,会进行广播问询这个IP地址的MAC地址是什么?而其将得到来自不同主机的不同MAC地址的答复,因此客户端主机将无所适从,无法通讯。
发明内容
为了解决上述现有技术中所存在的问题,本发明的目的在于提供一种使用公用IP 地址的双控制器系统的负载均衡方法,该方法能够使一个使用公用IP地址的双控制器系统节点上的不同控制器之间的负载均衡,并解决不同MAC地址、相同IP地址的冲突问题,从而实现了双控制器系统的高能效虚拟化服务。本发明所提供的一种双控制器系统的负载均衡方法,包括以下步骤当双控制器系统接收到访问者对控制器MAC地址的ARP问询时,采集同一双控节点的两个控制器的CPU占用率;指定CPU占用率较小的一个控制器响应ARP问询并进行登记,而另一控制器对ARP 问询不予响应;当双控制器系统接收到访问者的IP数据包时,判断本地网络连接的数量是否唯一,若连接数量唯一,则不移转至另一控制器而直接处理数据包,若连接数量不唯一,则判断本地网络的控制器的CPU占用率是否超过一个预定阈值,如果未超过该阈值,则直接处理数据包;如果本地网络的控制器的CPU占用率超过该阈值时,则检测另一控制器的CPU空闲率是否低于一个预定阈值,如果未低于该阈值,则通过本地网络的控制器直接处理数据包;如果另一控制器的CPU空闲率低于该阈值,则令本地网络的控制器对当前访问者的IP数据包不再应答,并通知另一控制器查验(Ping)访问者;当访问者接收到另一控制器的查验(ping)包后,将其ARP缓存表中与公用IP地址相对应的MAC地址更新为另一控制器的MAC地址。上述本发明所提供的双控制器系统的负载均衡方法,由于先比较两个控制器上的负载状况,然后进行负载均衡处理并同步信息,因此既可以解决现有技术的双控制器系统中不同MAC地址、相同IP地址形成冲突的问题,还能够根据网络对单个控制器的CPU占用率及CPU空闲率,部分地进行失效备援,从而实现了双控制器系统的高能效虚拟化服务。
图1为本发明的双控制器系统的负载均衡方法所运行的双控制器系统的系统架构示意图;图2为本发明的双控制器系统的负载均衡方法的步骤流程图。
具体实施例方式请参考图1,图1为本发明的双控制器系统的负载均衡方法所运行的双控制器系统的系统架构示意图。如图1所示,由于本发明在同一双控制器节点的两个控制器Co、Cl 之间加入了流量统计模块10、负载分配模块20和通信模块30,因此,当接受任务时,系统会先比较两个控制器⑶、Cl上的负载状况,然后进行负载均衡处理并同步信息。在双控制器系统中,控制器C0、C1都有自己的MAC地址,即便在同一个控制器的单独控制下,由于绑定模式的不同,也允许有一个以上MAC地址存在的情况。因此,本发明的目的之一是首先要解决不同MAC地址、相同IP地址的冲突问题。
网络通讯双方是MAC地址找MAC地址,IP地址只是抽象的名字。通讯双方的ARP 缓存表中,MAC地址与IP地址是一一对应的。也就是说,每一个双控制器系统的访问者,在同一时刻,只知道双控制器系统的一个控制器的网络设备的MAC地址,此MAC地址直到有网络设备发生更新时才会变化,其与公用IP地址是相对应的。那么,当访问者最初通过ARP缓存表问询MAC地址时,先让双控制器系统根据两个控制器的CPU占用程度的比较结果,指定CPU占用程度较少的一方控制器响应ARP问询,而另一控制器对ARP问询不予理睬,从而避免了不同MAC地址、相同IP地址的冲突。图2为本发明的双控制器系统的负载均衡方法的步骤流程图。如图2中所示的步骤流程图可知,本发明所提供的一种双控制器系统的负载均衡方法,包括以下步骤当双控制器系统接收到访问者对控制器MAC地址的ARP问询时,采集同一双控节点的两个控制器CO、Cl的CPU占用率(步骤200);指定CPU占用率较小的一个控制器CO响应ARP问询并进行登记,而另一控制器Cl 对ARP问询不予响应(步骤201);当双控制器系统接收到访问者的IP数据包时(步骤202),判断本地网络连接的数量是否唯一(步骤20 ,若连接数量唯一,则不移转至另一控制器Cl而直接处理数据包 (步骤205),若连接数量不唯一,则判断本地网络的控制器CO的CPU占用率是否超过一个预定阈值(步骤204),如果未超过该阈值,则直接处理数据包(步骤205);如果本地网络的控制器CO的CPU占用率超过该阈值时,则检测另一控制器Cl的 CPU空闲率是否低于一个预定阈值(步骤206),如果未低于该阈值,则通过本地网络的控制器CO直接处理数据包(步骤205);如果另一控制器Cl的CPU空闲率低于该阈值,则令本地网络的控制器CO对当前访问者的IP数据包不再应答,并通知另一控制器Cl查验(ping)访问者(步骤207);当访问者接收到另一控制器Cl的查验(ping)包后,将其ARP缓存表中与公用IP 地址相对应的MAC地址更新为另一控制器Cl的MAC地址(步骤208)。通过上述本发明的双控制器系统的负载均衡方法,系统管理员可设定一个网络的单个控制器CO的CPU占用率阈值,例如为80%,并可再设定另一控制器Cl的CPU空闲率阈值,例如为30%。此外,还须确认是否是同一个连接(即,来自同一个端的请求)造成,也就是判断本地网络连接的数量是否唯一,若连接数量大于1,则可能需要进一步检测另一控制器Cl的CPU空闲率是否低于一个预定阈值,若连接数量等于1,则不必移转至另一控制器 Cl,从而避免了现有技术的双控制器系统中不同MAC地址、相同IP地址形成冲突的问题。当单个控制器CO的CPU占用率超过阈值时,便去检测另一控制器Cl的CPU空闲率是否低于阈值。如果控制器Cl的CPU空闲率低于阈值,则控制器CO对当前的一部分访问者的IP数据包将不再应答,并通知控制器Cl查验(ping)这些访问者。如此,当访问者收到控制器Cl的查验(ping)包时,它的ARP缓存表中与公用IP地址相对应的MAC地址会被更新为控制器Cl的MAC地址。以后访问者会自动与单个控制器Cl通讯,它的服务将由控制器Cl来承担。即,能够根据网络对单个控制器的CPU占用率及CPU空闲率,部分地进行失效备援,从而实现了双控制器系统的高能效虚拟化服务。以上所述仅为本发明其中的较佳实施例而已,并非用来限定本发明的实施范围; 即凡依本发明权利要求所作的均等变化与修改,皆为本发明专利范围所涵盖。
权利要求
1.一种双控制器系统的负载均衡方法,其特征在于,所述方法包括以下步骤当双控制器系统接收到访问者对控制器MAC地址的ARP问询时,采集同一双控节点的两个控制器的CPU占用率;指定CPU占用率较小的一个控制器响应所述ARP问询并进行登记,而另一控制器对所述ARP问询不予响应;当所述双控制器系统接收到访问者的IP数据包时,判断本地网络连接的数量是否唯一,若连接数量唯一,则不移转至另一控制器而直接处理数据包,若连接数量不唯一,则判断本地网络的控制器的CPU占用率是否超过一个预定阈值,如果未超过该阈值,则直接处理数据包;如果本地网络的控制器的CPU占用率超过该阈值时,则检测另一控制器的CPU空闲率是否低于一个预定阈值,如果未低于该阈值,则通过本地网络的控制器直接处理数据包;如果另一控制器的CPU空闲率低于该阈值,则令本地网络的控制器对当前访问者的IP 数据包不再应答,并通知另一控制器查验所述访问者;当所述访问者接收到另一控制器的查验包后,将其ARP缓存表中与公用IP地址相对应的MAC地址更新为另一控制器的MAC地址。
2.如权利要求1所述的方法,其特征在于,所述CPU占用率的预定阈值设定为80%。
3.如权利要求1所述的方法,其特征在于,所述CPU空闲率的预定阈值设定为30%。
全文摘要
本发明公开了一种双控制器系统的负载均衡方法,特别是公开了一种使用公用IP地址的双控制器系统的负载均衡方法,该方法由于通过先比较两个控制器上的负载状况,然后进行负载均衡处理并同步信息,因此既可以解决现有技术的双控制器系统中不同MAC地址、相同IP地址形成冲突的问题,还能够根据网络对单个控制器的CPU占用率及CPU空闲率,部分地进行失效备援,从而实现了双控制器系统的高能效虚拟化服务。
文档编号H04L29/08GK102316136SQ20101022000
公开日2012年1月11日 申请日期2010年7月1日 优先权日2010年7月1日
发明者焦旭东, 陈志丰 申请人:英业达股份有限公司