可创建服务监控器以便为特定类型的网络流量定义运行状况检查参数。将服务监控器与池关联后,将根据服务监控器参数对池成员进行监控。

支持以下类型的监控器:ICMP、TCP、UDP、HTTP、HTTPS、DNS、MSSQL 和 LDAP。

过程

  1. 登录到 vSphere Web Client
  2. 单击网络和安全 (Networking & Security) > NSX Edge (NSX Edges)
  3. 双击一个 NSX Edge
  4. 单击管理 (Manage) > 负载平衡器 (Load Balancer) > 服务监控 (Service Monitoring)
  5. 单击添加 (Add)
  6. 输入服务监控器的名称 (Name)
    “时间间隔”、“超时”和“重试次数最大值”是所有类型的运行状况检查的通用参数。
  7. 输入测试服务器的时间间隔 (Interval)(秒)。
    时间间隔是监控器将请求发送到后端服务器的时间段(秒)。
  8. 输入超时 (Timeout)值。在每个运行状况检查中,超时值是为接收服务器响应而留出的最长时间(秒)。
  9. 输入重试次数最大值 (Max Retries)。该值是将服务器声明为 DOWN 之前测试服务器的次数。

    例如,如果时间间隔 (Interval)设置为 5 秒,超时 (Timeout)设置为 15 秒,重试次数最大值 (Max Retries)设置为 3,则表示 NSX 负载平衡器每 5 秒探查一次后端服务器。在每次探测中,如果在 15 秒内收到来自服务器的预期响应,则运行状况检查结果为 OK。如果没有收到响应,则结果为 CRITICAL。如果最近三次的运行状况检查结果均为 DOWN,则服务器将被标记为 DOWN。

  10. 类型 (Type)下拉菜单中,选择如何将运行状况检查请求发送到服务器。支持的监控器类型包括 ICMP、TCP、UDP、HTTP、HTTPS、DNS、MSSQL 和 LDAP。系统中嵌入了三个预定义的监控器:default_tcp_monitor、default_http_monitor 和 default_https_monitor。
  11. 如果选择 ICMP 作为监控器类型,则没有适用的任何其他参数。请将其他参数保留为空。
  12. 如果选择 TCP 作为监控器类型,则可以使用三个其他参数:“发送”、“接收”和“扩展”。
    1. 发送 (Send)(可选)- 在建立连接后发送到后端服务器的字符串。 允许的最大字符串长度为 256 个字符。
    2. 接收 (Receive)(可选)- 输入要匹配的字符串。此字符串可以是响应的标头或正文。当接收的字符串与此定义匹配时,会将服务器视为 UP。
    3. 扩展 (Extension) - 在“扩展”部分中以“键=值”对形式输入高级监控器参数。
      示例扩展 warning=10 表示,如果服务器未在 10 秒内响应,则将状态设置为警告。

      所有扩展项都必须使用回车符分隔。

      表 1. TCP 协议的扩展
      监控扩展 说明
      escape 可以在发送或退出字符串中使用 \n、\r、\t 或 \。必须在发送或退出选项之前使用。默认:发送选项中不添加任何内容,\r\n添加到退出末尾。
      all 所有预期字符串都需要在服务器响应中出现。默认为 any。
      quit=STRING 发送到服务器的字符串,启动完全关闭连接。
      refuse=ok|warn|crit 接受以下状态的 TCP 拒绝:ok、warn 或 crit,默认为 crit。
      mismatch=ok|warn|crit 接受以下状态的预期字符串不匹配:ok、warn 或 crit。默认为 warn。
      jail 从 TCP 套接字隐藏输出。
      maxbytes=INTEGER 接收的字节数比指定的字节数多时关闭连接。
      delay=INTEGER 发送字符串与轮询响应之间所等待的秒数。
      certificate=INTEGER[,INTEGER] 证书必须有效的最短天数。第一个值是警告天数,第二个值用于严重级别(如果未指定,则为 0)。
      warning=DOUBLE 响应时间(秒):在此范围内不反应则发出警告。
      critical=DOUBLE 响应时间(秒):在此范围内不反应则变成严重状态。
  13. 如果选择 HTTPHTTPS 作为监控器类型,请执行以下步骤:
    1. 预期 (Expected)(可选)- 在“预期”部分中输入监控器要求与 HTTP 响应状态行匹配的字符串。这是一个逗号分隔的列表。
      例如,200,301,302,401。
    2. 方法 (Method)(可选)- 从下拉菜单中选择检测服务器状态的方法:GET、OPTIONS 或 POST。
    3. URL(可选)- 输入要获取或发布的 URL(默认值为“/”)。
    4. 如果选择 POST 方法,请在加粗 (Bold)部分中输入要发送的数据。
    5. 接收 (Receive)部分中输入与响应内容匹配的字符串。此字符串可以是响应的标头或正文。
      如果“预期”部分中的字符串不匹配,则监控器不会尝试与“接收”内容匹配。

      JSON 格式示例:验证响应包含 "{"Healthy":true}": receive={\"Healthy\":true}

    6. 扩展 (Extension) - 在“扩展”部分中以“键=值”对形式输入高级监控器参数。
      示例扩展 warning=10 表示,如果服务器未在 10 秒内响应,则将状态设置为警告。
      所有扩展项都应使用回车符分隔。
      注: 对于 eregiregexereg,如果字符串包含 { } 和 ",则必须在解析 JSON 格式字符串之前添加 \ 字符。JSON 格式示例:验证响应包含 "{"Healthy":true}": eregi="\{\"Healthy\":true\}"。
      表 2. HTTP/HTTPS 协议的扩展
      监控扩展 说明
      no-body 不等待文档正文:停止读取标头后的内容。注意,这仍然是 HTTP GET 或 POST,而不是 HEAD。
      ssl-version=3

      使用 sslv3 强制实施 SSL 握手。

      默认情况下,将在运行状况检查选项中禁用 sslv3 和 tlsv1。

      ssl-version=10 使用 tls 1.0 强制实施 SSL 握手。
      ssl-version=11 使用 tls 1.1 强制实施 SSL 握手。
      ssl-version=12 使用 tls 1.2 强制实施 SSL 握手。
      max-age=SECONDS 如果文档存在时间超过 SECONDS,则发出警告。该数字还可以采用 10m(表示分钟)、10h(表示小时)或 10d(表示天数)的形式。
      content-type=STRING 指定 POST 调用中的 Content-Type 标头介质类型。
      linespan 允许正则表达式跨新行(前面必须加上 -r 或 -R)。
      regex=STRING 或 ereg=STRING 在页面中搜索正则表达式 STRING。
      eregi=STRING 在页面中搜索不区分大小写的正则表达式 STRING。

      例如:

      • 验证响应包含 OK1 或 OK2: eregi="(OK1|OK2)"
      • 验证响应包含 "{"Healthy":true}": eregi="{\"Healthy\":true}"
      invert-regex 找到则返回 CRITICAL,否则返回 OK。
      proxy-authorization=AUTH_PAIR 代理服务器上完成基本身份验证所需的用户名和密码。
      useragent=STRING 要在 HTTP 标头中作为 User Agent 发送的字符串。
      header=STRING 要在 HTTP 标头中发送的任何其他标记。对其他标头使用多次。

      例如:

      header="Host: app1.xyz.com

      onredirect=ok|warning|critical|follow|sticky|stickyport 如何处理重定向后的页面。sticky 类似于 follow 但遵循指定的 IP 地址。stickyport 还确保端口保持不变。
      pagesize=INTEGER:INTEGER 所需页面大小最小值(字节):所需页面大小最大值(字节)。
      warning=DOUBLE 响应时间(秒):在此范围内不反应则发出警告。
      critical=DOUBLE 响应时间(秒):在此范围内不反应则变成严重状态。
      expect = STRING

      以逗号分隔的字符串列表,需要在服务器响应的第一(状态)行中使用其中的至少一个字符串(默认值:HTTP/1)。如果指定,则跳过所有其他状态行逻辑(例如:3xx、4xx、5xx 处理)

      string = STRING 需要在内容中使用的字符串。
      url = PATH 要获取或发布的 URL(默认值:/)。
      post = STRING 要对 http POST 数据编码的 URL。
      method = STRING 设置 HTTP 方法(例如,HEAD、OPTIONS、TRACE、PUT、DELETE)。
      timeout = INTEGER 在连接超时之前等待的秒数(默认值为 10 秒)。
      header=Host:host_name -H host_name --sni

      host_name 是主机的有效主机名或 FQDN。

      为每个虚拟主机创建单独的服务监控器,并在每个服务监控器中添加服务器名称指示 (Server Name Indication, SNI) 扩展。

      表 3. HTTPS 协议的扩展
      监控扩展 说明
      certificate=INTEGER 证书必须有效的最短天数。端口默认为 443。如果使用该选项,则不检查 URL。
      authorization=AUTH_PAIR 使用基本身份验证的站点上的用户名和密码。
      ciphers='ECDHE-RSA-AES256-GCM-SHA384' 显示在 HTTPS 运行状况检查中使用的密码。
  14. 如果您选择 UDP 作为监控器类型,请执行以下步骤:
    1. 发送 (Send)(必需):输入要在建立连接后发送到后端服务器的字符串。
    2. 接收 (Receive)(必需):输入预期从后端服务器接收的字符串。只有在收到的字符串与该定义匹配时,才会将服务器视为 UP。
    注:

    UDP 监控器不支持扩展。

  15. 如果您选择 DNS 作为监控器类型,请执行以下步骤:
    1. 发送 (Send)(必需):输入要在建立连接后发送到后端服务器的字符串。
    2. 接收 (Receive):输入预期从后端服务器接收的字符串。仅当接收的字符串与此定义匹配时,才会将服务器视为正在运行。
    3. 扩展 (Extension) - 在“扩展”部分中以“键=值”对形式输入高级监控器参数。
      示例扩展 warning=10 表示,如果服务器未在 10 秒内响应,则将状态设置为警告。 此监控器类型仅支持 TCP 协议。

      所有扩展项都必须使用回车符分隔。

    表 4. DNS 协议的扩展
    监控扩展 说明
    querytype=TYPE

    可选:DNS 记录查询类型,其中 TYPE =A、AAAA、SRV、TXT、MX、CNAME、ANY

    • A=IPv4 主机地址
    • AAAA=IPv6 主机地址
    • SRV=服务定位符
    • TXT=文本记录
    • MX=针对域记录的邮件交换
    • CNAME=别名记录的规范名称

    默认的查询类型为 A

    expect-authority

    可选:应为要作为查找的权威服务器的 DNS 服务器。

    accept-cname

    可选:接受将 cname 响应作为查询的有效结果。此扩展与 querytype=CNAME 一起使用。

    默认情况下,将忽略结果中的 cname 响应部分。

    warning=seconds

    可选:如果经过的时间超出指定的值,则返回一条警告消息。

    默认设置为关闭。

    critical=seconds 可选:如果经过的时间超出指定的值,则返回一条严重警示消息。

    默认设置为关闭。

  16. 如果您选择 MSSQL 作为监控器类型,请执行以下步骤:
    1. 发送 (Send):输入建立连接后要在后端服务器上运行的字符串。
    2. 接收 (Receive):输入预期从后端服务器接收的字符串。仅当接收的字符串与此定义匹配时,才会将服务器视为正在运行。
    3. 用户名 (User Name)密码 (Password)确认密码 (Confirm password)(必需):输入所需的用户名和密码,然后确认输入的密码。由于监控器与池关联,您必须使用在此处设置的相同用户名和密码设置池中的 MSSQL Server。
    4. 扩展 (Extension) - 在“扩展”部分中以“键=值”对形式输入高级监控器参数。
      示例扩展 warning=10 表示,如果服务器未在 10 秒内响应,则将状态设置为警告。

      所有扩展项都必须使用回车符分隔。

    表 5. MSSQL 协议的扩展
    监控扩展 说明
    database=DBNAME

    可选:要连接到的数据库名称。

    在使用参数 Sendstoredproc 时,此扩展为必需项。
    storedproc=STOREPROC

    可选:要针对 MSSQL Server 运行的存储过程。

  17. 如果您选择 LDAP 作为监控器类型,请执行以下步骤:
    1. 密码 (Password)确认密码 (Confirm password)(可选):输入所需的密码,然后确认输入的密码。
    2. 扩展 (Extension) - 在“扩展”部分中以“键=值”对形式输入高级监控器参数。
      示例扩展 warning=10 表示,如果服务器未在 10 秒内响应,则将状态设置为警告。

      所有扩展项都必须使用回车符分隔。

    表 6. LDAP 协议的扩展
    监控扩展 说明
    attr='ATTR'

    可选:要搜索的 LDAP 属性(默认值:'(objectclass=*)'。

    您必须将 attrcrit-entires 范围一起使用。

    base='cn=admin,dc=example,dc=com'

    必需:LDAP 库(例如,ou=my unit, o=my org, c=at.

    ver2 或 ver3

    可选:

    • ver2:使用 LDAP 协议版本 2。
    • ver3:使用 LDAP 协议版本 3。

    默认协议版本是 ver2

    bind=BINDDN

    可选:LDAP 绑定标识名 (DN)(如果需要)。

    有关详细信息,请参阅https://www.ldap.com/the-ldap-bind-operation

    crit=DOUBLE 可选:响应时间(秒),在此范围内不反应则变成严重状态。
    crit-entries=low:high 可选:找到的条目数,达到此数量时将变成严重状态。

    如果找到的条目数超出范围 [low, high],则运行状况检查结果为“严重”。

  18. 单击确定 (OK)

后续步骤

将服务监控器与池关联。