ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • NSX-V Load Balancing 구성 방식의 이해
    VMware/NSX 2019. 3. 22. 23:15


    ###
    모든 포스팅은 개인적인 의견입니다. VMware의 공식적인 의견이 절대 아닌 점 양해 부탁 드립니다 ###

    테스트 목적

    NSX-V 환경에서 LB를 구성 할 수 있는 Proxy, Transparent 방식에 따른 차이점을 확인한다.

     

    테스트 환경

    1) Proxy ( One-arm )

    << LB-Proxy >>

    일반적으로 Backend Server와 동일한 대역에 배포한다

    Transparent 방식과 다르게 Client에서 트래픽 수신 시 SNAT DNAT을 동시에 진행한다.

     

    SNAT : Client IP -> VIP

    DNAT : VIP -> Backend IP

     

    위 같은 이유로 Backend Server Client IP를 탐지 할 수 없으나 탐지가 요구된다면 

    'x-forward-for' 기능을 통해 http 헤더에 Client IP 정보를 삽입 할 수 있다.

     

    장점 : LB 트래픽과 일반 트래픽을 분리 할 수 있어 유연함.

    단점 : 구성의 복잡함

     

    2) Transparent ( Inline )

    << LB-Transparent >>

     

    일반적으로 Backend Server GW로 사용되며 동시에 LB 서비스를 제공한다.

    Proxy 방식과 다르게 Client에서 트래픽 수신 시 DNAT만 진행한다.

     

    DNAT : VIP -> Backend IP

     

    'transparent' 기능 사용 시 Bakend Server에서 Client IP 탐지가 가능하다.

     

    장점 : 구성의 단순함, Client IP 탐지 가능

    단점 : 모든 트래픽이 LB를 경유하기 때문에 Proxy 방식보다 유연성이 떨어지며 부하가 높다.

     

    테스트 결과

    1) Proxy

    Proxy 방식으로 LB 구성 후 Client에서 Wireshar를 통해 패킷을 확인해본다.

    << Wireshark-Backend >>

    앞서 설명한 것처럼 Backend에서 SNAT으로 인해 Client IP를 확인 할 수 없다.

    Proxy 방식에서 만약 'transparent' 기능을 enable 했을 시 어떤 상황이 발생하는지 확인해본다.

    << 'transparent' enable >>

     

    Client에서 패킷 확인


    << Wireshark-Client >>

    'transparent' enable Client에서 rst 플래그를 통해 통신을 끊어 버린다.

    아래 diagram을 통해 확인해보자.

    << LB-proxy-enable-transparent >>

    위와 같이 Backend Server에서 Client IP가 탐지되므로 패킷 응답 시 direct로 회신하게 된다.

    패킷 캡처를 확인해보면 Client에서는 LB VIP로 패킷을 발신 했지만 갑자기 전혀 다른 Backend에서 회신이 오기 때문에 rst 플래그를 통해 끊어 버리는 것이다.

    만약 위 구성을 가능하게 하려면 DSR 방식을 지원해야 하지만 NSX LB는 지원하지 않는다.

     

    자 그럼 Client IP 탐지를 위해 'x-forward-for' 기능을 enable 한다. http 헤더에 추가되는 기능이기 때문에 L4 가속 방식에서는 지원하지 않는다.

     

    << 'x-forward-for' enable >>


    Client에서 패킷 확인

    << Wireshark-enable-xfor >>

    위와 같이 http 헤더에 별도로 Client IP 정보가 삽입된다.

     

    2) Transparent

    이번에는 Transparent 방식에서 Client 패킷을 확인해본다.

    << Wireshark-disable-'transparent' >>

    Transparent 방식의 구성이지만 'transparent' enable하지 않으면 위와 같이 Client IP를 탐지 할 수 없기 때문에 'transparent' enable 후 확인해본다.

    << Wireshark-enable-'transparent' >>

    enable Client IP가 탐지된다. 사실 enable disable과 상관 없이 모든 패킷은 LB를 통과하기 때문에 정상적으로 LB 서비스는 동작한다.

     


    'VMware > NSX' 카테고리의 다른 글

    NSX-V ECMP 설정에 대한 이해  (0) 2019.03.28
    NSX-V Virtual Server 엔진 방식에 따른 이해  (0) 2019.03.23
    NSX-V LB https Guide  (0) 2019.02.26

    댓글

Designed by Tistory.