로드 밸런서는 들어오는 서비스 요청을 사용자에게 투명한 로드 분산 방식으로 여러 서버에 분산합니다. 로드 밸런싱은 리소스 사용을 최적화하고, 처리량을 극대화하며, 응답 시간을 최소화하고, 오버로드를 방지하는 데 도움이 됩니다.
NSX 로드 밸런서는 두 개의 로드 밸런싱 엔진을 지원합니다. 계층 4 로드 밸런서는 패킷 기반으로 빠른 경로 처리를 제공합니다. 계층 7 로드 밸런서는 소켓 기반이며, 고급 트래픽 관리 전략과 백엔드 서비스를 위한 DDOS 완화를 지원합니다.
Edge 게이트웨이는 외부 네트워크에서 수신되는 트래픽을 로드 밸런싱하기 때문에 NSX Data Center for vSphere Edge 게이트웨이에 대한 로드 밸런싱은 외부 인터페이스에 구성됩니다. 로드 밸런싱을 위한 가상 서버를 구성할 때 조직 VDC에 있는 사용 가능한 IP 주소 중 하나를 지정합니다.
로드 밸런싱 전략 및 개념
패킷 기반 로드 밸런싱 전략은 TCP 및 UDP 계층에서 구현됩니다. 패킷 기반 로드 밸런싱은 연결을 중지하거나 전체 요청을 버퍼링하지 않습니다. 대신 패킷을 조작한 후, 선택한 서버로 직접 전송합니다. TCP 및 UDP 세션은 단일 세션에 대한 패킷이 동일한 서버에 직접 연결되도록 로드 밸런서에 유지됩니다. 글로벌 구성과 관련 가상 서버 구성 모두에서 [가속화 사용]을 선택하여 패킷 기반 로드 밸런싱을 사용하도록 설정할 수 있습니다.
소켓 기반 로드 밸런싱 전략은 소켓 인터페이스 위에 구현됩니다. 단일 요청에 대해 두 개의 연결, 즉 클라이언트 연결과 서버 연결이 설정됩니다. 서버 연결은 서버 선택 후에 설정됩니다. HTTP 소켓 기반 구현의 경우 선택적 L7 조작을 사용하여 선택된 서버에 전송하기 전에 전체 요청이 수신됩니다. HTTPS 소켓 기반 구현의 경우 클라이언트 연결 또는 서버 연결에서 인증 정보가 교환됩니다. 소켓 기반 로드 밸런싱은 TCP, HTTP 및 HTTPS 가상 서버의 기본 모드입니다.
NSX 로드 밸런서의 주요 개념은 가상 서버, 서버 풀, 서버 풀 멤버 및 서비스 모니터입니다.
설정 개요
먼저 로드 밸런서에 대한 글로벌 옵션을 설정합니다. 이제 백엔드 서버 멤버로 구성된 서버 풀을 생성하고 서비스 모니터와 풀을 연결하여 백엔드 서버를 효과적으로 관리하고 공유할 수 있습니다.
그런 다음 애플리케이션 프로파일을 생성하여 클라이언트 SSL, 서버 SSL, X-Forwarded-For 또는 지속성과 같은 로드 밸런서의 공통 애플리케이션 동작을 정의합니다. 지속성은 유사한 특성을 가진 후속 요청을 전송합니다. 예를 들어 로드 밸런싱 알고리즘을 실행하지 않고 소스 IP 또는 쿠키를 동일한 풀 멤버로 디스패치해야 합니다. 애플리케이션 프로파일은 가상 서버에서 재사용할 수 있습니다.
그런 다음 선택적 애플리케이션 규칙을 생성하여 서로 다른 요청이 서로 다른 풀에 의해 처리될 수 있도록 특정 URL 또는 호스트 이름 일치와 같은 트래픽 조작에 대해 애플리케이션별 설정을 구성합니다. 다음으로, 애플리케이션과 관련된 서비스 모니터를 생성하거나 요구에 부합하는 경우 기존 서비스 모니터를 사용할 수 있습니다.
필요한 경우 L7 가상 서버의 고급 기능을 지원하는 애플리케이션 규칙을 생성할 수 있습니다. 애플리케이션 규칙의 일부 사용 사례로는 컨텐츠 전환, 헤더 조작, 보안 규칙, DOS 보호 등이 있습니다.
마지막으로 서버 풀, 애플리케이션 프로파일 및 잠재적 애플리케이션 규칙을 함께 연결하는 가상 서버를 생성합니다.
가상 서버가 요청을 수신하면 로드 밸런싱 알고리즘이 풀 멤버 구성과 런타임 상태를 고려합니다. 이후 알고리즘은 트래픽을 분산하기 위해 하나 이상의 멤버로 이루어진 적절한 풀을 계산합니다. 풀 멤버 구성에는 가중치, 최대 연결, 조건 상태와 같은 설정이 포함됩니다. 런타임 상태에는 현재 연결, 응답 시간, 상태 점검 상태 정보가 포함됩니다. 계산 방법은 라운드 로빈, 가중치가 적용된 라운드 로빈, 최소 연결, 소스 IP 해시, 가중치가 적용된 최소 연결, URL, URI 또는 HTTP 헤더일 수 있습니다.
각 풀은 연결된 서비스 모니터에 의해 모니터링됩니다. 로드 밸런서가 풀 멤버의 문제를 발견하면 해당 멤버를 [다운] 상태로 표시합니다. 서버 풀에서 풀 멤버를 선택하면 [가동] 서버만 선택됩니다. 서버 풀을 서비스 모니터로 구성하지 않은 경우 모든 풀 멤버가 [가동]으로 간주됩니다.