Citrix ADC

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

添加了支持,以便在一次 NITRO API 调用中为服务组配置所需的服务组成员集。添加了一个新的 API,即所需状态 API,以支持此配置。使用所需状态 API,您可以:

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

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

注意:

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

重要

Citrix ADC 群集部署支持服务组成员资格的所需状态 API。

用例:在大型部署(如 Kubernetes)中同步对 Citrix ADC 设备的部署更改

在大型和高动态部署中(例如 Kubernetes),面临的挑战是使设备配置保持最新状态,以便能够准确地为应用程序流量提供服务。在此类部署中,控制器(入口或 E-W 控制器)负责更新 ADC 配置。无论何时部署发生更改,kube-api 服务器都会通过“端点事件”向 Controller 发送一组有效的端点。Controller 使用读取三角修改方法,其中执行以下操作:

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

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

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

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

在命令提示符下,键入;

add serviceGroup <serviceGroupName>@ <serviceType> [-autoScale <autoScale>]

示例:

add serviceGroup svg1 HTTP -autoScale API

您可以通过 add serviceGroup 或 set serviceGroup 命令来配置 autoDisablegracefulautoDisabledelayautoScale参数。

add serviceGroup <serviceGroupName>@ <serviceType> [-autoScale <autoScale>] [-autoDisablegraceful ( YES | NO)] [-autoDisabledelay <secs>]

add serviceGroup <serviceGroupName>@ <serviceType> [-autoScale (API |CLOUD | DISABLED| DNS |POLICY)]

set serviceGroup <serviceGroupName [-autoDisablegraceful ( YES | NO)] [-autoDisabledelay <secs>]

set serviceGroup <serviceGroupName [-autoScale (API |CLOUD | DISABLED| DNS |POLICY)]

示例:

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

参数

autoDisablegraceful

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

自动禁用延迟

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

AutoScale API

启用使用所需状态 API 将成员集绑定到预期服务组。如果所有提供的条件都匹配,您可以将服务组从非自动缩放设置为所需状态 API 的自动缩放类型。

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

  • 如果绑定到服务组的服务器是名称服务器或基于域的服务器。
  • 如果绑定到服务组的服务器名称是 IP 地址,则它必须与实际的服务器 IP 地址匹配。在以下示例中,服务器名称和服务器 IP 地址不匹配。
    • CLI: add server IPaddress server name
    • 示例: add server 1.2.3.4 4.3.2.1
  • 如果环回服务器名称是除 127.0.0.1 或 0000:0000:0000:0000:0000:0000:0000:0001 之外的其他任何内容。
  • 如果在设置的服务组命令中选择不同类型的自动缩放(云、API、DNS 和策略)并添加服务组命令。

重要:

  • “自动禁用”和“自动禁用延迟”参数仅适用于“自动缩放”类型“API”和“云”的服务组。
  • 如果未配置自动禁用或自动禁用延迟参数,则立即删除服务成员。

正常地取消绑定服务组成员

如果任何服务组成员不在所需状态列表中,则会根据autoDisablegracefulautoDisabledelay 参数配置正常地取消绑定这些成员。

  • 如果设置了其中一个参数,则服务组成员正常取消绑定。
  • 如果没有设置这些参数,则立即取消绑定服务组成员。

注意:

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

下图显示了示例显示服务组命令。

示例显示服务组命令

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

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

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

通过使用 GUI 配置 API 类型服务组的正常关机或时间延迟

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

    服务组的基本设置

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

  3. 自动禁用正常中,选择

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

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

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