1、F5 BIG-IP LTM详解北京先进数通信息技术有限公司十二月 19LTM基础架构VS Type详解Profile详解CMP 工作原理One Connect工作原理NAT、SNAT工作原理Monitor工作原理HA工作原理LTM工作原理LTM基础架构什么是TMMTraffic Management ModuleTMOS的核心进程,有自己独立的内存、CPU资源分配和I/O控制所有的生产流量都通过TMM接收一个CPU Core只能有一个TMM进程在V9版本上,15/34/64/68都是单TMM运行在V9版本上,16/36/69/89/84/88都是多TMM运行在V10版本上,16/36/69/8
2、9/84/88都是多TMM运行Viprion只支持9.6和10.0版本,默认都是多TMM运行TMM处理的范围TMM内部处理功能所有的VS入口流量LTM iRiules处理Profile处理会话保持处理负载均衡算法SSL加速(和硬件结合)HTTP 压缩SNAT静态CRL( Certificate revocation list证书吊销清单)文件校验不在TMM里面处理的功能Web Accelerator Module(包括压缩)Application Security ModuleGTM的分配算法处理(包括GTM rules)Named域名解析健康检查日志管理系统数据统计SNMP数据输出HA健康检
3、查BIGIP 内部结构-V9平台15/34/64/68TM/OS管理CPU万兆/千兆交换端口PVA(Packet Velocity ASIC)四层交换专用ASICHost OSWeb 界面管理健康检查SNMP.BridgeTMM0独立的管理机SCCPSSL加解密HTTP压缩AdminConsoleBIGIP 内部结构-Mecury平台16/36/69/896TM/OS管理CPU万兆/千兆交换端口HiSpeed BridgeTMM2Host OSWeb 界面管理健康检查SNMP.TMM3TMM1TMM0独立的管理机AOMCluster Muti Processor多CPU并行处理SSL加解密HT
4、TP压缩ConsoleAdminHost和TMM的内存分配Host在启动的时候限 定了内存分配的大小 ,在没有其他module 的情况下是384MBTMM进程启动后,将 自动获取余下的所有 物理内存Host MemoryTMM Memory查看Host内存占用情况# physmem /查看物理内存大小 8387584b memory show /查看内存分配情况MEMORY STATISTICS -| (Host) Total = 3.835GB Used = 3.590GB| (TMM) Total = 5.976GB Used = 93.22MB查看TMM内存占用情况TMM分配的内存是准确
5、的,Host内存显示在这里有一些偏差VS Type详解Performance L4Standard VSFast HTTPForwarding VSPerformance L4TMM只是负责客户端连接的分配和转发,不改变TCP连接中的任何参数客户端和服务器自行协商TCP传输参数在34/64/68平台上Performance L4可以有PVA加入实现硬件加速在15/16/36/69/89/Viprion平台上都通过TMM核心进行处理Performance L4 VS上只有4层的iRules可以使用默认状态下,新建连接的第一个包必须是Syn包,如果是其他的数据包比如ACK、RST等如果不在连接表中
6、,则全部丢弃。在Fast L4 profile打开Loose close和Loose Initial的时候对非Syn包也可以建立连接表TMM客户端客户端客户端服务器端服务器端服务器端Performance L4 攻击防护-Syn Cookie正常情况下客户端连接和服务器端连接是1:1的关系TMM在第一次收到客户端Syn包时,并不建立连接表TMM的Syn Ack回应通过算法回应给客户端Syn,并期待客户端回应的值TMM对客户端ACK进行计算,确认是真实客户端,再和后台服务器建立连接在84/88上可以实现硬件的Syn Cookie计算,其余的平台都是通过软件实现SynCookie计算Syn Coo
7、kie工作模式下,只有成功建立连接的TCP请求才转发到后台TMMSynSyn,Ack (syncookie)Ack(Cookie)SynSyn-AckAckDataStandard VS正常情况下客户端连接和服务器端连接是1:1的关系默认工作在全代理模式,客户端和服务器端的TCP连接完全独立客户端和服务器端的TCP参数都是由TMM和双方分别协商默认情况下以客户端源IP和后台建立连接,在打开SNAT的情况下用SNAT地址和后台建立连接Standard VS的端口永远对外开放,无论后台是否有服务器在工作TMMSynSyn,AckAckSynSyn-AckAckDataDataStandard 模式
8、下的攻击防护Standard VS模式具有天然的防攻击功能在遇到Syn攻击的时候会导致系统的连接表过大通过System-SYN Check Activation Threshold 的设置,在达到设置值的时候系统自动启动 Syn Cookie,避免建立过多连接,这个值对全局生效大部分的网络层攻击都无法通过Standard模式的VSFast HTTPFast HTTP VS仅用于HTTP协议默认开启One Connect Profile,对客户端连接进行聚合处理默认开启SNAT AutoMap,在服务器端收到的TCP连接请求都是来自于TMM没有会话保持功能不能处理SSL,HTTPSTMM客户端客
9、户端客户端服务器端服务器端服务器端Fowarding VS(Forwarding IP)只能使用Fast L4 Profile按照连接处理,类似于路由器工作,但不完全一样,在Fast L4 Profile中开启Loose Initial和Loose Close之后更为接近路由工作模式所有穿过Fowarding VS的连接都将产生连接表没有Pool Member,转发完全取决于本地路由可以使用基于4层的RulesTMM客户端查询本地路由表转发客户端请求VS和ProfileVS作为所有流量的入口Profile依赖于VS,对进入VS的流量进行格式化处理不同的VS可以用同一个Profile或者不同的P
10、rofileProfile之间存在有相互排斥和相互依存的关系VSTCP ProfileUDP ProfileFastL4 ProfileHTTPRTSPClient SSLServer SSLStreamingSMTPSIPOne ConnectRules的处理必须依赖于VS对流量的接收通过事件触发机制,Rules可以控制流量在VS内部处理的整个过程SSLCompressionClientSideServerSideTCP ExpressServerTCP ExpressCachingMicrokernelVirtual ServeriRulesClientiControl APITCP Pr
11、oxyOneConnectXMLRate ShapingTrafficShieldWeb Accel3rd PartyVS和RulesServeriRulesClientSideServerSideTCP ProxyClient Side EventClient_acceptClient_dataCache_requestDNS_requestHTTP_REQUESTHTTP_REQUEST_DATARTSP_REQUEST.Server Side EventServer_connectServer_dataCache_responseDNS_responseHTTP_RESPONSEHTTP
12、_RESPONSE_DATARTSP_RESPONSE.大部分rules只在同一个VS之内有效Rules内创建的变量以连接为生命周期一个VS上可以有多个Rules,它们将被顺序执行CLIENT_ACCPTEDCLIENT_DATALB_SELECTEDLB_FAILEDSERVER_ACCPTEDSERVER_DATACLIENT_CLOSEDSERVER_CLOSEDRULE_INITVSProfile的作用和工作范围Profile依赖于VSProfile是对VS的流量进行格式化处理举例如果一个VS上配置了TCP Profile, 则该VS对所有的UDP流量都不会接收Profile详解基本流
13、量处理类型Profile TCP, UDP, FastHTTP, Fast L4, SCTP( Stream Control Transmission Protocol )服务流量处理类型Profile HTTP, FTP, SMTP, RTSP( Real Time Streaming Protocol ), SIP( Session Initiation Protocol ), iSessionSSL处理类型 Client SSL,Server SSL会话保持类型 Cookie, Destination IP, hash, msrdp, source IP, Universal, SSL认
14、证处理类型 Radius, CRLDP( Constraint-Based Label Distribution Protocol ), OCSP( Online Certificate Status Protocol )其他处理类型 One Connect, Statistics, NTLM( NT LAN Manager ), Stream重要的Profile-FastL4Reset on Timeout: 在连接达到Time out的是否向两端发送Reset包Idel Timeout:多长时间连接里面没有数据流量的时候就删除连接表Loose Initiation/Loose Close:
15、 是否接收非Syn包建立连接Softare Syn Cookie Protection:是否在VS上启用Syn Cookie,实现Syn攻击防护可能调整的参数重要的Profile-TCP注意在Client Side和Server Side可以使 用不同的TCP Profile通常情况下建议: Client side:TCP WAN Optimized 或LAN Optimized Server side: TCP LAN Optimized除非你非常了解TCP的工作原理,否则不 要调整除idel Timeout以外的任何参数重要的Profile-Client SSL对所有进入VS的流量按照SS
16、L协议进行处理注意Client SSL profile不一定只能使用在HTTPS上使用Client SSL的VS不一定使用443端口TMM客户端客户端客户端服务器端服务器端服务器端SSLSSLSSL重要的Profile-FTPFTP Profile主要用于处理FTP的主动 和被动传输两种模式由于需要配置动态侦听端口,因此FTP 协议必须进行单独处理通过iRules也可以达到同样的目的,但 由于FTP协议使用非常广泛,因此使用 FTP profile来简化配置和处理FTP Profile必须依赖于TCP profile工作为什么要用CMP(Cluster Multi-Processor)性能增长
17、要求CPU的主频增加受到比较大的限制,目前的趋势是以多 核扩展为主ASIC(Application Specific Intergrated Circuits)、NP(Network Processor)的处理架构并不适合于复杂、灵活的流量处理对于不规范的流量,采用硬件加速将导致系统设计僵化, 很难加入新的功能实现市场需求需要充分利用CPU的多核处理能力来提升系统的整体性能CMP工作原理CMP的硬件支持CMP工作模式流量由HSB进行分配在多个TMM上,每个TMM占据一个CPU Core,每个TMM有自己独立的内存空间每个TMM都具有相同的配置,包括VS/Profile/iRules/Pool/
18、Persistence等TMM之间通过内存高速总线进行通讯共享通用信息如会话保持表,SNAT源端口等当CMP被Disable的时候,TMM0接管所有的流量64/68的硬件平台已经支持CMP,在10.0上自动开启VIPTMM0VIPTMM1VIPTMM2VIPTMM3HSBHSBSuper VIP如何查看CMP工作状态b tmm show可以观察每个TMM的状态关于CMP必须了解的内容V9平台启动WA(web应用加速器)和ASM(应用安全 管理器)将Disable CMPiRules中定义全局变量将Disable CMP所有的非TCP/UDP流量都只使用TMM0进行处理V9中使用Session
19、add, Session Lookup命令将 Disable CMPConnection Limit和Rate Shaping的配置是针对每 个TMM生效手工关闭CMP运行 b db Provision.tmmCount 1 调整后必须重启任何一个TMM Crash,将导致设备间FailoverTCPdump已经调整为可支持CMP查看Virtual Server的CMP工作状态如何查看TMM CPU占用率top命令可以显示每颗CPU的占用率和V9相比,TMM的CPU在Top命令中的显示发生了变化每颗CPU的CPU占用率目前在图形界面里都消失了,目前只有 整体的CPU占用率One Connect
20、工作原理连接聚合和内容交换index.htma.gifb.gifc.aspsales.htmd.gife.giff.aspsales.htmd.gife.gifindex.htma.gifb.gifc.aspServerf.aspindex.htma.gifb.gifc.aspsales.htmd.gife.giff.aspsales.htmd.gife.gifindex.htma.gifb.gifc.aspServerf.aspindex.htma.gifb.gifc.aspindex.htma.gifb.gifc.aspHTML server poolGIF server poolASP
21、server pool连接聚合内容交换注:eligible reuse 符合条件的再利用One Connect的典型工作场景实现连接聚合降低服务器的连接总数需要对每一个请求都进行单独处理(注意在多数 情况下,LTM只对一个连接的第一个包进行处理)典型的,打开Cookie会话保持有时候会出现保持 不正确的情况,这时就需要打开One Connect通过设置Mask=255.255.255.255,可以使后台服 务器可以“看到”客户端源IP,但这个时候 One-connect只对一个客户端的连接起作用One Connect和应用协议注意! One Connect Profile不是必须和HTTP P
22、rofile 共用,也可以用于其他应用协议。 用于其他应用协议的时候必须使用iRules编程 来调用One Connect在需要对长连接进行拆分处理的时候,也需要用 One Connect ProfileNAT的工作模式206.142.12.10NAT Address:197.12.100.50NAT和SNATSNAT全称:Secure Network Address TranslationSNAT的工作模式206.142.12.10172.16.12.1172.16.12.7172.16.12.8SNAT Address:197.12.100.50NAT和SNAT之间的差别NAT1比1接收所
23、有发往NAT地址的连接所有的连接只是通过LTM的连接表管理,但是是无状态的,连接不会被Timeout连接不能被镜像SNAT多对一或者多对多拒绝所有发往SNAT地址的连接请求.连接通过LTM的连接表管理,有timeout设置连接可以被镜像SNAT AutoMap当配置SNAT AutoMap的时候,请求从那个VLAN 发出去,则SNAT的源地址为VLAN上的SelfIP当一个VLAN上有多个SelfIP存在的时候,SNAT 的源地址是在多个SelfIP之间轮询SNAT Pool的工作模式SNATPool是提供了一个可用于SNAT源地址的列表BIGIP采用最小连接数的方式在SNAT的源地址之间进行
24、选择通过iRules控制SNATwhen CLIENT_ACCEPTED set snat_addr 1.1.1.1when HTTP_REQUEST set snat_addr HTTP:header X-Forwarded-For log X-Fowarded-For is HTTP:header X-Forwarded-Forwhen LB_SELECTED snat $snat_addrHTTPSSSL Offload替换源地址Server 端需要在TCP连接里面获取客户端源地址SNAT的源地址会话保持when RULE_INIT #log local5.warning -$cnc_s
25、natpoolset snat_length llength $cnc_snatpoollog local5.warning -snat pool length is $snat_lengthwhen LB_SELECTED #set client_addr 10.1.1.33set client_ip IP:client_addrset client_last getfield $client_ip . 4#log local5.warning -client last is $client_last set snat_addr lindex $cnc_snatpool expr $clie
26、nt_last%$snat_length #log local5.warning -client snat addr $snat_addrsnat $snat_addrTimeout定义和镜像SNAT可以在两台设备之间镜像SNAT对于TCP idle Timeout 和UDP idle Timeout可以有独立的设置Monitor如何向外发送请求所有的Monitor请求都是由bigd进程发起Monitor流量要穿过TMM发送到Server或者其他位置在b conn中可以看到Monitor的流量TMMbigdMonitor工作原理重要的Monitor-TCPSend String: 发送的请求字
27、符串,支持C语言 的转义符Receive String:在返回的内容中查询的字符串Transparent:数据包内的三层发送目的地是 Alias Address,二层的发送目的地是 Node Address的MAC地址重要的Monitor-External MonitorMEMBER=$1;PORT=$2;HOST_2_RESOLV=$3; $# -ne 3 & exit 255PIDFILE=/var/run/pinger.$MEMBER.eav.$PORT.pidif -f $PIDFILE then kill -9 cat $PIDFILE /dev/null 2&1fiecho $ $
28、PIDFILEMEMBER=echo $1 | sed s/:ffff:/ 2/dev/nulllog_info() echo $* | logger -p local0.info # stock syslog-ng destinations - #local0.info - /var/log/ltm#local4.info - /var/log/ltm#local1.info - /var/log/messages#local3.info - /var/log/messages# this is for debug only! do not call log_info below unles
29、s# you want to see your syntax and the shell evaluation of # variables (variable exansion)HA工作模式-Active/Active每个VS对外提供不同的服务服务器必须分组,分别指不同的网关在使用SNAT的情况下不需要服务器指不同的网关(建议模式)VS 1VS 2HA工作原理串口心跳线的工作模式没有数据在串口心跳线之间传输两台设备是通过监控Failover 线上的电压来决定是否切 换,备机一旦检测到主机电压为0则进行接管动作切换时间在200-300毫秒之间SOD(Switch Over Deamon)进程负
30、责监控Failover线上 的电压网络心跳线的工作模式两台设备之间通过网络互相发送心跳信号Network Failover 可以设置2条路径Network Failover和串口心跳线Failover可以同时使用在10.0里的Network Failover有巨大的变化 静态负载均衡算法 轮询,比率,优先权 动态负载均衡算法 最少连接数,最快响应速度,观察方法,预测法,动态性能分配,动态服务器补充,服务质量,服务类型,规则模式F5负载均衡算法轮询(Round Robin):顺序循环将请求一次顺序循环地连接每个服务器。当其中某个服务器发生第二到第7 层的故障,BIG-IP 就把其从顺序循环队列中
31、拿出,不参加下一次的轮询,直到其恢复正常。比率(Ratio):给每个服务器分配一个加权值为比例,根椐这个比例,把用户的请求分配到每个服务器。当其中某个服务器发生第二到第7 层的故障,BIG-IP 就把其从服务器队列中拿出,不参加下一次的用户请求的分配, 直到其恢复正常。优先权(Priority):给所有服务器分组,给每个组定义优先权,BIG-IP 用户的请求,分配给优先级最高的服务器组(在同一组内,采用轮询或比率算法,分配用户的请求);当最高优先级中所有服务器出现故障,BIG-IP 才将请求送给次优先级的服务器组。这种方式,实际为用户提供一种热备份的方式。最少的连接方式(Least Conne
32、ction):传递新的连接给那些进行最少连接处理的服务器。当其中某个服务器发生第二到第7 层的故障,BIG-IP 就把其从服务器队列中拿出,不参加下一次的用户请求的分配, 直到其恢复正常。最快模式(Fastest):传递连接给那些响应最快的服务器。当其中某个服务器发生第二到第7 层的故障,BIG-IP 就把其从服务器队列中拿出,不参加下一次的用户请求的分配,直到其恢复正常。观察模式(Observed):连接数目和响应时间以这两项的最佳平衡为依据为新的请求选择服务器。当其中某个服务器发生第二到第7 层的故障,BIG-IP就把其从服务器队列中拿出,不参加下一次的用户请求的分配,直到其恢复正常。预测
33、模式(Predictive):BIG-IP利用收集到的服务器当前的性能指标,进行预测分析,选择一台服务器在下一个时间片内,其性能将达到最佳的服务器响应用户的请求。(被BIG-IP 进行检测)动态性能分配(Dynamic Ratio-APM):BIG-IP 收集到的应用 程序和应用服务器的各项性能参数,动态调整流量分配。动态服务器补充(Dynamic Server Act.):当主服务器群中因 故障导致数量减少时,动态地将备份服务器补充至主服务 器群。服务质量(QoS):按不同的优先级对数据流进行分配。服务类型(ToS): 按不同的服务类型(在Type of Field中标识) 对数据流进行分配
34、。规则模式:针对不同的数据流设置导向规则,用户可自行。常用到的一般是最少连接数、最快反应、或者轮询,决定选用那种算法, 主要还是要结合实际的需求F5会话保持F5 BigIP支持多种的会话保持方法,其中包括:简单会话保持(源地址会话保持)、HTTP Header的会话保持,基于SSL Session ID的会话保持,I-Rules会话保持以及基于 HTTP Cookie的会话保持,此外还有基于SIP ID以及Cache设备的会话保持等,但常用的是简单会话保持,HTTP Header的会话保持以及 HTTP Cookie会话保持以及基于I-Rules的会话保持。简单会话保持简单会话保持又称为基于源
35、地址的会话保持,是指负载均衡器在作负载均衡时是根据访问请求的源地址作为判断关连会话的依据。对来自同一IP地址的所有访问请求都会被保持到一台服务器上去。简单会话保持一个很重要的参数就是连接超时值,BIGIP会为每一个进行会话保持的会话设定一个时间值,两次会话之前的间隔如果小于这个超时值,BIGIP将会将新的连接进行会话保持,但如果这个间隔大于该超时值,BIGIP会将新来的连接认为是新的会话然后进行负载平衡。基于原地址的会话保持实现简单,效率较高。但是多个用户通过代理或地址转换的方式来访问服务器时,会导致服务器之间的负载严重失衡。另外当客户机数量很少,但每个客户机都产生多个并发访问,这时用这种方法
36、也会导致负载均衡失效。基于Cookie的会话保持Cookie插入模式在Cookie插入模式下,BigIP将负责插入cookie,后端服务器无需作出任何修改。当客户进行第一次请求时,客户HTTP请求(不带cookie)进入BIGIP, BIGIP根据负载平衡算法策略选择后端一台服务器,并将请求发送至该服务器,后端服务器进行HTTP回复(不带cookie)被发回BIGIP,然后BIGIP插入cookie,将HTTP回复返回到客户端。当客户请求再次发生时,客户HTTP请求(带有上次BIGIP插入的cookie)进入BIGIP,然后BIGIP读出cookie里的会话保持数值,将HTTP请求(带有与上面
37、同样的cookie)发到指定的服务器,然后后端服务器进行请求回复,由于服务器并不写入cookie,HTTP回复将不带有cookie,恢复流量再次经过进入BIGIP时,BIGIP再次写入更新后的会话保持cookie。Cookie 重写模式 当客户进行第一次请求时,客户HTTP请求(不带cookie)进入BIGIP, BIGIP根据负载均衡算法策略选择后端一台服务器,并将请求发送至该服务器,后端服务器进行HTTP回复一个空白的cookie并发回BIGIP,然后BIGIP重新在cookie里写入会话保持数值,将HTTP回复返回到客户端。当客户请求再次发生时,客户HTTP请求(带有上次BIGIP重写的
38、 cookie)进入BIGIP,然后BIGIP读出cookie里的会话保持数值,将HTTP请求(带有与上面同样的cookie)发到指定的服务器,然后后端服务器进行请求回复,HTTP回复里又将带有空的cookie,恢复流量再次经过进入BIGIP时,BIGIP再次写入更新后会话保持数值到该 cookie。 Passive Cookie 模式 服务器使用特定信息来设置cookie。当客户进行第一次请求时,客户HTTP请求(不带cookie)进入BIGIP, BIGIP根据负载平衡算法策略选择后端一台服务器,并将请求发送至该服务器,后端服务器进行HTTP回复一个cookie并发回BIGIP,然后 BI
39、GIP将带有服务器写的cookie值的HTTP回复返回到客户端。当客户请求再次发生时,客户HTTP请求(带有上次服务器写的cookie)进入 BIGIP,然后BIGIP根据cookie里的会话保持数值,将HTTP请求(带有与上面同样的cookie)发到指定的服务器,然后后端服务器进行请 求回复,HTTP回复里又将带有更新的会话保持cookie,恢复流量再次经过进入BIGIP时,BIGIP将带有该cookie的请求回复给客户端。Cookie Hash模式 当客户进行第一次请求时,客户HTTP请求(不带cookie)进入BIGIP, BIGIP根据负载均衡算法策略选择后端一台服务器,并将请求发送至
40、该服务器,后端服务器进行HTTP回复一个cookie并发回BIGIP,然后 BIGIP将带有服务器写的cookie值的HTTP回复返回到客户端。当客户请求再次发生时,客户HTTP请求(带有上次服务器写的cookie)进入 BIGIP,然后BIGIP根据cookie里的一定的某个字节的字节数来决定后台服务器接受请求,将HTTP请求(带有与上面同样的cookie)发到指定的服务器,然后后端服务器进行请求回复,HTTP回复里又将带有更新后的cookie,恢复流量再次经过进入BIGIP时,BIGIP将带有该 cookie的请求回复给客户端。SSL Session ID会话保持在用户的SSL访问系统的环
41、境里,当SSL对话首次建立时,用户与服务器进行首次信息交换以:1交换安全证书,2)商议加密和压缩方法,3)为每条对话建立Session ID。由于该Session ID在系统中是一个唯一数值,由此,BIGIP可以应用该数值来进行会话保持。当用户想与该服务器再次建立连接时,BIGIP可以通过会话中的 SSL Session ID识别该用户并进行会话保持。基于SSL Session ID的会话保持就需要客户浏览器在进行会话的过程中始终保持其SSLSession ID不变,但实际上,微软Internet Explorer被发现在经过特定一段时间后将主动改变SSL Session ID,这就使基于SS
42、L Session ID的会话保持实际应用范围大大缩小。 基于HTT Header的会话保持BIGIP可以根据用户HTTP访问里http包头信息信息进行会话保持,HTTP包头里包含以下信息,BIGIP可以将用户访问里这些信息通过表达式来获得相应的数值从而进行会话保持。 Accept:浏览器可接受的MIME类型。 Accept-Charset:浏览器可接受的字符集。 Accept-Encoding:浏览器能够进行解码的数据编码方式,比如gzip。Servlet能够向支持gzip的浏览器返回经gzip编码的HTML页面。许多情形下这可以减少5到10倍的下载时间。 Accept-Language:浏
43、览器所希望的语言种类,当服务器能够提供一种以上的语言版本时要用到。 Authorization:授权信息,通常出现在对服务器发送的WWW-Authenticate头的应答中。 Connection:表示是否需要持久连接。如果Servlet看到这里的值为“Keep-Alive”,或者看到请求使用的是HTTP 1.1(HTTP 1.1默认进行持久连接),它就可以利用持久连接的优点,当页面包含多个元素时(例如Applet,图片),显著地减少下载所需要的时间。要实现这一点,Servlet需要在应答中发送一个Content-Length头,最简单的实现方法是:先把内容写入ByteArrayOutputS
44、tream,然后在正式写出内容之前计算它的大小。 Content-Length:表示请求消息正文的长度。 Cookie:这是最重要的请求头信息之一,参见后面Cookie处理一章中的讨论。 From:请求发送者的email地址,由一些特殊的Web客户程序使用,浏览器不会用到它。 Host:初始URL中的主机和端口。 If-Modified-Since:只有当所请求的内容在指定的日期之后又经过修改才返回它,否则返回304“Not Modified”应答。 Pragma:指定“no-cache”值表示服务器必须返回一个刷新后的文档,即使它是代理服务器而且已经有了页面的本地拷贝。 Referer:包含
45、一个URL,用户从该URL代表的页面出发访问当前请求的页面。 User-Agent:浏览器类型,如果Servlet返回的内容与浏览器类型有关则该值非常有用。基于I-Rules的会话保持BIGIP交换机内置有强大的搜索引擎,可以高效的探测到网络流量中的IP包内容的部分,并可以读出该IP包内容部分进行会话保持这些内容部分包括如下部分:下面是一个BIGIP根据IRULES进行会话保持的范例:if (http_uri ends_with “.gif”) use pool image_serverselse if (http_uri starts_with “/foo”) use pool foo_se
46、rverselse if (http_cookie(“XYZ-Type”) = “direct”) use pool cookie_serverselse if (findstr(http_uri, “?type=”, 6, “&”) = “cgi”) use pool cgi_serverselse use pool web_servers在此I-Rules里,可以看到,如果用户的uri部分以.gif字段结尾,也就是说如果用户访问的是图片服务器,则将用户的访问会话保持在图片服务器上;而如果用户的uri部分以/foo开始,则将会话保持到相应的服务器上。同样,根据用户访问中的cookie字段以及
47、uri里面的某个特定字段里是否与规定的类型相符,从而进行相应的会话保持。LTM组网架构单臂接入模式双臂接入模式远程节点模式加入独立SSL/WA/ASM设备防火墙负载均衡多链路接入灾备站点静态路由注入LTM单臂接入模式单臂模式下的网络物理结构服务器服务器LTMLTM外部 外部网络 核心三层交换Vlan 1串口心跳线核心三层交换服务器服务器LTM192.168.1.10192.168.1.11GW:192.168.1.254 GW:192.168.1.254VS: 192.168.1.1:80SelfIP: 192.168.1.253GW:192.168.1.254192.168.1.254192
48、.168.0.254SIPSportDIPDport192.168.0.1 6787192.168.1.253 8888192.168.1.1192.168.1.118080192.168.1.1180192.168.1.253 8888 192.168.1.180192.168.0.16787单臂接入-源地址替换模式数据访问流程192.168.0.1Client源地址替换后的处理服务器服务器LTM192.168.0.1192.168.1.10192.168.1.11GW:192.168.1.254 GW:192.168.1.254VS: 192.168.1.1:80SelfIP: 192.1
49、68.1.253GW:192.168.1.254192.168.1.254192.168.0.254核心三层交换HTTP Profilewhen HTTP_REQUEST HTTP:header insert Client_IP= IP:client_addrClientiRules只有HTTP协议的时候,可以通过将源地址插入到客户端请求的HTTP Header里,然后在服务器上通过读取这个Header,获得客户端的真实源IP地址单臂接入-npath模式数据访问流程Client192.168.0.1服务器192.168.1.10Lo:192.168.1.1服务器192.168.1.11Lo:1
50、92.168.1.1GW:192.168.1.254 GW:192.168.1.254LTMVS: 192.168.1.1:80SelfIP: 192.168.1.253GW:192.168.1.254192.168.0.254核心三层交换192.168.1.254SIPSportDIPDport 192.168.0.1 6787 192.168.1.1 192.168.0.1 6787 192.168.1.18080 192.168.1.1 80192.168.0.1 6787npath模式的关键在于服务器上配置的loopback地址在上能找到各种服务器的loopback地址如何配置的文档单