ネットワーク トラフィックの特定のタイプの健全性チェック パラメータを定義するには、サービス モニターを作成します。サービス モニターとプールを関連付けると、サービス モニターのパラメータに従ってプール メンバーが監視されます。

サポートされているモニター タイプは、ICMP、TCP、UDP、HTTP、HTTPS、DNS、MSSQL、LDAP です。

手順

  1. vSphere Web Client にログインします。
  2. [ネットワークとセキュリティ (Networking & Security)] > [NSX Edge] の順にクリックします。
  3. NSX Edge をダブルクリックします。
  4. [管理 (Manage)] > [ロード バランサ (Load Balancer)] > [サービス モニタリング (Service Monitoring)] の順にクリックします。
  5. [追加 (Add)] をクリックします。
  6. サービス モニターの [名前 (Name)] を入力します。
    [間隔]、[タイムアウト]、[最大試行回数] は、すべてのタイプの健全性チェックで共通のパラメータです。
  7. サーバをテストする [間隔 (Interval)] を秒単位で入力します。
    この間隔(秒単位)は、モニターがバックエンド サーバに要求を送信する期間となります。
  8. [タイムアウト (Timeout)] 値を入力します。それぞれの健全性チェックで、サーバからの応答を受信できるのは、このタイムアウトの値の時間(秒単位)以内となります。
  9. [最大試行回数 (Max Retries)] を入力します。この値は、サーバが切断された判断する前にサーバを検証する回数です。

    たとえば、[間隔 (Interval)] を 5 秒、[タイムアウト (Timeout)] を 15 秒に設定し、[最大試行回数 (Max Retries)] を 3 回にすると、NSX ロード バランサは 5 秒ごとにバックエンド サーバを検証します。それぞれの検証で、15 秒以内に予期した応答がサーバから返された場合、健全性チェックの結果は [OK] になります。そうでない場合、結果は [重大] になります。最近実行した 3 回の健全性チェックの結果がすべて [切断] の場合、そのサーバは [切断] とマークされます。

  10. [タイプ (Type)] ドロップダウン メニューから、サーバに健全性チェック要求を送信する方法を選択します。サポートされているモニター タイプは、ICMP、TCP、UDP、HTTP、HTTPS、DNS、MSSQL、LDAP です。事前定義された 3 つのモニターである default_tcp_monitor、default_http_monitor、および default_https_monitor が、システムに組み込まれています。
  11. モニター タイプとして [ICMP] を選択する場合、他のパラメータは適用されません。他のパラメータは空のままにします。
  12. モニターのタイプに [TCP] を選択した場合は、[送信]、[受信]、[エクステンション] の 3 つのパラメータを追加で設定できます。
    1. [送信 (Send)](オプション):接続の確立後にバックエンド サーバに送信される文字列です。 有効な文字列の長さは最大 256 文字です。
    2. [受信 (Receive)](オプション):一致対させる文字列を入力します。この文字列は、応答のヘッダであるか、または本文内にあります。受信した文字列がこの定義と一致する場合、サーバが稼動状態と見なされます。
    3. [エクステンション (Extension)]:詳細なモニター パラメータを key=value ペアとして [エクステンション] セクションに入力します。
      たとえば、エクステンションを warning=10 と指定すると、サーバが 10 秒以内に応答しない場合に、ステータスが警告に設定されます。

      すべてのエクステンション項目を、キャリッジ リターン文字で区切る必要があります。

      表 1. TCP プロトコルのエクステンション
      監視の拡張機能 説明
      escape send 文字列または quit 文字列で、\n、\r、\t、または \ を使用できます。send オプションまたは quit オプションの前に指定する必要があります。デフォルト:send には何も追加されません。quit の最後に \r\n が追加されます。
      all すべての expect 文字列がサーバ応答に含まれている必要があります。デフォルトは any です。
      quit=STRING 接続の正常な終了を開始するために、サーバに送信する文字列。
      refuse=ok|warn|crit OK、警告、重大ステータスで TCP 拒否を受け入れます。デフォルトは crit です。
      mismatch=ok|warn|crit OK、警告、重大ステータスで、想定される文字列の不一致を受け入れます。デフォルトは warn です。
      jail TCP ソケットからの出力を非表示にします。
      maxbytes=INTEGER 指定数より多いバイト数を受信すると、接続を閉じます。
      delay=INTEGER 文字列の送信から応答のポーリングまでの待ち時間(秒数)。
      certificate=INTEGER[,INTEGER] 証明書の最小有効期間(日数)。最初の値は警告ステータスまでの日数、2 番目の値は重大ステータスまでの日数(指定されない場合は 0)。
      warning=DOUBLE 警告ステータスになる応答時間(秒)
      critical=DOUBLE 重大ステータスになる応答時間(秒)
  13. モニターのタイプに [HTTP] または [HTTPS] を選択した場合は、次の手順を実行します。
    1. [期待値(期待される文字列) (Expected)](オプション):[期待値] セクションの HTTP 応答のステータス行で、モニターと一致する文字列を入力します。これはコンマ区切りのリストです。
      たとえば、200,301,302,401 と指定します。
    2. [方法 (Method)](オプション):サーバのステータスを検出する方法をドロップダウン メニュー([GET]、[OPTIONS]、または [POST])から選択します。
    3. [URL](オプション):GET または POST を実行する URL を入力します(デフォルトは「/」)。
    4. POST メソッドを選択した場合は、[ボールド (Bold)] セクションに送信されるデータを入力します。
    5. 応答内容で一致する文字列を、[受信 (Receive)] セクションに入力します。この文字列は、応答のヘッダであるか、または本文内にあります。
      [期待値] セクションの文字列が一致しない場合、モニターは [受信] の内容との一致を試行しません。

      JSON 形式の例:検証応答に "{"Healthy":true}": receive={\"Healthy\":true} が含まれています。

    6. [エクステンション (Extension)]:詳細なモニター パラメータを key=value ペアとして [エクステンション] セクションに入力します。
      たとえば、エクステンションを warning=10 と指定すると、サーバが 10 秒以内に応答しない場合に、ステータスが警告に設定されます。
      すべてのエクステンション項目を、キャリッジ リターン文字で区切る必要があります。
      注: eregiregex または ereg で、文字列に { } と “ が含まれている場合は、JSON 形式の文字列を解析する前に \ 文字を追加する必要があります。JSON 形式の例:検証応答に "{"Healthy":true}": eregi="\{\"Healthy\":true\}" が含まれています。
      表 2. HTTP/HTTPS プロトコルのエクステンション
      監視の拡張機能 説明
      no-body ドキュメントの本文を待たない: ヘッダの読み込み後に処理を停止します。それでも、HEAD ではなく、HTTP GET や POST を実行することに注意してください。
      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 正規表現の文字列をページで検索します。
      eregi=STRING 正規表現の文字列をページで検索します(大文字小文字は区別されません)。

      次はその例です。

      • 検証応答には、"OK1" または "OK2": eregi="(OK1|OK2)" が含まれています。
      • 検証応答に "{"Healthy":true}": eregi="{\"Healthy\":true}" が含まれています。
      invert-regex 見つかれば CRITICAL を返し、見つからなければ OK を返します。
      proxy-authorization=AUTH_PAIR 基本認証を使用しているプロキシ サーバ上のユーザー名:パスワード。
      useragent=STRING User Agentとして、HTTP ヘッダで送信される文字列。
      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

      コンマ区切りの文字列のリストで、少なくともそのうちの 1 つがサーバ応答の最初の(ステータス)行に来ることを想定します(デフォルトは HTTP/1 です。指定した場合、その他すべてのステータス行のロジック(3xx、4xx、5xx 処理など)はスキップされます)

      string = STRING コンテンツに想定される文字列。
      url = PATH GET または POST を実行する 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 です。

      仮想ホストごとに個別のサービス モニターを作成し、各サービス モニターにサーバ名表示 (SNI) 拡張機能を追加します。

      表 3. HTTPS プロトコルのエクステンション
      監視の拡張機能 説明
      certificate=INTEGER 証明書の最小有効期間(日数)。ポート番号のデフォルトは 443 です。このオプションを使用すると、URL はチェックされません。
      authorization=AUTH_PAIR 基本認証を使用しているサイト上のユーザー名:パスワード。
      ciphers=’ECDHE-RSA-AES256-GCM-SHA384’ HTTPS 健全性チェックで使用される暗号を表示します。
  14. モニター タイプとして [UDP] を選択する場合は、次の手順を実行します。
    1. [送信 (Send)](必須):接続が確立された後でバックエンド サーバに送信する文字列を入力します。
    2. [受信 (Receive)](必須):バックエンド サーバから受信する文字列を入力します。受信した文字列がこの定義と一致する場合にのみ、サーバが稼動状態と見なされます。
    注:

    UDP モニターではエクステンションがサポートされません。

  15. モニター タイプとして [DNS] を選択する場合は、次の手順を実行します。
    1. [送信 (Send)](必須):接続が確立された後でバックエンド サーバに送信する文字列を入力します。
    2. [受信 (Receive)]:バックエンド サーバから受信する文字列を入力します。受信した文字列がこの定義と一致する場合にのみ、サーバが稼動状態と見なされます。
    3. [エクステンション (Extension)]:詳細なモニター パラメータを key=value ペアとして [エクステンション] セクションに入力します。
      たとえば、エクステンションを 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 サーバを設定する必要があります。
    4. [エクステンション (Extension)]:詳細なモニター パラメータを key=value ペアとして [エクステンション] セクションに入力します。
      たとえば、エクステンションを warning=10 と指定すると、サーバが 10 秒以内に応答しない場合に、ステータスが警告に設定されます。

      すべてのエクステンション項目を、キャリッジ リターン文字で区切る必要があります。

    表 5. MSSQL プロトコルの拡張機能
    監視の拡張機能 説明
    database=DBNAME

    オプション:接続先のデータベース名。

    Send またはstoredproc パラメータを使用する場合、このエクステンションは必須です。
    storedproc=STOREPROC

    オプション:MSSQL サーバに実行されるストアド プロシージャ

  17. モニター タイプとして [LDAP] を選択する場合は、次の手順を実行します。
    1. [パスワード (Password)][パスワードの確認 (Confirm password)](オプション):必要なパスワードを入力し、確認のため、パスワードを再度入力します。
    2. [エクステンション (Extension)]:詳細なモニター パラメータを key=value ペアとして [エクステンション] セクションに入力します。
      たとえば、エクステンションを warning=10 と指定すると、サーバが 10 秒以内に応答しない場合に、ステータスが警告に設定されます。

      すべてのエクステンション項目を、キャリッジ リターン文字で区切る必要があります。

    表 6. LDAP プロトコルの拡張機能
    監視の拡張機能 説明
    attr=’ATTR’

    オプション:検索する LDAP 属性 (default: ‘(objectclass=*)’

    crit-entires 範囲と attr を使用する必要があります。

    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 オプション:ステータスが重大になってしまうエントリ数。

    見つかったエントリ数が範囲([低]、[高])外の場合、健全性チェックのステータスが重大になります。

  18. [OK] をクリックします。

次のタスク

サービス モニターとプールを関連付けます。