第九章:使用配置文件修改流行为
profile
配置文件是一个功能强大的配置工具,提供了定义和应用流量策略的简单方法跨多个虚拟服务器的策略。通过配置文件,您还可以更改跨流量的设置许多不同的应用。概要文件定义虚拟服务器的功能和操作。
profile能提供:
- 定义特定流量行为(如压缩、SSL和身份验证)的集中式位置,可应用于多个虚拟服务器。
- 修改已经存在的profile文件。
配置文件告诉虚拟服务器如何根据配置文件的参数处理收到的数据包。例如,如果希望通过BIG-IP系统加密/解密流量,可以创建一个虚拟服务器,该服务器具有与之关联的clientssl和/或serverssl配置文件。如果希望基于客户端的IP地址进行持久化,可以将source_addr持久化配置文件关联到虚拟服务器。
在选择如何通过虚拟服务器处理流量时,您可以从许多提供配置文件中进行选择,也可以使用其中任何一个作为模板来创建自定义配置文件。例如,默认的source_addr配置文件将持续180秒。如果希望持续一段时间,可以创建自定义概要文件并将其与虚拟服务器关联。
vs默认profile
至少,每个虚拟服务器都必须引用一个第4层配置文件,如UDP、TCP或FastL4。每个虚拟服务器都有一个默认的第4层配置文件,但它取决于虚拟服务器的协议类型。下表显示了其中的一些组合。
VS type | Protocol | Default Profile |
---|---|---|
Standard | TCP | TCP |
Standard | UDP | UDP |
Standard | SCTP | SCTP |
Forwarding(IP) | TCP | FastL4 |
Performance(Layer4) | TCP | FastL4 |
Profile 类型
- Services(应用型)
- Persistence(会话型)
- Protocols(传输型)
- SSL(加密型)
- Authentication(安全型)
- other
系统默认profile默认存放在/config/profiles_base.conf中,且不能被删除。
TCP优化
对于交付Internet和外联网应用程序的企业来说,TCP/IP效率低下,加上WAN延迟和数据包丢失的影响,所有这些都对应用程序性能产生不利影响。这些低效率的结果增加了应用程序的响应时间,并显著降低了带宽利用效率(填充管道的能力)。
TCP Express
现实情况是,大多数组织并不经常更新服务器操作系统,一些应用程序继续在非常旧的系统上运行。当应用程序通过WAN交付时,这种遗留基础设施可能会造成严重的延迟。带有TCP Express的BIG-IP系统可以屏蔽和透明地优化可能运行在企业数据中心服务器上的旧的或不兼容的TCP堆栈。这是通过保持与这些设备的兼容性来实现的,同时在连接的客户端独立利用F5的TCP/IP堆栈优化,为每个连接的设备和网络条件提供完全独立和优化的TCP行为。
BIG-IP消除了客户端和服务器协商通信的最低要求。BIG-IP代表客户端(称为堆栈代理),并使用TCP Express优化客户端交付,同时在网络内部优化服务器的连接。
TCP Profile
到目前为止,您几乎只使用长期存在的基本TCP配置文件TCP,标准虚拟服务器类型默认包含该配置文件。需要强调的是,在生产环境中使用此配置文件可能会导致流量处理中的性能不理想。基本tcp配置文件的一些缺点如下:
- 缓冲区太小了——这个配置文件配置中的TCP接收和发送缓冲区都限制在64KB,代理缓冲区不会超过48K。如果连接的带宽超过了这些值,那么应用程序将不受可用带宽的限制,而是受任意内存限制。
- 初始拥塞窗口太小——尽管RFC 6928扩展了发送方TCP初始窗口的允许大小,但基本TCP配置文件仍然限制它仅为3段。这人为地减少了在一次往返时间内可以完成的文件传输量。
- 启用延迟ACK -基本tcp配置文件启用延迟ACK,它试图通过等待200ms来查看是否有其他数据进入来减少ACK流量。在其他上层协议中,这种设置可能会导致严重的SSL性能损失。
TCP配置文件性能比较
下面是我们内部TCP配置文件性能测试的一些测量样本。我们使用代表几种链路类型的参数,并使用不同的配置文件测量吞吐量来比较性能。
卸载HTTP压缩到BIG-IP
当浏览器和web服务器启动通信时,需要协商许多选项。其中一个选项包括web服务器在将响应数据发送回客户端之前压缩响应数据的能力。具体来说,浏览器将Accept-Encoding报头插入到HTTP请求中,指定浏览器理解的压缩方法。然后,服务器读取报头以确定可用的压缩选项。当服务器发送响应时,它包含一个Content-Encoding报头,告诉浏览器使用了哪种压缩方法。
在收到压缩响应后,浏览器读取Content-Encoding报头并相应地解压数据。压缩和随后的解压缩数据确实会给服务器和客户端增加一些负载,如果设备之间的带宽较低,则总体响应时间可以显著提高。BIG-IP系统同时支持gzip和deflate,并在客户端接受任何一种压缩配置文件时使用您在HTTP压缩配置文件中配置的Preferred Method。
当流量通过BIG-IP系统中的虚拟服务器时,BIG-IP在客户端连接中充当服务器,在服务器端连接中充当客户端。如果虚拟服务器上没有HTTP压缩配置文件,则BIG-IP在发送服务器端请求时指示在客户端请求上提供相同的HTTP压缩方法,如图所示。
使用虚拟服务器上的HTTP压缩配置文件(及其依赖的HTTP配置文件),BIG-IP系统会在客户端记录客户端支持的压缩类型,并在发送响应时使用适当的方法。在服务器端,BIG-IP系统并不表示支持压缩,因此服务器将发送未压缩的数据,如图所示。这样可以消除服务器上的负载,同时仍然提高客户机的性能。
压缩工艺流程
根据BIG-IP系统和客户端的配置,以下描述了在BIG-IP系统上发生的过程:
- BIG-IP系统读取客户端请求的Accept-Encoding报头,查找deflate或gzip压缩方法的规范,并注意是否将其中任何一种方法标记为首选方法。
- BIG-IP LTM将确定请求是否与URI或内容包含列表匹配,以及是否与排除列表不匹配。
- 如果HTTP概要文件中的Keep Accept Encoding设置被设置为禁用,BIG-IP系统就会从请求中删除Accept-Encoding报头,并将请求传递给服务器。删除Accept-Encoding报头将阻止服务器执行HTTP压缩并将Content-Encoding报头插入到其响应中。
- 在接收到服务器响应后,BIG-IP系统插入Content-Encoding报头,指定它选择使用的压缩方法。如果客户可以接受,BIG-IP LTM将选择放弃。
- BIG-IP系统压缩响应并将其发送给客户端。客户端读取响应中的Content-Encoding报头,确定使用的压缩方法,并相应地解压缩数据。
流配置文件
流配置文件对TCP数据流中出现的所有字符串执行“搜索和替换”,包括请求和响应。如果希望将替换限制在某些情况下,则必须使用适当的STREAM命令定义规则。当虚拟服务器具有流配置文件时,搜索和替换操作可以同时在客户端请求(在到服务器的途中更改请求)和服务器响应(在到客户端的途中更改响应)上执行。流配置文件在逐个包的基础上执行搜索和替换。
Content-Length 是一个实体消息首部,用来指明发送给接受方的消息主体的大小。Content-Length如果存在并且有效地话,则必须和消息内容的传输长度完全一致。否则就会导致异常 (特别地, HTTP1.0中这个字段可有可无)
请求
当客户端数据包由带有流配置文件的虚拟服务器处理时,数据长度的任何变化都将反映在IP总长度字段中。但是,如果HTTP数据被更改,则任何POST请求的Content-Length报头值都不会更新。
- Stream profile with HTTP profile
当虚拟服务器同时配置流和HTTP配置文件时,搜索和替换过程将在HTTP数据上执行,而不是在任何请求标头上执行。
- Stream profile with no HTTP profile
当虚拟服务器配置了流配置文件,但没有配置HTTP配置文件时,将对TCP有效负载数据执行搜索和替换过程。
响应
当服务器数据包被带有流配置文件的虚拟服务器处理时,数据长度的任何变化都会反映在IP总长度字段中。但是,如果HTTP数据被更改,则任何响应的任何Content-Length报头值都不会更新。
F5加速技术
与BIG-IP本地流量管理器集成的加速功能包括:
- HTTP压缩使用高度可配置的GZIP压缩功能来减少通过一条线路传输的字节数。
- 快速缓存通过缓存优先级应用程序和扩展对在共享系统上托管多个应用程序的控制来卸载服务器并节省服务器CPU。压缩数据的缓存存储甚至可以产生更快的内容交付,并提高BIG-IP的可扩展性。
- OneConnect通过从服务器上卸载TCP连接来增加服务器容量。
- 通过降低必须在服务器上执行的TCP分段数量,内容假脱机减少了服务器上的TCP开销,从而将服务器容量提高了15%。
实验:
测试FTP行为
1、创建一个ftp_pool和一个vs
pool:
- Name:ftp_pool
- Node:172.16.20.1
- Port:21
vs:
- Name: ftp_vs
- Destination:10.10.10.100
- Port:21
- Resource:ftp_pool
2、清除统计记录
路径 :Statistics ›› Module Statistics : Traffic Summary : General
测试HTTP压缩行为
使用tcpdump的命令查看HTTP headers的数据:
# f5
tcpdump -ni uplink -vvvs 1024 -l -A host 10.10.10.9 and port 80
# server
tcpdump -ni eno33554960 -vvvs 10240 -A port 80
1、创建一个pool和vs
pool:
- Name:compression_pool
- Member:172.16.20.1:80
vs:
- Name:compression_vs
- Destination:10.10.10.104:80
- HTTP Profile (Client):http
测试Web加速行为
1、确认http_vs的7层的profile文件已经摘除。
2、清理http_vs和http_pool的统计值。
测试流配置文件行为
1、创建一个Stream的配置文件
- Name:configltm_stream_profile
- Parent Profile:stream
- Source:Server 3
- Target:Node 333