N 层缓存重定向
为了高效处理大量缓存数据(通常为每秒几千兆字节),互联网服务提供商 (ISP) 部署了多个专用的缓存服务器。NetScaler 设备的缓存重定向功能可以帮助平衡缓存服务器的负载,但是单个设备或几个设备可能无法有效地处理大量流量。
您可以通过在两层(层)中部署 NetScaler 设备来解决问题,其中上层的设备对下层的设备进行负载平衡,下层的设备对缓存服务器进行负载平衡。这种安排被称为 n 层缓存重定向。
出于审计和安全等目的,ISP 必须跟踪客户详细信息,例如 IP 地址、提供的信息和交互时间。因此,通过 NetScaler 设备进行的客户端连接必须完全透明。但是,如果您配置透明缓存重定向,并行部署 NetScaler 设备,则必须在所有设备之间共享客户端的 IP 地址。共享客户端 IP 地址会产生冲突,使网络设备(例如路由器、缓存服务器、源服务器和其他 NetScaler 设备)无法确定应将响应发送到的设备,从而无法确定应将响应发送到的客户端。
N 层缓存重定向是如何实现的
为了解决此问题,设备 n 层缓存重定向在较低层的设备之间拆分了源端口范围,并在发送给缓存服务器的请求中包括客户端 IP 地址。上层 NetScaler 设备配置为进行无会话负载平衡,以避免对设备造成不必要的负载。
当较低层的 NetScaler 设备与缓存服务器通信时,它使用映射 IP 地址 (MIP) 来表示源 IP 地址。因此,缓存服务器可以识别接收请求的设备并将响应发送到同一个设备。
较低层的 NetScaler 设备将客户端 IP 地址插入发送到缓存服务器的请求标题中。标头中的客户端 IP 可帮助设备确定在收到来自缓存服务器的响应时应将数据包转发到哪个客户端,如果缓存丢失,则应将数据包转发到哪个客户端。源服务器根据请求标头中插入的客户端 IP 确定要发送的响应。
源服务器将响应发送到上层设备,包括源服务器接收请求的源端口号。整个源端口范围,即 1024 到 65535,分布在较低层的 NetScaler 设备中。每个较低层的设备都被专门分配到该范围内的一组地址。这种分配使上层设备能够毫不含糊地识别向原始服务器发送请求的低级 NetScaler 设备。因此,上层设备可以将响应转发到正确的下层设备。
上层 NetScaler 设备配置为执行基于策略的路由,路由策略的定义是从源端口范围确定目标设备的 IP 地址。
配置 N 层 CRD 所需的设置
要使 n 层缓存重定向正常运行,必须进行以下设置:
对于每个上层 NetScaler 设备:
- 启用第 3 层模式。
- 为基于策略的路由 (PBR) 定义策略,以便根据目标端口的范围转发流量。
- 配置负载平衡虚拟服务器。
- 将虚拟服务器配置为监听来自客户端的所有流量。将服务类型/协议设置为 ANY,将 IP 地址设置为星号 (*)。
- 使用基于 Mac 的重定向模式启用无会话负载平衡,以避免在上层 NetScaler 设备上产生不必要的负载。
- 确保已启用“使用代理端口”选项。
- 为每个较低层的设备创建服务,并将所有服务绑定到虚拟服务器。
对于每台较低层的 NetScaler 设备,
- 在设备上配置缓存重定向端口范围。为每台较低级别的设备分配专属范围。
- 配置负载平衡虚拟服务器并启用基于 Mac 的重定向。
- 为每个要由此设备进行负载平衡的缓存服务器创建服务。创建服务时,允许在标头中插入客户端 IP。然后,将所有服务绑定到负载平衡虚拟服务器。
- 使用以下设置配置透明模式缓存重定向虚拟服务器:
- 启用 Origin USIP 选项。
- 添加源 IP 表达式以在标头中包含客户端 IP。
- 启用“使用端口范围”选项。
缓存命中期间 N 层缓存重定向的工作原理
下图显示了当客户端请求可缓存且响应从缓存服务器发送时,缓存重定向的工作原理。
图 1. 缓存命中时的缓存重定向
两台 NetScaler 设备,即 L1NS1 和 L1NS2,部署在上层,四台 NetScaler 设备 L2NS1、L2NS2、L2NS3 和 L2NS4 部署在下层。客户端 A 发送请求,该请求由路由器转发。缓存服务器 CRS1、CRS2 和 CRS3 为缓存请求提供服务。原始服务器 O 为未缓存的请求提供服务。
交通流量
- 客户端发送请求,然后路由器将其转发给 L1NS1。
- L1NS1 对向 L2NS2 发出的请求进行负载平衡。
- L2NS2 对缓存服务器 CRS1 的请求进行负载平衡,并且该请求是可缓存的。L2NS2 在请求标头中包含客户端 IP。
- CRS1 向 L2NS2 发送响应是因为 L2NS2 在连接 CRS1 时使用其 MIP 作为源 IP 地址。
- 借助请求标头中的客户端 IP 地址,L2NS2 可以识别请求来自哪个客户端。L2NS2 直接向路由器发送响应,避免了对上层设备造成不必要的负载。
- 路由器将响应转发到客户端 A。
绕过缓存期间 N 层缓存重定向的工作原理
下图显示了将客户端请求发送到源服务器进行响应时缓存重定向的工作原理。
图 2. 缓存绕过的情况下的缓存重定向
两台 NetScaler 设备,即 L1NS1 和 L1NS2,部署在上层,四台 NetScaler 设备 L2NS1、L2NS2、L2NS3 和 L2NS4 部署在下层。客户端 A 发送请求,该请求由路由器转发。缓存服务器 CRS1、CRS2 和 CRS3 为缓存请求提供服务。原始服务器 O 为未缓存的请求提供服务。
交通流量
- 客户端发送请求,然后路由器将其转发给 L1NS1。
- L1NS1 对向 L2NS2 发出的请求进行负载平衡。
- 该请求不可缓存(缓存绕过)。因此,L2NS2 通过路由器将请求发送到源服务器。
- 源服务器将响应发送到上层设备 L1NS2。
- 根据 PBR 策略,L1NS2 将流量转发到较低层的相应设备 L2NS2。
- L2NS2 使用请求标头中的客户端 IP 地址来识别请求来自哪个客户端,并将响应直接发送到路由器,从而避免对上层设备造成不必要的负载。
- 路由器将响应转发到客户端 A。
在缓存丢失期间 N 层缓存重定向的工作原理
下图显示了未缓存客户端请求时缓存重定向的工作原理。
图 3. 缓存错误的情况下的缓存重定向
两台 NetScaler 设备,即 L1NS1 和 L1NS2,部署在上层,四台 NetScaler 设备 L2NS1、L2NS2、L2NS3 和 L2NS4 部署在下层。客户端 A 发送请求,该请求由路由器转发。缓存服务器 CRS1、CRS2 和 CRS3 为缓存请求提供服务。原始服务器 O 为未缓存的请求提供服务。
交通流量
- 客户端发送请求,然后路由器将其转发给 L1NS1。
- L1NS1 对向 L2NS2 发出的请求进行负载平衡。
- L2NS2 对缓存服务器 CRS1 的请求进行负载平衡,因为该请求是可缓存的。
- CRS1 没有响应(缓存丢失)。CRS1 通过较低层的设备将请求转发到源服务器。L2NS3 会拦截流量。
- L2NS3 从标头中获取客户端 IP 并将请求转发到源服务器。数据包中包含的源端口是 L2NS3 端口,请求从该端口发送到原始服务器。
- 源服务器将响应发送到上层设备 L1NS2。
- 根据 PBR 策略,L1NS2 将流量转发到较低层的相应设备 L2NS3。
- L2NS3 将响应转发给路由器。
- 路由器将响应转发到客户端 A。