分布式负载均衡系统、健康检查方法和服务节点与流程

文档序号:12515493阅读:295来源:国知局
分布式负载均衡系统、健康检查方法和服务节点与流程

本发明涉及云网络技术领域,特别涉及一种分布式负载均衡系统、健康检查方法和服务节点。



背景技术:

分布式负载均衡系统中包括多个服务节点和多个访问节点,每个访问节点上运行有虚拟负载均衡器和客户端,每个服务节点上运行有至少一个后端服务器。客户端用于发送访问某服务的请求;虚拟负载均衡器用于获取提供该服务的多个目标后端服务器中每个目标后端服务器的状态,根据负载均衡策略和该每个目标后端服务器的状态,为该请求选择一个目标后端服务器;该选择的目标后端服务器用于处理该请求。

目前,该虚拟负载均衡器在获取提供该服务的多个目标后端服务器中每个目标后端服务器的状态时,分别获取该每个目标后端服务器的网际互连协议(Internet Protocol,IP)地址,以该虚拟负载均衡器的IP地址为源IP地址,以每个目标后端服务器的IP地址为目的IP地址,向每个目标后端服务器发送探测消息,将返回应答的目标后端服务器的状态记录为正常,将未返回应答或者应答超时的目标后端服务器的状态记录为异常。

分布式负载均衡系统中包括的访问节点和服务节点数量繁多,每个访问节点中的虚拟负载均衡器都需要通过发送探测消息获取每个目标后端服务器的状态,导致分布式负载均衡系统中存在大量探测消息,大量的探测消息不仅会影响分布式负载均衡系统中的其他业务,还会增加访问节点的信令负载。



技术实现要素:

为了解决现有技术的问题,本发明实施例提供了一种分布式负载均衡系统、健康检查方法和服务节点。技术方案如下:

第一方面,本发明实施例提供了一种分布式负载均衡系统,包括云管理平台、访问节点以及至少一个服务节点,所述访问节点和所述至少一个服务节点为物理服务器,所述访问节点上运行有第一虚拟负载均衡器,所述服务节点上运行有至少一个后端服务器,

通过云管理平台确定提供服务的多个目标后端服务器,以及该每个目标后端服务器所在的目标服务节点的标识,向每个目标服务节点发送检查请求消息,该每个目标服务节点通过探测模块向目标后端服务器发送探测消息,探测该目标服务节点内提供该服务的目标后端服务器的状态,并通过探测模块,将该目标后端服务器的状态共享给访问节点上的第一虚拟负载均衡器;进而使得该第一虚拟负载均衡器更新记录的提供该服务的后端服务器的状态。由于可以通过目标服务节点上的探测模块发送探测消息获取目标后端服务器的状态,并通过探测模块将目标后端服务器的状态共享给第一负载均衡器,从而不仅降低了负载均衡系统中探测消息的数量,还降低了访问节点的信令负载。

在一种可能的设计中,探测所述目标后端服务器的状态,将所述目标后端服务器的状态共享给所述访问节点上的第一虚拟负载均衡器具体包括:探测模块向自身所在的节点上提供所述服务的目标后端服务器发送探测消息后,获取探测结果,将探测结果共享给第一虚拟负载均衡器,由第一虚拟负载均衡器根据探测结果确定并更新目标后端服务器的状态。示例性的,所述探测结果可以为无响应、响应时长、响应超时或连接中断等等,探测模块将上述探测结果上报给第一虚拟负载均衡器,由第一虚拟负载均衡器根据探测结果确定目标后端服务器的状态,例如,当目标后端服务器的探测结果为无响应、响应超时或连接中断时,第一虚拟负载均衡器确定该目标后端服务器的状态为异常;当目标后端服务器的探测结果为响应时长,且响应时长不大于第一预设时长时,第一虚拟负载均衡器确定该目标后端服务器的状态为正常;当目标后端服务器的探测结果为响应时长,且响应时长大于第一预设时长时,第一虚拟负载均衡器确定该目标后端服务器的状态为异常。通过上述探测结果共享的方式,所述探测模块可以将目标后端服务器的状态共享给第一虚拟负载均衡器。本领域技术人员可以理解的是,探测模块也可以根据探测结果确定目标后端服务器的状态,将目标后端服务器的状态直接共享给第一虚拟负载均衡器。

在一种可能的设计中,每个目标服务节点上的探测模块部署在所述目标服务节点上的第一命名空间中;所述第一虚拟负载均衡器部署在所述访问节点上的第二命名空间中,所述第一命名空间与所述第二命名空间具备相同的虚拟网际互连协议IP地址。

本发明实施例中,将第一命名空间的虚拟IP地址和第二命名空间的虚拟IP地址设置为同一个虚拟IP地址,节省了IP地址资源。

在一种可能的设计中,所述探测模块,具体用于构建通知报文,向所述第一虚拟负载均衡器发送所述通知报文,所述通知报文的源IP地址为所述虚拟IP地址,所述通知报文的目的IP地址为所述虚拟IP地址对应的子网广播地址,所述通知报文携带所述网络地址对应的后端服务器的状态。

本发明实施例中,该通知报文的目的IP地址为该虚拟IP地址对应的子网广播地址,则该虚拟IP地址对应的局域网内的所有第一虚拟负载均衡器均可以接收到该通知报文,提高了共享目标后端服务器的状态的效率。

在一种可能的设计中,不同服务对应的命名空间具备不同的VLAN标识,所述第一命名空间的VLAN标识和所述第二命名空间的VLAN标识相同;或者,

所述探测模块,还具体用于通过所述访问节点和所述每个目标服务节点之间的隧道,向所述第一虚拟负载均衡器发送所述通知报文。

本发明实施例中,可以将同一个服务对应的第一命名空间的VLAN标识和第二命名空间的VLAN标识设置为相同的VLAN标识,从而实现了不同服务的网络隔离,保证探测模块发送的通知报文只会被同一虚拟局域网内的第一虚拟负载均衡器接收到,提高了探测模块发送该通知报文的准确性;或者,探测模块还可以通过访问节点和目标服务节点之间建立的隧道,发送该通知报文,提高了探测模块发送该通知报文的灵活性。

在一种可能的设计中,当一个目标服务节点上运行有访问所述服务的客户端时,所述目标服务节点还包括第二虚拟负载均衡器,

所述目标服务节点上的探测模块,还用于将所述目标服务节点上的目标后端服务器的状态发送给所述第二虚拟负载均衡器。

本发明实施例中,如果目标服务节点上运行有访问所述服务的客户端,可以将该目标服务节点中部署第二虚拟负载均衡器,该探测模块还可以向该第二虚拟负载均衡器发送该目标后端服务器的状态,提高了分布式负载均衡系统的适用性。

在一种可能的设计中,所述云管理平台中记录有服务的标识、运行所述服务的所有后端服务器的网络地址以及各后端服务器所在的服务节点的标识的对应关系。

本发明实施例中,云管理平台中记录有服务的标识、运行所述服务的所有后端服务器的网络地址以及各后端服务器所在的服务节点的标识的对应关系,使得云管理平台可以准确获知每个服务对应的服务节点和后端服务器,以及每个服务节点对应的提供该服务的后端服务器,提高了分布式负载均衡系统中获取目标后端服务器的状态的准确性。

在一种可能的设计中,所述第一虚拟负载均衡器,还用于接收客户端发送的访问所述服务的请求,根据更新后的后端服务器的状态为所述客户端选择提供服务的后端服务器。

本发明实施例中,第一虚拟负载均衡器接收客户端发送的访问所述服务的请求后,根据更新后的后端服务器的状态为该客户端选择提供服务的后端服务器,该更新后的后端服务器的状态为当前可以提供该服务的后端服务器的最新状态,提高了第一虚拟负载均衡器为客户端选择后端服务器的准确性。

在一种可能的设计中,探测模块可以根据探测结果确定目标后端服务器的状态,具体包括:每个探测模块还用于将返回应答的目标后端服务器的状态记录为正常,将未返回应答或者应答超时的目标后端服务器的状态记录为异常。目标后端服务器状态确定后,探测模块可以将目标后端服务器的状态直接共享给第一虚拟负载均衡器。

本发明实施例中,探测模块向目标后端服务器发送探测消息后,根据目标后端服务器返回应答的时间,确定该目标后端服务器的状态,进一步提高了探测模块确定该目标后端服务器的状态的准确性。

在一种可能的设计中,后端服务器运行在服务节点上的虚拟机或者容器中;后端服务器的网络地址为运行所述后端服务器的虚拟机或者容器的地址。

在一种可能的设计中,后端服务器的网络地址包括虚拟IP地址和端口号。

第二方面,本发明实施例提供了一种分布式负载均衡系统中的健康检查方法,包括:

云管理平台根据服务的标识,确定提供所述服务的多个目标后端服务器,以及所述多个目标后端服务器中每个目标后端服务器的网络地址,并确定所述每个目标后端服务器所在的目标服务节点的标识,向每个目标服务节点发送检查请求消息,每个检查请求消息携带接收所述检查请求消息的目标服务节点上运行的目标后端服务器的网络地址,以及所述服务的标识;

所述每个目标服务节点接收所述检查请求消息,向所述检查请求消息中携带的所述服务的标识对应的探测模块发送所述目标服务节点上运行的目标后端服务器的网络地址;

所述每个目标服务节点上的探测模块根据接收的网络地址向所述接收的网络地址对应的目标后端服务器发送探测消息,探测所述目标后端服务器的状态,将所述目标后端服务器的状态共享给访问节点上的第一虚拟负载均衡器;

所述第一虚拟负载均衡器获取每个目标服务节点上的目标后端服务器的状态,根据所述每个目标服务节点上的目标后端服务器的状态,更新记录的提供所述服务的后端服务器的状态。

在一种可能的设计中,每个目标服务节点上的探测模块部署在所述目标服务节点上的第一命名空间中;所述第一虚拟负载均衡器部署在所述访问节点上的第二命名空间中,所述第一命名空间与所述第二命名空间具备相同的虚拟IP地址。

在一种可能的设计中,所述探测模块构建通知报文,向所述第一虚拟负载均衡器发送所述通知报文,所述通知报文的源IP地址为所述虚拟IP地址,所述通知报文的目的IP地址为所述虚拟IP地址对应的子网广播地址,所述通知报文携带所述网络地址对应的目标后端服务器的状态。

在一种可能的设计中,不同服务对应的命名空间具备不同的VLAN标识,所述第一命名空间的VLAN标识和所述第二命名空间的VLAN标识相同;或者,

所述探测模块向所述第一虚拟负载均衡器发送所述通知报文,包括:

所述探测模块通过所述访问节点和所述每个目标服务节点之间的隧道,向所述第一虚拟负载均衡器发送所述通知报文。

在一种可能的设计中,当一个目标服务节点上运行有访问所述服务的客户端时,所述目标服务节点还包括第二虚拟负载均衡器,所述方法还包括:

所述目标服务节点上的探测模块将所述目标服务节点上的目标后端服务器的状态发送给所述第二虚拟负载均衡器。

在一种可能的设计中,所述第二虚拟负载均衡器接收所述目标服务节点上的探测模块发送的所述目标服务节点上的目标后端服务器的状态,更新记录的所述目标后端服务器的状态。

在一种可能的设计中,所述第二虚拟负载均衡器接收客户端发送的访问所述服务的请求,根据更新后的所述后端服务器的状态为所述客户端选择提供服务的后端服务器。

在一种可能的设计中,所述云管理平台中记录有服务的标识、运行所述服务的所有后端服务器的网络地址以及各后端服务器所在的服务节点的标识的对应关系。

在一种可能的设计中,所述探测模块确定所述目标后端服务器的状态,包括:所述更新记录的提供所述服务的后端服务器的状态之后,所述方法还包括:

所述第一虚拟负载均衡器接收客户端发送的访问所述服务的请求,根据更新后的后端服务器的状态为所述客户端选择提供服务的后端服务器。

在一种可能的设计中,每个探测模块将返回应答的目标后端服务器的状态记录为正常,将未返回应答或者应答超时的目标后端服务器的状态记录为异常。

第三方面,本发明实施例提供了一种服务节点,包括接收模块、处理模块、发送模块、服务对应的探测模块以及至少一个后端服务器,

所述接收模块,用于接收云管理平台发送的检查请求消息,所述检查请求消息用于对提供服务的后端服务器进行健康检查,所述检查请求消息携带所述服务的标识,以及所述服务节点上运行的提供所述服务的目标后端服务器的网络地址;

所述处理模块,用于根据所述服务的标识确定所述服务对应的探测模块;

所述发送模块,用于向所述处理模块确定的所述探测模块发送所述服务节点上运行的所述目标后端服务器的网络地址;

所述探测模块,用于向所述网络地址对应的目标后端服务器发送探测消息,确定所述目标后端服务器的状态,将所述目标后端服务器的状态共享给访问节点上的第一虚拟负载均衡器。

在一种可能的设计中,所述服务节点上的探测模块部署在所述服务节点上的第一命名空间中,所述第一虚拟负载均衡器部署在所述访问节点上的第二命名空间中,所述第一命名空间与所述第二命名空间具备相同的虚拟IP地址。

在一种可能的设计中,所述探测模块,具体用于构建通知报文,向所述第一虚拟负载均衡器发送所述通知报文,所述通知报文的源IP地址为所述虚拟IP地址,所述通知报文的目的IP地址为所述虚拟IP地址对应的子网广播地址,所述通知报文携带所述网络地址对应的目标后端服务器的状态。

在一种可能的设计中,不同服务对应的命名空间具备不同的VLAN标识,所述第一命名空间的VLAN标识和所述第二命名空间的VLAN标识相同;或者,

所述探测模块,还具体用于通过所述访问节点和所述每个目标服务节点之间的隧道,向所述第一虚拟负载均衡器发送所述通知报文。

在一种可能的设计中,当所述服务节点上运行有访问所述服务的客户端时,所述服务节点还包括第二虚拟负载均衡器,

所述探测模块,还用于将所述服务节点上的后端服务器的状态发送给所述第二虚拟负载均衡器。

在一种可能的设计中,所述探测模块具体用于将返回应答的目标后端服务器的状态记录为正常,将未返回应答或者应答超时的目标后端服务器的状态记录为异常。

第四方面,本发明实施例提供了一种分布式负载均衡系统中的健康检查方法,包括:

服务节点接收云管理平台发送的检查请求消息,所述检查请求消息用于对提供服务的后端服务器进行健康检查,所述检查请求消息携带所述服务的标识,以及所述服务节点上运行的提供所述服务的目标后端服务器的网络地址;

所述服务节点向所述检查请求消息中携带的所述服务的标识对应的探测模块发送所述目标服务节点上运行的目标后端服务器的网络地址;

所述探测模块根据接收的网络地址向所述接收的网络地址对应的目标后端服务器发送探测消息,探测所述网络地址对应的目标后端服务器的状态,将所述网络地址对应的目标后端服务器的状态共享给访问节点上的第一虚拟负载均衡器。

在一种可能的设计中,所述服务节点上的探测模块部署在所述服务节点上的第一命名空间中,所述第一虚拟负载均衡器部署在所述访问节点上的第二命名空间中,所述第一命名空间与所述第二命名空间具备相同的虚拟IP地址。

在一种可能的设计中,所述将所述网络地址对应的后端服务器的状态共享给访问节点上的第一虚拟负载均衡器包括:

所述探测模块构建通知报文,向所述第一虚拟负载均衡器发送所述通知报文,所述通知报文的源IP地址为所述虚拟IP地址,所述通知报文的目的IP地址为所述虚拟IP地址对应的子网广播地址,所述通知报文携带所述网络地址对应的目标后端服务器的状态。

在一种可能的设计中,不同服务对应的命名空间具备不同的VLAN标识,所述第一命名空间的VLAN标识和所述第二命名空间的VLAN标识相同;或者,

所述探测模块向所述第一虚拟负载均衡器发送所述通知报文包括:

所述探测模块通过所述访问节点和所述每个目标服务节点之间的隧道,向所述第一虚拟负载均衡器发送所述通知报文。

在一种可能的设计中,当所述服务节点上运行有访问所述服务的客户端时,所述服务节点还包括第二虚拟负载均衡器,所述方法还包括:

所述探测模块将所述服务节点上的后端服务器的状态发送给所述第二虚拟负载均衡器。

在一种可能的设计中,所述探测模块确定所述网络地址对应的目标后端服务器的状态包括:

所述探测模块将返回应答的目标后端服务器的状态记录为正常,将未返回应答或者应答超时的目标后端服务器的状态记录为异常。

第五方面,本发明实施例提供了一种计算机存储介质,用于存储上述分布式负载均衡系统中的健康检查的所用的计算机软件指令,其包含用于执行上述方面为分布式负载均衡系统中的健康检查的设备所涉及的程序。

上述本发明实施例第二到第五方面所获得的技术效果与第一方面中对应的技术手段获得的技术效果近似,在这里不再赘述。

综上所述,本发明实施例提供的技术方案带来的有益效果是:

本发明实施例中,通过云管理平台确定提供服务的多个目标后端服务器,以及该每个目标后端服务器所在的目标服务节点的标识,向每个目标服务节点发送检查请求消息,该每个目标服务节点通过探测模块向目标后端服务器发送探测消息,探测该目标服务节点内提供该服务的目标后端服务器的状态,并通过探测模块,将该目标后端服务器的状态共享给访问节点上的第一虚拟负载均衡器;进而使得该第一虚拟负载均衡器更新记录的提供该服务的后端服务器的状态。由于可以通过探测模块发送探测消息获取目标后端服务器的状态,并通过探测模块将目标后端服务器的状态共享给第一负载均衡器,从而不仅降低了负载均衡系统中探测消息的数量,还降低了访问节点的信令负载。由于目标服务节点的第一命名空间和访问节点的第二命名空间的IP地址相同,节省了IP地址资源。

附图说明

图1是本发明实施例提供的一种分布式负载均衡系统的示意图;

图2是本发明实施例提供的另一种分布式负载均衡系统的示意图;

图3是本发明实施例提供的另一种分布式负载均衡系统的示意图;

图4是本发明实施例提供的一种服务节点的结构方框图;

图5是本发明实施例提供的一种分布式负载均衡系统中的健康检查方法流程图;

图6是本发明实施例提供的一种服务节点的结构方框图;

图7是本发明实施例提供的一种访问节点的结构方框图;

图8是本发明实施例提供的另一种服务节点的结构方框图;

图9是本发明实施例提供的另一种服务节点的结构方框图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施例的实施方式作进一步的详细描述。

图1是本发明实施例提供的一种分布式负载均衡系统,该分布式负载均衡系统包括云管理平台1、访问节点2以及至少一个服务节点3,该访问节点2和该至少一个服务节点3可以为物理服务器,该访问节点2上运行有第一虚拟负载均衡器,至少一个服务节点3中每个服务节点3上运行有至少一个后端服务器,一个后端服务器用于提供一种服务。每个服务节点3上部署至少一个探测模块,优选的,一个探测模块可以用于获取提供一种服务的后端服务器的状态。

参见图2,该云管理平台1可以管理该分布式负载均衡系统的拓扑,该云管理平台1中记录服务的标识、运行该服务的所有后端服务器的网络地址以及各后端服务器所在的服务节点3的网络地址的对应关系。因此,当启动健康检查时,云管理平台1可以根据服务的标识,确定提供该服务的多个目标后端服务器,以及该多个目标后端服务器中每个目标后端服务器的网络地址,并确定该每个目标后端服务器所在的目标服务节点3的标识,向每个目标服务节点3发送检查请求消息,该检查请求消息携带该目标服务节点3对应的目标后端服务器的网络地址。

每个目标服务节点3接收云管理平台1发送的检查请求消息,确定该服务节点3上该服务的标识对应的探测模块,向探测模块发送该目标访问节点2上运行的目标后端服务器的网络地址。

该探测模块根据该目标后端服务器的网络地址向该目标后端服务器发送探测消息,探测目标后端服务器的状态,并将该目标后端服务器的状态共享给访问节点2上的第一虚拟负载均衡器。

第一虚拟负载均衡器获取每个目标服务节点上的目标后端服务器的状态,根据每个目标服务节点上的目标后端服务器的状态,更新记录的提供该服务的后端服务器的状态。

参见图3,本发明实施例的一种可能的设计中,服务节点3上除运行有至少一个后端服务器以外,服务节点3上还可以运行有访问该服务的客户端,因此,当一个目标服务节点3上运行有访问该服务的客户端时,该目标服务节点3还包括第二虚拟负载均衡器。

该目标服务节点3上的探测模块将该目标服务节点3上的目标后端服务器的状态发送给第二虚拟负载均衡器。

该第二虚拟负载均衡器获取每个目标服务节点上的目标后端服务器的状态,根据每个目标服务节点上的目标后端服务器的状态,更新记录的该服务的后端服务器的状态。

后端服务器运行在服务节点3上的虚拟机(Virtual Machine,VM)上或者容器中,则后端服务器的网络地址为运行该后端服务器的VM的地址或者容器的地址。

该云管理平台1可以为独立于访问节点2和服务节点3的一个独立设备,也可以为集成在服务节点3中的一个管理设备,也可以为集成在访问节点2中的一个管理设备。

参见图4,其示出了本发明实施例提供的一种服务节点3,该服务节点3包括收发器31和存储器32,该服务节点3还可以包括处理器33和网络接口34。其中,存储器32和网络接口34分别与处理器33连接;存储器32用于存储程序代码,程序代码包括计算机操作指令,处理器33和收发器31用于执行存储器32中存储的程序代码,用于实现数据的相关处理,并可以通过网络接口34与基站或其他管理设备进行交互。

处理器33包括一个或者一个以上处理核心。处理器33通过运行软件程序以及单元,从而执行下述分布式负载均衡系统中的健康检查方法。

在一个可能的设计中,该服务节点3还可以包括总线35等部件。其中,存储器32与网络接口34分别通过总线35与处理器33和收发器31相连。

存储器32可用于存储软件程序以及单元。具体的,存储器32可存储操作系统321、至少一个功能所需的应用程序单元322。操作系统321可以是实时操作系统(Real Time eXecutive,RTX)、LINUX、UNIX、WINDOWS或OS X之类的操作系统。

参见图5,本发明实施例提供了一种分布式负载均衡系统中的健康检查方法,该方法应用在分布式负载均衡系统中,该分布式负载均衡系统包括云管理平台、访问节点以及至少一个服务节点,该访问节点和该至少一个服务节点可以为物理服务器,该访问节点上运行有第一虚拟负载均衡器,该服务节点上运行有至少一个后端服务器,该方法包括:

步骤401:云管理平台根据服务的标识,确定提供该服务的多个目标后端服务器,以及该多个目标后端服务器中每个目标后端服务器的网络地址,并确定该每个目标后端服务器所在的目标服务节点的标识。

云管理平台用于管理该分布式负载均衡系统,并且云管理平台中记录有服务的标识、运行该服务的所有后端服务器的网络地址以及各后端服务器所在的服务节点的标识的对应关系。当启动健康检查时,云管理平台获取待检查的服务的标识,根据该服务的标识,从服务的标识、运行该服务的所有后端服务器的网络地址以及各后端服务器所在的服务节点的标识的对应关系中,确定提供该服务的多个目标后端服务器,以及该多个目标后端服务器中每个目标后端服务器的网络地址,以及每个目标后端服务器所在的目标服务节点的标识。

在本发明实施例中,云管理平台启动健康检查时,云管理平台可以根据租户的配置周期性启动健康检查;云管理平台也可以在接收到租户发送的检查启动请求时,启动健康检查。

云管理平台根据租户的配置周期性启动健康检查时,云管理平台根据租户的配置,获取待检查的服务的标识。例如,租户可以配置每隔10s对提供服务1的后端服务器进行一次健康检查,每隔15s对提供服务2的后端服务器进行一次健康检查。

云管理平台在接收到租户发送的检查启动请求时,启动健康检查时,获取待检查的服务的标识的步骤可以为:

云管理平台向租户提供的管理界面中包含服务信息,该服务信息包括至少一个服务的标识和提供每个服务的服务节点的标识。租户登录访问云管理平台提供的管理界面,从至少一个服务的标识中选择一个要进行健康检查的服务的标识,云管理平台将用户选择的服务的标识作为待检查的服务的标识,发起针对提供服务的应用服务器的健康检查。

其中,服务的标识可以为该服务的名称或者该服务的身份标识号码(identity,ID)等;例如,该服务的标识可以为虚拟负载均衡服务123(virtual Load Balancer,vLBtest123)。目标后端服务器运行在目标服务节点上的VM上或者容器中,则目标后端服务器的网络地址可以为运行该目标后端服务器的VM的地址或者容器的地址。目标服务节点的标识可以为目标服务节点的编号或者地址等。

步骤402:云管理平台向每个目标服务节点发送检查请求消息,每个检查请求消息携带接收该检查请求消息的目标服务节点上运行的目标后端服务器的网络地址,以及该服务的标识。

对于每个目标服务节点,云管理平台获取该目标服务节点上运行的且提供该服务的目标后端服务器的网络地址,根据该目标服务节点的标识,向该目标服务节点发送检查请求消息,该检查请求消息携带该目标服务节点上提供该服务的目标后端服务器的网络地址和该服务的标识。

例如,云管理平台根据该服务的标识,确定提供该服务的目标后端服务器包括目标后端服务器1、目标后端服务器2、目标后端服务器3和目标后端服务器4,目标后端服务器1和目标后端服务器2在目标服务节点1上,目标后端服务器3和目标后端服务器4在目标服务节点2上。则云管理平台根据目标服务节点1的标识,向目标服务节点1发送检查请求消息,该检查请求消息携带目标后端服务器1和目标后端服务器2,以及该服务的标识。云管理平台根据目标服务节点2的标识,向目标服务节点2发送检查请求消息,该检查请求消息携带目标后端服务器3和目标后端服务器4,以及该服务的标识。

步骤403:该每个目标服务节点接收该检查请求消息,确定该目标服务节点上该服务的标识对应的探测模块,向该探测模块发送该服务节点上运行的目标后端服务器的网络地址。

每个目标服务节点上可以部署至少一个探测模块,一个服务对应一个探测模块,则每个目标服务节点上存储每个服务的标识和每个服务对应的探测模块的对应关系,在具体的实施场景中,该对应关系可以采用现有技术中的各种存储形式存储,包括但不限于对应关系表;该对应关系可以存储在服务节点上或者与服务节点存在连接的其他存储介质中。相应的,对于每个目标服务节点,该目标服务节点接收该检查请求消息,确定该目标服务节点上该服务的标识对应的探测模块的步骤可以为:

该目标服务节点接收该检查请求消息,从该检查请求消息中获取该服务的标识,根据该服务的标识,从每个服务的标识和每个服务对应的探测模块的对应关系中获取该服务对应的探测模块。

需要说明的是,每个目标服务节点上也可以只部署一个探测模块,多个服务对应一个探测模块,该探测模块用于探测该目标服务节点上多个服务的目标后端服务器的状态。则本步骤可以替换为:该每个目标服务节点接收该检查请求消息,确定该目标服务节点上部署的探测模块,向该探测模块发送该服务节点上运行的目标后端服务器的网络地址。

步骤404:每个目标服务节点上的探测模块根据该探测模块接收的网络地址向该网络地址对应的目标后端服务器发送探测消息,探测该目标后端服务器的状态,将该目标后端服务器的状态共享给访问节点上的第一虚拟负载均衡器。

对于任意一个探测模块,本步骤可以通过以下步骤(1)和(2)实现,包括:

(1):该探测模块根据接收的网络地址,向该接收的网络地址对应的目标后端服务器发送探测请求,确定该目标后端服务器的状态。

当该目标后端服务器的状态为正常时,该目标后端服务器接收到该探测模块发送的探测请求时,会及时向该探测模块返回应答;当该目标后端服务器的状态为异常时,该目标后端服务器不能接收到该探测模块发送的探测请求,或者接收到该探测模块发送的探测请求时,但是并不能及时向探测模块返回应答。相应的,本步骤可以为:

该探测模块根据接收的网络地址,向该接收的网络地址对应的目标后端服务器发送探测请求;将在第一预设时长内返回应答的目标后端服务器的状态记录为正常;将在第一预设时长内没有返回应答或者应答超时的目标后端服务器的状态记录为异常。

第一预设时长可以根据用户需要设置并更改,本发明实施例对此不作具体限定,例如,第一预设时长可为2秒、30毫秒等。

其中,该接收的网络地址包括一个目标后端服务器的IP地址和端口号,相应的,该探测模块根据该接收的网络地址向该网络地址对应的目标后端服务器发送探测消息的步骤可以为:

该探测模块根据该目标后端服务器的IP地址和端口号,向该目标后端服务器发送探测消息。

例如,该目标后端服务器的IP地址为IP3,该目标后端服务器的端口号为80,则探测模块向IP地址为IP3、端口号为80的目标后端服务器发送探测消息。

(2):该探测模块将该目标后端服务器的状态共享给访问节点上的第一虚拟负载均衡器。

在本步骤中,该探测模块可以主动将该目标后端服务器的状态发送给访问节点上的第一虚拟负载均衡器;或者,该探测模块将该目标后端服务器的状态存储到数据库中,访问节点上的第一虚拟负载均衡器主动从数据库中获取该目标后端服务器的状态。

当该探测模块主动将该目标后端服务器的状态发送给访问节点上的第一虚拟负载均衡器时,本步骤可以通过以下步骤(2-1)和(2-2)实现,包括:

(2-1):该探测模块构建通知报文,该通知报文携带该网络地址对应的后端服务器的状态。

参见图6和图7,为了节省IP地址资源,每个目标服务节点上的探测模块部署在该目标服务节点上的第一命名空间中;访问节点上运行的第一虚拟负载均衡器部署在该访问节点上的第二命名空间中,该第一命名空间与该第二命名空间具备相同的IP地址,即:针对同一服务,该服务对应的探测模块所在的第一命名空间与该服务对应的第一虚拟负载均衡器所在的第二命名空间具备相同的虚拟IP。例如,第一命名空间的IP地址和第二命名空间的IP地址均为虚拟IP地址IP0。

需要说明的是,本发明实施例中的命名空间提供一种轻量级的虚拟化形式,将进程资源、通信资源、网络资源等通过一个逻辑空间进行资源隔离,各命名空间具备独立的IP地址,从而实现了物理机上的资源隔离,保证不同命名空间之间互不干涉。命名空间中可以运行第一虚拟负载均衡器、探测模块等软件模块。当同一节点上存在多种服务对应的模块时,不同服务的模块可以运行在不同的命名空间中,从而通过命名空间技术实现服务间的隔离。

访问节点中的第一虚拟负载均衡器只为本访问节点上运行的客户端提供负载均衡服务,即为本节点上的客户端分配提供服务的应用服务器。第一虚拟负载均衡器还可以通过接收进程接收探测模块发送的通知报文,其中,访问节点中的接收进程也部署在该访问节点上的第二命名空间中。

该通知报文的源IP地址为第一命名空间的虚拟IP地址,该通知报文的目的IP地址为该虚拟IP地址对应的子网广播地址。因此,以该虚拟IP地址为源IP地址,以该虚拟IP地址对应的子网广播地址广播该通知报文时,同一局域网中的每个第一虚拟负载均衡器均能接收到该通知报文。

如果该探测模块所在的目标服务节点上包括多个提供该服务的目标后端服务器时,在一个实施方式中,该探测模块可以构建多个通知报文,一个通知报文携带一个目标后端服务器的状态。为了减少通知报文的数量,提高第一虚拟负载均衡器获取该目标后端服务器的状态的效率,在另一个实施方式中,该探测模块可以仅构建一个通知报文,该通知报文携带该探测模块所在的目标服务节点上的多个目标后端服务器的状态和每个目标后端服务器的网络地址的对应关系。

例如,目标服务节点1上的目标后端服务器分别为目标后端服务器1和目标后端服务器2,目标后端服务器1和目标后端服务器2的网络地址分别为IP3和IP5,目标后端服务器1和目标后端服务器2的状态分别为正常和异常;该探测模块构建一个通知报文,该通知报文可以为:{IP3:正常;IP5:异常}。

其中,该通知报文的格式可以根据用户需要进行设置并更改,在本发明实施例中,对该通知报文的格式不作具体限定。例如,该通知报文的格式可以为用户数据报协议(User Datagram Protocol,UDP)报文格式,也可以为原始(raw)IP报文格式。

(2-2):该探测模块向该第一虚拟负载均衡器发送该通知报文。

在一个可能的实现方式中,可以通过命名空间的虚拟局域网(Virtual Local Area Network,VLAN)标识进行网络隔离,即不同服务对应的命名空间具备不同的VLAN标识,从而使得不同服务的探测模块和虚拟负载均衡器位于不同的虚拟局域网中,从而保证该探测模块发送的该通知报文只会被同一局域网内的负载均衡器接收到。

例如,服务1对应的探测模块部署在目标服务节点上的第一命名空间,服务1对应的第一虚拟负载均衡器部署在访问节点上的第二命名空间,第一命名空间的VLAN标识和第二命名空间的VLAN标识相同,都是VLAN0,表示该服务1对应的第一命名空间和第二命名空间在同一虚拟局域网中。则探测模块以第一命名空间的虚拟IP地址为源IP地址,该虚拟IP地址对应的子网广播地址为目的IP地址发送该通知报文时,该同一虚拟局域网中的第一虚拟负载均衡器均能够接收到该通知报文。

再如,如果该目标服务节点上还有提供其他服务的后端服务器,该其他服务可以为服务2,可以将该服务2的第一命名空间的VLAN标识和第二命名空间的VLAN标识均设置为相同的VLAN1,表示该服务2对应的第一命名空间和第二命名空间在同一虚拟局域网中。

这样,不同的服务对应的命名空间具备不同的VLAN标识,同一个服务中,该第一命名空间的VLAN标识和该第二命名空间的VLAN标识相同;从而实现了通过命名空间对不同服务的网络隔离,保证探测模块发送的通知报文只会被同一虚拟局域网内的第一虚拟负载均衡器接收到。

由于该目的IP地址为该虚拟IP地址对应的子网广播地址,该第一虚拟负载均衡器在访问节点的第二命名空间中,而该第二命名空间的IP地址在该子网广播地址范围内,因此,本步骤可以为:该探测模块以第一命名空间的虚拟IP地址为源IP地址,以该虚拟IP地址对应的子网广播地址为目的IP地址,向第一虚拟负载均衡器发送该通知报文。

目标服务节点中部署发送进程,该发送进程也部署在该目标服务节点的第一命名空间中,该探测模块通过该发送进程,以第一命名空间的虚拟IP地址为源IP地址,以该虚拟IP地址对应的子网广播地址为目的IP地址,向第一虚拟负载均衡器发送该通知报文。

例如,以目标服务节点3的探测模块向访问节点1和访问节点2广播报文为例,如果访问节点1和访问节点2的第二命名空间的IP地址为IP0(例如192.168.1.10),目标服务节点3的第一命名空间的IP地址也为IP0。此时,目标服务节点3的探测模块通过发送进程,以IP0为源IP地址、第一命名空间和第二命名空间对应的子网广播地址(例如192.168.1.255,表示192.168.1.0~192.168.1.255范围内的IP地址都在该子网广播地址范围内)为目的IP地址,发送该通知报文:{IP3:状态},这样,该同一局域网内的所有访问节点内的第一虚拟负载均衡器都可接收到该探测模块发送的通知报文。

在另一个可能的实现方式中,可以通过在第一虚拟负载均衡器和该目标服务节点之间建立隧道,通过该隧道向第一虚拟负载均衡器发送该通知报文,从而保证该通知报文只被同一局域网内的第一虚拟负载均衡器接收到,则本步骤可以为:

该探测模块通过该访问节点和该探测模块所在的目标服务节点之间的隧道,向第一虚拟负载均衡器发送该通知报文。

每个目标服务节点上部署发送进程,该探测模块通过该访问节点和该探测模块所在的目标服务节点之间的隧道以及该探测模块所在的目标服务节点的发送进程,向第一虚拟负载均衡器发送该通知报文。

需要说明的是,在本步骤之前,根据该访问节点的标识和每个目标服务节点的标识,在该访问节点和每个目标服务节点之间建立隧道。并且,在访问节点和每个目标服务节点之间建立隧道时,第一命名空间和第二命名空间不相互感知,该第一命名空间的VLAN标识和该第二命名空间的VLAN标识可以相同或者不同。其中,该发送进程也可以部署在第一命名空间中。

如果该探测模块构建了多个通知报文,则在本步骤中,该探测模块通过该访问节点和探测模块所在的目标服务节点之间的隧道,向第一虚拟负载均衡器发送该多个通知报文。

需要说明的是,每个目标服务节点都通过以上步骤404将该目标服务节点上的目标后端服务器的状态发送该第一虚拟负载均衡器。

还需要说明的是,在另一种可能的实现方式中,步骤404还可以为:探测模块向自身所在的节点上提供所述服务的目标后端服务器发送探测消息后,获取探测结果,将探测结果共享给第一虚拟负载均衡器,由第一虚拟负载均衡器根据探测结果确定并更新目标后端服务器的状态。示例性的,所述探测结果可以为无响应、响应时长、响应超时或连接中断等等,探测模块将上述探测结果上报给第一虚拟负载均衡器,由第一虚拟负载均衡器根据探测结果确定目标后端服务器的状态,例如,当目标后端服务器的探测结果为无响应、响应超时或连接中断时,第一虚拟负载均衡器确定该目标后端服务器的状态为异常;当目标后端服务器的探测结果为响应时长,且响应时长不大于第一预设时长时,第一虚拟负载均衡器确定该目标后端服务器的状态为正常;当目标后端服务器的探测结果为响应时长,且响应时长大于第一预设时长时,第一虚拟负载均衡器确定该目标后端服务器的状态为异常。通过上述探测结果共享的方式,所述探测模块可以将目标后端服务器的状态共享给第一虚拟负载均衡器。

步骤405:该第一虚拟负载均衡器获取每个目标服务节点上的目标后端服务器的状态,根据该每个目标服务节点上的目标后端服务器的状态,更新记录的提供该服务的后端服务器的状态。

本步骤可以通过以下步骤(1)-(3)实现,包括:

(1):该第一虚拟负载均衡器接收每个目标服务节点上的该服务对应的探测模块发送的通知报文。

访问节点上部署有接收进程,该第一虚拟负载均衡器通过该接收进程接收每个目标服务节点上的该服务对应的探测模块发送的通知报文。其中,该接收进程可以部署在该访问节点的第二命名空间中。

(2):第一虚拟负载均衡器解析来自每个目标服务节点的通知报文,获取所述多个目标后端服务器的状态。

为了避免该通知报文中携带其他服务的后端服务器的状态,目标服务节点发送的通知报文中还可以携带服务的标识,访问节点中存储有服务的标识和提供该服务的目标后端服务器的网络地址的对应关系。当第一虚拟负载均衡器收到来自目标服务节点的通知报文时,根据该通知报文携带的标识,提取并更新改提供该第一虚拟负载均衡器对应的服务的目标应用服务器的状态。

(3):第一虚拟负载均衡器更新记录的提供该服务的目标后端服务器的状态。

第一虚拟负载均衡器获取提供该服务的目标后端服务器的状态列表,根据从每个通知报文中获取的目标后端服务器的状态,更新该状态列表中该目标后端服务器的状态,该状态列表用于记录提供该服务的所有后端服务器的状态。

对于每个通知报文,第一虚拟负载均衡器根据从该通知报文中获取的目标后端服务器的状态,更新该状态列表中该目标后端服务器的状态的步骤可以为:第一虚拟负载均衡器确定该状态列表中是否包括该目标后端服务器的状态;如果包括,则确定从该通知报文中获取的目标后端服务器的状态和该状态列表中存储的该目标后端服务器的状态是否相同;如果相同,不需要更新所述目标后端服务器的状态;如果不相同,将该状态列表中存储的该目标后端服务器的状态修改为从该通知报文中获取的目标后端服务器的状态。如果该状态列表中不包括该目标后端服务器的状态,第一虚拟负载均衡器将该目标后端服务器的状态存储到该状态列表中。

在一个可能的实现方式中,第一虚拟负载均衡器将该目标后端服务器的状态存储到该状态列表中时,创建一个定时器,通过该定时器进行计时,并确定是否在第二预设时长内再次接收到该目标后端服务器的状态,如果在第二预设时长内再次接收到该目标后端服务器的状态,将该状态列表中该目标后端服务器的状态更新为再次接收到的该目标后端服务器的状态;如果在第二预设时长内没有再次接收到该目标后端服务器的状态,将该状态列表中的该目标后端服务器的状态修改为异常。

其中,第二预设时长可以根据用户需要设置并更改,本发明实施例对第二预设时长不作具体限定;例如,第二预设时长可为2秒、30毫秒等。

当访问节点中的第一客户端需要访问该服务时,第一客户端向第一虚拟负载均衡器发送访问该服务的第一请求,执行步骤406。

步骤406:第一虚拟负载均衡器接收第一客户端发送的访问该服务的第一请求,根据更新后的后端服务器的状态为第一客户端选择提供该服务的后端服务器。

第一虚拟负载均衡器接收第一客户端发送的访问该服务的第一请求,根据更新后的后端服务器的状态和负载均衡策略,从提供该服务的后端服务器中选择一个为该客户端提供该服务的后端服务器,向该选择的后端服务器发送该第一请求。该选择的后端服务器接收第一虚拟负载均衡器发送的该第一请求,处理该第一请求,从而为该第一客户端提供服务。

本发明实施例的一种可能的设计中,参见图8,可选的,目标服务节点上除运行有至少一个后端服务器以外,目标服务节点上还可以运行有访问该服务的客户端,此时,该目标服务节点还包括第二虚拟负载均衡器和接收进程。其中,第二虚拟负载均衡器和接收进程可以部署在第一命名空间中。

该第二虚拟负载均衡器用于获取目标后端服务器的状态,并通过接收进程接收该客户端发送的访问该服务的请求,进而为该客户端选择该提供服务的后端服务器。因此,该目标服务节点上的探测模块获取到目标后端服务器的状态后,还需要通过以下步骤407,通知该目标服务节点中的第二虚拟负载均衡器该目标后端服务器的状态。

步骤407:该目标服务节点上的探测模块将该目标服务节点上的目标后端服务器的状态发送给该第二虚拟负载均衡器。

该目标服务节点上的探测模块可以通过进程间通信,将该目标服务节点上的目标后端服务器的状态发送给第二虚拟负载均衡器。

该目标服务节点上的探测模块将该目标服务节点上的目标后端服务器的状态发送给该第二虚拟负载均衡器时,也可以构建一个通知报文,该通知报文携带该目标后端服务器的状态,向第二虚拟负载均衡器发送该通知报文。

步骤408:第二虚拟负载均衡器接收该目标服务节点上的探测模块发送的该目标服务节点上的目标后端服务器的状态,更新记录的该目标后端服务器的状态。

第二虚拟负载均衡器通过该目标服务节点上的接收进程,接收该目标节点上的探测模块发送的该通知报文,解析该通知报文,从该通知报文中获取该目标后端服务器的状态,更新记录的该目标后端服务器的状态。

其中,第二虚拟负载均衡器解析该通知报文和更新记录的该目标后端服务器的状态分别和第一虚拟负载均衡器解析该通知报文和更新记录的提供该服务的目标后端服务器的状态的过程相同,在此不再赘述。

需要说明的是,步骤404和步骤407并无严格的时间先后关系,可以先执行步骤404,再执行步骤407;也可以先执行步骤407,再执行步骤404。

当目标服务节点上运行的访问该服务的第二客户端需要访问该服务时,第二客户端向第二虚拟负载均衡器发送访问该服务的第二请求,执行步骤409。

步骤409:第二虚拟负载均衡器接收第二客户端发送的访问该服务的第二请求,根据更新后的后端服务器的状态为第二客户端选择提供服务的后端服务器。

第二虚拟负载均衡器接收第二客户端发送的访问该服务的第二请求,根据更新后的后端服务器的状态和负载均衡策略,从提供该服务的后端服务器中选择一个为该第二客户端提供服务的后端服务器,向该选择的后端服务器发送该第二请求。该选择的后端服务器接收第二虚拟负载均衡器发送的该第二请求,处理该第二请求,从而实现为该第二客户端提供服务。需要说明的是,步骤407-409为可选步骤,只有当目标服务节点中允许有访问服务的客户端时才会执行。

本发明实施例中,通过云管理平台确定提供服务的多个目标后端服务器,以及该每个目标后端服务器所在的目标服务节点的标识,向每个目标服务节点发送检查请求消息,该每个目标服务节点通过探测模块向目标后端服务器发送探测消息,确定该目标服务节点内提供该服务的目标后端服务器的状态,并通过探测模块,将该目标后端服务器的状态共享给访问节点上的第一虚拟负载均衡器;进而使得该第一虚拟负载均衡器更新记录的提供该服务的后端服务器的状态。由于可以通过探测模块发送探测消息获取目标后端服务器的状态,并通过探测模块将目标后端服务器的状态共享给第一负载均衡器,从而不仅降低了负载均衡系统中探测消息的数量,还降低了访问节点的信令负载。

下述为本本发明实施例装置实施例,可以用于执行本发明实施例方法实施例。对于本发明实施例装置实施例中未披露的细节,请参照本发明实施例方法实施例。

图9是本发明实施例提供的一种服务节点的结构方框图,该服务节点可以通过软件、硬件或者两者的结合实现上述服务节点执行的处理。

该服务节点包括接收模块501、处理模块502、发送模块503、服务对应的探测模块504以及至少一个后端服务器505,

接收模块501用于执行上述实施例中的步骤403中接收检查请求消息及其可选方案。

处理模块502用于执行上述实施例中的步骤403中确定该目标服务节点上该服务的标识对应的探测模块及其可选方案。

发送模块503用于执行上述实施例中的步骤403中向该探测模块发送该服务节点上运行的目标后端服务器的网络地址及其可选方案。

探测模块504用于执行上述实施例中的步骤404和407及其可选方案。

需要说明的是:上述实施例提供的服务节点在分布式负载均衡系统中健康检查时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的服务节点与分布式负载均衡系统中的健康检查方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

本发明实施例中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

以上所述仅为本发明实施例的较佳实施例,并不用以限制本发明实施例,凡在本发明实施例的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明实施例的保护范围之内。

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