F5负载均衡器维护手册 下载本文

1.6.3 哈希会话保持

哈希会话保持的一个基本概念就是将一个连接中的源IP 和目的IP地址进行Hash计算,根据计算得到的结果并根据后台存在多少台服务器来选择将请求分配到那台服务器。

哈希会话保持的特点是在后台服务器的健康状态不发生改变的时候,每个特定的源IP地址被分配到的服务器是固定的。并且,哈希会话保持可以没有会话保持表,而仅仅是根据计算的结果来确定一个源IP被分配到那台服务器。

哈希会话保持通常被用于一些特定场合,如要求客户端按照IP地址被固定分配的场合,或者在一些会话保持表查询的开销已经远远大于Hash计算开销的情况下,采用hash会话保持可以提高系统的处理能力和响应速度。

在实际的应用场景中,针对后台采用Cache服务器的情况,还有对URL进行Hash的处理方式,将同一个URL的请求分配到同一台Cache服务器,这样,对后台的Cache服务器群组来说,每台Cache服务器上存放的内容都是不一样的,提高Cache服务器的利用率。

1.6.4 Cookie会话保持.

Cookie是在浏览器访问WEB服务器的某个资源时,由WEB服务器在HTTP响应消息头中附带传送给浏览器的一片数据,WEB服务器传送给各个客户端浏览器的数据是可以各不相同的。浏览器可以决定是否保存这片数据,一旦WEB浏览器保存了这片数据,那么它在以后每次访问该WEB服务器时,都应在HTTP请求头中将这片数据回传给WEB服务器。

显然,Cookie最先是由WEB服务器发出的,是否发送Cookie和发送的Cookie的具体内容,完全是由WEB服务器决定的。例如,用一个Cookie来标识访问者的姓名,有效时间等。

Cookie Insert会话保持模式

因为Cookie被如此广泛的使用,特别是Session Cookie技术,基本上在所有的电子商务网站中都在使用这种技术。因此,在BIG-IP LTM中可以通过插入自己可识别的Cookie来实现会话保持。

当客户进行第一次请求时,客户HTTP请求(不带cookie)进入BIG-IP LTM,BIG-IP LTM根据负载均衡算法策略选择后端一台服务器,并将请求发送至该服务器,后端服务器进行HTTP回复(不带cookie)被发回BIG-IP LTM,然后BIG-IP LTM插入cookie,将HTTP回复返回到客户端。当客户请求再次发生时,客户HTTP请求(带有上次BIG-IP LTM插入的cookie)进入BIG-IP LTM,然后BIG-IP LTM读出cookie里的会话保持数值,将HTTP请求(带有与上面同样的cookie)发到指定的服务器,然后后端服务器进行请求回复,由于服务器并不写入cookie,HTTP响应将不带有cookie,服务器响应再次经过进入

BIG-IP LTM时,BIG-IP LTM再次写入更新后的会话保持cookie。

1.7 健康检查

健康检查是负载均衡处理中一个非常重要的环节。负载均衡的主要作用就是将客户端的请求分配到多台服务器上,如果没有健康检查,在后台服务器发生故障的时候,部分的客户端将会被分配到故障的服务器上,从而导致用户的访问失败。在一些情况下,甚至可能出现服务器本身还在工作,但其上运行的应用系统已经故障导致无法处理请求,都将会导致用户的请求失败。在BIG-IP LTM上应当能检查到这些故障,并在进行负载均衡的时候将这些故障的服务器进行自动摘除,保证应用的持续性和高可用性。

1.7.1 基于ICMP的健康检查

基于ICMP的健康检查属于最基本的健康检查方式,BIG-IP LTM主动给服务器发送一个ICMP(互联网控制信息协议)数据包,如果BIG-IP LTM收到了服务器的正确响应,则说明检查成功。

ICMP健康检查通常用于网关类型设备的健康检查,如防火墙、路由器等。这些设备通常不提供其他的健康检查手段,因此ICMP属于最佳的检查方式。另外,在一些无法使用高级健康检查手段的情况下,也只能使用ICMP健康检查手段。

1.7.2 基于TCP端口的健康检查

在基于TCP协议的应用中,每个应用系统都会绑定一个TCP端口,应用通过侦听这个端口接受客户端的请求。比如我们常见的80端口在默认情况下就是服务于HTTP服务,通常为IIS、Apache等应用系统使用,另外还有FTP(20、21)、HTTPS(443)、SMTP(25)、POP3(110)等。判断这些应用系统是否在工作最简单的方法就是从BIG-IP LTM和对应的服务器端口做一次完整的TCP握手,如果TCP握手成功,则认为服务器正常工作,如果握手失败,在超过一定的检查次数均握手失败的情况下,BIG-IP LTM则将失败的服务器标记为Down,而将新的客户端请求都发送到其他仍然正常工作的服务器上。

在TCP健康检查中还可能出现的一种情况就是在频繁检查的情况下,健康检查的流量可能导致一些比较“脆弱”的应用系统产生故障。通常有两种情况会出现这种故障情况: 1. 服务器的Socket侦听程序不完善,对于TCP健康检查没有正确关闭连接

2. 服务器对每个试图连接都进行log,最后整个应用系统的Log都被健康检查的连接所充满。而导致磁盘空间溢出或者正常的log信息无法察看。 在这种情况下,有两种解决方式:

1. 采用TCP half open的方式进行健康检查,所谓TCP half open就是BIG-IP LTM向服