干货|深度解析NetScaler的七层规则处理优先级
eBay网站的入口流量主要由负载均衡器上成百上千的七层规则处理,有些不恰当的配置,轻则导致负载均衡器的性能问题,重则招致流量的错误导向。所以能够清晰地理解每种七层规则的优先顺序,对流量的引导起着至关重要的作用。
NetScaler是什么?
NetScaler是现在云计算中心最流行的负载均衡器之一,它可以支持以下4种七层规则。
一个VIP(Virtual IP)可以同时拥有多种类型的七层规则。那么一个请求得到什么样的响应,跟这些不同类型的七层规则的优先处理顺序密切相关。举个例子,如果一个VIP,http://www.site1.com,有以下几种七层规则:
当客户端访问http://www.site1.com/a/时:
以上所述是例子的全部内容,从中可以看出,七层规则优先处理顺序不同,响应就迥然不同。由此可以说明在七层规则共存时,处理优先级是非常关键的。但是网上很多文档或者在线资料针对这些规则的优先级的解释都有一定冲突。例如:
扫码看文档一
文档一表明处理优先级应该是
扫码看文档二
文档二表明处理优先级应该是
所以我们决定做一些测试来看清他们的优先顺序究竟是什么,下面是我们的测试案例。
测试案例有哪些?
准备工作:
案例1
所有七层规则都启用的情况下:
$curl -I http://VIP/
HTTP/1.1 301 Moved Permanently
Location: https://VIP/
得到的结果和Responder规则匹配。由此说明Responder处理优先级最高。
案例2
禁用Responder规则,其他的规则都同时启用:
$curl -I http://VIP/
Curl: (56) Recv failure: Connection reset by peer
得到的结果和Filter规则匹配。这说明Filter规则此时拥有最高处理优先级,仅次于Responder规则。
案例3
禁用Responder和Filter规则,剩下的规则同时启用:
$curl -I http://VIP/a/
Check host in LBVserver_A, the log shows
10.20.30.40 - - [11/Jun/2018:01:02:03 +0000] "HEAD /b/ HTTP/1.1" 200 0 "-" "curl/7.35.0" "-"
得到的结果显示请求被路由到了应用A(即LBVserver-A)。由此说明Content Switching 优先级排第三,那么请求Rewrite规则优先级是第四。
结论是什么?
基于以上测试结果,我们得出在NetScaler的CSVserver上,七层规则的处理优先顺序应该是:
七层规则远比我们做的测试中的规则功能更丰富,所以它可以有很多种组合,形成不同的行为规范,知道这些七层规则的处理优先级,不仅可以为不同请求个性化定制响应,也有助于eBay精确而有效的管理它们。避免不恰当的配置才能保证eBay站点的高可用性、安全性和高效的请求处理性能。
本文作者
Charles/Leona/John
痴迷于云计算
在IT界摸爬滚打的工程师们
“既然选择了代码
便只顾风雨兼程”