NSX Data Center for vSphere에서 제어부(netcpa)는 로컬 에이전트 데몬으로 작동하고 NSX Manager 및 컨트롤러 클러스터와 통신합니다. 통신 채널 상태(Communication Channel Health) 기능은 중앙 제어부-로컬 제어부 상태를 NSX Manager에 주기적으로 보고하고 NSX Manager UI에 표시되는 상태 검사입니다. 이 보고서는 ESXi 호스트 netcpa 채널에 대한 NSX Manager의 작동 상태를 감지하기 위한 하트비트로도 사용됩니다. 통신 장애 동안 오류 세부 정보를 제공하고, 채널이 잘못된 상태가 될 때 이벤트를 생성하고, 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 MOB(관리 개체 브라우저)를 사용할 수 있습니다.
    • vCenter MOB를 사용하려면 웹 브라우저를 열고 http://vCenter-IP-Address/mob에 vCenter MOB의 URL을 입력합니다. "NSX API 가이드" 에서 클러스터 또는 호스트 MOID를 찾는 방법에 대한 지침을 참조하십시오.
    • 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. 다음 명령을 사용하여 제어부 에이전트에서 컨트롤러에 대한 연결을 확인합니다. 출력은 각 컨트롤러에 대한 단일 연결입니다.
    >[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. 제어부 에이전트가 꽤 오랫동안 다운된 경우 연결이 전혀 없을 수 있습니다. 연결 상태를 확인하려면 다음 명령을 실행합니다. 출력은 각 컨트롤러에 대한 단일 연결입니다.
    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 로그에 보고될 수 있습니다.

    경고 - NETCPA에서 netcpa 상태를 가져오지 못했습니다.

    이 경고는 무시해도 됩니다.

  7. 이 문제가 자동으로 복구되지 않을 경우 다음과 같이 제어부 에이전트를 다시 시작합니다.
    1. SSH 또는 콘솔을 통해 ESXi 호스트에 루트 권한으로 로그인합니다.
    2. /etc/init.d/netcpad restart 명령을 실행하여 ESXi 호스트에서 제어부 에이전트를 다시 시작합니다.