专利名称:实现应用层会话持续性的负载均衡方法、系统及设备的制作方法
技术领域:
本发明涉及负载均衡技术,尤指 一种实现应用层会话持续性的负载均衡
方法、系统和i殳备。
背景技术:
如图l所示,负载均衡技术通过负载均衡(LB, Load Balance )设备根 据后台服务器的负载情况,将客户端发来的请求均衡地分发给服务器进行处 理,使得整个系统资源得到充分利用的技术。
在实现负载均衡的同时,通常也需要保持应用层会话的持续性,也就是 使属于同一应用层会话的报文发送至同一台服务器处理。因为只有这台服务 器上拥有相应的会话参数,才能实现对应用层会话正确、有效的处理。实现 应用层会话的持续性就是使属于同一应用层会话的多条TCP连接能够由相 同的服务器进行处理。
为了实现应用层会话的持续性,LB设备需要解析TCP连接上的应用层 报文,根据应用层报文中携带的会话参数确定发往的服务器,从而保证属于 同一应用层会话的报文发往同一台服务器处理。
但是,采用安全套接层(SSL, Secure Socket Layer )协议对应用层报文 进行加密处理时,SSL协议将会对整个应用层报文进行加密。这样,LB设 备就无法解析应用层报文获得其中携带的会话参数,从而也无法保证属于同 一应用层会话的多条TCP连接均发往同一服务器进行处理,保障应用层会 话的持续性。
发明内容
有鉴于此,本发明提供了一种实现应用层会话持续性的负载均衡方法、系统、客户端、LB设备和服务器,应用本发明所提供的技术方案能够保证通过SSL连接传输的应用层会话的持续性。为达到上述目的,本发明的技术方案是这样实现的一种实现应用层会话持续性的负载均衡方法,应用于安全套接层SSL 上传输的应用层会话,该方法适用的负载均衡系统包括虛拟服务器,所述虚 拟服务器由含有多个服务器的服务器群组和为所述服务器群组提供负载均 衡的负载均衡LB设备构成;该方法包括客户端记录当前与自身进行应用层会话的对端服务器的设备标识ID, 将所述设备ID携带在承载所述应用层会话的IP报文的报文头中,发送所述 IP报文至所述虚拟服务器;所述虚拟服务器中的LB设备接收所述IP报文,根据报文头中携带的一种实现应用层会话持续性的负载均衡系统,该系统包括客户端、多个 服务器组成的服务器群组和负载均衡LB设备;所述LB设备和服务器群组 对客户端体现为虚拟服务器;所述客户端,用于记录当前与自身在安全套接层SSL上进行应用层会 话对端服务器的设备标识ID,将所述设备ID携带在承载所述应用层会话的 IP报文的报文头中,向所述虛拟服务器发送所述IP报文;所述负载均衡设备,用于接收所述客户端发送的IP报文,根据报文头 中携带的设备ID将收到的IP报文发送至与所述客户端进行应用层会话的对 端服务器;所述服务器,用于处理收到的IP报文。一种实现应用层会话持续性的客户端,该客户端包括处理单元和网络接 口单元;所述处理单元,用于记录当前与自身在安全套接层SSL上进行应用层 会话对端服务器的设备标识ID,将所述设备ID携带在承载所述应用层会话 的IP报文的报文头中,通过所述网络接口单元发送所述IP报文;所述网络接口单元,用于收发报文。
一种实现应用层会话持续性的负载均衡设备,该设备包括执行单元和收 发单元;
所述执行单元,用于通过所述收发单元接收IP报文,根据报文头中携 带的设备标识ID将收到的IP报文通过所述收发单元发送至与该设备ID对
应的服务器;
所述收发单元,用于收发报文。
一种实现应用层会话持续性的服务器,该服务器包括控制单元和收发单
元;
所述控制单元,用于通过所述收发单元,接收客户端通过SSL连接发 送的首个应用层会话请求报文,将自身的设备ID携带在对应的应用层会话 应答报文中,釆用SSL连接通过所述收发单元发送给所述客户端;
所述收发单元,用于收发单元。
本发明所提供的技术方案,客户端记录当前应用层会话对端服务器的设 备ID,将设备ID携带在承载应用层会话的IP报文的报文头中;LB设备根 据报文头中携带的设备ID将收到的IP报文发送至所述服务器处理,使得即 使是通过SSL连接传输的应用层会话,也能够将该应用层会话对应的IP报 文发送至同一服务器进行处理,实现了应用层会话的持续性。
图1为现有技术负载均衡系统的结构图; 图2为本发明负载均衡方法的示例性流程图; 图3为本发明负载均衡系统的系统结构图; 图4为本发明所提供的客户端的结构图; 图5为本发明所提供的LB设备的结构图; 图6为本发明所提供的服务器的结构图; 图7为本发明一应用示例性方法的流程图。
具体实施方式
参见图2,图2为本发明技术方案的示例性流程图,应用于SSL上传输 的应用层会话,该方法适用的负载均衡系统包括虚拟服务器,所述虚拟服务 器由含有多个服务器的服务器群组和为所述服务器群组提供负载均衡的负 载均衡LB设备构成。该方法具体包括以下步骤在步骤201中,客户端记 录当前与自身进行应用层会话的对端服务器的设备标识(ID),将所述设备 ID携带在承载所述应用层会话的IP报文的报文头中,发送所述IP报文至所 述虚拟服务器。在步骤202中,所述虚拟服务器中的LB设备接收所述IP 报文,根据报文头中携带的设备ID将收到的IP报文发送至所述服务器群组 中的对端服务器处理。其中,本发明中所使用的设备ID可以是服务器原有 的标识信息,该标识信息能够使自身区别于其他服务器;也可以是专为实现 本发明技术方案而配置的标识。该标识能够唯一区别负载均衡服务器群组中 的服务器。其中,所述客户端记录当前应用层会话对端服务器的设备ID可以包括 所述服务器通过SSL连接收到所述客户端发送的首个应用层会话请求报文 时,将自身的设备ID携带在对应的应用层会话应答报文中,返回给所述客 户端记录。具体的,可以是所述客户端向所述虚拟服务器通过SSL连接发 送首个应用层会话请求报文;所述虚拟服务器中的LB设备接收所述首个应 用层会话请求报文,并根据负载均衡策略将该应用层会话请求报文发送至所 述对端服务器处理;所述对端服务器处理收到的首个应用层会话请求报文, 并将自身的设备ID携带在对应的应用层会话应答报文中,返回给所述客户 端;所述客户端记录返回的设备ID。当然,客户端记录应用层会话对端服务器的设备ID的方法,还可以是 从LB设备处收到。具体可以是LB设备在收到客户端发送的首个应用层会务器的设备ID发送给客户端。这样,客户端在传输后续应用层会话报文就可以将设备ID携带在承载应用层会话的IP报文的报文头中,供LB设备根 据设备ID找到对应的服务器。这里,将设备ID携带在承载所述应用层会话的IP报文的报文头中的具 体实现方式,可以是客户端将应用层会话报文封装为IP报文后,根据当前 应用层会话的目的IP地址和目的端口 ,将设备ID携带在具有相同目的IP 地址和目的端口的IP报文的报文头中,发送出去。由于在负载均衡技术中, 服务器群组与LB设备构成了一个虚拟服务器,对外提供唯一的IP地址,而 对不同的应用层服务提供了不同的服务端口 ,所以客户端可以通过目的IP 和目的端口来唯一确定一个IP报文是否属于指定的应用层服务会话。客户端只对属于指定应用层会话的IP报文添加设备ID字段,对其它IP报文不 予处理。上述操作不需要解析应用层报文内容,仅需在对IP报文头进行处 理,效率4交高。另外,参见图3,图3为本发明技术方案的示例性系统结构图。该系统 具体包括客户端、多个服务器组成的服务器群组和LB设备;所述LB设 备和服务器群组对客户端体现为虛拟服务器。其中,所述客户端,用于记录 当前与自身在SSL上进行应用层会话对端服务器的ID,将所述设备ID携带 在承载所述应用层会话的IP报文的报文头中,向所述虚拟服务器发送所述 IP报文。所述负载均衡设备,用于接收所述客户端发送的IP报文,根据报 文头中携带的设备ID将收到的IP报文发送至与所述客户端进行应用层会话 的对端服务器。所述服务器,用于处理收到的IP报文。其中,所述服务器在通过SSL连接收到所述客户端发送的首个应用层 会话请求报文时,将自身的设备ID携带在对应的应用层会话应答报文中, 返回给所述客户端;所述客户端,用于记录从所述服务器收到的设备ID。具体的,参见图4,图4为本发明所提供的一种实现应用层会话持续性 的客户端。该客户端包括处理单元和网络接口单元。其中,所述处理单元,用 于记录当前与自身在SSL上进行应用层会话对端服务器的ID,将所述设备ID所述IP报文;所述网络接口单元,用于收发报文。其中,处理单元的具体实现
可以是一个预先安装在客户端上的软件;也可以是在用户访问服务器时动态下 载的程序,例如在Web应用中,根据Web页面控件而动态下载的客户端程序。 具体的,所述处理单元包括应用单元和流标记单元。其中,所述应用单元, 用于通过SSL连接与服务器进行应用层会话;从服务器返回的首个响应报文中 获得其中携带的所述服务器的设备ID,将该设备ID发送至所述流标记单元。 相应的,所述流标记单元,用于截获所述应用单元发送的承载所述应用层会话 的IP报文,将接收的设备TD携带在所截获IP报文的报文头中,通过所述网络 接口单元发送所述IP报文。这里,流标记单元可以借助PC机上的个人防火墙 来实现此项功能。
另外,所述应用单元,进一步用于将所述应用层会话对端服务器的目的IP 地址和目的端口发送给所述流标记单元;所述流标记单元,用于在截获承栽所 述应用层会话的IP报文时,截获与收到的目的IP地址和目的端口相同的IP报文。
另外,参见图5,图5为本发明所提供的一种实现应用层会话持续性的 LB设备。该设备至少包括执行单元和收发单元。其中,所述执行单元,用 于通过所述收发单元接收IP报文,根据报文头中携带的设备标识ID将收到 的IP报文通过所述收发单元发送至与该设备ID对应的服务器;所述收发单 元,用于收发报文。
再参见图6、图6为本发明所提供的一种实现应用层会话持续性的服务 器。该服务器包括控制单元和收发单元。其中,所述控制单元,用于通过所 述收发单元,接收客户端通过SSL连接发送的首个应用层会话请求报文, 将自身的设备ID携带在对应的应用层会话应答报文中,采用SSL连接通过 所述收发单元发送给所述客户端;所述收发单元,用于收发单元。
为了使本发明的技术方案更加清楚、明白,以下通过一具体应用示例对 本发明的技术方案进行更为详细的介绍。
参见图7,图7为本应用示例的流程图。在步骤701中,客户端通过与服务器建立的SSL连接,向服务器发送 应用层会话请求报文。
应用层会话通常通过多个TCP连接来实现。如果客户端和服务器之间 采用的是SSL连接,则在建立TCP连接之后,再在其上建立SSL连接。
这里,具体的实现可以是,客户端与LB设备和服务器群组构成的虚拟 服务器建立SSL连接;客户端通过该SSL连接向服务器群组中的一服务器 发送应用层会话请求报文。这里的服务器为客户端当前应用层会话的对端服 务器。该对端服务器是由虚拟服务器中的LB设备根据负载均衡策略选择的。
在步骤702中,服务器接收客户端发送的应用层会话请求报文,将自身 的设备ID携带在对应的应用层会话响应报文中,返回给客户端。
例如,客户端与服务器之间在SSL连接之上传输Http的请求和应答。 则服务器收到客户端发送的首个Http请求时,将自身的设备ID携带于对应 的Http响应报文中,发送给客户端。在Http应用中,服务器可以设置Cookie 字段来携带自身的设备ID。
在步骤703中,客户端收到服务器返回的响应报文,记录其中携带的设 备ID。
例如,在HUp应用中客户端4妄收服务器返回的Http响应才艮文,保存其 中的Cookie字段,由客户端中的应用单元来获取Cookie中携带的设备ID。 将获取的设备ID发送至流标记单元记录。同时,Web客户端中的控件还可 以同时将当前Http会话对应服务器的目的IP地址和目的端口号传输给流标 记单元,用于流标记单元截获承载该应用层会话报文的IP报文。
步骤701 ~ 703中客户端和服务器之间的交互是通过一个TCP连接来实 现的,因此可以按照保持TCP连接持续性的方法来保证上应用层会话的持 续性。
在步骤704中,客户端根据上述应用层会话的目的IP地址和目的端口 , 将设备ID携带在具有相同目的IP地址和目的端口的IP报文的报文头中, 发送该IP纟良文。应用层会话报文的传输是依靠对报文的层层封装,在本发明中包括SSL
层的封装、TCP层的封装以及网络层封装。进行网络层的封装之后,就形成
了 IP报文。
当客户端记录了应用层会话对端服务器的设备ID之后,客户端将可以
文头不被加密,因此LB设备能够读取该设备ID,进而将该报文发送至对应 的服务器。
在客户端将设备ID携带在IP报文中时,该IP报文可能已经对应同一 应用层会话的其他新建TCP连接。这样,通过IP报文头中的设备ID, LB 设备就能够将属于同一应用层会话的多个TCP发往同一服务器进行处理, 实现了应用层会话持续性。
在IP报文的报文头加设备ID的具体实现可以是如果发送的报文为 IPV4协议类型,则在IP头中增加Options字段。既可以使用已有的类型, 如类型编码为8的Stream ID选项,来记录报文所属的设备ID,也可以使用 自定义的类型,如自定义类型编码为11的选项来记录服务器的设备ID;如 果发送的报文为IPv6协议类型,则可以使用IPv6头中的目的Options头来 记录服务器的设备ID。
在步骤705中,LB设备接收所述客户端发送的IP报文,根据报文头中 携带的设备ID将收到的IP报文发送至服务器。
在为负载均衡服务器群组中的各服务器分配设备ID时,可以在LB设 备中记录各服务器设备ID及其对应的通讯地址,可以是IP地址或者是MAC 地址。这样,在LB设备收到IP报文时,就可以根据IP报文中携带的设备 ID,确定相应服务器的真实通讯地址,进而将报文发送出去。由于同一会话 报文对应的IP报文中携带的设备ID相同,因此即使该会话报文通过SSL 加密处理,也能通过LB设备发送至同一服务器进行处理,保证了会话报文 传输的持续性。另外,在将报文转发给服务器去处理之前,LB设备可以将 客户端附加的设备ID信息去掉,使服务器获得原客户端应用单元发出的真实IP报文。
在步骤706中,服务器处理收到的IP报文。
本发明所提供的技术方案,客户端记录当前应用层会话对端服务器的设 备ID,将设备ID携带在承载应用层会话的IP报文的报文头中;LB设备根 据报文头中携带的设备ID将收到的IP报文发送至对应的服务器处理,不需 要解析经过SSL层封装的应用层报文,就能够使对应同一应用层会话的IP 报文能够发送至同一服务器进行处理,实现应用层会话的持续性。
本发明所提供的技术方案使LB设备不需要对报文进行加密和解密的处 理,也不需要对应用层报文进行解析,就能实现应用层会话的持续性,使得 LB设备的负载大为减轻,有利于提高整个系统的转发性能。同时,由于在 本发明的技术方案中,LB设备直接根据IP头中携带的设备ID就可以确定 如何转发IP报文实现应用层会话的持续性,不用分析TCP报文,进行一步 减轻了 LB设备的处理任务。同时,本发明所提供的技术方案能够广泛适用 于各种负载均衡的工作模式,例如网络地址转换(NAT)模式和直接路由 (DR, Direct-Routing)模式。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本 发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在 本发明的保护范围之内。
权利要求
1、一种实现应用层会话持续性的负载均衡方法,其特征在于,应用于安全套接层SSL上传输的应用层会话,该方法适用的负载均衡系统包括虚拟服务器,所述虚拟服务器由含有多个服务器的服务器群组和为所述服务器群组提供负载均衡的负载均衡LB设备构成;该方法包括客户端记录当前与自身进行应用层会话的对端服务器的设备标识ID,将所述设备ID携带在承载所述应用层会话的IP报文的报文头中,发送所述IP报文至所述虚拟服务器;所述虚拟服务器中的LB设备接收所述IP报文,根据报文头中携带的设备ID将收到的IP报文发送至所述服务器群组中的对端服务器处理。
2、 根据权利要求1所述的方法,其特征在于,所述客户端记录当前与自身 进行应用层会话的对端服务器的设备ID包括所述客户端向所述虚拟服务器通过SSL连接发送首个应用层会话请求报文;所述虚拟服务器中的LB设备接收所述首个应用层会话请求报文,并根据负载均衡策略将该应用层会话请求报文发送至所述对端服务器处理;所述对端服务器处理收到的首个应用层会话请求报文,并将自身的设备ID 携带在对应的应用层会话应答报文中,返回给所述客户端; 所述客户端记录返回的设备ID。
3、 根据权利要求1或2所述的方法,其特征在于,所述将所述设备ID携 带在承载所述应用层会话的IP报文的报文头中包括所述客户端根据所述应用层会话的目的IP地址和目的端口 ,将所述设备ID 携带在具有相同目的IP地址和目的端口的IP报文的报文头中。
4、 一种实现应用层会话持续性的负载均衡系统,其特征在于,该系统包括 客户端、多个服务器组成的服务器群组和负载均衡LB设备;所述LB设备和服 务器群组对客户端体现为虛拟服务器;所述客户端,用于记录当前与自身在安全套接层SSL上进行应用层会话对 端服务器的设备标识ID,将所述设备ID携带在承载所述应用层会话的IP报文 的报文头中,向所述虚拟服务器发送所述IP报文;所述负载均衡设备,用于接收所述客户端发送的IP报文,根据报文头中携器;所述服务器,用于处理收到的IP报文。
5、 根据权利要求4所述的负载均衡系统,其特征在于,所述服务器,进一步用于通过SSL连接收到所述客户端发送的首个应用层给所述客户端;所述客户端,用于记录收到的设备ID。
6、 一种实现应用层会话持续性的客户端,其特征在于,该客户端包括处理 单元和网络接口单元;所述处理单元,用于记录当前与自身在安全套接层SSL上进行应用层会话 对端服务器的设备标识ID,将所述设备ID携带在承载所述应用层会话的IP报 文的报文头中,通过所述网络接口单元发送所述IP报文;所述网络接口单元,用于收发报文。
7、 根据权利要求6所述的客户端,其特征在于,所述处理单元包括应用单 元和流标记单元;所述应用单元,用于通过SSL连接与服务器进行应用层会话;从服务器返 回的首个响应报文中获得其中携带的所述服务器的设备ID,将该设备ID发送 至所述流标记单元;报文,将接收的设备ID携带在所截获IP报文的报文头中,通过所述网络接口 单元发送所述IP报文。
8、 根据权利要求7所述客户端,其特征在于,所述应用单元,进一步用于将所述应用层会话对端服务器的目的IP地址和目的端口发送给所述流标记单元;所述流标记单元,用于在截获承载所述应用层会话的IP报文时,截获与收 到的目的IP地址和目的端口相同的IP报文。
9、 一种实现应用层会话持续性的负载均衡设备,其特征在于,该设备包括 执行单元和收发单元;所述执行单元,用于通过所述收发单元接收IP报文,根据报文头中携带的 设备标识ID将收到的IP报文通过所述收发单元发送至与该设备ID对应的服务 器;所述收发单元,用于收发报文。
10、 一种实现应用层会话持续性的服务器,其特征在于,该服务器包括控 制单元和收发单元;所述控制单元,用于通过所述收发单元,接收客户端通过SSL连接发送的 首个应用层会话请求报文,将自身的设备ID携带在对应的应用层会话应答报文 中,采用SSL连接通过所述收发单元发送给所述客户端;所述收发单元,用于收发单元。
全文摘要
本发明公开了实现应用层会话持续性的负载均衡方法、系统及设备。客户端记录当前应用层会话对端服务器的设备ID,将设备ID携带在承载应用层会话的IP报文的报文头中;LB设备根据报文头中携带的设备ID将收到的IP报文发送至所述服务器处理,使得对应同一应用层会话的IP报文能够发送至同一服务器进行处理,实现了应用层会话的持续性。
文档编号H04L29/08GK101304436SQ20081011622
公开日2008年11月12日 申请日期2008年7月7日 优先权日2008年7月7日
发明者明 薛 申请人:杭州华三通信技术有限公司