Citrix ADC

内容切换虚拟服务器的持久性支持

应用程序正在从单片体系结构转向微服务体系结构。同一应用程序的不同版本可以在微服务架构中共存。Citrix ADC 设备必须支持连续部署应用程序。这通常是通过执行 Canary 部署的平台(如 Spinnaker)来实现的。在连续部署设置中,将自动部署较新版本的应用程序,并分阶段暴露给客户端流量,直到应用程序稳定以获取完整流量。此外,客户必须有不间断的服务。

Citrix ADC 内容交换功能使设备能够根据绑定到内容交换虚拟服务器的策略在多个负载平衡虚拟服务器之间分发客户端请求。

对于连续部署,内容交换用于选择服务于不同版本的应用程序的负载平衡虚拟服务器。

在内容切换中,由于内容切换策略的更改,特定应用程序版本的负载平衡虚拟服务器的选择会在运行时发生变化。在此过渡期间,如果某些会话与旧版本的应用程序一起存在,则此类流量必须仅由旧版本继续提供。为了支持此要求,Citrix ADC 设备在内容交换虚拟服务器后面的多个负载平衡组之间保持持久性。内容交换虚拟服务器的持久性可实现客户端从一个版本到另一个版本的无缝转换。

内容交换虚拟服务器上支持的持久性类型

内容交换虚拟服务器支持以下持久性类型。

持久性类型 说明
源 IP 来源 IP。来自同一客户端 IP 地址的连接是同一持久性会话的一部分。有关更多详细信息,请参阅源 IP 地址持久性。
HTTP Cookie COOKIEINSERT。具有相同 HTTP Cookie 标头的连接是同一持久性会话的一部分。Citrix ADC 设备插入的 cookie 格式为: **NSC_ <vid_str of CSvserver> = 其 <vid_str of Lbvserver> 中 NSC_XXXX 是从虚拟服务器名称派生的虚拟服务器 ID。有关更多详细信息,请参阅 HTTP cookie 持久性。
SSL Session ID(SSL 会话 ID) SSL会议。具有相同 SSL 会话 ID 的连接是同一持久化会话的一部分。有关更多详细信息,请参阅 SSL 会话 ID 持久性。

您可以为基于 HTTP Cookie 的持久性配置超时值。如果将超时值设置为 0,则无论使用何种 HTTP cookie 版本,ADC 设备都不会指定过期时间。过期时间取决于客户端软件,只有当软件正在运行时,此类 Cookie 才有效。

根据您配置的持久性类型,虚拟服务器可以支持 250,000 个同时持久性连接,也可以支持任意数量的持久性连接,但最多不超过 Citrix ADC 设备上的内存量所施加的限制。下表显示了哪些类型的持久性属于每个类别。

持久性类型 支持的同时持久连接数
源 IP、SSL 会话 ID 250,000
HTTP Cookie 内存限制。在 Cookie 中,如果超时不是 0,则连接数量受内存限制。

某些类型的持久性特定于特定类型的虚拟服务器。下表列出了每种持久性类型,并指出在哪些类型的虚拟服务器上支持哪些持久性类型。

持久性类型 HTTP HTTPS TCP UDP/IP SSL_Bridge SSL_TCP RTSP SIP_UDP
来源地
COOKIEINSERT
SSLSESSION

备份持久性支持

您可以将内容交换虚拟服务器配置为在 cookie 持久性类型失败时使用源 IP 持久性类型作为备份持久性类型。这对于微服务体系结构中的Canary部署非常有用。 当 cookie 持久性类型失败时,仅当客户端浏览器未返回请求中的任何 cookie 时,设备才会回退到基于源 IP 的持久性。但是,如果浏览器返回 cookie(不一定是持久性 cookie),则假定浏览器支持 cookie,因此不会触发备份持久性。 您还可以为备份持久性设置超时值。超时是持久化会话生效的时间段。

内容交换虚拟服务器上的持久性工作原理

场景 1:没有持久性的内容切换虚拟服务器

以下示例说明了部署多个版本的应用程序,其内容交换虚拟服务器没有持久性。

persistence-cs1

当客户端 C1 向应用程序发送请求时,请求将发送到 Citrix ADC 设备中的内容交换虚拟服务器。内容交换虚拟服务器评估策略并将请求转发到服务于应用程序版本 v1 的负载平衡虚拟服务器 (LB1)。

persistence-cs2

考虑已部署应用程序的新版本 v2,并且必须向用户子集公开。服务 v2 版本的新负载平衡虚拟服务器 (LB2) 通过适当的内容交换策略绑定到内容交换虚拟服务器。

当客户端 C1 发送新请求时,将再次评估策略,并将请求转发到负载平衡虚拟服务器 LB2。因此,如果部署了多个版本的应用程序,有状态应用程序的事务将失败。

场景 2:具有持久性的内容切换虚拟服务器

以下示例说明了使用具有持久性的内容切换虚拟服务器部署多个版本的应用程序。

persistence-cs3

当客户端 C1 向应用程序发送请求时,请求将发送到 Citrix ADC 设备中的内容交换虚拟服务器。内容交换虚拟服务器评估策略,创建持久性会话条目,并将请求转发到服务于应用程序版本 v1 的负载平衡虚拟服务器 LB1。

persistence-cs4

同一客户端 C1 再次为应用程序请求,并将请求发送到 Citrix ADC 设备中的内容交换虚拟服务器。对持久性会话的查找已完成,负载平衡虚拟服务器 LB1 从现有持久性会话中获取,并将请求转发到 LB1。使用此解决方案不会破坏现有事务; 因此,保持应用程序的状态性质。

persistence-cs5

让我们考虑一个新的客户端 C2。新请求 C2 通过策略评估发送到较新版本的应用程序,因为此客户端没有现有的持久性会话。这将导致成功推出更新版本的应用程序,而不会破坏其状态。

由于持久性支持,客户可以无缝部署多个内容或不同版本的应用程序,而不会影响现有事务(特别是对于有状态的应用程序)。如果没有坚持不懈,这是不可能的。

使用 CLI 在内容交换虚拟服务器上配置持久性类型

在命令提示窗口中,键入:

set cs vserver <name> -PersistenceType <type> [-timeout <integer>]

示例:

set cs vserver Vserver-CS-1 -persistenceType SOURCEIP -timeout 60

通过使用 GUI 在内容交换虚拟服务器上配置持久性类型

  1. 导航至流量管理 > 内容切换 > 虚拟服务器,然后单击添加

  2. 基本设置”中,配置持久性详细信息。