具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1示出了本发明一个实施例的在服务器集群上实现负载均衡的方法,该方法应用于服务器集群,服务器集群是将很多具有相同功能的服务器集中起来一起提供某种服务,它提供了一种廉价有效的方法扩展服务器带宽和增加吞吐量。集群中一个服务器对一部分客户端提供服务,而另外服务器对另外一部分 客户端提供服务,服务器上客户端负载数是否均衡很大程度上决定于客户端服务质量。
所述方法包括:
步骤S1,获取客户端发送的地址解析协议ARP请求报文;若节点服务器具有ARP应答令牌,返回所述客户端ARP应答报文,所述ARP应答令牌表示节点服务器对于ARP请求报文具有应答权限;
其中,本发明实施例中,服务器集群可以由具有相同功能的两台以上的节点服务器组成;
客户端和节点服务器进行通信,首先需要知道节点服务器的MAC地址,需要先发送一个ARP请求报文,然后接收节点服务器返回的ARP应答报文,从而客户端获取到网络地址对应的节点服务器的MAC地址。
根据服务器集群上的每一个节点服务器所对应的网络适配器物理接口配置逻辑接口,根据所述逻辑接口,为集群内的每一个节点服务器配置相同的网络地址,根据所述网络地址,将客户端发送的ARP请求报文传输到节点服务器的相应的网络适配器上,
根据服务器集群上的每一个节点服务器的网络适配器物理接口配置逻辑接口,是通过对客户端提供服务的网络适配器绑定在一起在逻辑上形成一个逻辑适配器接口,将每一个节点服务器的网络适配器物理接口接收到的报文放入协议队列,并从协议队列获取发送的报文,从而根据不同的客户端选择不同的网络适配器物理接口发送报文。当客户端发送ARP请求报文后,服务器集群中所有节点服务器均会收到该客户端广播发送的ARP请求报文。
本实施例中,在服务器集群中的每个节点服务器使用同一个网络地址,该相同的网络地址对应多个MAC地址,每个网络适配器的物理接口上均有一个MAC地址,使用不同的网络适配器的MAC地址和不同的客户端进行通信,通过为每个节点服务器配置相同的网络地址,从而可以根据上述的网络地址,即,将来自客户端的不同的请求发布到每个节点服务器的网络适配器上。
具有地址解析协议ARP应答令牌的节点服务器作为回应ARP应答报文的 节点服务器,返回客户端ARP应答报文;
本实施例中,可以按照节点服务器的发布顺序,预先为发布时间在先的节点服务器在集群服务器上设置设置ARP应答令牌;
本实施例中,可选的,当该节点服务器配置多个网络适配器时,每次应答顺序选择其中一个网络适配器及其MAC地址进行应答,这样通过该节点服务器的网络流量便可以均衡分配到该节点服务器的各个网络适配器上。
服务器集群中,节点服务器拥有唯一的ARP应答令牌,该应答令牌是软件上的逻辑资源,在集群中可以唯一的标识应答某个客户点的ARP请求报文的权限,当客户端发起ARP请求报文后,因为可以通过广播的方式发送,所以,服务器集群中所有节点服务器均会收到该客户端的ARP请求报文,但是只有拥有唯一令牌的节点服务器有权限向该客户端响应ARP应答报文,其他的节点服务器将忽略该ARP请求报文,当客户端接收到ARP应答报文,则说明一次ARP的应答已经成功,此时,该节点服务器可以通过预置的策略将ARP应答令牌转移到集群内的其他节点服务器上。本实施例中,如果ARP请求报文来自之前已经应答的客户端,则由之前应答该客户端的节点服务器进行应答。
例如,在本实施例中,其中,来自客户端的ARP请求报文中可以包含上一次应答该客户端的ARP请求的ARP应答报文中携带的网络适配器地址。如果客户端已经收到了节点服务器的ARP应答报文,如果某一段时间后,该客户端再次发送ARP请求报文到服务器集群,则仍然是服务器集群中的该节点服务器回复ARP应答报文。
可选的,本实施例中,定期的,在服务器集群中,根据私有网络,同步服务器集群的负载信息,所述每一个节点服务器的负载信息记录在每一个节点服务器的负载表中。同步所述服务器集群的负载信息是将所述某一个节点服务器的负载表中所记录的负载信息同步到其他节点服务器的负载表上。
步骤S2,获取服务器集群中的每个节点服务器的负载信息,根据查询到的负载的大小从服务器集群中选择出负载较小的节点服务器,将所述ARP应 答令牌传递至负载较小的节点服务器,将所述具有ARP应答令牌的节点服务器的负载信息同步到该负载较小的节点服务器上;其中,ARP应答报文中包含客户端请求的网络地址和节点服务器选择的网络适配器MAC地址。
需要说明的是,来自客户端的ARP请求报文中可以包含上一次应答该客户端的ARP请求的ARP应答报文中携带的网络适配器地址。如果ARP请求报文来自之前已经应答的客户端,则由之前应答过该客户端的节点服务器应答该服务器。
当节点服务器对某个客户端响应ARP应答报文后,将ARP应答令牌根据一定的负载均衡策略传递到服务器集群中的另一个节点服务器,集群中的每一个节点服务器可以按照一定的周期对负载的客户端回复ARP应答报文,也可以根据用户的实际需要对负载的客户端回复ARP应答报文。
服务器集群采用令牌方式可以使集群内的所有节点服务器参与执行负载均衡,节点服务器可根据自身网络适配器的物理接口的配置情况、负载情况来灵活的进行负荷分担,从而提高服务器网络带宽利用效率,特别是在节点服务器配置多个网络适配器的情况下,可以充分利用节点服务器的每一个网络适配器;减少了现有的服务器集群对负载均衡设备的依赖而产生的性能瓶颈。
另外,本实施例中,服务器集群对客户端提供服务的网络适配器绑定在一起在逻辑上形成一个适配器接口,所有服务器共享相同网络地址,减少网络地址配置,同时避免由于集群内的节点服务器具有不同的网络地址从而需要映射或转发的,带来额外的传输时延。
图2示出了本发明另一个实施例的在服务器集群上实现负载均衡的方法,
本实施例以ARP应答报文令牌为例,首先需要获取服务器集群中的每个节点服务器的负载信息,根据查询到的负载的大小从服务器集群中选择出负载较小的节点服务器,将所述ARP应答令牌传递至负载较小的节点服务器,将所述具有ARP应答令牌的节点服务器的负载信息同步到该负载较小的节点服务器上,
将ARP应答报文令牌传递至服务器集群中的负载较小节点服务器,以使 负载较小的节点服务器对其他发送ARP请求报文的客户端回应ARP应答报文,包括:
S21,获取服务器集群中的每个节点服务器的负载信息;
S22,根据查询到的负载大小从服务器集群中选择出负载较小的节点服务器,
其中,
根据每个节点服务器查询到的该节点服务器的CPU利用率,确定该节点服务器的负载信息;其中,若某个节点服务器的CPU利用率较高,则说明其负载较高,反之,则说明负载较小;
或,根据每个节点服务器所负载的客户端数量和节点服务器配置网卡的数量之间的比例,确定该节点服务器的负载信息。
本发明实施例中,可以实施为根据某个节点服务器负载的客户端的数量和该节点服务器上的处于工作状态的网卡的数量之间的比例确定负载大小,如果该比率较大,则说明负载较高,反之,则说明负载不高。
本发明实施例中,也可以根据每个节点服务器所占据的服务器带宽流量,确定该节点服务器的负载情况。
S23,将所述ARP应答报文令牌传递至服务器集群中的节点服务器;
S24,将所述节点服务器的负载信息同步到集群中的节点服务器上,并在所述节点服务器的负载表上保存所述负载信息。
通过服务器集群上各个节点服务器之间的私有网络,同步服务器集群的负载信息,所述每一个节点服务器的负载信息记录在每一个节点服务器的负载表中,负载表记录的信息包括:节点服务器、客户端、节点服务器的网络适配器的信息,例如,节点服务器服务的客户端、节点网络适配器信息、客户端与网络适配器的对应关系。
图3示出了本发明另一个实施例的在服务器集群上实现负载均衡过程中检测节点服务器的有效性的方法,
所述步骤包括:
步骤S3,所述节点服务器部署有至少一个检测模块,检测所述集群内的待检测的节点服务器是否失效;
如果所述待检测的节点服务器是活动节点,且所述待检测的节点服务器及服务器集群内其他的节点服务器未携带ARP应答令牌,为所述服务器集群配置ARP应答令牌;
本实施例中,后台定期对服务器集群中的节点服务器进行通讯扫描,检测其中的节点服务器是否失效,可以通过判断该待检测节点服务器是否可以和其他节点服务器之间正常通信,并且该待检测节点服务器中是否存在至少一个可以有效的对客户端提供服务的网络适配器,如果该待检测节点服务器可以与集群内的其他节点服务器进行正常通信,并且该待检测节点上存在至少一个可以有效的对客户端提供服务的网络适配器,则说明该待检测节点服务器是活动节点,反之,则是失效节点。
步骤S4,如果检测到所述待检测的节点服务器失效,将失效的该节点服务器所服务的客户端信息传递到服务器集群中所有的存活的节点服务器,选择其中一个存活的节点服务器向上述客户端回应ARP应答报文。
节点服务器失效后,该节点服务器的客户端需要选择存活的节点服务器对所述客户端继续服务,可以通过软件模拟ARP请求报文,从而选择新的活动节点来应答该ARP请求报文,从而实现对客户端服务的切换。
当找到活动节点后,在所有活动节点上查询是否存在令牌,如无则为活动节点生成令牌;可以按照节点服务器的发布顺序,生成逻辑资源,从而配置ARP应答报文令牌作为ARP应答令牌;
将失效节点服务的客户端形成ARP请求报文同步到持有令牌的节点服务器;由持有令牌的节点服务器接收该ARP请求报文并应答,然后将令牌传递下一个节点服务器。
如果失效节点服务器上存在令牌,则由所述失效的节点服务器删除令牌,并停止ARP应答报文服务。
本实施例中,所述节点服务器部署有至少一个检测模块,具体的,本发明 实施例可以在服务器集群内的每个节点服务器上使用检测软件检测该节点服务器待检测的节点服务器的失效情况。
在服务器集群中,存在脑裂的情况,即由于私有网络故障原因,一个服务器集群分为了两个部分,需要由服务器集群本身仲裁哪部分为真正为客户端提供服务的服务器集群,可以通过设置阈值的方式,例如,设置需要半数以上活动节点组成一个服务器集群,另一部分节点服务器组成的服务器集群则不能提供服务。具体的,可以根据实际的需要确定服务器集群中需要设置多少节点服务器组成一个新的可提供服务的服务器集群。
本发明实施例中,通过节点失效检测,从而根据ARP应答令牌的生成和删除来解决集群拓扑问题。避免多套集群拓扑机制之间产生冲突。
图4示出了本发明一个实施例的节点服务器,
其中,包括:网络适配器管理和ARP处理模块10,获取客户端发送的地址解析协议ARP请求报文;若节点服务器具有ARP应答令牌,返回所述客户端ARP应答报文,所述ARP应答令牌用于表示节点服务器对于ARP请求报文的应答权限;
表同步和令牌传递模块20,获取服务器集群中的每个节点服务器的负载信息;根据查询到的负载的大小从服务器集群中选择出负载较小的节点服务器,将所述ARP应答令牌传递至负载较小的节点服务器,将所述具有ARP应答令牌的节点服务器的负载信息同步到该负载较小的节点服务器上;
负载表30,存放在节点服务器上,用于记录负载信息,所述负载信息包括节点服务器服务的客户端、网络适配器信息、客户端与网络适配器对应关系。
本实施例中,优选的,可以按照节点服务器的发布顺序,生成逻辑资源,从而配置ARP应答报文令牌作为ARP应答令牌;其中,ARP应答报文中包含客户端请求的网络地址和节点服务器选择的网络适配器MAC地址。
本实施例中,所述节点服务器还包括:配置模块40,根据服务器集群上每一个节点服务器所对应的网络适配器物理接口配置逻辑接口,根据所述逻辑接口,为集群内的节点服务器配置相同的网络地址,以便于节点服务器和服务 器集群上的其他节点服务器根据所述网络地址接收客户端发送的ARP请求报文。
在本发明实施例中,为了进一步的查询到各个节点服务器的负载情况,
表同步和令牌传递模块20还用于,根据节点服务器查询到的该节点服务器的CPU利用率,确定该节点服务器的负载信息;或,
根据节点服务器所负载的客户端数量和节点服务器配置网卡的数量之间的比例,确定该节点服务器的负载信息。
本实施例中,服务器集群采用令牌方式使所有节点服务器参与执行负载均衡,节点服务器可根据自身网络适配器的物理接口的配置情况、负载情况来灵活进行负荷分担,提高服务器网络带宽利用效率,特别是在节点服务器配置多块网络适配器情况下,充分利用节点服务器的所有网络适配器;避免对负载均衡设备的依赖而产生的性能瓶颈。
图5示出了本发明一个实施例中的服务区集群中的节点服务器,其中,节点服务器和运行在服务器集群上的检测模块50进行信息交互,以便于服务器集群通过检测模块检测该节点服务器的运行状态,
所述节点服务器部署有至少一个检测模块50,检测所述集群内的待检测的节点服务器是否失效;
如果所述待检测的节点服务器是活动节点,且所述待检测的节点服务器及服务器集群内其他的节点服务器未携带ARP应答令牌,为所述服务器集群配置ARP应答令牌;
如果检测到所述待检测的节点服务器失效,将失效的该节点服务器所服务的客户端信息传递到服务器集群中所有的存活的节点服务器,选择其中一个存活的节点服务器向上述客户端回应ARP应答报文。
如果检测到所述待检测的节点服务器失效,将失效节点服务器所服务的客户端信息传递到所有的存活的节点服务器,选择其中一个存活的节点服务器对上述客户端回应ARP应答报文。
节点服务器失效后,此节点服务器服务的客户端要选择存活的节点服务器 对其继续服务,这里的ARP请求报文并不是客户端发起的,而是由软件模拟的,目的是选择新的活动节点来应答ARP请求报文,从而实现对客户端服务的切换。
本发明实施例中,通过节点失效检测,从而实现根据ARP应答令牌的生成和删除来解决集群拓扑问题。避免多套集群拓扑机制之间产生冲突。
图6示出了本发明一个实施例的服务器集群,该集群包括至少两个节点服务器,所述节点服务器之间通过集群私有网络进行信息转发,所述节点服务器通过交换机连接到对应的客户端。本发明实施例的服务器集群可以是本地集群。
本发明实施例中,服务器集群采用令牌方式使集群内的所有节点服务器参与执行负载均衡,节点服务器可根据自身网络适配器的配置情况、节点服务器的负载情况来灵活进行负荷分担,提高节点服务器网络带宽利用效率,特别是在节点服务器配置多块网络适配器情况下,充分利用所有节点服务器的网络适配器;由于服务器集群内部不需要负载均衡设备,可以避免服务器集群对负载均衡设备的依赖而产生的性能瓶颈。
服务器集群对客户端提供服务的网络适配器绑定在一起在逻辑上形成一个适配器接口,所有节点服务器共享相同网络地址,从而减少网络地址配置,同时避免映射或转发的方式带来额外的传输时延,在一些时延敏感的服务器集群的应用场合,提升了用户体验。
服务器集群中通过对ARP应答令牌的生成和删除来解决集群拓扑问题。避免多套集群拓扑机制之间产生冲突。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的硬件平台的方式来实现,当然也可以全部通过硬件来实施,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案对背景技术做出贡献的全部或者部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储单元阵列中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络 设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
以上对本发明进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制