信息化 频道

PIOLINK应用交付产品会话保持技术解析

  随着互联网的快速发展,数据中心应用系统的服务对于用户来说就更加显得重要,利用负载均衡技术对数据中心的应用系统集群的多台服务器负载均衡,以解决服务提供时的故障容错和性能瓶颈成为越来越多的用户的选择,在大多数的应用系统中,一个客户与服务器经常经过好几次的交互过程才能完成一个请求的。由于这几次交互过程是密切相关的,服务器在进行这些交互过程的某一个交互步骤时,往往需要了解上一次交互过程的处理结果,或者上几步的交互过程结果,服务器进行下一步操作时需要这就要求所有这些相关的交互过程都由一台服务器完成,而不能被负载均衡器分散到不同的服务器上,所以当用户在使用负载均衡技术,负载均衡设备的会话保持就成为保证客户与服务器之间正常有效通信的保障。

  PIOLINK公司作为应用交付领域的领导厂商,一直致力于开发新的Internet应用服务和工具,以便为用户提供创新性的解决方案,其开发的专业负载均衡PAS-K产品采取了多种会话保持技术能够解决用户的上述问题。

  PIOLINK公司的PAS-K支持多种会话保持的机制:如:基于Cookie的会话保持、基于IP地址的会话保持以及基于SSL话路ID的会话保持,下面分别作介绍。

  基于HTTP Cookie的会话保持

  基于HTTP Cookie的会话保持是利用服务器和客户端之间交换的HTTP Cookie信息来选择真实服务器的持续连接功能。通过此功能可以解决利用IP地址时可能发生的问题。

  Cookie是为交换HTTP服务器和客户端之间的状态信息的机制。下图是Cookie的工作过程。

PIOLINK应用交付产品会话保持技术解析

  1. 客户端发送不包含Cookie的HTTP请求。

  2. 服务器做出应答时,使用Set-Cookie标头向客户端发送Cookie。

  3. 客户端保存接收的Cookie,向同一个服务器发送请求时,在HTTP请求标头中加入Cookie后发送。

  4. 服务器根据HTTP请求标头中的Cookie值来处理HTTP请求。

  当服务器发送Set-Cookie领域时,可以设定Cookie的期满日期和时间,期满后保存在客户端的Cookie将不再被加入到HTTP请求中。指定期满时间的Cookie叫持久性Cookie;而没有指定期满时间的Cookie叫临时性Cookie。当关闭网页浏览器时,临时性Cookie也将被消失。

  工作方式:基于HTTP Cookie的持续连接是利用服务器和客户端之间交换的HTTP Cookie信息,第一次连接真实服务器时,把真实服务器的信息记录在Cookie内。此后,客户端发送的HTTP请求中包含着真实服务器的信息,因此根据Cookie值可以确认上次连接过的真实服务器。

  例如:如果客户端向‘CGI’服务器组内的IP地址为192.168.1.1的真实服务器发送HTTP请求,真实服务器在HTTP应答标头中加入如下的Set-Cookie领域后,发送给客户端。

  Set-Cookie: PiolinkCGI=c0a80101; path=/

  客户端接收此Cookie后,向同一个服务器发送请求时,在HTTP请求标头的Cookie领域中加入如下值。

  Cookie: PiolinkCGI=c0a80101

  如果启用基于HTTP Cooki持续连接功能的负载均衡服务接收客户端的HTTP请求,不使用负载均衡算法来选择真实服务器,而直接选择IP地址为192.168.1.1的真实服务器。

  模式:基于HTTP Cookie的会话保持功能是根据记录Set-Cookie值的对象可分为被动(Passive)、嵌入(Insert)、重写(Rewrite)、散列(Hash)等四种模式。散列模式于其它三种模式不同,真实服务器直接对每个话路提供Cookie。七层负载均衡中,可以对于每个服务器组设定会话保持方式。

  基于IP地址的会话保持

  对于支持第4层负载均衡的一般的TCP/UDP集群,PIOLINK支持基于IP地址的会话保持。如果在系统中激活了“sticky connections”特性,PIOLINK则在客户端连接到一台服务器时,用源IP地址来标识客户端。PIOLINK在一段设定的时间内会把来自同一个IP地址的客户请求转发给同一台服务器。

  “sticky timer”是会话保持计时器,用来对某一客户端与一台服务器连接后所过去的时间计时。在某一客户端与一台服务器的连接中止后而且它们之间也没有别的当前连接时,计时器便开始计时。这时一旦出现新的连接,PIOLINK便会重置计时器。如果该客户端没有任何新的请求,计时器就会一直继续直到超时。超时以后,对该客户端再发来的请求PIOLINK就会像对待其它新的连接一样,按照设定的负载均衡算法来选择一台服务器,将请求转发过去。

  有些ISP使用多个代理服务器(proxy server)来发送客户端的连接。为了能正确处理这一类客户端连接的会话保持,PIOLINK还支持“网段会话保持”:只是客户端IP地址的网段部分对连接的会话保持起作用,不管连接来自哪一个proxy,只要IP地址的网络号相同,请求就会被导向同一台服务器。

  还可以将PIOLINK配置成保证能将来自某一特定客户端的请求发送到同一台服务器上,尽管这次连接的是与上次不同的虚拟集群。在一个集群上激活“inter-cluster stickiness”选项,PIOLINK在接到每个连接请求时都会检查该虚拟集群上是否有会话保持记录(就和处理正常的会话保持一样),如果没有找到会话保持记录,PIOLINK接下来会检查所有其它的集群是否有相同的IP地址,如果仍然没有找到能够匹配的会话保持记录,那么就按新的连接请求处理。

  基于SSL话路ID的会话保持

  基于SSL(Secure Socket Layer)话路ID的会话保持是使用SSL话路ID信息来区分客户端。基于SSL话路ID的会话保持与客户端的IP无关,因此客户端的IP随时变化时,也可以使用基于SSL话路ID的会话保持。

  SSL协议位于TCP/IP协议与各种应用层协议之间,为服务器和客户端的数据通讯防止盗听、数据伪造而保护个人信息和提供网络安全的协议。SSL主要用于使用加密的HTTP话路的应用。

  客户端和服务器在传送数据之前,通讯双方进行身份认证、协商加密算法、交换加密密钥等握手过程。PAS-K使用在握手过程中传送的hello数据包中的SSL话路ID,选择真实服务器。在所设定的超时时间内,PAS-K将维持SSL会话ID和服务器之间的匹配。

  基于SSL话路ID的会话保持的工作过程如下。

  1. 客户端发送不包含话路ID的hello数据包;

  2. 在七层负载均衡服务,根据负载均衡算法选择真实服务器,并向被选的真实服务器转发SSL客户端的hello数据包;

  3. 真实服务器在hello数据包中加入特定话路ID后,发送给客户端;

  4. PAS-K保存SSL服务器hello信息中的话路ID和真实服务器的匹配信息后,转发给客户端;

  5. 客户端接收SSL服务器hello数据包后,保存其话路ID;

  6. 客户端再次发送hello数据包时,加入此话路ID后发送;

  7. 七层负载均衡服务根据话路ID和真实服务器的匹配信息来选择真实服务器。

  服务器给予SSL话路ID之后,不需要交换加密密钥等过程,从而能减少服务器的负荷,并可以有效地进行SSL交换。

特别提醒:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
0
相关文章