NSX Data Center for vSphere では、制御プレーン エージェント (netcpa) がローカル エージェント デーモンとして動作し、NSX Manager やコントローラ クラスタと通信します。[通信チャネルの健全性 (Communication Channel Health)] 機能は、中央制御プレーンからローカル制御プレーンへのステータスを NSX Manager に定期的にレポートする健全性チェックで、NSX Manager のユーザー インターフェイスに表示されます。このレポートは、NSX Manager から ESXi ホスト netcpa チャネルへの稼動ステータスを検出する、ハートビートとしても機能します。この機能は、通信障害時のエラーの詳細を示し、チャネルが誤ったステータスになるとイベントを生成するほか、NSX Manager からホストへのハートビート メッセージを生成します。

問題

制御プレーン エージェントとコントローラ間の接続の問題

原因

見つからない接続がある場合は、制御プレーン エージェントが正しく動作していない可能性があります。

解決方法

  1. チャネルが誤ったステータスになったら、次の API 要求を使用して接続ステータスを確認します。
    GET https://<NSX_Manager_IP>/api/2.0/vdn/inventory/host/{hostId}/connection/status

    この API の使用方法については、『NSX API ガイド』を参照してください。

    hostId を検索するには、 NSX Manager CLI または vCenter Server 管理対象オブジェクト ブラウザ (MOB) のいずれかを使用します。
    • vCenter Server MOB を使用するには、Web ブラウザで vCenter Server MOB の URL (http://vCenter-IP-Address/mob) を入力します。クラスタまたはホストの MOID を検索する手順については、『NSX API ガイド』を参照してください。
    • NSX Manager CLI を使用する場合は、管理者ユーザーとしてログインして、show cluster all または show cluster clusterID コマンドを実行します。これらのコマンドの詳細については、『NSX コマンド ライン クイック リファレンス』を参照してください。

    次に、API 応答の例を示します。

    <?xml version="1.0" encoding="UTF-8"?>
    <hostConnStatus>
      <hostName>10.161.246.20</hostName>
      <hostId>host-21</hostId>
      <nsxMgrToFirewallAgentConn>UP</nsxMgrToFirewallAgentConn>
      <nsxMgrToControlPlaneAgentConn>UP</nsxMgrToControlPlaneAgentConn>
      <hostToControllerConn>DOWN</hostToControllerConn>
      <fullSyncCount>-1</fullSyncCount>
      <hostToControllerConnectionErrors>
        <hostToControllerConnectionError>
          <controllerIp>10.160.203.236</controllerIp>
          <errorCode>1255604</errorCode>
          <errorMessage>Connection Refused</errorMessage>
        </hostToControllerConnectionError>
        <hostToControllerConnectionError>
          <controllerIp>10.160.203.237</controllerIp>
          <errorCode>1255603</errorCode>
          <errorMessage>SSL Handshake Failure</errorMessage>
        </hostToControllerConnectionError>
      </hostToControllerConnectionErrors>
    </hostConnStatus>

    次のエラー コードがサポートされています。

    1255602:不完全なコントローラ証明書 1255603:SSL ハンドシェークに失敗しました 1255604:接続が拒否されました 1255605:キープ アライブ タイムアウト 1255606:SSL 例外 1255607:不正なメッセージ 1255620:不明なエラー
  2. 次のように、制御プレーン エージェントが停止している原因を特定します。
    1. ESXi ホストで /etc/init.d/netcpad status コマンドを実行して、ホストの制御プレーン エージェントのステータスを確認します。
      [root@esx-01a:~] /etc/init.d/netcpad status
      netCP agent service is running
      
    2. more /etc/vmware/netcpa/config-by-vsm.xml コマンドを使用して、制御プレーン エージェントの設定を確認します。NSX Controller の IP アドレスが表示されます。
      [root@esx-01a:~] more /etc/vmware/netcpa/config-by-vsm.xml
      <config>
        <connectionList>
          <connection id="0000">
            <port>1234</port>
            <server>192.168.110.31</server>
            <sslEnabled>true</sslEnabled>
            <thumbprint>A5:C6:A2:B2:57:97:36:F0:7C:13:DB:64:9B:86:E6:EF:1A:7E:5C:36</thumbprint>
          </connection>
          <connection id="0001">
            <port>1234</port>
            <server>192.168.110.32</server>
            <sslEnabled>true</sslEnabled>
            <thumbprint>12:E0:25:B2:E0:35:D7:84:90:71:CF:C7:53:97:FD:96:EE:ED:7C:DD</thumbprint>
          </connection>
          <connection id="0002">
            <port>1234</port>
            <server>192.168.110.33</server>
            <sslEnabled>true</sslEnabled>
            <thumbprint>BD:DB:BA:B0:DC:61:AD:94:C6:0F:7E:F5:80:19:44:51:BA:90:2C:8D</thumbprint>
          </connection>
        </connectionList>
       ...
      
  3. 次のコマンドを使用して、制御プレーン エージェントからコントローラへの接続を検証します。各コントローラにつき 1 つの接続が出力されます。
    >[root@esx-01a:~] esxcli network ip connection list | grep 1234
    tcp     0   0  192.168.110.51:16594     192.168.110.31:1234   ESTABLISHED     36754  newreno  netcpa-worker
    tcp     0   0  192.168.110.51:46917     192.168.110.33:1234   ESTABLISHED     36754  newreno  netcpa-worker
    tcp     0   0  192.168.110.51:47891     192.168.110.32:1234   ESTABLISHED     36752  newreno  netcpa-worker
    
  4. 次のコマンドを使用して、制御プレーン エージェントからコントローラへの接続を検証し、CLOSED または CLOSE_WAIT ステータスを表示します。
    esxcli network ip
    		connection list |grep "1234.*netcpa*" | egrep "CLOSED|CLOSE_WAIT"
  5. 制御プレーン エージェントが長時間にわたって停止している場合は、接続が存在していない可能性があります。接続状態を確認するには、次のコマンドを実行します。各コントローラにつき 1 つの接続が出力されます。
    esxcli network ip
    		connection list |grep "1234.*netcpa*" |grep ESTABLISHED
  6. 制御プレーン エージェント (netcpa) の自動リカバリ メカニズム:制御プレーン エージェントの自動監視プロセスは、誤ったステータスの制御プレーン エージェントを検出します。制御プレーン エージェント ステータスが正しくない場合、応答を停止し、自動リカバリを試みます。
    1. 制御プレーン エージェントが応答を停止すると、ライブ コア ファイルが生成されます。このコア ファイルを次の方法で確認できます。
      ls /var/core       
       netcpa-worker-zdump.000
    2. vmkwarning.log ファイルに Syslog エラーがレポートされます。
      cat /var/run/log/vmkwarning.log | grep NETCPA
      2017-08-11T06:32:17.994Z cpu1:1000044539)ALERT: Critical - NETCPA is hanged
      Taking live-dump & restarting netcpa process!
      
    注:

    ステータス チェックの応答遅延により制御プレーン エージェント モニターで一時的な障害が発生すると、VMkernel ログに次のような警告メッセージがレポートされる場合があります。

    Warning - NETCPA getting netcpa status failed!

    この警告は無視しても問題ありません。

  7. この問題から自動的に復旧しない場合は、次のように制御プレーン エージェントを再起動します。
    1. SSH またはコンソールを介して、ESXi ホストに root でログインします。
    2. /etc/init.d/netcpad restart コマンドを実行して、ESXi ホストで制御プレーン エージェントを再起動します。