このセクションでは、外部健全性モニターの問題をトラブルシューティングする方法について説明します。

NSX Advanced Load Balancer の外部健全性モニターはスクリプトを使用して、高度にカスタマイズされたきめ細かい健全性チェックを提供します。スクリプトは Linux シェル、Python、Perl のいずれかであり、wgetnetcatcurlsnmpget などを実行するために使用できます。

トラブルシューティングの手順

NSX Advanced Load Balancer のディレクトリ構造は、NSX Advanced Load Balancer ユーザー インターフェイスでは公開されません。これは、管理シェルまたはコンソール アクセス経由でのみ使用できます。外部健全性モニター スクリプトのアクセス権は制限されているため、NSX Advanced Load Balancer システムの通常の機能には影響しません。外部健全性モニター スクリプトでは、CPU、メモリ、ディスク、およびその他のリソースが制限されます。そのため、外部健全性モニターのタイムアウトを緩和することをお勧めします。

NSX Advanced Load Balancer CLI の使用

外部モニターを構築する場合、コマンドの正常な実行を手動でテストすることが一般的です。SE からコマンドを実行するには、適切なネームスペースまたはテナントに切り替える必要があります。本番環境の外部モニターは、適切なテナントを正しく使用します。

NSX Advanced Load Balancer CLI を使用して NSX Advanced Load Balancer SE に接続するには、『VMware NSX Advanced Load Balancer 管理ガイド』の「スーパー ユーザーの SSH アクセス」を参照してください。

スクリプト パラメータの詳細については、「外部健全性モニター」を参照してください。

外部健全性モニター スクリプトが stdout コマンドの出力を提供する場合、健全性モニターが正常に実行されたことを示します。このスクリプトが出力を提供しない場合、失敗として扱われます。

トラブルシューティングの例

出力が stderr ではなく stdout に書き込まれることを確認します。

たとえば、次の使用方法が失敗します。

netcat -v -n -z -w 3 $IP $PORT | grep "open" 2>&1 > /dev/null

netcat コマンドの出力が stderr に書き込まれます。grep コマンドは stdout で動作します。そのため、出力データは stderr で使用できます。

これを確認するには、次を実行します。

root@avi-se-iihyz:/run/hmuser# netcat -v -n -z -w 3 $IP $PORT | grep "open" 2>&1 > /dev/null
(UNKNOWN) [10.10.30.34] 80 (http) open ? still shows up.

上記を次のように変更すると、問題が解決されます。

netcat -v -n -z -w 3 $IP $PORT 2>&1 | grep "open"

Show コマンドの使用

show pool <pool-name> server hmonstat コマンドは、失敗コード、要求、および応答文字列に関する情報を提供します。

NSX Advanced Load Balancer ユーザー インターフェイスの使用

NSX Advanced Load Balancer ユーザー インターフェイスにログインし、[アプリケーション] > [プール] の順に移動して目的のプールを選択し、[イベント] をクリックして健全性モニター ログを確認します。

スクリプトからのエラー コード

外部健全性モニター スクリプトのリターン コードは、失敗の理由コードを選択するために使用されます。有効なエラー コードは次のとおりです。

EINTR、ETIMEDOUT

接続タイムアウト。(スクリプトのタイムアウト時に NSX Advanced Load Balancer インフラストラクチャによって生成されます)

ECONNREFUSED

Connection refused

ECONNRESET

接続がリセットされました

EADDRINUSE/EADDRNOTAVAIL

アドレスを使用できません

EHOSTDOWN/EHOSTUNREACH

ホストに到達できません

ENETDOWN/ENETUNREACH

ネットワークに到達できません

ENOBUFS/ENOMEM

リソースが不足しています。(これは、リソースの割り当てに失敗した場合に NSX Advanced Load Balancer インフラストラクチャによって生成される可能性があります)

その他すべてのエラーは、他のエラーとして扱われます。

注:
  • スクリプトはエラーを $HM_NAME.$IP.$PORT.out に書き込むことができます。この出力は、デバッグを支援するために上記のコマンドの出力で使用できます。これは、外部健全性モニターのデバッグが有効になっている場合にのみ機能します。

  • スクリプトを実行してスクリプトのトラブルシューティングを行うために、スーパー ユーザーは root 権限を使用してサービス エンジン コンソールにログインし、sudo - hmuser として、/run/hmuser ディレクトリに保存されているスクリプトを実行できます。

  • トラブルシューティングのためにサービス エンジンのスクリプトを変更することはできますが、この変更は一時的なものです。サービス エンジンが再起動するか、プール/健全性モニターを変更すると、変更は失われます。健全性モニターの構成を変更する正しい方法は、NSX Advanced Load Balancer ユーザー インターフェイス/CLI/API から行うことです。

パケット キャプチャ

外部健全性モニター パケットは、[操作] > [パケット キャプチャ] で使用可能なオプションを使用してキャプチャされません。NSX Advanced Load Balancer Controller のシェル プロンプトから、フィルタ オプションを指定して tcpdump コマンドを使用します。

tcpdump -i <avi_ethX>”

上記のコマンドの出力には、外部健全性モニターのトラフィックが表示されます。

NSX Advanced Load Balancer Controller への SSH キーベースのログインの詳細については、『VMware NSX Advanced Load Balancer 管理ガイド』の「管理者ユーザーのパスワードなしの SSH ベースのログイン」を参照してください。

SNAT IP および外部健全性モニター

外部健全性モニターの SNAT はサポートされていません。そのため、SNAT IP アドレスと外部 HM を一緒に構成することはできません。

仮想サービスに SNAT IP アドレスが構成され、同じ仮想サービスの外部健全性モニターも構成されている場合、組み込みの健全性モニターは SNAT を受け入れ、SNAT IP アドレスを介して TCP 接続を開始します。ただし、外部健全性モニターが使用されている場合、SNAT IP アドレスは考慮されません。これは、想定どおりの動作です。