一种利用ssl会话重用进行负载均衡的系统及方法
【技术领域】
[0001]本发明涉及网络应用交付控制领域,特别涉及一种利用SSL会话重用进行负载均衡的系统及方法。
【背景技术】
[0002]随着广大互联网用户对隐私和安全的重视程度加深,越来越多的网站开始部署SSL来保护客户端和服务器之间的数据传输。绝大部分的SSL(加密套接字协议层,Security Socket Layer)通信都开启了会话重用功能。
[0003]目前使用较多的一种方案是负载均衡器将SSL流量透明传输给后台服务器,由后者进行加解密。后台服务器的选择使用轮询等基本算法,SSL会话ID由后台服务器产生,负载均衡器记录SSL会话ID和后台服务器的对应关系。
[0004]上述方案虽能够均衡处理SSL流量,但有以下若干不足:
[0005]?性能较低
[0006]由于SSL加解密工作在后台服务器上进行,而没有将其卸载到负载均衡器上,性能指标比较差。
[0007].SSL会话ID冲突
[0008]SSL会话ID由各后台服务器随机产生,SSL会话ID存在重复的可能性。而负载均衡器需要记录SSL会话ID与后台服务器的映射表,不允许SSL会话ID产生冲突。如负载均衡器收到的SSL sererhello消息中,SSL会话ID在映射表中已经存在,则会重新与后台服务器建立连接,重新产生SSL会话ID。
【发明内容】
[0009]为克服已有技术中存在的问题,本发明的目的是将SSL的处理卸载到负载均衡器上,并能均匀、高效地将客户端请求分发到后台服务器的系统及方法。
[0010]一种利用SSL会话重用进行负载均衡的系统,是由客户端、互联网、负载均衡设备及后台服务器组成,其中在负载均衡设备中包括有TCP连接模块、SSL会话ID产生模块、SSL会话缓存模块、SSL会话ID哈希模块以及对应连接的后台服务器模块。
[0011]所述的SSL会话ID产生模块用于当客户端向负载均衡器发送Clienthell0消息时,随机产生SSL会话ID,并向客户端返回serverhello消息;
[0012]所述的SSL会话缓存模块用于为SSL会话缓存数据结构分配内存,保存SSL会话缓存信息,以便于后续SSL会话重用;
[0013]所述的SSL会话ID哈希模块用于对SSL会话ID进行哈希运算;
[0014]所述的连接后台服务器模块用于根据哈希的结果选择后台服务器,同时将所选择的后台服务器名字记录在SSL会话缓存中。
[0015]一种利用SSL会话重用进行负载均衡的方法,是由以下步骤实现的:
[0016]步骤I,客户端与负载均衡设备建立TCP连接;
[0017]步骤2,客户端向负载均衡设备发送clienthello消息,负载均衡设备产生会话ID,并向客户端发送包含会话ID的serverhello消息;
[0018]步骤3,负载均衡设备与客户端完成后续SSL握手过程,包括负载均衡设备在SSL会话缓存数据结构中保存会话关键信息;
[0019]步骤4,负载均衡设备对SSL会话ID进行哈希,根据哈希的结果选择后台服务器,同时将所选择的后台服务器名字记录在SSL会话缓存中;
[0020]步骤5,负载均衡设备与后台服务器连接,客户端与后台服务器之间进行数据传输;
[0021]步骤6,客户端与负载均衡设备建立新的SSL连接,重用上述SSL会话ID,得到对应的后台服务器名字;
[0022]步骤7,新的SSL握手完成,直接连接所对应的后台服务器。
[0023]SSL会话ID具有很强的随机性,本发明利用这一特点选择后台服务器,能够保证流量均匀分发;本发明将后台服务器名字记录在SSL会话缓存数据结构中,使得后续新的SSL请求能够快速得到对应的后台服务器的同时,保证了重用同一 SSL会话ID的SSL请求能够分发到同一台后台服务器。
【附图说明】
[0024]图1是本发明设备的系统结构示意图;
[0025]图2是本发明系统中负载均衡设备的系统结构图;
[0026]图3是本发明方法流程图;
[0027]图4是本发明方法数据流时序图。
【具体实施方式】
[0028]在以下的叙述中,为了使读者更好地理解本申请而提出了许多技术细节。但是,本领域的普通技术人员可以理解,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也是本申请各权利要求所要求保护的技术方案。
[0029]为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明的实施方式作进一步地详细描述。
[0030]如图1所示,一种利用SSL会话重用进行负载均衡的系统,是由客户端100、互联网200、负载均衡设备300及若干后台服务器400组成,如图2,所述的负载均衡设备中包括有TCP连接模块301、SSL会话ID产生模块302、SSL会话缓存模块303、SSL会话ID哈希模块304以及连接的后台服务器模块305。
[0031]所述的SSL会话ID产生模块用于当客户端向负载均衡器发送clienthello消息时,随机产生SSL会话ID,并向客户端返回serverhello消息;
[0032]所述的SSL会话缓存模块用于为SSL会话缓存数据结构分配内存,保存SSL会话缓存信息,例如会话ID,主密钥,加密套件等,以便于后续SSL会话重用;
[0033]所述的SSL会话ID哈希用于对SSL会话ID进行哈希运算;
[0034]所述的连接后台服务器模块用于根据哈希的结果选择后台服务器。同时将所选择的后台服务器名字记录在SSL会话缓存中。
[0035]现以一台ArrayNetworks的负载均衡器APV2600为例,利用SSL会话重用进行负载均衡的实现方法如下:
[0036]首先进行系统配置:
[0037]1.配置后台服务器
[0038]Slb real http rsl 10.3.0.20
[0039]Slb real http rs2 10.3.0.21
[0040]Slb group method gtest sslid
[0041]Slb group member gtest rsl
[0042]Slb group member gtest rs2
[0043]2.配置对客户端提供服务的虚拟服务vs
[0044]Slb virtual https vsl 10.8.1.30
[0045]3.配置SSL虚拟服务
[0046]Ssl virtual host vhostl vsl
[0047]Ssl import key
[0048]Ssl import certificate
[0049]Ssl start vhostl
[0050]4.配置负载均衡策略
[0051]Slb policy default vsl gtest
[0052]然后,在完成上述系统配置之后,如图3所示,采用如下的步骤:
[0053]步骤I,客户端与负载均衡设备建立TCP连接;
[0054]步骤2,客户端向负载均衡设备发送clienthello消息,负载均衡设备产生会话ID,并向客户端发送包含会话ID的serverhello消息;
[0055]步骤3,负载均衡设备与客户端完成后续SSL握手过程,包括负载均衡设备在SSL会话缓存数据结构中保存会话关键信息;
[0056]步骤4,负载均衡设备对SSL会话ID进行哈希,根据哈希的结果选择后台服务器,同时将所选择的后台服务器名字记录在SSL会话缓存中;
[0057]步骤5,负载均衡设备与后台服务器连接,客户端与后台服务器之间进行数据传输;
[0058]步骤6,客户端与负载均衡设备建立新的SSL连接,重用上述SSL会话ID,得到对应的后台服务器名字;
[0059]步骤7,新的SSL握手完成,直接连接所对应的后台服务器。
[0060]图4所示,描述了上述步骤中客户端与负载均衡器及后台服务器之间的数据流时序关系,大致同上述文字描述,不再赘述。
[0061]需要说明的是,本发明各设备实施方式中提到的各单元都是逻辑单元,在物理上,一个逻辑单元可以是一个物理单元,也可以是一个物理单元的一部分,还可以以多个物理单元的组合实现,这些逻辑单元本身的物理实现方式并不是最重要的,这些逻辑单元所实现的功能的组合才是解决本发明所提出的技术问题的关键。此外,为了突出本发明的创新部分,本发明没有引入上述各设备实施方式以及与解决本发明所提出的技术问题关系不太密切的单元,但这并不表明不存在上述设备实施方式以及其它有关实施单元。
[0062]虽然通过参照本发明的某些优选实施方式,已经对本发明进行了图示和描述,但本领域的普通技术人员应该明白,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。
【主权项】
1.一种利用SSL会话重用进行负载均衡的系统,是由客户端、互联网、负载均衡设备及后台服务器组成,其特征是在负载均衡设备中包括有TCP连接模块、SSL会话ID产生模块、SSL会话缓存模块、SSL会话ID哈希模块以及对应连接的后台服务器模块; 所述的SSL会话ID产生模块用于当客户端向负载均衡器发送Clienthello消息时,随机产生SSL会话ID,并向客户端返回serverhello消息; 所述的SSL会话缓存模块用于为SSL会话缓存数据结构分配内存,保存SSL会话缓存信息,以便于后续SSL会话重用; 所述的SSL会话ID哈希模块用于对SSL会话ID进行哈希运算; 所述的连接后台服务器模块用于根据哈希的结果选择后台服务器,同时将所选择的后台服务器名字记录在SSL会话缓存中。2.一种利用SSL会话重用进行负载均衡的方法,其特征是由以下步骤实现的: 步骤1,客户端与负载均衡设备建立TCP连接; 步骤2,客户端向负载均衡设备发送Clienthello消息,负载均衡设备产生会话ID并向客户端发送包含会话ID的serverhello消息; 步骤3,负载均衡设备与客户端完成后续SSL握手过程,包括负载均衡设备在SSL会话缓存数据结构中保存会话关键信息; 步骤4,负载均衡设备对SSL会话ID进行哈希,根据哈希的结果选择后台服务器,同时将所选择的后台服务器名字记录在SSL会话缓存中; 步骤5,负载均衡设备与后台服务器连接,客户端与后台服务器之间进行数据传输;步骤6,客户端与负载均衡设备建立新的SSL连接,重用上述SSL会话ID,得到对应的后台服务器名字; 步骤7,新的SSL握手完成,直接连接所对应的后台服务器。
【专利摘要】本发明一种利用SSL会话重用进行负载均衡的系统,是由客户端、互联网、负载均衡设备及后台服务器模块组成,其中在负载均衡设备中包括有TCP连接模块、SSL会话ID产生模块、SSL会话ID缓存模块、SSL会话ID哈希模块以及连接后台服务器模块。SSL会话ID具有很强的随机性,本发明利用这一特点选择后台服务器,能够保证流量均匀分发;本发明将后台服务器名字记录在SSL会话缓存数据结构中,使得后续新的SSL请求能够快速得到对应的后台服务器的同时,保证了重用同一SSL会话ID的SSL请求能够分发到同一台后台服务器。
【IPC分类】H04L12/803, H04L29/06
【公开号】CN105591959
【申请号】CN201410575787
【发明人】陈永亮
【申请人】华耀(中国)科技有限公司
【公开日】2016年5月18日
【申请日】2014年10月24日