블로그 | NGINX

NGINX Plus 및 Microsoft Azure 로드 밸런서

NGINX-F5-수평-검정-유형-RGB의 일부
마이클 플레샤코프 썸네일
마이클 플레샤코프
2021년 6월 25일 게시

[편집자 - 이 게시물은 2021년 6월 현재 NGINX Plus 및 Azure 부하 분산 서비스에서 지원하는 기능을 반영하도록 업데이트되었습니다. 또한 이는 원래 게시물 버전에서 언급된 별도의 동적 구성 모듈을 대체하고 더 이상 사용되지 않는 NGINX Plus API를 참조합니다.]

Microsoft Azure를 사용하는 고객은 부하 분산을 위해 세 가지 옵션을 선택할 수 있습니다. NGINX Plus , Azure 부하 분산 서비스 또는 Azure 부하 분산 서비스와 함께 사용되는 NGINX Plus. 이 게시물의 목적은 여러분이 결정을 내리는 데 충분한 정보를 제공하고, NGINX Plus를 Azure Load Balancer와 함께 사용하여 풍부한 Layer 7 기능을 갖춘 고가용성 HTTP 부하 분산 장치를 얻는 방법을 보여드리는 것입니다.

개요

Microsoft Azure는 사용자에게 두 가지 로드 밸런서 선택권을 제공합니다. Azure 로드 밸런서 기본 TCP/UDP 부하 분산(4계층, 네트워크 계층) 및 Azure 애플리케이션 게이트웨이 HTTP/HTTPS 부하 분산을 위해 (7번째 계층, 애플리케이션 계층). 이러한 솔루션은 간단한 사용 사례에 적합하지만 NGINX Plus에서 표준으로 제공하는 많은 기능을 제공하지 않습니다.

다음은 NGINX Plus와 Azure 부하 분산 서비스 간의 일반적인 비교입니다.

특징 NGINX 플러스 Azure 로드 밸런서 Azure 애플리케이션 게이트웨이 NGINX Plus 및 Azure Load Balancer
HTTP 및 HTTPS 부하 분산
HTTP/2 부하 분산
WebSocket 로드 밸런싱
TCP/UDP 부하 분산
부하 분산 방법 고급의 단순한 단순한 고급의
세션 지속성 고급의 단순한 단순한 고급의
HTTP 상태 검사 고급의 단순한 단순한 고급의
TCP/UDP 상태 검사 고급의 단순한 고급의
SSL/TLS 종료
속도 및 연결 제한
URL 재작성 및 리디렉션
URL 요청 매핑
활성-활성 NGINX Plus 클러스터

이제 NGINX Plus와 Azure 부하 분산 서비스 간의 차이점, 고유한 기능, 그리고 NGINX Plus와 Azure 부하 분산 장치가 함께 작동하는 방식을 살펴보겠습니다.

NGINX Plus와 Azure Load Balancing 서비스 비교

부하 분산 방법

NGINX Plus는 기본 라운드 로빈 방식 외에도 여러 가지 부하 분산 방식을 제공합니다.

  • 최소 연결 – 각 요청은 활성 연결 수가 가장 적은 서버로 전송됩니다.
  • 최소 시간 – 각 요청은 가장 낮은 점수를 받은 서버로 전송됩니다. 이 점수는 평균 지연 시간과 가장 낮은 활성 연결 수의 가중 조합을 통해 계산됩니다.
  • IP 해시 – 각 요청은 요청의 소스 IP 주소에 의해 결정되는 서버로 전송됩니다.
  • 일반 해시 - 각 요청은 사용자 정의 키에서 결정된 서버로 전송됩니다. 사용자 정의 키에는 텍스트와 NGINX 변수 의 모든 조합이 포함될 수 있습니다. 예를 들어 , 소스 IP 주소소스 포트 헤더 필드에 해당하는 변수나 URI가 포함될 수 있습니다.
  • 무작위 – 각 요청은 무작위로 선택된 서버로 전송됩니다. 두 개의 매개변수가 포함되면 NGINX Plus는 무작위로 두 개의 서버를 선택한 다음, 구성된 대로 최소 연결 알고리즘(기본값) 또는 최소 시간을 사용하여 두 서버 중에서 선택합니다.

모든 방법은 각 백엔드 서버에 다른 가중치 값을 할당하여 확장할 수 있습니다. 해당 방법에 대한 자세한 내용은 NGINX Plus 관리자 가이드를 참조하세요.

Azure Load Balancer는 해시라는 하나의 부하 분산 방법을 제공합니다. 이 방법은 기본적으로 소스 IP 주소 , 소스 포트 , 대상 IP 주소 , 대상 포트프로토콜 헤더 필드를 기반으로 하는 키를 사용하여 백엔드 서버를 선택합니다.

Azure Application Gateway는 라운드 로빈 방식만 제공합니다.

세션 지속성

세션 지속성 (Sticky session) 또는 세션 친화성(Session affinity) 이라고도 하는 이 기능은 애플리케이션에서 특정 클라이언트의 모든 요청이 백엔드 서버 간에 클라이언트 상태가 공유되지 않기 때문에 동일한 백엔드 서버로 계속 전송되어야 하는 경우에 필요합니다.

NGINX Plus는 세 가지 고급 세션 지속성 방법을 지원합니다.

  • Sticky Cookie – NGINX Plus는 주어진 클라이언트에 대한 업스트림 그룹의 첫 번째 응답에 세션 쿠키를 추가합니다. 이 쿠키는 요청을 처리하는 데 사용된 백엔드 서버를 식별합니다. 클라이언트는 이 쿠키를 후속 요청에 포함시키고 NGINX Plus는 이를 사용하여 클라이언트 요청을 동일한 백엔드 서버로 전송합니다.
  • Sticky Learn – NGINX Plus는 요청과 응답을 모니터링하여 세션 식별자(일반적으로 쿠키)를 찾고 이를 사용하여 세션의 후속 요청에 대한 서버를 결정합니다.
  • Sticky Route – 경로 값과 백엔드 서버 간 매핑을 구성하여 NGINX Plus가 경로 값에 대한 요청을 모니터링하고 일치하는 백엔드 서버를 선택할 수 있습니다.

NGINX Plus는 또한 위에 설명된 두 가지 부하 분산 방법으로 구현된 두 가지 기본 세션 지속성 방법을 제공합니다.

  • IP 해시 – 백엔드 서버는 요청의 IP 주소에 의해 결정됩니다.
  • 해시 – 백엔드 서버는 사용자 정의 키(예: 소스 IP 주소소스 포트 또는 URI)에서 결정됩니다.

Azure Load Balancer는 NGINX Plus Hash 방법과 동일한 방법을 지원하지만 키는 소스 IP 주소 , 소스 포트 , 대상 IP 주소 , 대상 포트프로토콜 헤더 필드의 특정 조합 으로 제한됩니다.

Azure Application Gateway는 다음과 같은 제한 사항을 제외하고 NGINX Plus Sticky Cookie 방법과 동일한 방법 을 지원합니다 . 쿠키 이름, 만료 날짜, 도메인, 경로, HttpOnly 또는 Secure 쿠키 특성을 구성할 수 없습니다.

메모: Azure Load Balancer, NGINX Plus IP 해시 방법 또는 키에 소스 IP 주소가 포함된 NGINX Plus 해시 방법을 사용하는 경우 세션 지속성은 클라이언트의 IP 주소가 세션 전체에서 동일하게 유지되는 경우에만 올바르게 작동합니다. 예를 들어, 모바일 클라이언트가 WiFi 네트워크에서 셀룰러 네트워크로 전환하는 경우처럼 항상 그런 것은 아닙니다. 요청이 계속해서 동일한 백엔드 서버에 도달하도록 하려면 위에 나열된 고급 세션 지속성 방법 중 하나를 사용하는 것이 좋습니다.

건강 검진

Azure Load Balancer와 Azure Application Gateway는 기본적인 애플리케이션 상태 검사를 지원합니다. 부하 분산 장치가 요청하는 URL을 지정할 수 있으며 예상 HTTP를 수신하면 백엔드 서버가 정상이라고 간주합니다.200 반환 코드. 서버가 비정상으로 간주되기 전의 상태 점검 빈도와 시간 초과 기간을 지정할 수 있습니다. Azure Application Gateway를 사용하면 예상되는 응답 코드를 사용자 지정하고 응답 본문의 내용과 일치시킬 수도 있습니다.

NGINX Plus는 고급 상태 검사를 통해 이 기능을 확장합니다. NGINX Plus를 사용하면 사용할 URL을 지정하는 것 외에도 요청에 헤더를 삽입하고 다양한 응답 코드를 찾고 응답의 헤더와 본문을 모두 검토할 수 있습니다.

NGINX Plus의 유용한 관련 기능 중 하나가 슬로우 스타트 입니다. NGINX Plus는 연결로 인해 과부하가 걸리지 않도록 새 서버나 최근 복구된 서버로 부하를 천천히 증가시킵니다. 이 기능은 백엔드 서버에 약간의 워밍업 시간이 필요하고, 서버가 정상 상태로 표시되자마자 전체 트래픽을 할당받으면 실패할 때 유용합니다.

NGINX Plus는 TCPUDP 서버에 대한 상태 점검도 지원하며, 이를 통해 전송할 문자열과 응답에서 찾을 문자열을 지정할 수 있습니다.

Azure Load Balancer는 TCP 상태 검사를 지원 하지만 이 수준의 모니터링은 제공하지 않습니다.

SSL/TLS 종료

NGINX Plus는 Azure Application Gateway 와 마찬가지로 SSL/TLS 종료를 지원합니다. Azure Load Balancer는 그렇지 않습니다.

연결 및 속도 제한

NGINX Plus를 사용하면 여러 가지 제한을 구성하여 NGINX Plus 인스턴스로의 트래픽을 제어할 수 있습니다. 여기에는 인바운드 연결 제한, 백엔드 노드에 대한 연결 , 인바운드 요청 속도 , NGINX Plus에서 클라이언트로의 데이터 전송 속도 등이 포함됩니다.

Azure Application Gateway와 Azure Load Balancer는 속도 또는 연결 제한을 지원하지 않습니다. 그러나 다른 Azure 서비스를 사용하여 속도 제한을 구성하고 활성화할 수 있습니다.

프로토콜 지원 및 URL 재작성 및 리디렉션

NGINX Plus, Azure Application Gateway 및 Azure Load Balancer는 모두 다음을 지원합니다.

  • HTTP/2 – NGINX Plus는 2016년부터 클라이언트로부터 HTTP/2 요청을 수락했습니다. Azure는 최근에 WebSocket 지원을 추가했습니다.
  • WebSocket – NGINX Plus는 2014년부터 클라이언트로부터 WebSocket 연결을 허용했습니다. Azure는 최근에 WebSocket 지원을 추가했습니다.
  • URL 재작성 및 요청 리디렉션 – 요청의 URL은 백엔드 서버로 전달되기 전에 변경될 수 있습니다. 즉, 클라이언트에 광고된 URL을 수정하지 않고도 요청 경로와 파일 위치를 내부적으로 변경할 수 있습니다. 또한, HTTP 요청의 스키마를 HTTPS로 변경하여 요청을 리디렉션할 수도 있습니다.

Azure 부하 분산 서비스를 갖춘 NGINX Plus

Azure Load Balancer 및 Azure Traffic Manager 와 함께 사용하면 NGINX Plus는 풍부한 Layer 7 기능을 갖춘 고가용성 부하 분산 솔루션이 됩니다.

액티브-액티브 고가용성

Azure Load Balancer를 사용하여 가용성 집합 의 NGINX Plus 인스턴스 간에 부하를 분산하면 지역 내에서 고가용성 부하 분산 장치를 만들 수 있습니다.

NGINX Plus 자동 확장

평균 CPU 사용량에 따라 NGINX Plus 인스턴스의 자동 크기 조정을 설정할 수 있습니다. 이는 NGINX Plus 인스턴스를 호스팅하는 Azure Cloud Service에서 가용성 집합을 만들면 가능합니다. NGINX Plus 설정 파일의 동기화를 관리해야 합니다.

백엔드 인스턴스 자동 확장

평균 CPU 사용량에 따라 백엔드 인스턴스의 자동 크기 조정을 설정할 수도 있습니다. 백엔드 인스턴스를 호스팅하는 Azure Cloud Service에서 가용성 세트를 만들면 가능합니다. NGINX Plus API를 사용하여 NGINX Plus 구성에서 백엔드 인스턴스를 추가하거나 제거해야 합니다.

NGINX Plus 구성에 대한 업데이트를 자동화하려면(가용성 세트와 함께 사용하거나 NGINX Plus를 단독으로 사용하는 경우) NGINX Plus API를 통해 또는 시스템에 DNS 인터페이스가 있는 경우 DNS를 통해 서비스 검색 시스템을 NGINX Plus와 통합할 수 있습니다. 인기 있는 서비스 검색 시스템과 함께 NGINX Plus를 사용하는 방법에 대한 블로그 게시물을 확인하세요.

Azure Traffic Manager와 통합

전 세계적으로 분산된 환경에서는 Azure Traffic Manager를 사용하여 여러 지역에 걸쳐 클라이언트의 트래픽을 분산할 수 있습니다.

Azure 부하 분산 서비스의 추가 기능

Azure Load Balancer와 Application Gateway는 Azure Cloud에서 관리되며 둘 다 고가용성 부하 분산 솔루션을 제공합니다.

NGINX Plus에서 사용할 수 없는 Azure Load Balancer의 기능은 소스 NAT 입니다. 이 기능의 경우 백엔드 인스턴스에서 아웃바운드되는 트래픽은 부하 분산 장치와 동일한 소스 IP 주소를 갖습니다.

Azure Load Balancer는 Azure Cloud의 자동 크기 조정 기능을 사용할 때 자동 재구성을 제공합니다.

요약

부하 분산 요구 사항이 간단하다면 Azure 부하 분산 제품이 좋은 솔루션을 제공할 수 있습니다. 요구 사항이 더 복잡해지면 NGINX Plus가 좋은 선택입니다. NGINX Plus를 단독으로 사용하거나 Azure Load Balancer와 함께 사용하여 NGINX Plus 인스턴스의 고가용성을 확보할 수 있습니다.

Microsoft Azure에서 NGINX Plus를 사용해 보려면 오늘 무료 30일 평가판을 시작하거나 당사에 문의하여 사용 사례에 대해 논의해 보세요 .


"이 블로그 게시물에는 더 이상 사용할 수 없거나 더 이상 지원되지 않는 제품이 참조될 수 있습니다. 사용 가능한 F5 NGINX 제품과 솔루션에 대한 최신 정보를 보려면 NGINX 제품군을 살펴보세요. NGINX는 이제 F5의 일부가 되었습니다. 이전의 모든 NGINX.com 링크는 F5.com의 유사한 NGINX 콘텐츠로 리디렉션됩니다."