Citrix ADC

在一次性nitro API调用中为服务组配置所需的一组服务组成员

添加了支持,以便在一次nitro API调用中为服务组配置所需的服务组成员集。添加了新的api(所需状态api)来支持此配置。使用期望状态api,您可以:

  • 在“servicegroup_servicegroupmemberlist_binding”资源上的单个把请求中提供服务组成员的列的表。
  • 在该放请求中提供它们的权重和状态(可选)。
  • 有效地将设备配置与应用程序服务器周围的部署更改同步。

Citrix ADC设备将请求的所需成员集与配置的成员集进行比较。然后,它会自动绑定新成员并解除请求中不存在的成员的绑定。

注意:

  • 只有API。类型的服务组才支持此功能
  • 您只能使用期望状态API绑定基于IP地址的服务,不允许使用基于域名的服务。
  • 以前,只能在硝基呼叫中绑定一个服务组成员。

重要

Citrix ADC群集部署中支持ServiceGroup成员资格的所需状态API。

使用案例:在大规模部署(例如Kubernetes)中将部署更改同步到Citrix ADC设备

在大规模和高度动态的部署(例如Kubernetes)中,面临的挑战是如何使设备配置与部署的变化速度保持同步,从而准确地为应用程序流量提供服务。在此类部署中,控制器(入口或e-w控制器)负责更新adc配置。每当部署发生更改时,都会通过"端点事件"将有效的终端集kube-api服务器发送给控制器。Controller 使用读取三角修改方法,其中执行以下操作:

  • 从adc设备获取服务的当前配置的端点集(服务组的服务组成员集)。
  • 将已配置的端点集与接收事件中的设置进行比较。
  • 绑定新终端节点(服务组成员)或取消绑定已删除的终端节点。

由于更改率和服务大小在此环境中很高,因此此配置方法效率不高,可能会延迟配置更新。

所需状态API通过在单个API中接受服务组的预期成员集来解决问题,并有效地更新配置。

使用cli创建API类型的服务组

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

add serviceGroup @  [-autoScale ]

示例:

添加serviceGroup svg1 HTTP -autoScale API

您可以通过add serviceGroup或set serviceGroup命令来配置autoDisablegracefulautoDisabledelay自动定量参数。

add serviceGroup @  [-autoScale ] [-autoDisablegraceful (YES | NO)] [-autoDisabledelay ] add serviceGroup @  [-autoScale (API |CLOUD | DISABLED| DNS |POLICY)] set serviceGroup ] set serviceGroup 

示例:

add serviceGroup svg1 HTTP autoDisablegraceful YES -autoDisabledelay 100 add serviceGroup svg1 HTTP -autoScale API set serviceGroup svg1 -autoDisablegraceful YES -autoDisabledelay 100 set serviceGroup svg1 -autoScale API

参数

自动禁用优雅

表示服务正常关闭。如果启用此选项,设备将等待与该服务的所有未完成连接关闭,然后再删除该服务。对于系统上已有持久会话的客户端,会继续向该服务发送新的连接或请求。仅当没有未完成的连接时,才会删除服务成员。默认值:否

自动禁用延迟

指示正常关机所允许的时间(以秒为单位)。在此期间,系统上已有持久会话的客户端会继续向该服务发送新的连接或请求。系统上没有持久性会话的新客户端的连接或请求不会发送到服务。相反,它们是在其他可用服务之间进行负载平衡的。延迟时间到期后,服务成员将被删除。

自动定量API

AutoScale API参数允许使用所需状态API将成员集绑定到目标服务组。如果提供的所有条件都匹配,则可以将服务组从非自动缩放类型设置为所需状态API的自动定量类型。

所需状态API将检查服务组成员的IP地址是否与任何现有服务器关联。如果IP地址与现有服务器匹配,则API会重用现有服务器的IP地址和名称。如果IP地址与任何现有服务器都不匹配,则API会创建一个服务器,并将IP地址本身指定为服务器名称。

示例:

考虑一台IP地址为2.2.2.2且名称为myserver的服务器,该服务器存在于Citrix ADC设备中。使用所需的状态API,您可以绑定一组IP地址范围为2.2.2.1到2.2.2.3的服务组成员。

2.2.2由于IP地址与现有服务器关联,因此API会重用该IP地址和名称(2.2.2.2和myserver)。由于没有具有IP地址为2.2.2.1,2.2.2.3的现有服务器,因此API会使用这些IP地址创建服务器。API会将IP地址本身指定为服务器的名称。

如果所需状态命令中提供的IP地址与其他Citrix ADC实体(例如CS虚拟服务器)冲突,则会发生冲突。将显示一条错误消息,其中包含失败的原因。错误消息中将显示失败成员列表中第一个服务组成员的IP地址地址。

示例:

假设一台ip地址为2.2.2.8的服务器用作负载均衡服务器。使用所需的状态API,您可以尝试绑定一组IP地址范围为2.2.2.2——2.2.2.11的服务组成员。

由于2.2.2.8已用于lb服务,因此会发生冲突。将显示以下错误消息,其中包含失败的原因和失败的成员绑定:

{"errorcode": 304, "message": "Address already in use", "severity": "ERROR", "servicegroup_servicegroupmemberlist_binding": {"servicegroupname": "sg1", "failedmembers": [{"ip": "2.2.2.8", "port": 80}, {"ip": "2.2.2.9", "port": 80}]}} 

错误代码304显示失败成员列表中的第一个服务组成员,即2.2.2.8。

如果现有成员绑定满足以下任一条件,则该设置serviceGroup自动伸缩命令可能会失败:

  • 如果绑定到服务组的服务器是名称服务器或基于域的服务器。
  • 如果环回服务器名称不是127.0.0.1或0000:0000:0000:0000:0000:0000:0000:0001。
  • 如果你在设置ServiceGroup命令中选择了不同类型的自动定量(云、API、DNS和策略),然后添加ServiceGroup命令。

重要:

  • AutodisableGracle和AutoDisableDelay参数仅适用于AutoScale类型" API "和" CLOUD "的服务组。
  • 如果未配置AutoDisableGrace或AutoDisableDelay参数,则会立即删除服务成员。

优雅地解除服务组成员的绑定

如果任何服务组成员不在理想状态列表中,则会根据autoDisablegracefulautoDisabledelay参数配置优雅地解除绑定这些成员。

  • 如果设置了其中一个参数,则服务组成员将正常解除绑定。
  • 如果未设置这些参数,则服务组成员将立即解除绑定。

注意:

  • 仅当运行show service group命令时,才会显示标识为正常取消绑定的服务组成员。
  • 无法对标识为正常解除绑定的服务组成员执行任何操作(例如设置、取消设置)。

下图显示了show service group命令的示例。

示例显示服务组命令

使用GUI创建API类型的服务组

  1. 导航到流量管理 > 负载平衡 > 服务组,然后单击添加

  2. 自动缩放模式下,选择API

使用GUI为API类型服务组配置正常关机或延时时间

  1. 导航到流量管理 > 负载平衡 > 服务组

    服务组的基本设置

  2. 自动缩放模式下,选择API

  3. 在“自动禁用优雅“中,选择””。

  4. 自动禁用延迟中,输入正常关机的等待时间。

注意:只有在自动缩放模式下选择API时,才会启用自动禁用正常显示延迟自动显示延迟字段。

在一次性nitro API调用中为服务组配置所需的一组服务组成员