了解用户监视器

用户监视器扩展自定义监视器的范围。您可以创建用户监视器来跟踪 Citrix ADC 设备不支持的自定义应用程序和协议的运行状况。下图说明了用户监视器的工作原理。

图 1. 用户监视器

用户监视器

用户监视器需要以下组件。

  • **调度员 **设备上侦听监视请求的进程。调度程序可以位于环回 IP 地址 (127.0.0.1) 和端口 3013 上。调度员也称为内部调度员。调度程序也可以是支持通用网关接口 (CGI) 的 Web 服务器。此类调度员也称为外部调度员。它们用于不在 FreeBSD 环境中运行的自定义脚本,例如 .NET 脚本。

    注意:您可以通过在监视器上启用“安全”选项并将其配置为外部调度程序,将监视器和调度程序配置为使用 HTTPS 而不是 HTTP。但是,内部调度程序只能理解 HTTP,不能使用 HTTPS。

    在 HA 设置中,调度程序在主 Citrix ADC 设备和辅助设备上运行。调度程序在辅助设备上保持非活动状态。

剧本。该脚本是一个程序,它将自定义探测器发送到负载平衡服务器,并将响应代码返回到调度程序。脚本可以向调度程序返回任何值,但如果探测成功,脚本必须返回 0 (0) 的值。调度员将任何其他值视为探测失败。

Citrix ADC 设备与常用协议的示例脚本捆绑在一起。脚本存在于 /nsconfig/监视器目录中。如果您想添加一个新脚本,请将其添加到那里。如果要自定义现有脚本,请使用新名称创建副本并对其进行修改。

重要:

  • 从 Citrix ADC 版本 13.0 版本 41.20 开始,您可以使用 nsntlm-lwp.pl 脚本创建用于监视安全 NTLM 服务器的监视器。

  • 从版本 10.1 版本 122.17 开始,用户监视器的脚本文件位于新位置。

    如果将 MPX 或 VPX 虚拟设备升级到版本 10.1 版本 122.17 或更高版本,则更改如下所示:

    • 在 /nsconfig/监视器/中创建一个名为冲突的新目录,并将之前版本的所有内置脚本移动到此目录。
    • 所有新的内置脚本都可以在 /netscaler/monitors/ 目录中使用。所有自定义脚本都可以在 /nsconfig/监视器/目录中使用。
    • 您必须在 /nsconfig/监视器/目录中保存新的自定义脚本。
    • 升级完成后,如果自定义脚本创建并保存在 /nsconfig/监视器/目录中,并且其名称与内置脚本相同,则 /netscal/监视器/目录中的脚本优先。也就是说,自定义脚本不运行。

    如果您使用版本 10.1 版本 122.17 或更高版本配置虚拟设备,则更改如下所示:

    • 所有内置脚本都可以在 /netscaler/monitors/ 目录中使用。
    • /nsconfig/监视器/目录为空。
    • 如果您创建新的自定义脚本,则必须将其保存在 /nsconfig/监视器/目录中。

要使脚本正常工作:

  • 脚本名称中的最大字符数不得超过 63。
  • 可提供给脚本的最大脚本参数数不得超过 512。
  • 参数脚本参数中可提供的最大字符数不得超过 639。

要调试脚本,您必须使用 CLI 中的 nsumon-debug.pl 脚本来运行它。您可以使用脚本名称(及其参数)、IP 地址和端口作为 nsumon-debug.pl 脚本的参数。用户必须使用 nsumon-debug.pl 脚本的脚本名称、IP 地址、端口、超时和脚本参数。

在 CLI 中,键入:

nsumon-debug.pl <scriptname> <IP> <port> <timeout> <partitionID> [scriptarguments][is_secure]

重要提示:从版本 10.5 开始,版本 57.x 和用户监视器的 11.0 脚本文件支持 IPv6 地址,并包含以下更改:

  • 对于以下协议,已包含新的 pm 文件支持 IPv6。

    • Radius
    • NNTP
    • POP3
    • SMTP
  • /netscaler/monitors/ 中的以下示例脚本已更新为 IPv6 支持:

    • nsbmradius.pl

    • nsldap.pl

    • nsnntp.pl

    • nspop3 nssf.pl

    • nssnmp.pl

    • nswi.pl

    • nstftp.pl

    • nssmtp.pl

    • nsrdp.pl

    • nsntlm-lwp.pl

    • nsftp.pl

    • nsappc.pl

    升级到版本 10.5 版本 57.x 或 11.0 之后,如果要将现有自定义脚本与 IPv6 服务一起使用,请确保使用 /netscal/监视器/中的更新的示例脚本中提供的更改更新现有自定义脚本。

    注意:示例脚本 nsmysql.pl 不支持 IPv6 地址。如果 IPv6 服务绑定到使用 nsmysql.pl 的用户监视器,探测器将失败。

  • 以下 LB 监视器类型已更新为支持 IPv6 地址:

    • USER

    • SMTP

    • NNTP

    • LDAP

    • SNMP

    • POP3

    • 扩展

    • StoreFront

    • 应用程序

    • 柠檬酸盐扩展

    如果要创建使用这些 LB 监视器类型之一的新自定义脚本,请确保在自定义脚本中包含 IPv6 支持。有关您必须在 IPv6 支持的自定义脚本中进行的更改,请参阅 /netscaler/monitors/ 中的关联示例脚本。

要跟踪服务器的状态,监视器会向配置的调度程序发送 HTTP POST 请求。此 POST 请求包含服务器的 IP 地址和端口以及必须执行的脚本。调度程序将脚本作为子进程执行,并使用用户定义的参数(如果有)。然后,脚本将探测发送到服务器。脚本将探测的状态(响应代码)发送给调度程序。调度程序将响应代码转换为 HTTP 响应并将其发送到监视器。根据 HTTP 响应,监视器将服务标记为向上或向下。

当用户监视探测失败时,设备会将错误消息记录到 /var/nslog/nsumond.log 文件中。下表列出了用户监视器和可能的失败原因。

用户监视器类型 探测失败原因
SMTP 监视器无法建立到服务器的连接。
NNTP 监视器无法建立到服务器的连接。
  缺少或无效的脚本参数,其中可能包含无效数量的参数或参数格式。
  监视器无法找到 NNTP 组。
LDAP 监视器无法建立到服务器的连接。
  缺少或无效的脚本参数,其中可能包含无效数量的参数或参数格式。
  监视器无法绑定到 LDAP 服务器。
  监视器无法在 LDAP 服务器中找到目标实体的条目。
FTP 与服务器的连接超时。
  缺少或无效的脚本参数,其中可能包含无效数量的参数或参数格式。
  登录失败。
  监视器无法在服务器上找到该文件。
POP3 监视器无法建立到数据库的连接。
  缺少或无效的脚本参数,其中可能包含无效数量的参数或参数格式。
  登录失败。
POP3 监视器无法建立到数据库的连接。
  缺少或无效的脚本参数,其中可能包含无效数量的参数或参数格式。
  登录失败。
  SQL 查询的准备失败。
  SQL 查询的执行失败。
SNMP 监视器无法建立到数据库的连接。
  缺少或无效的脚本参数,其中可能包含无效数量的参数或参数格式。
  登录失败。
  监视器无法创建 SNMP 会话。
  监视器无法找到对象标识符。
  监视器阈值设置大于或等于监视器的实际阈值。
RDP (Windows Terminal Server) 缺少或无效的脚本参数,其中可能包含无效数量的参数或参数格式。
  监视器无法创建套接字。
  版本不匹配。
  监视器无法确认连接。

您可以使用以下命令从 CLI 查看日志文件,这些命令打开 BSD 外壳,在屏幕上显示日志文件,然后关闭 BSD 外壳并返回到 CLI:

> shell
root@ns# cat /var/nslog/nsumond.log
root@ns# exit
>

用户监视器还具有超时值和探测故障的重试计数。您可以将用户监视器与非用户监视器一起使用。在高 CPU 利用率期间,非用户监视器可以更快地检测服务器故障。

如果用户监视器探测器在高 CPU 使用率期间超时,服务状态保持不变。

注意:

对于可编写脚本的监视器,响应超时必须配置为等于预期超时 + 1 秒的值。

例如,如果您预计超时为 4 秒,请将响应超时配置为 5 秒。

示例命令:

add lb monitor <name> USER –scriptname <script-name> -resptimeout 5 seconds

了解用户监视器