F5ApplicationManagementProducts
用户会话完整性的保持
F5NetworksInc
2004-11-30
1.什么是会话保持? 3
2.F5支持什么样的会话保持方法? 4
2.1简单会话保持 4
2.2基于Cookie的会话保持 4
2.2.1cookie插入模式: 4
2.2.2Cookie重写模式 6
2.2.3PassiveCookie模式,服务器使用特定信息来设置cookie。 7
2.2.4CookieHash模式: 8
2.3SSLSessionID会话保持 8
2.4基于HTTPHeader的会话保持 9
2.5基于I-Rules的会话保持 10
1.什么是会话保持?
在大多数电子商务的应用系统或者需要进行用户身份认证的在线系统中,一个客户与服务器经常经过好几次的交互过程才能完成一笔交易或者是一个请求的完成。由于这几次交互过程是密切相关的,服务器在进行这些交互过程的某一个交互步骤时,往往需要了解上一次交互过程的处理结果,或者上几步的交互过程结果,服务器进行下一步操作时需要这就要求所有这些相关的交互过程都由一台服务器完成,而不能被负载均衡器分散到不同的服务器上。
而这一系列的相关的交互过程可能是由客户到服务器的一个连接的多次会话完成,也可能是在客户与服务器之间的多个不同连接里的多次会话完成。不同连接的多次会话,最典型的例子就是基于http的访问,一个客户完成一笔交易可能需多次点击,而一个新的点击产生的请求,可能会重用上一次点击建立起来的连接,也可能是一个新建的连接。
会话保持就是指在负载均衡器上有这么一种机制,可以识别做客户与服务器之间交互过程的关连性,在作负载均衡的同时,还保证一系列相关连的访问请求会保持分配到一台服务器上。
2.F5支持什么样的会话保持方法?
F5BigIP支持多种的会话保持方法,其中包括:简单会话保持(源地址会话保持)、HTTPHeader的会话保持,基于SSLSessionID的会话保持,I-Rules会话保持以及基于HTTPCookie的会话保持,此外还有基于SIPID以及Cache设备的会话保持等,但常用的是简单会话保持,HTTPHeader的会话保持以及HTTPCookie会话保持以及基于I-Rules的会话保持。
2.1简单会话保持
简单会话保持也被称为基于源地址的会话保持,是指负载均衡器在作负载均衡时是根据访问请求的源地址作为判断关连会话的依据。对来自同一IP地址的所有访问请求在作负载均时都会被保持到一台服务器上去。在BIGIP设备上可以为“同一IP地址”通过网络掩码进行区分,比如可以通过对IP地址192.168.1.1进行255.255.255.0的网络掩码,这样只要是来自于192.168.1.0/24这个网段的流量BIGIP都可以认为他们是来自于同一个用户,这样就将把来自于192.168.1.0/24网段的流量会话保持到特定的一台服务器上。
简单会话保持里另外一个很重要的参数就是连接超时值,BIGIP会为每一个进行会话保持的会话设定一个时间值,当一个会话上一次完成到这个会话下次再来之前的间隔如果小于这个超时值,BIGIP将会将新的连接进行会话保持,但如果这个间隔大于该超时值,BIGIP将会将新来的连接认为是新的会话然后进行负载平衡。
基于原地址的会话保持实现起来简单,只需要根据数据包三、四层的信息就可以实现,效率也比较高。存在的问题就在于当多个客户是通过代理或地址转换的方式来访问服务器时,由于都分配到同一台服务器上,会导致服务器之间的负载严重失衡。另外一种情况上客户机数量很少,但每个客户机都会产生多个并发访问,对这些必发访问也要求通过负均均衡器分配到多个服器上,这时基于客户端源地址的会话保持方法也会导致负载均衡失效。
2.2基于Cookie的会话保持
2.2.1cookie插入模式:
在Cookie插入模式下,BigIP将负责插入cookie,后端服务器无需作出任何修改
当客户进行第一次请求时,客户HTTP请求(不带cookie)进入BIGIP,BIGIP根据负载平衡算法策略选择后端一台服务器,并将请求发送至该服务器,后端服务器进行HTTP回复(不带cookie)被发回BIGIP,然后BIGIP插入cookie,将HTTP回复返回到客户端。当客户请求再次发生时,客户HTTP请求(带有上次BIGIP插入的cookie)进入BIGIP,然后BIGIP读出cookie里的会话保持数值,将HTTP请求(带有与上面同样的cookie)发到指定的服务器,然后后端服务器进行请求回复,由于服务器并不写入cookie,HTTP回复将不带有cookie,恢复流量再次经过进入BIGIP时,BIGIP再次写入更新后的会话保持cookie。
2.2.2Cookie重写模式
当客户进行第一次请求时,客户HTTP请求(不带cookie)进入BIGIP,BIGIP根据负载平衡算法策略选择后端一台服务器,并将请求发送至该服务器,后端服务器进行HTTP回复一个空白的(blankcookie)并发回BIGIP,然后BIGIP重新在cookie里写入会话保持数值,将HTTP回复返回到客户端。当客户请求再次发生时,客户HTTP请求(带有上次BIGIP重写的cookie)进入BIGIP,然后BIGIP读出cookie里的会话保持数值,将HTTP请求(带有与上面同样的cookie)发到指定的服务器,然后后端服务器进行请求回复,HTTP回复里又将带有空的cookie,恢复流量再次经过进入BIGIP时,BIGIP再次写入更新后会话保持数值到该cookie。
2.2.3PassiveCookie模式,服务器使用特定信息来设置cookie。
当客户进行第一次请求时,客户HTTP请求(不带cookie)进入BIGIP,BIGIP根据负载平衡算法策略选择后端一台服务器,并将请求发送至该服务器,后端服务器进行HTTP回复一个(specialcookie)并发回BIGIP,然后BIGIP将带有服务器写的cookie值的HTTP回复返回到客户端。当客户请求再次发生时,客户HTTP请求(带有上次服务器写的cookie)进入BIGIP,然后BIGIP根据cookie里的会话保持数值,将HTTP请求(带有与上面同样的cookie)发到指定的服务器,然后后端服务器进行请求回复,HTTP回复里又将带有更新的会话保持cookie,恢复流量再次经过进入BIGIP时,BIGIP将带有该cookie的请求回复给客户端。
2.2.4CookieHash模式:
当客户进行第一次请求时,客户HTTP请求(不带cookie)进入BIGIP,BIGIP根据负载平衡算法策略选择后端一台服务器,并将请求发送至该服务器,后端服务器进行HTTP回复一个cookie并发回BIGIP,然后BIGIP将带有服务器写的cookie值的HTTP回复返回到客户端。当客户请求再次发生时,客户HTTP请求(带有上次服务器写的cookie)进入BIGIP,然后BIGIP根据cookie里的一定的某个字节的字节数来决定后台服务器接受请求,将HTTP请求(带有与上面同样的cookie)发到指定的服务器,然后后端服务器进行请求回复,HTTP回复里又将带有更新后的cookie,恢复流量再次经过进入BIGIP时,BIGIP将带有该cookie的请求回复给客户端。
2.3SSLSessionID会话保持
在用户的SSL访问系统的环境里,当SSL对话首次建立时,用户与服务器进行首次信息交换以:1}交换安全证书,2)商议加密和压缩方法,3)为每条对话建立SessionID。由于该SessionID在系统中是一个唯一数值,由此,BIGIP可以应用该数值来进行会话保持。当用户想与该服务器再次建立连接时,BIGIP可以通过会话中的SSLSessionID识别该用户并进行会话保持。
基于SSLSessionID的会话保持就需要客户浏览器在进行会话的过程中始终保持其SSLSessionID不变,但实际上,微软InternetExplorer被发现在经过特定一段时间后将主动改变SSLSessionID,这就使基于SSLSessionID的会话保持实际应用范围大大缩小。
2.4基于HTTPHeader的会话保持
BIGIP可以根据用户HTTP访问里http包头信息信息进行会话保持,HTTP包头里包含以下信息,BIGIP可以将用户访问里这些信息通过表达式来获得相应的数值从而进行会话保持。
Accept:浏览器可接受的MIME类型。Accept-Charset:浏览器可接受的字符集。Accept-Encoding:浏览器能够进行解码的数据编码方式,比如gzip。Servlet能够向支持gzip的浏览器返回经gzip编码的HTML页面。许多情形下这可以减少5到10倍的下载时间。Accept-Language:浏览器所希望的语言种类,当服务器能够提供一种以上的语言版本时要用到。Authorization:授权信息,通常出现在对服务器发送的WWW-Authenticate头的应答中。Connection:表示是否需要持久连接。如果Servlet看到这里的值为“Keep-Alive”,或者看到请求使用的是HTTP1.1(HTTP1.1默认进行持久连接),它就可以利用持久连接的优点,当页面包含多个元素时(例如Applet,图片),显著地减少下载所需要的时间。要实现这一点,Servlet需要在应答中发送一个Content-Length头,最简单的实现方法是:先把内容写入ByteArrayOutputStream,然后在正式写出内容之前计算它的大小。Content-Length:表示请求消息正文的长度。Cookie:这是最重要的请求头信息之一,参见后面《Cookie处理》一章中的讨论。From:请求发送者的email地址,由一些特殊的Web客户程序使用,浏览器不会用到它。Host:初始URL中的主机和端口。If-Modified-Since:只有当所请求的内容在指定的日期之后又经过修改才返回它,否则返回304“NotModified”应答。Pragma:指定“no-cache”值表示服务器必须返回一个刷新后的文档,即使它是代理服务器而且已经有了页面的本地拷贝。Referer:包含一个URL,用户从该URL代表的页面出发访问当前请求的页面。User-Agent:浏览器类型,如果Servlet返回的内容与浏览器类型有关则该值非常有用。if(http_uriends_with“.gif”){
usepoolimage_servers
}
elseif(http_uristarts_with“/foo”){
usepoolfoo_servers
}
elseif(http_cookie(“XYZ-Type”)==“direct”){
usepoolcookie_servers
}
elseif(findstr(http_uri,“?type=”,6,“&”)==“cgi”){
usepoolcgi_servers
}
else{
usepoolweb_servers
}
在此I-Rules里,可以看到,如果用户的uri部分以.gif字段结尾,也就是说如果用户访问的是图片服务器,则将用户的访问会话保持在图片服务器上;而如果用户的uri部分以/foo开始,则将会话保持到相应的服务器上。同样,根据用户访问中的cookie字段以及uri里面的某个特定便宜字段里是否与规定的类型相符,从而进行相应的会话保持。
3.F5会话保持方法
源持续性模式
?
最终用户请求 连接到: BIG-IP应用交换机: 1)#1 VIP1:80 BIG-IP应用交换机 2)#2 VIP2:21(FTP) BIG-IP应用交换机 3)虚拟服务器#3 VIP3:80 BIG-IP应用交换机(VIP1:80) ?在这一模式下,只要持续性计数器尚未到时,指定流向某虚拟服务器的特定用户流量就会持续流向同一台服务器。每条连接都有其各自的持续性计数器。VIP1:80的计数器独立于VIP3:80的计数器。
服务器持续性模式
最终用户请求 连接到: BIG-IP应用交换机: 1)#1 VIP1:80 BIG-IP应用交换机 2)#2 VIP2:21(FTP) BIG-IP应用交换机#1中所用的那台服务器上。 3)虚拟服务器#3 VIP3:8001 如果持续性计数器尚未到时,#3的服务器,,
在该模式下,无论使用哪一台虚拟服务器,特定用户流量都将流向同一台服务器,除非以前被连接到某台服务器上的用户将被连接到一台不包含该特定服务器的新虚拟服务器上。这时,BIG-IP应用交换机将为这台新的虚拟服务器发送一条到达可用服务器的连接。
最终用户请求 连接到: BIG-IP应用交换机: 1)#1 VIP1:80 BIG-IP应用交换机 2)#2 VIP2:21(FTP) 因为此时用户已经连接到VIP2上,BIG-IP应用交换机将为VIP2选择一个可用的服务器,并将流量从源地址引导到被定义为虚拟服务器#2的服务器。只要持续性计时器还没到时,BIG-IP应用交换机都会把流向VIP2上任一端口的用户流量引导至该服务器上。 VIP1:8001 用户现已连接到VIP3,80上。如果持续性计时器还没到时,用户将被连接到VIP1端口80连接所用的同一台服务器上。
在该模式下,无论使用哪个端口,某用户指定流向某VIP的流量都将流向同一台服务器,除非:
服务器不再可用。在这种情形中,BIG-IP应用交换机
SSL持续性模式
最终用户请求 连接到: BIG-IP应用交换机 1)1连接到虚拟服务器#1。 服务器#1 确定唯一的SSL对话ID,并使用它来实现流量的 2)2连接到虚拟服务器#2。 服务器#2 确定唯一的SSL对话ID,并使用它来实现流量的 3)1连接到虚拟服务器#1。 服务器#1 确定唯一的SSL对话ID,并使用它来实现流量的
?
Cookie持续性模式
Cookie持续性利用客户机存储的coockie信息来把客户机连接到合适的服务器上。BIG-IP应用交换机提供4种不同的Cookie持续性模式以适应任何应用的要求:重写模式、插入模式、被动模式和散列模式。
在Cookie重写模式下,服务器将插入一个cookie,BIG-IP应用交换机
首次命中
HTTP请求(不带有cookie)进入BIG-IP应用交换机
BIG-IP应用交换机任选一台服务器,将请求发送至该服务器
来自该服务器的HTTP回复此时包括一个空白的cookie
BIG-IP应用交换机重写cookie,并在粘贴一个特殊的cookie后将HTTP回复发送回去。
HTTP请求(带有与上面同样的cookie)进入BIG-IP应用交换机
BIG-IP应用交换机借助cookie信息确定合适的服务器
HTTP请求(带有与上面同样的cookie)进入服务器
HTTP回复(带有空白cookie)返回BIG-IP应用交换机,后者将向客户机提供更新后的cookie。
CookiePersistenceRewriteMode
Cookie持续性重写模式
HTTP请求(不带cookie)进入BIG-IP应用交换机
BIG-IP应用交换机任选一台服务器,将请求发送至该服务器
HTTP回复(不带cookie)被发回BIG-IP应用交换机
BIG-IP应用交换机插入cookie,将HTTP回复返回到客户机
HTTP请求(带有与上面同样的cookie)进入BIG-IP应用交换机
Cookie指定合适的服务器
HTTP请求(带有与上面同样的cookie)进入服务器
HTTP回复(不带有cookie)进入BIG-IP应用交换机,后者将为客户机提供更新后的cookie。
在被动模式下,服务器使用特定信息来设置cookie:
HTTP请求(不带有cookie)进入BIG-IP应用交换机
BIG-IP应用交换机任选一台服务器,将请求发送至该服务器
HTTP回复(带有特定cookie)返回至BIG-IP应用交换机
BIG-IP应用交换机将HTTP回复(带有特定cookie)发回客户机。
发送HTTP请求(带有与上面同样的cookie)
Cookie指定合适的服务器
HTTP请求(带有与上面同样的cookie)进入服务器
HTTP回复(带有特定cookie)返回至BIG-IP应用交换机,后者将HTTP回复(带有特定cookie)发送回客户机。
BIG-IP应用交换机Cookie持续性模式与SSL持续性模式之间的主要区别在于:对于Cookie持续性而言,数据存储在客户机上,而不是BIG-IP应用交换机上,因此可充分使用客户机上的无限资源。即Cookie持续性体现在HTTPCookie上,而信息则存储于客户机的磁盘驱动器上。Cookie持续性散列模式
该模式只能在BIG-IPHA控制器和企业上使用。散列模式使您可以通过设定cookie中一定字节数的信息来确定连接的目的地。该模式用于将cookie值映射到节点上,之后该值这将用于连接含该cookie的客户机,从而实现了节点的持续性。
目标地址相关性
目标地址相关性适用于BIG-IP应用交换机被用于对高速缓存进行负载平衡的情形。在这种情形中,BIG-IP应用交换机把向相同内容的请求重发到同一高速缓存上,从而实现高速缓存的高效利用,并减少服务器阵列中的冗余数据量,后者可降低整个站点的运行性能。举一个简单的例子,用户2从内部网络通过互联网进入Yahoo.com网站。高速缓存扮演Yahoo.com网站的“存储箱”角色。此时用户1决定访问Excite.com,于是高速缓存1存储了Excite.com的内容。随后当用户1决定访问Yahoo时,因为高速缓存上已经存储了所需的信息,因此就实现了更加快速和高效的访问。缺省命令行用户/密码:root/default缺省web用户/密码:admin/adminF5设备配置可以保存为一个后缀为.ucs的文件,以便今后必要时进行系统恢复。该系统配置ucs文件是一个二进制文件,并不能阅读。如果只是想了解F5的配置内容,可以通过阅读/config目录下的bigip_base.conf和bigip.conf两个文件。其中:bigip_base.conf保存的是有关系统的网络配置(二/三层配置);bigip.conf保存的是有关系统的业务配置内容(四/七层配置)。为方便今后的维护,可以同时备份当前配置的ucs文件和bigip_base.conf、bigip.conf文件。
F5基本指令
//查询版本信息
#bversion
//查询登录信息
#who-aH
//显示设备基本清单
#bbaselist
#blist
//显示设备平台信息
#bplatform
//显示设备日志信息
#cat/var/log/messages????显示操作系统信息
#cat/var/log/bigip????????显示BIG-IP事件#cat/var/log/bigd?????????显示monitor事件
//显示系统时间
#date如果系统时间不正确,需要把系统启动到单用户状态下进行修改。
//保存配置
#bconfigsaveconfigfilename.usc??系统配置备份的ucs文件保存在/usr/local/ucs目录。
//查看接口配置及状态
#binterfaceshow
//查看Vlanunique_mac配置
#bagpipeglobalshow或ifconfig–a
启用vlanunique_mac保证F5上不同的vlan的MAC地址不一样。
//接口地址查询
#ifconfig-a
//路由表查询
#netstat-rn
//查询系统CPU及内存使用率
#top
//查询各节点状态
#bigpipenodemonitorshow
//查询Pool中的负载均衡情况
#bigpipepoolshow
//查看当前建立的所有连接
#watchbconn???
显示实时连接信息(退出请按“Ctrl+C”),检查连接是否与负载均衡策略相匹配。
//检查BIG-IP服务状态及服务清单
#bigstartstatus
#bigstartlist
//检查设备配置报告
#bconfigcheckall
//恢复或加载配置文件
#bconfiginstallconfigfilename.ucs注意管理员口令也同时恢复
//检测各台BIG-IP设备的主备工作状态
#bfailovershow
//检测当前BIG-IP上的连接数量,以及每个对外服务的虚拟服务器的用户连接数量
#bigtop
#bigtop–n–delay1实时监视BIG-IP的流量情况
//检查当前BIG-IP上的服务器组的连接状况
#poolshow?????
//检查当前virtualserver虚拟服务器的连接状况
#bvirtualshow
//命令实时监视BIG-IP的连接状态
#bconn
|
|