正常关闭服务

在计划的网络中断(如系统升级或硬件维护)期间,您可能需要关闭或禁用某些服务。您可以稍后使用“启用服务<name> 命令启用服务。

为避免中断已建立的会话,您可以通过执行以下操作之一将服务置于“转换断服务 (TROFS)”状态:

  • 向监视器添加 TROFS 代码或字符串-将服务器配置为发送特定代码或字符串以响应监视器探测。
  • 显式禁用该服务,并且:
    • 设置延迟(以秒为单位)。
    • 启用优雅关机。

添加 TROFS 代码或字符串

如果您只将一个监视器绑定到一个服务,并且该监视器启用了 TROFS,则可以根据服务器对监视器探测的响应将该服务置于 TROFS 状态。将此响应与 HTTP 监视器的 TrofsCode 参数中的值或 http-ecv 或 tcp-ecv 监视器的 TROFString 参数中的值进行比较。如果代码匹配,服务将处于 TROFS 状态。在这种状态下,它将继续遵守持久连接。

如果将多个监视器绑定到一个服务,则根据绑定到该服务的所有监视器的状态计算服务的有效状态。在收到 TROFS 响应后,启用 TROFS 的监视器的状态将被视为 UP,以便进行此计算。有关 Citrix ADC 设备如何将服务指定为 UP 的更多信息,请参阅为绑定到服务的监视器设置阈值

重要信息:

  • 您可以将多个监视器绑定到服务,但不得启用多个监视器。
  • 您可以将启用 TROFS 的监视器转换为未启用 TROFS 的监视器,反之亦然。

使用命令行界面在监视器中配置 TROFS 代码或字符串

在命令提示窗口中,键入以下命令之一:

add lb monitor <monitor-name> HTTP -trofsCode <respcode>

add lb monitor <monitor-name> HTTP-ECV  -trofsString <resp string>

add lb monitor <monitor-name> TCP-ECV  -trofsString <resp string>

使用命令行界面修改 TROFS 代码或字符串

在命令提示窗口中,键入以下命令之一:

set lb monitor <trofs monitorname> HTTP -trofscode <newcode>

set lb monitor <trofs monitorname> HTTP-ECV -trofsstring <new string>

set lb monitor <trofs monitorname> TCP-ECV -trofsstring <new string>

注意:只有在之前添加了启用 TROFS 的监视器时,才能使用 set 命令。不能使用此命令为未启用 TROFS 的监视器设置 TROFS 代码或字符串。

使用配置实用程序在监视器中配置 TROFS 代码或字符串

  1. 导航到流量管理 > 负载平衡 > 监视器。
  2. 在“监视器”窗格上,单击“添加”,然后执行以下操作之一:
    • 选择“键入为 HTTP”,然后指定 TROFS 代码。
    • 选择类型为 http-ecv 或 tcp-ecv,然后指定 TROFS 字符串。

禁用服务

但是,通常情况下,您无法估计与服务的所有连接完成现有事务所需的时间量。如果事务在等待时间过期时未完成,则关闭服务可能会导致数据丢失。在这种情况下,您可以为服务指定正常关闭,以便仅在服务器或客户端关闭所有当前活动客户端连接时禁用该服务。如果除了正常关闭之外指定等待时间,请参阅下表以了解行为。

即使启用正常关闭,也会根据指定的方法维护持久性。系统继续为所有持久客户端提供服务,包括来自客户端的新连接,除非由于监视器进行的检查而在正常关机状态下,服务被标记为“关闭”。

下表描述了正常的关闭选项。

状态 结果
启用正常关机并指定等待时间。 服务在提供最后一个当前活动客户端连接后关闭,即使等待时间尚未过期。设备每秒检查一次连接状态。如果等待时间过期,任何打开的会话都将关闭。
正常关机处于禁用状态,并指定等待时间。 只有在等待时间过期后才会关闭服务,即使所有已建立的连接在到期之前也是如此。
启用正常关机,不指定等待时间。 只有在提供之前建立的最后一个连接后才会关闭服务,而不考虑为最后一个连接提供服务所花费的时间。
正常关机处于禁用状态,并且不指定等待时间。 没有正常的关机。选择禁用选项或发出禁用命令后,服务将立即关闭。(默认等待时间为零秒。)

若要在服务或虚拟服务器标记为“向下”时终止现有连接,可以使用“向下状态刷新”选项。有关详细信息,请参阅启用虚拟服务器连接的清理

使用命令行界面为服务配置正常关闭

在命令提示符下,键入以下命令以正常地关闭服务并验证配置:

disable service <name> [<delay>] [-graceFul (YES|NO)]

show service <name>

示例:

> disable service svc1 6000 -graceFul YES
Done
>show service svc1
svc1 (10.102.80.41:80) - HTTP
State: GOING OUT OF SERVICE (Graceful, Out Of Service in 5998 seconds)
Last state change was at Mon Nov 15 22:44:15 2010
Time since last state change: 0 days, 00:00:01.160
...
Down state flush: ENABLED

1 bound monitor:
1) Monitor Name: tcp-default
State: UP             Weight: 1
Probes: 13898    Failed [Total: 0 Current: 0]
Last response: Probe skipped - live traffic to service.
Response Time: N/A
Done

>show service svc1
svc1 (10.102.80.41:80) - HTTP
State: OUT OF SERVICE
Last state change was at Mon Nov 15 22:44:19 2010
Time since last state change: 0 days, 00:00:03.250
Down state flush: ENABLED

1 bound monitor:
1)  Monitor Name: tcp-default
State: UNKNOWN           Weight: 1
Probes: 13898    Failed [Total: 0 Current: 0]
Last response: Probe skipped - service state OFS.
Response Time: N/A
Done

使用配置实用程序为服务配置正常关闭

  1. 导航到 Traffic Management(流量管理)> Load Balancing(负载平衡)> Services(服务)。
  2. 打开该服务,然后从“操作”列表中单击“禁用”。输入等待时间,然后选择正常。