NSX CLI를 사용하여 자세한 비상 로그를 가져오고, 패킷 캡처를 수행하고, 로드 밸런서 문제 해결을 위한 메트릭을 확인할 수 있습니다.

문제점

로드 밸런싱이 예상대로 진행되지 않습니다.

프로시저

  1. 사용하도록 설정하거나 가상 장치에 대해 SSH를 수행할 수 있는지 확인합니다. Edge Services Gateway는 배포 중에 SSH를 사용하도록 설정하기 위한 옵션이 있는 가상 장치입니다. SSH를 사용하도록 설정해야 하는 경우 필요한 장치를 선택하고 작업(Actions) 메뉴에서 CLI 자격 증명 변경(Change CLI Credentials)을 클릭합니다.

  2. Edge Services Gateway에는 런타임 상태 및 구성 상태를 확인하기 위한 몇 가지 show 명령이 있습니다. 명령을 사용하여 구성 및 통계 정보를 표시합니다.
    nsxedge> show configuration loadbalancer 
    nsxedge> show configuration loadbalancer virtual [virtual-server-name] 
    nsxedge> show configuration loadbalancer pool [pool-name] 
    nsxedge> show configuration loadbalancer monitor [monitor-name] 
    nsxedge> show configuration loadbalancer profile [profile-name] 
    nsxedge> show configuration loadbalancer rule [rule-name]
    
  3. 로드 밸런싱 및 NAT가 제대로 작동하려면 방화벽을 사용하도록 설정해야 합니다. #show firewall 명령을 사용합니다. 명령을 사용하여 의미 있는 출력을 얻지 못할 경우 UI를 사용하여 로드 밸런서 구성 확인 및 문제 해결 섹션을 참조하십시오.

  4. 로드 밸런서가 제대로 작동하려면 NAT가 필요합니다. show nat 명령을 사용합니다. 명령을 사용하여 의미 있는 출력을 얻지 못할 경우 UI를 사용하여 로드 밸런서 구성 확인 및 문제 해결 섹션을 참조하십시오.

  5. 방화벽이 사용되도록 설정되고 로드 밸런서에 NAT 규칙이 지정되는 것 외에도, 로드 밸런싱 프로세스를 사용하도록 설정해야 합니다. show service loadbalancer 명령을 사용하여 로드 밸런서 엔진 상태(L4/L7)를 확인합니다.
    nsxedge> show service loadbalancer
    haIndex:              0
    -----------------------------------------------------------------------
    Loadbalancer Services Status:
    
    L7 Loadbalancer     : running
    -----------------------------------------------------------------------
    L7 Loadbalancer Statistics:
    STATUS     PID        MAX_MEM_MB MAX_SOCK   MAX_CONN   MAX_PIPE   CUR_CONN   CONN_RATE  CONN_RATE_LIMIT MAX_CONN_RATE
    running    1580       0          2081       1024       0          0          0          0               0
    -----------------------------------------------------------------------
    L4 Loadbalancer Statistics:
    MAX_CONN   ACT_CONN   INACT_CONN TOTAL_CONN
    0          0          0          0
    
    Prot LocalAddress:Port Scheduler Flags
      -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
    
    1. show service loadbalancer session 명령을 사용하여 로드 밸런서 세션 테이블을 확인합니다. 시스템에 트래픽이 있으면 세션이 표시됩니다.
      nsxedge> show service loadbalancer session
      -----------------------------------------------------------------------
      L7 Loadbalancer Statistics:
      STATUS     PID        MAX_MEM_MB MAX_SOCK   MAX_CONN   MAX_PIPE   CUR_CONN   CONN_RATE  CONN_RATE_LIMIT MAX_CONN_RATE
      running    1580       0          2081       1024       0          0          0          0               0
      
      -----------------L7 Loadbalancer Current Sessions:
      
      0x2192df1f300: proto=unix_stream src=unix:1 fe=GLOBAL be=<NONE> srv=<none> ts=09 age=0s calls=2 rq[f=c08200h,
      i=0,an=00h,rx=20s,wx=,ax=] rp[f=008000h,i=0,an=00h,rx=,wx=,ax=] s0=[7,8h,fd=1,ex=] s1=[7,0h,fd=-1,ex=] exp=19s
      
      
      -----------------------------------------------------------------------
      L4 Loadbalancer Statistics:
      MAX_CONN   ACT_CONN   INACT_CONN TOTAL_CONN
      0          0          0          0
      
      L4 Loadbalancer Current Sessions:
      
      pro expire state       source       virtual    destination
      
    2. show service loadbalancer 명령을 사용하여 로드 밸런서 계층 7 고정 테이블 상태를 확인합니다. 이 테이블에는 가속 가상 서버에 대한 정보는 표시되지 않습니다.
      nsxedge> show service loadbalancer table
      -----------------------------------------------------------------------
      L7 Loadbalancer Sticky Table Status:
      
      TABLE    TYPE    SIZE(BYTE)   USED(BYTE)
      
      
  6. 모든 필수 서비스가 제대로 실행되는 경우 라우팅 테이블을 확인하고 클라이언트 및 서버에 대한 경로가 있어야 합니다. 경로를 인터페이스에 매핑하는 show ip routeshow ip forwarding 명령을 사용합니다.

  7. show arp 명령을 사용하여 시스템에 대한 ARP 항목(예: 게이트웨이 또는 다음 홉)과 백엔드 서버가 있는지 확인합니다.

  8. 로그에는 문제를 진단하는 데 도움이 될 수 있는 트래픽을 찾기 위한 정보가 제공됩니다. show log 또는 show log follow 명령을 사용하여 트래픽을 찾는 데 도움이 되는 로그에 태그를 지정합니다. 로깅(Logging)을 사용하도록 설정하고 정보(Info) 또는 디버그(Debug)로 설정한 상태로 로드 밸런서를 실행하고 있는지 확인합니다.
    nsxedge> show log
    2016-04-20T20:15:36+00:00 vShieldEdge kernel: Initializing cgroup subsys cpuset
    2016-04-20T20:15:36+00:00 vShieldEdge kernel: Initializing cgroup subsys cpu
    2016-04-20T20:15:36+00:00 vShieldEdge kernel: Initializing cgroup subsys cpuacct
    ...
    
  9. 기본 서비스가 클라이언트에 대한 적절한 경로로 실행되고 있음을 확인했으므로 애플리케이션 계층에서 진행되는 상황을 살펴보겠습니다. show service loadbalancer pool 명령을 사용하여 로드 밸런서 풀 상태(L4/L7)를 확인합니다. 하나 이상의 멤버가 컨텐츠를 제공할 수 있도록 작동 상태여야 합니다. 일반적으로 요청 볼륨이 단일 워크로드의 용량을 초과하므로 둘 이상의 멤버가 필요합니다.
    nsxedge> show service loadbalancer pool
    -----------------------------------------------------------------------
    Loadbalancer Pool Statistics:
    
    POOL Web-Tier-Pool-01
    |  LB METHOD round-robin
    |  LB PROTOCOL L7
    |  Transparent disabled
    |  SESSION (cur, max, total) = (0, 0, 0)
    |  BYTES in = (0), out = (0)
       +->POOL MEMBER: Web-Tier-Pool-01/web-01a, STATUS: UP
       |  |  HEALTH MONITOR = BUILT-IN, default_https_monitor:L7OK
       |  |  |  LAST STATE CHANGE: 2016-05-16 07:02:00
       |  |  SESSION (cur, max, total) = (0, 0, 0)
       |  |  BYTES in = (0), out = (0)
       +->POOL MEMBER: Web-Tier-Pool-01/web-02a, STATUS: UP
       |  |  HEALTH MONITOR = BUILT-IN, default_https_monitor:L7OK
       |  |  |  LAST STATE CHANGE: 2016-05-16 07:02:01
       |  |  SESSION (cur, max, total) = (0, 0, 0)
       |  |  BYTES in = (0), out = (0)
    
    
  10. 서비스 모니터 상태(정상, 경고, 주의)를 확인하여 구성된 모든 백엔드 서버의 상태를 알아봅니다.
    nsxedge> show service loadbalancer monitor
    -----------------------------------------------------------------------
    Loadbalancer Health Check Statistics:
    
    MONITOR PROVIDER   POOL               MEMBER     HEALTH STATUS
    built-in           Web-Tier-Pool-01   web-01a    default_https_monitor:L7OK
    built-in           Web-Tier-Pool-01   web-02a    default_https_monitor:L7OK
    
  11. 로드 밸런서 개체 통계(VIP, 풀, 멤버)를 확인합니다. 특정 풀을 확인하고 멤버가 작동 및 실행되고 있는지 확인합니다. 투명 모드가 사용되도록 설정되어 있는지 확인합니다. 이렇게 설정된 경우 Edge Services Gateway가 클라이언트와 서버 간에 인라인 상태여야 합니다. 서버가 세션 카운터 증분을 표시하는지 확인합니다.

    nsxedge> show service loadbalancer pool Web-Tier-VIP-01
    TIMESTAMP            	SESSIONS   	BYTESIN    	BYTESOUT   	SESSIONRATE	HTTPREQS
    2016-04-27 19:56:40  	00         	00         	00         	00         	00
    2016-04-27 19:55:00  	00         	32         	100        	00         	00
    

    nsxedge> show service loadbalancer pool Web-Tier-VIP-01 | MEMBER
    +—> POOL MEMBER: TENANT-1-TCP-POOL-80/SERVER-1, STATUS:  UP
    +—> POOL MEMBER: TENANT-1-TCP-POOL-80/SERVER-2, STATUS:  UP
  12. 이제 가상 서버를 확인하고 기본 풀이 있는지와 풀이 바인딩되어 있는지 확인합니다. 애플리케이션 규칙을 통해 풀을 사용하는 경우 #show service loadbalancer pool 명령에 표시되는 것처럼 특정 풀을 확인해야 합니다. 가상 서버의 이름을 지정합니다.
    nsxedge> show service loadbalancer virtual Web-Tier-VIP-01
    
    -----------------------------------------------------------------------
    Loadbalancer VirtualServer Statistics:
    
    VIRTUAL Web-Tier-VIP-01
    |  ADDRESS [172.16.10.10]:443
    |  SESSION (cur, max, total) = (0, 0, 0)
    |  RATE (cur, max, limit) = (0, 0, 0)
    |  BYTES in = (0), out = (0)
       +->POOL Web-Tier-Pool-01
       |  LB METHOD round-robin
       |  LB PROTOCOL L7
       |  Transparent disabled
       |  SESSION (cur, max, total) = (0, 0, 0)
       |  BYTES in = (0), out = (0)
          +->POOL MEMBER: Web-Tier-Pool-01/web-01a, STATUS: UP
          |  |  HEALTH MONITOR = BUILT-IN, default_https_monitor:L7OK
          |  |  |  LAST STATE CHANGE: 2016-05-16 07:02:00
          |  |  SESSION (cur, max, total) = (0, 0, 0)
          |  |  BYTES in = (0), out = (0)
          +->POOL MEMBER: Web-Tier-Pool-01/web-02a, STATUS: UP
          |  |  HEALTH MONITOR = BUILT-IN, default_https_monitor:L7OK
          |  |  |  LAST STATE CHANGE: 2016-05-16 07:02:01
          |  |  SESSION (cur, max, total) = (0, 0, 0)
          |  |  BYTES in = (0), out = (0)
    
    
  13. 모든 항목이 제대로 구성된 것처럼 보이는데도 여전히 오류가 발생하면 상황을 이해하기 위해 트래픽을 캡처해야 합니다. 두 가지 연결, 즉 클라이언트에서 가상 서버로의 연결과 Edge Services Gateway에서 백엔드 풀로의 연결이 있습니다(풀 수준에서 투명 구성 포함 또는 미포함). #show ip forwarding 명령은 vNic 인터페이스를 나열하며 해당 데이터를 사용할 수 있습니다.

    예를 들어 클라이언트 컴퓨터가 vNic_0에 있고 서버가 vNic_1에 있다고 가정하고 포트 80에서 실행되는 클라이언트 IP 주소 192.168.1.2와 VIP IP 192.168.2.2를 사용합니다. 로드 밸런서 인터페이스 IP는 192.168.3.1이고 백엔드 서버 IP는 192.168.3.3입니다. 두 개의 다른 패킷 캡처 명령이 있습니다. 하나는 패킷을 표시하지만, 다른 하나는 다운로드할 수 있는 파일에 패킷을 캡처합니다. 패킷을 캡처하여 로드 밸런서 비정상 오류를 감지합니다. 다음 두 방향에서 패킷을 캡처할 수 있습니다.

    • 클라이언트에서 패킷을 캡처합니다.

    • 백엔드 서버로 전송된 패킷을 캡처합니다.

    #debug packet capture interface interface-name [filter using _ for space]- creates a packet capture file that you can download
    #debug packet display interface interface-name [filter using _ for space]- outputs packet data to the console
    #debug show files - to see a list of packet capture
    #debug copy scp user@url:path file-name/all - to download the packet capture
    

    예:

    • vNIC_0에 캡처: debug packet display interface vNic_0

    • 모든 인터페이스에 캡처: debug packet display interface any

    • 필터를 사용하여 vNIC_0에 캡처: debug packet display interface vNic_0 host_192.168.11.3_and_host_192.168.11.41

    • 클라이언트에서 가상 서버로의 트래픽 패킷 캡처: #debug packet display|capture interface vNic_0 host_192.168.1.2_and_host_192.168.2.2_and_port_80

    • 풀이 투명 모드인 경우 Edge Services Gateway와 서버 간 패킷 캡처: #debug packet display|capture interface vNic_1 host 192.168.1.2_and_host_192.168.3.3_and_port_80

    • 풀이 투명 모드가 아닌 경우 Edge Services Gateway와 서버 간 패킷 캡처: #debug packet display|capture interface vNic_1 host 192.168.3.1_and_host_192.168.3.3_and_port_80