NSX for vSphere Edge ロード バランサのトラブルシューティング
search cancel

NSX for vSphere Edge ロード バランサのトラブルシューティング

book

Article ID: 341263

calendar_today

Updated On:

Products

VMware NSX

Issue/Introduction

この記事には、NSX for vSphere Edge ロード バランサ全般の情報とトラブルシューティング、および構成上の一般的な問題の特定に関する情報が記載されています。

Edge のトラフィックが分散されない

NSX Edge ロード バランサ (LB) を使用すると、ネットワーク トラフィックが特定の送信先まで複数のパスをたどれるようになります。受信サービス リクエストは、負荷配分がユーザーにとって透過的になるように、複数のサーバ間で均等に配分されます。このように、ロード バランシングは、最適なリソース使用率の実現、スループットの最大化、応答時間の最小化、過負荷の回避に役立ちます。NSX Edge は、レイヤー 7 までのロード バランシングを提供します。
 
ロード バランシングでは、外部(またはパブリック)IP アドレスを内部サーバのセットにマッピングします。ロード バランサーは外部 IP アドレス 上の TCP、HTTP、または HTTPS リクエストを受け入れ、どの内部サーバを使用するか決定します。ポート 8090 は TCP のデフォルトのリスニング ポート、ポート 80 は HTTP のデフォルトのポート、ポート 443 は HTTPS のデフォルトのポートです。NSX ロード バランサを構成する前に、NSX Edge インスタンスが動作している必要があります。
 
このトラブルシューティング記事で使用されるツール:

REST クライアント:Restful API クライアントの使用には、ロード バランサ構成のフェッチ、統計の収集、NSX Manager 変数およびログ レベルの変更が含まれます
 



Symptoms:

 


 

 

NSX for vSphere Edge ロード バランサ (LB) を使用すると、次のいずれかの症状が発生します。
  • TCP ポート 443 上のロード バランシングが動作しない
  • ロード バランシング プールのメンバーが利用されない
  • Edge のトラフィックが負荷分散されない
  • L7 ロード バランサー エンジンが停止する
  • 健全性モニター エンジンが停止する
  • ロード バランサー プール メンバー モニター ステータスが次のようになる: WARNING/CRITICAL
  • ロード バランサー プール メンバーが INACTIVE ステータスである
  • L7 スティッキー テーブルがスタンバイ Edge まで同期されない



Environment

VMware NSX for vSphere 6.2.x
VMware NSX for vSphere 6.0.x
VMware NSX for vSphere 6.1.x

Resolution

問題の分類

発生している問題の種類を確認し、特定します。
  • 構成の問題:
    LB 構成操作が NSX ユーザー インターフェイスまたは Rest API 呼び出しによって拒否された場合、これは構成の問題として分類されます。
  • データ プレーンの問題
    LB 構成が NSX manager で受け入れられても、クライアント、Edge LB、サーバの間で接続またはパフォーマンスの問題がある場合、これはデータ プレーンの問題として分類されます。データ プレーンの問題には以下も含まれます。LB ランタイム CLI の問題、LB SystemEvent の問題
 

基本的なトラブルシューティング

重要:以下の各トラブルシューティング手順がお使いの環境に当てはまることを確認してください。それぞれの手順で、考えられる原因を排除し、必要に応じて是正措置を取るための指示あるいはドキュメントへのリンクが提供されます。手順は、問題を隔離し、適切な解決方法を特定するために最適な順番で並べられています。いずれの手順も省略しないでください。

  1. vSphere Web Client で LB 構成ステータスを確認します。

    1. [ネットワークおよびセキュリティ] > [NSX Edge] をクリックします。
    2. [NSX Edge] をダブルクリックします。
    3. [管理] をクリックします。
    4. [ロード バランサ] タブをクリックします。[ロード バランサーのステータス] と、構成されているログ レベルを確認します。



  2. ロード バランサ サービスをトラブルシューティングする前に、Edge で次のコマンドを実行し、サービスが起動および稼動していることを確認します。

    show service loadbalancer

    出力例については、「追加情報」セクションを参照してください。

    : 環境で実行可能な場合、SSH を使用するとこれらのコマンドの出力の確認およびキャプチャがやりやすくなります。 

    show service loadbalancer コマンドのリスト

    以下のコマンドでは、ロード バランサのコンポーネントやサービスの状態に関するさらに詳しい情報が得られます。

    • 最新のエラー情報を表示します。
      show service loadbalancer error

    • ネットワーク健全性モニター情報を表示します。
      show service loadbalancer monitor

    • プール情報を表示します。
      show service loadbalancer pool
    • 現在のセッション情報を表示します。
      show service loadbalancer session

    • スティッキー テーブル情報を表示します。
      show service loadbalancer table
    • 仮想サーバ情報を表示します。
      show service loadbalancer virtual

  3. 現在のリリースのリリース ノートを確認し、解決されている問題のリストを確認します。NSX for vSphere リリース ノート関連のドキュメントについては、『VMware NSX for vSphere Documentation』を参照してください。
 

構成上の問題のトラブルシューティング

  1. LB 構成前に、次の REST API 呼び出しを使用して、NSX Manager の Edge ログ レベルを INFO から TRACE に変更します。

    URL: https://<NSX_Manager_IP>/api/1.0/services/debug/loglevel/com.vmware.vshield.edge?level=TRACE
    メソッド: POST

  2. vSphere Client で、または Restful API を使用して LB を構成します。
  3. LB 構成時に発生したエラーをコピーするか、スクリーンショットを取ります。
  4. LB 構成後、次の REST API 呼び出しを使用して、NSX Manager の Edge ログ レベルを INFO に戻します。

    URL: https://<<NSX_Manager_IP>>/api/1.0/services/debug/loglevel/com.vmware.vshield.edge?level=INFO
    メソッド: POST

  5. LB 構成を LB 構成プロパティのスクリーンショットとともに vSphere Web Client に記録します。

    :LB を Restful API で構成する場合、要求ペイロード(XML コンテンツ)もキャプチャする必要があります。

  6. NSX Manager ログ ファイルを Syslog サーバからダウンロードし、返されたエラーを分析します。


 

データ プレーンの問題のトラブルシューティング

 
  1. 次の REST API 呼び出しを使用して、NSX Manager の Edge ログ レベルを INFO から TRACE に変更します。

    URL: https://<NSX_Manager_IP>/api/1.0/services/debug/loglevel/com.vmware.vshield.edge?level=TRACE
    メソッド: POST

    :必要に応じて、ログ レベルを DEBUG に変更することもできます。

  2. vSphere Web Client でプール メンバー ステータスを確認します。

    1. [ネットワークおよびセキュリティ] > [NSX Edges] をクリックします。
    2. [NSX Edge] をダブルクリックします。
    3. [管理] をクリックします。
    4. [ロード バランサ] タブをクリックします。
    5. [プール] をクリックして、構成された LB プールのサマリを確認します。
    6. LB プールを選択して、[プール統計の表示] をクリックして、プールの状態が UP であることを確認します。

  3. 次の REST API 呼び出しを使用して、より詳細な LB プール構成統計を NSX Manager から取得できます。

    URL: https://<NSX_Manager_IP>/api/4.0/edges/{edgeId}/loadbalancer/statistics
    メソッド: GET

    :出力のサンプルは、「追加情報」セクションにあります。

  4. LB 統計をコマンド ラインから確認するには、NSX Edge で次のコマンドを実行します。

    特定のプールの LB 統計を表示するには、次のコマンドを実行します。

    show statistics loadbalancer pool

    特定の仮想マシンの LB 統計を表示するには、次のコマンドを実行します。
    show statistics loadbalancer virtual

    特定の TCP プールの LB 統計を表示するには、次のコマンドを実行します。

    show statistics loadbalancer pool tcp_pool

  5. LB 統計の障害の兆候を確認します。

VMware NSX for vSphere 6.2.4の機能強化

show service loadbalancer コマンドが強化され、グローバルに使用されるすべてのアクティブなセッションが NSX Edge ごとに表示されるようになりました。

show service loadbalancer コマンドを実行するときに、L4 ロード バランサ接続統計(アクティブ/非アクティブ/合計/最大接続数)も追加されました。

例:

show service loadbalancer

Loadbalancer Services Status:

L7 Loadbalancer : running
L7 Loadbalancer Status Information:

STATUS PID MAX_MEM_MB MAX_SOCK MAX_CONN MAX_PIPE CUR_CONN CONN_RATE CONN_RATE_LIMIT MAX_CONN_RATE
running 2604 0 2079 1024 0 0 50 43 0

L4 Loadbalancer Statistics:
MAX_CONN ACT_CONN INACT_CONN TOTAL_CONN
65536 245 537 782

Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 10.#.#.30:80 wrr
-> 192.#.#.2:80 Masq 1 24 171
-> 192.#.#.3:80 Masq 1 25 169
TCP 10.#.#.30:443 wrr
-> 192.#.#.2:80 Masq 1 196 1
-> 192.#.#.3:80 Masq 1 0 196



Additional Information

ロード バランサ サービス ステータスの例

ロード バランサ サービス ステータス コマンドの出力:

> show service loadbalancer
-----------------------------------------------------------------------
Loadbalancer Services Status:
 
L7 Loadbalancer : running
Health Monitor : running
-----------------------------------------------------------------------
L7 Loadbalancer Status Information:
STATUS PID MAX_MEM_MB MAX_SOCK MAX_CONN MAX_PIPE CUR_CONN CONN_RATE CONN_RATE_LIMIT MAX_CONN_RATE
running 6718 0 2091 1024 0 0 0 0 0
-----------------------------------------------------------------------
L4 Loadbalancer Statistics:
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 10.X.X.186:1234 wrr
-> 192.X.X.40:1234 Masq 1 0 0
-> 192.X.X.50:1234 Masq 0 0 0
-> 192.X.X.100:1234 Masq 1 0 0
 
 

ロード バランサ健全性モニター統計の例

 
health monitor statistics コマンドの出力:

> show service loadbalancer monitor
-----------------------------------------------------------------------
Loadbalancer HealthMonitor Statistics:
 
POOL MEMBER HEALTH STATUS
tcp-pool example3 default_tcp_monitor:OK
tcp-pool example1 default_tcp_monitor:OK
tcp-pool example2 default_tcp_monitor:OK
http-pool example1 default_http_monitor:OK
http-pool example2 default_http_monitor:OK
 
 

ロード バランサ仮想マシン情報の例

 
load balanced virtual server information コマンドの出力:

> show service loadbalancer virtual http-vip
-----------------------------------------------------------------------
Loadbalancer VirtualServer Statistics:
 
VIRTUAL http-vip
| ADDRESS [#.#.#.#]:80
| SESSION (cur, max, limit, total) = (0, 0, 1024, 0)
| RATE (cur, max, limit) = (0, 0, 100)
| BYTES in = (0), out = (0)
+->POOL http-pool
| LB METHOD leastconn
| LB PROTOCOL L7
| Transparent disabled
| SESSION (cur, max, limit, total) = (0, 0, 103, 0)
| BYTES in = (0), out = (0)
+->POOL MEMBER: http-pool/example1, STATUS: UP
| | STATUS = UP, MONITOR STATUS = default_http_monitor:OK
| | SESSION (cur, max, limit, total) = (0, 0, , 0)
| | BYTES in = (0), out = (0)
+->POOL MEMBER: http-pool/exmple2, STATUS: UP
| | STATUS = UP, MONITOR STATUS = default_http_monitor:OK
| | SESSION (cur, max, limit, total) = (0, 0, , 0)
| | BYTES in = (0), out = (0)
+->POOL MEMBER: http-pool/example3, STATUS: UP
| | STATUS = UP, MONITOR STATUS = default_http_monitor:OK
| | SESSION (cur, max, limit, total) = (0, 0, , 0)
| | BYTES in = (0), out = (0)


ロード バランサ プール構成統計の例

REST API 呼び出しの出力:

URL: https://<NSX_Manager_IP>/api/4.0/edges/{edgeId}/loadbalancer/statistics
メソッド: GET

出力例:

<?xml version="1.0" encoding="UTF8"?>
<loadBalancerStatusAndStats>
<timeStamp>1359722922</timeStamp>
<pool>
<poolId>pool1poolId>
<name>poolhttpname>
<member>
<memberId>member1memberId>
<name>example1</name>
<ipAddress>#.#.#.#</ipAddress>
<status> UP </status>
<bytesIn>70771</bytesIn>
<bytesOut>74619</bytesOut>
<curSessions>0</curSessions>
<maxSessions>1</maxSessions>
<rate>0</rate>
<rateMax>17</rateMax>
<totalSessions>142</totalSessions>
</member>
<member>
<memberId>member2memberId>
<name>example2</name>
<ipAddress>#.#.#.#</ipAddress>
<status> UP </status>
<bytesIn>70823</bytesIn>
<bytesOut>70605</bytesOut>
<curSessions>0</curSessions>
<maxSessions>1</maxSessions>
<rate>0</rate>
<rateMax>17</rateMax>
<totalSessions>141</totalSessions>
</member>
<status> UP </status>
<bytesIn>141594</bytesIn>
<bytesOut>145224</bytesOut>
<curSessions>0</curSessions>
<maxSessions>2</maxSessions>
<rate>0</rate>
<rateMax>34</rateMax>
<totalSessions>283</totalSessions>
</pool>
<virtualServer>
<virtualServerId>virtualServer9virtualServerId>
<name>http_vip</name>
<ipAddress>#.#.#.#</ipAddress>
<status>OPEN</status>
<bytesIn>141594</bytesIn>
<bytesOut>145224</bytesOut>
<curSessions>1</curSessions>
<httpReqTotal>283</httpReqTotal>
<httpReqRate>0</httpReqRate>
<httpReqRateMax>34</httpReqRateMax>
<maxSessions>2</maxSessions>
<rate>0</rate>
<rateLimit>0</rateLimit><rateMax>2</rateMax>
<totalSessions>13</totalSessions>
</virtualServer>
</loadBalancerStatusAndStats>
 
HTTP result codes
200 Ok