Citrix ADC

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

应用程序正在从单片架构转向微服务架构。同一应用程序的不同版本可以共存于微服务体系结构中。Citrix ADC设备必须支持应用程序的持续部署。它是由执行Canary部署的平台(如Spinnaker)实现的。在持续部署设置中,将自动部署应用程序的新版本,并分阶段向客户端流量公开,直到应用程序稳定到可以接收完整的流量为止。此外,必须为客户端提供不间断的服务。

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

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

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

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

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

持久性类型 描述
源IP SOURCEIP。来自相同客户端IP地址的连接是相同持久化会话的一部分。详细信息请参见源IP地址持久化。
HTTP Cookie COOKIEINSERT。具有相同HTTP Cookie头的连接是相同持久化会话的一部分。Citrix ADC设备插入的cookie的格式是:NSC_=其中NSC_XXXX为虚拟服务器ID,由虚拟服务器名称派生而来。有关详细信息,请参见HTTP cookie持久性。
SSL会话ID SSLSESSION。具有相同SSL会话ID的连接是相同持久性会话的组成部分。有关详细信息,请参见SSL会话ID持久性。

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

根据您所配置的持久性类型,虚拟服务器可以支持250,000个同时持久连接,也可以支持任何数量的持久连接,直到Citrix ADC设备上的内存量所施加的限制为止。下表显示了每种类型的持久性。

持久性类型 支持的同时持久连接数
源IP, SSL会话ID 250000年
HTTP Cookie 内存限制。在CookieInsert中,如果超时不为0,则连接数受内存限制。

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

持久性类型 HTTP HTTPS TCP UDP / IP SSL_Bridge SSL_TCP RTSP SIP_UDP
SOURCEIP 是的 是的 是的 是的 是的 是的 没有 没有
COOKIEINSERT 是的 是的 没有 没有 没有 没有 没有 没有
SSLSESSION 没有 是的 没有 没有 是的 是的 没有 没有

备份持久性支持

当cookie持久类型失败时,可以配置内容交换虚拟服务器使用源IP持久类型作为备份持久类型。它对于微服务架构中的金丝雀部署非常有用。当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通过策略评估发送到应用程序的新版本,因为该客户端没有现有的持久会话。它可以在不破坏应用程序的有状态性的情况下成功地推出新版本的应用程序。

由于持久性支持,客户可以无缝地部署多个内容或应用程序的不同版本,而不会影响现有事务,特别是有状态应用程序。在画面中没有坚持是不可能的。

该任务指导管理员在内容交换虚拟服务器上配置持久化类型

在命令提示符下,输入:

set cs vserver  -PersistenceType  [-timeout ] 

例子:

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

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

  1. 导航到交通管理>内容切换>虚拟服务器并点击添加

  2. 基本设置,配置持久性细节。