N 层缓存重定向

为了有效地处理大量缓存数据(通常是每秒数千兆字节),Internet 服务提供商 (ISP) 会部署多个专用缓存服务器。Citrix ADC 设备的缓存重定向功能有助于对缓存服务器进行负载平衡,但是一台设备或几台设备可能无法高效处理大量流量。

可以通过将 Citrix ADC 设备部署为两层(图层)来解决问题,其中上层设备的负载平衡较低层中的设备,较低层负载中的设备平衡缓存服务器。这种安排称为 n 层缓存重定向

出于审核和安全性等目的,ISP 必须跟踪客户端详细信息,例如 IP 地址、提供的信息和交互时间。因此,通过 Citrix ADC 设备的客户端连接必须完全透明。但是,如果配置透明缓存重定向,并行部署 Citrix ADC 设备,则必须在所有设备之间共享客户端的 IP 地址。共享客户端 IP 地址会产生冲突,导致网络设备(如路由器、缓存服务器、源服务器和其他 Citrix ADC 设备)无法确定应向哪个设备以及哪个客户端发送响应。

N 层缓存重定向的实现方式

为了解决此问题,设备 n 层缓存重定向会在较低层中的设备之间拆分源端口范围,并在发送到缓存服务器的请求中包括客户端 IP 地址。上层 Citrix ADC 设备配置为执行无会话负载均衡,以避免设备上的不必要负载。

当较低层 Citrix ADC 设备与缓存服务器通信时,它会使用映射的 IP 地址 (MIP) 来表示源 IP 地址。因此,缓存服务器可以识别其接收请求的设备,并将响应发送到同一设备。

较低层的 Citrix ADC 设备将客户端 IP 地址插入到发送到缓存服务器的请求的标头中。标头中的客户端 IP 可帮助设备确定在收到来自缓存服务器的响应时应将数据包转发到的客户端,或者在出现缓存中断的情况下原始服务器。源服务器根据请求标头中插入的客户端 IP 确定要发送的响应。

源服务器将响应发送到上层设备,包括源服务器从中接收请求的源端口号。整个源端口范围(1024 至 65535)分布在较低层的 Citrix ADC 设备之间。每个较低层的设备在范围内专门分配一组地址。此分配使上层设备能够明确识别向源服务器发送请求的较低层 Citrix ADC 设备。因此,上层设备可以将响应转发到正确的较低层设备。

上层 Citrix ADC 设备配置为执行基于策略的路由,并定义路由策略以确定源端口范围内目标设备的 IP 地址。

配置 N 层 CRD 所需的设置

以下设置对于 n 层缓存重定向的运行是必要的:

对于每个上层 Citrix ADC 设备:

  • 启用第 3 层模式。
  • 为基于策略的路由 (PBRs) 定义策略,以便根据目标端口的范围转发流量。
  • 配置负载平衡虚拟服务器。
  • 配置虚拟服务器以侦听来自客户端的所有流量。将服务类型/协议设置为任何,IP 地址设置为星号 (*)。
  • 使用基于 Mac 的重定向模式启用无会话负载平衡,以避免上层 Citrix ADC 设备上不必要的负载。
  • 请确保已启用“使用代理端口”选项。
  • 为每个较低层设备创建服务,并将所有服务绑定到虚拟服务器。

对于每个较低层次的 Citrix ADC 应用,

  • 在设备上配置缓存重定向端口范围。为每个较低层设备分配独占范围。
  • 配置负载平衡虚拟服务器并启用基于 Mac 的重定向。
  • 为将由此设备进行负载平衡的每个缓存服务器创建一个服务。创建服务时,启用在标头中插入客户端 IP。然后,将所有服务绑定到负载平衡虚拟服务器。
  • 使用以下设置配置透明模式缓存重定向虚拟服务器:
    • 启用原始 USIP 选项。
    • 添加源 IP 表达式以在标头中包含客户端 IP。
    • 启用“使用端口范围”选项。

N 层缓存重定向在缓存命中期间的工作原理

下图显示了当客户端请求可缓存且从缓存服务器发送响应时缓存重定向的工作原理。

图 1. 缓存命中时的缓存重定向

缓存命中时的缓存重定向

两个 Citrix ADC 设备(L1NS1 和 L1NS2)部署在上层,四个 Citrix ADC 设备(L2NS1、L2NS2、L2NS3 和 L2NS4)部署在下层。客户端 A 发送由路由器转发的请求。缓存服务器 CRS1、CRS2 和 CRS3 为缓存请求提供服务。源服务器 O 为未缓存的请求提供服务。

交通流量

  1. 客户端发送请求,路由器将其转发到 L1NS1。
  2. L1NS1 负载平衡对 L2NS2 的请求。
  3. L2NS2 负载平衡到缓存服务器 CRS1 的请求,并且请求是可缓存的。L2NS2 在请求标头中包含客户端 IP。
  4. CRS1 将响应发送到 L2NS2,因为 L2NS2 在连接到 CRS1 时使用其 MIP 作为源 IP 地址。
  5. 借助请求标头中的客户端 IP 地址,L2NS2 识别请求来自的客户端。L2NS2 直接将响应发送到路由器,避免上层设备上的不必要的负载。
  6. 路由器将响应转发到客户端 A。

N 层缓存重定向在缓存绕过期间的工作原理

下图显示了当客户端请求发送到源服务器以获取响应时缓存重定向的工作原理。

图 2. 缓存绕过的情况下的缓存重定向

缓存绕过的情况下的缓存重定向

两个 Citrix ADC 设备(L1NS1 和 L1NS2)部署在上层,四个 Citrix ADC 设备(L2NS1、L2NS2、L2NS3 和 L2NS4)部署在下层。客户端 A 发送由路由器转发的请求。缓存服务器 CRS1、CRS2 和 CRS3 为缓存请求提供服务。源服务器 O 为未缓存的请求提供服务。

交通流量

  1. 客户端发送请求,路由器将其转发到 L1NS1。
  2. L1NS1 负载平衡对 L2NS2 的请求。
  3. 请求是不可避免的(缓存绕过)。因此,L2NS2 通过路由器将请求发送到源服务器。
  4. 源服务器将响应发送到上层设备 L1NS2。
  5. 根据 PBR 策略,L1NS2 将流量转发到较低层 L2NS2 中的相应设备。
  6. L2NS2 使用请求标头中的客户端 IP 地址来标识请求来自的客户端,并将响应直接发送到路由器,从而避免上层设备上层的不必要的负载。
  7. 路由器将响应转发到客户端 A。

N 层缓存重定向在缓存未命中期间的工作原理

下图显示了未缓存客户端请求时缓存重定向的工作原理。

图 3. 缓存错误的情况下的缓存重定向

缓存错误的情况下的缓存重定向

两个 Citrix ADC 设备(L1NS1 和 L1NS2)部署在上层,四个 Citrix ADC 设备(L2NS1、L2NS2、L2NS3 和 L2NS4)部署在下层。客户端 A 发送由路由器转发的请求。缓存服务器 CRS1、CRS2 和 CRS3 为缓存请求提供服务。源服务器 O 为未缓存的请求提供服务。

交通流量

  1. 客户端发送请求,路由器将其转发到 L1NS1。
  2. L1NS1 负载平衡对 L2NS2 的请求。
  3. L2NS2 负载平衡到缓存服务器 CRS1 的请求,因为请求是可缓存的。
  4. CRS1 没有响应(缓存未命中)。CRS1 通过较低层中的设备将请求转发到源服务器。L2NS3 拦截交通。
  5. L2NS3 从标头获取客户端 IP 并将请求转发到源服务器。数据包中包含的源端口是 L2NS3 端口,请求从该端口发送到源服务器。
  6. 源服务器将响应发送到上层设备 L1NS2。
  7. 根据 PBR 策略,L1NS2 将流量转发到较低层 L2NS3 中的相应设备。
  8. L2NS3 将响应转发到路由器。
  9. 路由器将响应转发到客户端 A。