본문 바로가기
Network

[NSX-T] Domain/URL 기반 LB 적용하기

by chan10 2024. 8. 4.

로드밸런서를 운영하다 보면 VIP, Port를 기준으로 로드밸런싱 적용을 많이 합니다.

하지만 서비스에 따라 Domain, URL Path와 같이 Application 기반으로 적용 하기도 하며 AWS에서는 ALB가 이러한 역할을 수행하게 됩니다.

Application 기반으로 로드밸런싱을 수행하게 되면 Port기반으로 분배하는 것보다 좀 더 다양한 분배 조건으로 유연하게 사용할 수 있고 SSL Offload와 같이 다양한 역할을 수행할 수 있는 장점이 있습니다.

이번에는 NSX-T LoadBalancer를 이용해 L7기반으로 로드밸런싱 하는 방법을 알아보도록 하겠습니다.

 

Pool 생성

언급한 로드밸런싱 조건에 따라 분배하기 위해 2개의 pool을 생성합니다.

  1. LBpool_80_std : /index.html 경로 인입 시 매칭 (2번 서버 등록)
  2. LBpool_80_act : 1번 분배 조건을 제외한 모든 경로 인입 시 매칭 (1,2번 서버 등록)

 

Virtual Server 생성

virtual server를 생성하는데 L4 유형은 URL기반으로 분배를 수행할 수 없기에 L7 HTTP 유형으로 생성합니다.

 

virtual server의 이름, IP, 포트 등을 입력해주고 pool은 앞서 생성한 pool 중 2개 서버가 등록된 LBpool_80_act를 선택합니다.

이름 LB-URL-Test_LBvip_80
IP주소 10.100.26.212
포트 80
유형 L7 HTTP
로드밸런서 (사용할 T1-LB 선택)
서버 풀 LBTest_LBpool_80_act

URL 분배 조건을 등록하기 위해 로드밸런서 규칙 → 요청 전달 단계의 설정을 클릭합니다.

 

HTTP 요청 전달 조건 생성

전달 조건으로 HTTP 요청 조건(조건)를 선택하고

일치 유형에 따라 매칭되는 조건이 달라질 수 있기에 같음 or 포함 등 요구 사항에 따라 선택(일치 유형)하면 됩니다.

분배를 매칭할 조건인 URI 입력(URI)조건 매칭 시 어떤 작업을 수행할 지(작업) 선택합니다.

조건 매칭 시 다른 pool로 보내기 위해 작업-풀 선택을 하고 2번째 pool인 LBpool_80_std를 선택(풀 선택)합니다.

 

 

일치 유형은 ‘다음으로 시작/끝남, 같음, 포함, 정규식 일치’가 있으며

일치 조건을 포함으로 적용할 경우 모든 경로가 일치하지 않아도 해당 문자가 포함되어 있으면 조건에 매칭이 됩니다.

 

전달 조건 설정이 완료 되었다면 저장합니다.

 

도메인 기반 LB 동작 확인

[http://lb-test.xxx.net]

[PowerShell]
PS C:\\Users\\hg331> curl lb-test.xxx.net
StatusCode        : 200
StatusDescription : OK
Content           : VM-LB-Test-01
RawContent        : HTTP/1.1 200 OK

PS C:\\Users\\hg331> curl lb-test.xxx.net
StatusCode        : 200
StatusDescription : OK
Content           : VM-LB-Test-02
RawContent        : HTTP/1.1 200 OK

 

[http://lb-test-2.xxx.net]

→ lb-test-2.xxx.net 도메인 인입 시 2번 서버로만 분배

[PowerShell]
PS C:\\Users\\hg331> curl lb-test-2.xxx.net
StatusCode        : 200
StatusDescription : OK
Content           : VM-LB-Test-02
RawContent        : HTTP/1.1 200 OK

PS C:\\Users\\hg331> curl lb-test-2.xxx.net
StatusCode        : 200
StatusDescription : OK
Content           : VM-LB-Test-02
RawContent        : HTTP/1.1 200 OK

 

URL 기반 LB 동작 확인

[http://lb-test.xxx.net]

 

[PowerShell]
PS C:\\Users\\hg331> curl lb-test.xxx.net
StatusCode        : 200
StatusDescription : OK
Content           : VM-LB-Test-01
RawContent        : HTTP/1.1 200 OK

PS C:\\Users\\hg331> curl lb-test.xxx.net
StatusCode        : 200
StatusDescription : OK
Content           : VM-LB-Test-02
RawContent        : HTTP/1.1 200 OK

 

[http://lb-test.xxx.net/index.html]

→ /Index.html 경로 추가 시 2번 서버로만 분배

[PowerShell]
PS C:\\Users\\hg331> curl lb-test.xxx.net/index.html
StatusCode        : 200
StatusDescription : OK
Content           : VM-LB-Test-02
RawContent        : HTTP/1.1 200 OK

PS C:\\Users\\hg331> curl lb-test.xxx.net/index.html
StatusCode        : 200
StatusDescription : OK
Content           : VM-LB-Test-02
RawContent        : HTTP/1.1 200 OK

 

 

[참고사항]

https://docs.vmware.com/kr/VMware-NSX-T-Data-Center/3.2/administration/GUID-D02EDD17-4985-43CC-B2C4-70B1417BD42F.html