先进的概念

VRD用例-使用Citrix ADC动态路由与Kubernetes

Acme公司。Kubernetes应用的路由健康注入和BGP集成

Acme Inc.是一个长期Citrix客户,具有大型Citrix ADC占地面积。Citrix ADC作为关键Kubernetes应用程序的主要负载平衡和业务连续性解决方案。Acme Inc.目前有三个主要数据中心。

Acme Inc.希望为关键的Kubernetes应用程序提供冗余和高可用性,以便在三个数据中心的所有部署机架之间提供更大的容错能力。

在Citrix ADC上使用路径健康注入,解决方案为通过现有的BGP + ECMP路由结构访问的Kubernetes服务提供冗余。

除了路由健康注入外,许多Kubernetes应用程序还需要后端服务器接收真实的客户端IP。传统负载均衡与Citrix ADC源包目的后端服务器从ADC子网IP地址。对于需要真实客户端IP地址作为源地址的应用程序,Citrix ADC提供了多种方法。这些方法包括USIP(使用源IP模式)和DSR(直接服务器返回)。

Acme Inc.为Kubernetes应用程序提供测试Citrix ADC VPX实例和测试VIP。此测试环境用于构建具有客户端IP的route health injection解决方案,并在将其推出到生产环境之前对其进行全面测试。

部署要求

Acme Inc.和Citrix确定了几个不同的要求:

  • 每个数据中心的Citrix ADC VPX单元,可连接到动态路由网络(3)
  • 最多三个虚拟服务器的IP地址被配置为AS / 32路由在Acme Inc.动态路由

环境:

Kubernetes测试贵宾

  • 每个Citrix ADC单元上的VIP必须有自己的SNIP地址,并启用动态路由。这是发布路由健康注入VIP的网关。

确认Kubernetes的信息包括:

  • 后端Kubernetes pod和测试vip
  • 需要的端口和负载均衡参数
  • SSL证书(如适用)

客户端IP配置

  • 后端服务器必须接收到真实的客户端IP地址
  • 在客户端IP选项部分讨论了多个可用选项

路由健康注入(RHI)

带有路由运行状况注入的Citrix ADC动态路由

在Citrix ADC中,动态路由和路由运行状况注入的主要目的是将vip的状态或运行状况通报给上游路由器。VIP的状态取决于与其关联的虚拟服务器,以及与该VIP绑定的服务。通过路由健康注入发布VIP时,将绑定该虚拟IP地址所关联的虚拟服务器的状态。

虚拟IP地址必须启用广告。这是通过设置的-hostroute选项启用在虚拟IP地址上。默认情况下,-hostroute选项设置为禁用。的-hostroute添加IP地址时,可以启用选项添加ns ip命令,或使用设置ns ip命令。

路线健康注射监测

之后hostRoute选项启用时,NetScaler内核将根据与虚拟IP地址关联的虚拟服务器的状态将主机路由注入ZebOS NSM(网络服务模块)。这个- vserverroute健康注入级别switch控制虚拟服务器状态和发送到网络服务模块NSM (Network Services Module)的虚拟IP主机路由之间的关系。

虚拟服务器路由健康注入级别有三个可用选项:

  • 所有服务器—只有当与该虚拟IP相关联的虚拟服务器都处于UP状态时,才会向NSM注入主机路由。
  • 一个虚拟服务器—只有当与该虚拟IP相关联的任何一个虚拟服务器处于UP状态时,才会向NSM注入主机路由。
  • 没有一个—无论与该虚拟IP相关联的虚拟服务器的状态如何,都会向NSM注入主机路由。

笔记:

缺省情况下,-vserverrhilevel设置为one_vserver。

下图描述了与Citrix ADC上的负载均衡虚拟服务器关联的虚拟IP地址的基本路由运行状况注入功能:

有关Citrix ADC上的负载平衡虚拟服务器相关的虚拟IP地址的RHI功能

具有多个数据中心的路由运行状况注入选项

下面描述根据每个应用程序的特定需求选择的路由运行状况注入配置。可供选择的选项有:

主动 - 与BGP确定每个客户端的最有效路由(Anycast或ECMP)

路线健康注射有源 - 活跃:ANYCAST或ECMP

路由运行状况注入活动/活动是Anycast或ECMP。这是一个真正积极主动的替代方案。在这种情况下,路由健康注入VIP的/32路由将在所有数据中心发布,而不会向BGP提供cost或local preference。三种路由提供给网络,每个数据中心的Citrix ADC的SNIP地址作为访问每个VIP的网关。Acme公司的动态路由环境将客户端请求导向数据中心,以相同的成本分配流量。如果三个数据中心中的一个发生服务故障,绑定到负载均衡服务的监视器将导致虚拟服务器宕机。这进而删除了具有故障的数据中心的路由通告。所有客户端连接继续与剩余的数据中心一起工作。

路由运行状况注入active-active配置的重要注意事项:

  1. 对于基于TCP和UDP的服务,建议使用ECMP进行路由健康注入,并且需要Acme Inc.网络团队进行BGP配置。使用ECMP的路由健康注入对上游路由器可以支持的路由数量有限制(64)。
  2. Anycast的路由健康注入支持基于UDP的服务,不推荐基于TCP的服务。

下图描述了active - active Anycast/ECMP场景:

双活Anycast ECMP场景

Citrix ADC和客户端IP选项

Acme Inc.为大量Kubernetes应用程序所要求的一个重要要求是,后端服务器会收到由Citrix ADC加载的服务的真实客户端IP地址。Citrix ADC上的典型负载均衡源从NetScaler拥有的剪辑(子网IP)地址送到后端服务器的所有流量。对于某些应用程序,需要真实的客户端IP。使用路由健康注入的大多数应用程序还要求将真正的客户端IP发送到后端服务器。

Citrix ADC有一个名为“使用源IP”(USIP)的功能,可以全局绑定,也可以单独绑定到需要客户端IP到后端服务器的每个服务。这样做的问题是,一旦客户端接收到具有不同源IP的数据包,就会发生不对称路由,并且数据包会被丢弃。正因为如此,必须评估其他注意事项,并且需要在后端服务器上进行额外配置,以便USIP正常工作。

在Citrix ADC上实现使用源IP模式时,在Citrix ADC模式下必须关闭浪涌保护模式时的重要考虑因素。有关使用浪涌保护的USIP模式的更多信息,请在Citrix文章中找到在这里

Citrix ADC提供多种方法来实现此操作,并在以下部分中描述。可用的选项是:

  • USIP模式与Citrix ADC剪辑为默认网关
  • 直接服务器返回层3
    • IP隧道
    • 客户端IP插入TOS头部
  • 直接服务器返回层2
  • TCP标题的客户端IP插入

USIP模式与Citrix ADC剪辑为默认网关

在与Acme Inc.的多次会议中。对于大多数需要客户端IP的负载均衡服务来说,这种方法是首选的。这种方法包括更改每个负载均衡的后端服务器的默认网关,并将其设置为承载负载均衡VIP的Citrix ADC单元的SNIP地址。此选项支持所有Citrix ADC特性,而不是Direct服务器返回选项,在Direct服务器返回选项中,Citrix ADC只管理传入的客户端请求。这个选项还需要ADC单元上的最大带宽。这种方法有以下基本要求:

  • Citrix ADC必须有一个SNIP地址在相同的L2子网中,以便所有后端服务器进行负载均衡。
  • 将SNIP地址配置为所有后端服务器的默认网关。不同L2子网的后端服务器可以使用多个SNIP地址。
  • 必须在指向后端服务器的服务上启用USIP模式。

笔记:

也可以在Citrix ADC单元上全局启用USIP,但USIP仅适用于启用USIP模式后创建的服务。

Citrix建议为后端服务器添加更多网络接口,并为非客户端流量配置静态路由。

  • 备份例程和需要带宽的其他进程不必遍历Citrix ADC单元。

直接服务器返回:层3选项

使用Citrix ADC直接服务器返回是在负载平衡配置中获取后端服务器上的客户端IP地址的另一个配置选项。直接服务器返回可以在第三层模式下配置,因此允许在其他L3 vlan上使用后端服务器,而USIP则需要从ADC到后端服务器的L2连接。由于响应流量不穿越Citrix ADC单元,直接服务器返回配置不支持某些Citrix ADC特性。这个选项需要在Citrix ADC单元上最少的吞吐量。

直接服务器返回具有后端服务器所需的更复杂的配置,因为它们必须能够提取客户端IP并重写TCP报头以直接响应客户端。Citrix目前支持两种不同的方法来配置Layer 3 DSR:

  • 具有IP隧道的DSR模式(IP OVER IP)
  • 带有TOS(服务类型TCP报头字段)的DSR模式

DSR的基本要求如下:

  • Citrix ADC必须在服务中配置USIP。
  • 后端服务器具有Citrix ADC VIP地址配置的环回地址。
  • 后端服务器必须为每种方法专门配置:
    • IP隧道:后端服务器必须从ADC中解封数据包,并提取客户端IP以直接响应客户端。
    • TOS(服务类型):后端服务器必须能够读取TCP数据包的TOS头,并使用此信息直接回复客户端。
    • 这两种方法都可能需要在后端服务器上进行自定义配置并使用第三方应用程序。

第3层DSR可能需要在防火墙和安全设备上配置例外。

更多关于直接服务器返回层3可以在这里找到:

  • 安全域与服务条款
  • DSR与IP隧道

暴露类型为“LoadBalancer”的服务

在公共云(如AWS、GCP或Azure)上的Kubernetes部署中本机支持LoadBalancer类型的服务。在云部署中,创建LoadBalancer类型的服务时,将为该服务分配一个云管理的负载平衡器。然后使用负载平衡器公开服务。

对于Kubernetes的内部部署、裸机或公共云部署,您可以在集群外使用Citrix ADC来负载平衡传入流量。Citrix ingress controller提供灵活的IP地址管理,可实现Citrix ADC的多租户。Citrix ingress controller允许您使用单个ADC对多个服务进行负载平衡,还可以组合各种入口功能。使用Citrix ADC和Citrix ingress controller,您可以最大限度地利用公共云的负载平衡器资源,并显著降低运营费用。

当Citrix ADC位于Kubernetes集群(Tier-1)之外时,Citrix入口控制器支持LoadBalancer类型的服务。当创建、更新或删除LoadBalancer类型的服务时,Citrix入口控制器为Citrix ADC配置一个负载均衡虚拟服务器。

负载均衡虚拟服务器配置了一个IP地址(虚拟IP地址或VIP地址),该IP地址可以通过以下方式获取:

  1. 通过Citrix提供的IPAM控制器自动为服务分配虚拟IP地址。该解决方案的设计方式使您可以轻松地将该解决方案与Infoblox等ExternalDNS提供商集成。有关更多信息,请参见与ExternalDNS的互操作性。
  2. 通过使用服务定义中的spec.loadBalancerIP字段指定IP地址。Citrix ingress controller使用spec.loadBalancerIP字段中提供的IP地址作为与该服务对应的负载平衡虚拟服务器的IP地址。

    apiVersion:V.1类型:服务元数据:名称:你好,世界服务规范:类型:loadbalanceloadbalancerip:港口:-端口:80目标口:8080选择器:运行:Load-Balancer-示例

有关更详细的参考,请参阅公开LoadBalancer类型的服务

IPAM先决条件

作为Citrix ADC动态路由与Kubernetes的先决条件,必须配置IP地址管理(IPAM)。IPAM用于在ADM托管部署中自动分配和释放IP地址。有关更详细的参考,请参阅配置IP地址管理

VRD用例-使用Citrix ADC动态路由与Kubernetes