NGINX, Inc.에서는 애플리케이션 전송 플랫폼의 최신 릴리스인 NGINX Plus Release 9(R9) 의 출시를 발표하게 되어 기쁘게 생각합니다. 이 업데이트는 두 가지 중요한 새로운 기능을 제공합니다. 사용자 정의 바이너리가 필요 없이 NGINX Plus에 풍부한 확장 기능을 동적으로 로드하는 기능과 기존 TCP 및 HTTP 부하 분산 기능과 함께 상용으로 지원되는 UDP 부하 분산 기능입니다.
NGINX Plus R9 의 흥미로운 새 기능 외에도 새로운 가격 및 지원 옵션도 선보입니다. NGINX Plus는 이제 고정 가격으로 애플리케이션이나 기업의 모든 곳에서 무제한으로 사용할 수 있는 "무제한" 가격 책정 모델을 통해 제공됩니다. NGINX Plus는 이제 3가지 지원 수준 으로 구매할 수 있습니다. 비생산용 애플리케이션을 위한 기본 9×5 지원, 전화나 이메일을 통한 Professional 24×7 지원, 30분 이내 답변을 보장하는 Enterprise 24×7 지원이 제공됩니다.
편집자 - NGINX Plus R9의 주요 새로운 기능에 대한 자세한 내용은 다음 관련 리소스를 참조하세요.
NGINX Plus R9 의 주요 새로운 기능은 다음과 같습니다.
동적 모듈 – NGINX Plus는 이제 동적으로 로드 가능한 모듈로 런타임에 확장될 수 있습니다. 즉, 원하는 확장 기능만 선택하여 표준 apt
및 yum
명령을 통해 접근할 수 있는 NGINX Plus 저장소에서 직접 설치할 수 있습니다. 시간이 지남에 따라 우리는 소프트웨어에 대한 테스트와 완전 인증을 거친 확장 프로그램을 점점 더 많이 배포할 것입니다.
Lua 프로그래밍 언어 지원 등 가장 인기 있는 NGINX 제작 및 타사 모듈은 이미 새로운 동적으로 로드 가능한 형식으로 변환되었습니다. 또한, 모듈을 저장소에 추가하기 전에 모듈을 새로운 형식으로 변환해야 하는 타사 모듈 소유자를 위한 지침 도 게시했습니다.
UDP 부하 분산 – 기존 TCP 및 HTTP 부하 분산 기능에 UDP 부하 분산 기능이 추가되어 NGINX Plus는 이제 거의 모든 애플리케이션의 부하를 분산할 수 있습니다. 지난달 NGINX 오픈 소스에 UDP 부하 분산 기능을 추가했으며, 이번 릴리스에서는 추가적인 고급 기능을 통해 NGINX Plus에 대한 지원을 확대합니다. NGINX Plus는 활성 상태 검사를 통해 UDP 서비스를 모니터링하고, 다양한 통계를 통해 중요한 가시성을 제공하며, 서버를 동적으로 추가 및 제거할 수 있도록 합니다.
UDP는 DNS(도메인 이름을 주소로 변환), syslog(경량 로깅), RADIUS(인증 프로토콜)와 같이 본질적으로 트랜잭션이 아닌 가벼운 프로토콜에 일반적으로 사용됩니다. UDP는 낮은 대역폭 요구 사항으로 인해 IoT 애플리케이션에 적합한 프로토콜 중 하나로 떠오르고 있습니다. NGINX Plus는 기존 및 새로운 애플리케이션을 손쉽게 제공하고 부하를 분산할 수 있습니다.
DNS SRV
레코드를 사용한 서비스 검색 – 마이크로서비스 기반 애플리케이션은 동적입니다. 서비스는 수요에 따라 확장, 축소 및 이동될 수 있습니다. 서비스의 현재 상태를 파악하는 좋은 방법은 서비스 검색을 사용하는 것입니다. Consul 및 etcd(SkyDNS)와 같은 많은 서비스 검색 플랫폼은 클라이언트(예: NGINX Plus)가 검색된 서비스에 대한 정보를 요청할 수 있는 DNS 인터페이스를 제공합니다.
서비스에서 사용하는 포트 번호는 종종 동적으로 할당됩니다. 결과적으로 서비스 검색 플랫폼은 포트 번호 정보가 포함된 DNS SRV
레코드를 활용합니다. NGINX Plus는 이제 DNS SRV
레코드를 지원하고 DNS 요청을 사용하여 서비스 레지스트리에 서비스 위치를 쿼리할 수 있으며 여기에는 동적으로 할당된 포트 정보가 포함됩니다.
NGINX Plus 앱 가격 – 높은 성장, 계절성 또는 탄력적인 트래픽 중에 최대 성능과 가동 시간을 보장하기 위해 많은 애플리케이션에 동적 인프라가 필요합니다. 이러한 앱은 일반적으로 마이크로서비스나 분산 아키텍처를 활용하며, 런타임에는 컨테이너나 가상 머신을 활용합니다. 인스턴스 또는 머신 시간당 소프트웨어 비용을 지불하는 방식은 이러한 최신 앱에 필요한 유연성이나 비용 효율성을 제공하지 않습니다. 이러한 사용 사례를 위해 NGINX Plus 앱 가격을 소개합니다.
NGINX Plus 앱 가격은 NGINX Plus의 확장된 기능과 상업적으로 지원되는 바이너리를 1년에 한 번씩 애플리케이션당 정액 가격으로 무제한으로 사용할 수 있도록 제공합니다. VM, 컨테이너, 노드, 동시 연결 또는 사용자 수에 관계없이 1년 내내 저렴한 요금을 지불하면 됩니다. 언제 어디서나 원하는 대로 애플리케이션 인프라 내에서, 그리고 개발, 테스트, 스테이징, 재해 복구 및 프로덕션 환경 전반에 NGINX Plus를 배포하세요. 예측할 수 없는 소비 기반 요금에 대해 걱정할 필요가 없고, 용량이 갑자기 초과될 때 라이선스 키를 얻기 위해 기다릴 필요가 없습니다.
이 섹션에서는 NGINX Plus R9의 모든 새로운 기능과 기능에 대한 자세한 개요를 제공합니다.
NGINX와 NGINX Plus는 모두 모듈식 아키텍처를 가지고 있습니다. 이들의 핵심 기능은 타사 개발자와 NGINX 엔지니어링 팀이 작성한 모듈을 통해 확장될 수 있습니다. 이러한 모듈은 Lua 스크립팅을 내장하고 IP 주소를 기반으로 사용자의 지리적 위치를 지정하는 등의 주요 기능을 추가합니다. 100개 이상의 타사 모듈 과 60개 이상의 공식 NGINX 모듈을 사용할 수 있습니다. 우리는 이 중 56개를 기본 nginx‑plus 패키지에 포함시켰고, 10개를 추가로 nginx‑plus‑extras 패키지에 포함시켰습니다(전체 목록은 NGINX Plus 기술 사양 에서 확인할 수 있습니다).
이 릴리스에서는 nginx‑plus‑extras 패키지의 추가 모듈(타사 및 공식 NGINX 모두)도 기본 NGINX Plus 패키지인 nginx‑plus 에 동적으로 로드할 수 있습니다. 이렇게 하면 실제로 필요한 추가 모듈만 로드할 수 있습니다.
이러한 모듈은 NGINX Plus 저장소에서 사용할 수 있으며, 앞으로 몇 달 안에 저장소에 모듈을 추가할 계획입니다. 현재 nginx‑plus‑extras 패키지를 사용 중인 모든 분들은 핵심 nginx‑plus 패키지로 마이그레이션하는 것이 좋습니다. 향후 릴리스에서 nginx‑plus‑extras 패키지가 더 이상 지원되지 않을 예정입니다.
우리는 다양한 릴리스 테스트를 실행하기 전에 각 동적 모듈을 NGINX Plus 코어에 로드하여 테스트합니다. 이를 통해 모듈이 (구성되지 않은 경우) NGINX Plus의 올바른 작동을 방해하지 않는다는 확신을 가질 수 있습니다. 우리는 각 릴리스에서 모듈 업데이트를 추적하고 새로운 빌드를 발행하며, 릴리스 사이에 심각한 보안 문제가 보고되는 경우에도 이를 추적합니다.
동적 모듈을 사용하면 모든 사람이 사용하는 기능을 갖춘 단일 NGINX Plus 바이너리를 배포할 수 있습니다. 관리자는 사용하고 싶은 추가 모듈을 선택할 수 있습니다.
모듈을 설치하고 동적으로 로드하려면 다음 단계를 수행하세요. 그들은 OS 공급업체의 배포판이 아닌 NGINX, Inc.에서 파일을 검색하도록 패키지 관리 도구를 구성했다고 가정합니다.
운영 체제의 표준 패키지 관리 도구(예: apt
또는 yum
)를 사용하여 기본 nginx‑plus 이미지와 동적으로 로드하려는 모듈을 설치합니다(각 모듈에 대해 설치 명령을 반복합니다). 다음 명령은 Debian 기반 시스템에 적합합니다.
# apt-get 업데이트 # apt-get 설치 nginx-plus # apt-get 설치 모듈 이름
이 릴리스에서 모듈 이름을
대체할 수 있는 이름은 다음과 같습니다.
nginx-플러스-모듈-geoip
nginx-plus-모듈-헤더-더
nginx-plus-모듈-이미지-필터
nginx-플러스-모듈-lua
nginx-플러스-모듈-패신저
nginx-플러스-모듈-perl
nginx-플러스-모듈-rtmp
nginx-플러스-모듈-세트-기타
nginx-플러스-모듈-xslt
/etc/nginx/modules 디렉토리는 선택된 모듈의 .so 파일이 설치된 위치에 대한 심볼릭 링크와 함께 자동으로 생성됩니다.
참고사항:
이전 릴리스의 NGINX Plus에서 nginx‑plus‑extras 패키지를 사용 중이라면 R9 nginx‑plus 패키지를 설치하기 전에 해당 패키지를 제거해야 합니다. Debian 기반 시스템의 경우 적절한 명령 세트는 다음과 같습니다.
# apt-get 업데이트 # apt-get nginx-plus-extras 제거 # apt-get nginx-plus 설치 # apt-get 모듈 이름 설치
일부 모듈은 OS 제한으로 인해 특정 OS 버전에서 사용할 수 없습니다. 자세한 내용과 모듈에 대한 설명은 NGINX Plus 기술 사양을 참조하세요.
/etc/nginx/nginx.conf 의 기본(최상위) 컨텍스트에서 동적으로 로드할 수 있는 각 모듈에 대한 load_module
지시문을 추가합니다.
load_module 모듈/ 모듈 이름 .so;
구문 유효성을 위해 새로운 구성을 확인하고 NGINX Plus를 다시 로드합니다.
# nginx -t && nginx -s 다시 로드
nginx.conf 에 나열된 모듈은 NGINX Plus에 동적으로 로드됩니다.
지난달 NGINX 오픈 소스에서 UDP 부하 분산을 출시했으며, NGINX Plus R9는 상태 확인, 확장된 상태 모니터링, 즉석 재구성 기능을 통해 이 기능을 확장했습니다.
TCP 부하 분산의 경우, UDP 부하 분산 구성은 스트림
컨텍스트에서 이루어집니다. HTTP와 TCP 부하 분산과 마찬가지로 UDP 부하 분산은 업스트림 그룹을 사용하여 UDP 기반 서비스를 제공하는 원본 서버 집합과 서버 간에 트래픽 부하를 분산할 때 사용할 알고리즘을 정의합니다.
이 구성에서는 관련 서비스를 제공하는 업스트림 그룹을 명명하는 proxy_pass
지시문으로 각 UDP 포트에 대한 가상 서버도 정의합니다.
스트림 { 업스트림 dns_upstreams { 최소_시간; 서버 dns-server-1-ip :53; 서버 dns-server-2-ip :53; } 서버 { 수신 53 udp ; 수신 53; #tcp proxy_pass dns_upstreams; proxy_timeout 1s; proxy_responses 1; error_log logs/dns.log; } }
이 구성 예는 DNS 서비스의 부하를 분산하기 위한 것입니다. 업스트림
블록에서는 최소 시간 알고리즘을 구성하여 NGINX Plus가 각 요청을 현재 가장 적은 '연결'을 가지고 있고 가장 빠르게 응답하는 서버로 전송합니다. 서버 블록에서는 DNS가 두 프로토콜 모두에서 실행될 수 있으므로 UDP와 TCP 트래픽을 모두 수신합니다. proxy_responses
지시문은 NGINX Plus가 UDP "연결"과 관련된 리소스를 해제하기 전에 업스트림 서버로부터 얼마나 많은 응답을 수신하는지 제어합니다. DNS는 간단한 요청-응답 프로토콜이므로 일반적으로 하나의 응답으로 충분합니다.
NGINX 오픈 소스에는 UDP에 대한 기본적인 상태 점검이 포함되어 있습니다. 정의된 시간 초과 기간 내에 업스트림 UDP 서버가 요청에 응답하지 못하거나 ICMP 오류를 반환하는 경우 NGINX 및 NGINX Plus는 정의된 시간 동안 해당 서버로의 트래픽 전송을 중단합니다.
NGINX Plus R9는 HTTP 및 TCP 트래픽 과 유사한 UDP 서비스에 대한 활성 상태 검사를 추가합니다. NGINX Plus를 구성하여 업스트림 서버로 특수 UDP 요청을 보내고 서버가 정상으로 간주되기 위해 반환해야 하는 응답 유형을 정의할 수 있습니다. UDP는 HTTP에 대해 TCP가 제공하는 안정적인 전달 메커니즘을 갖추고 있지 않기 때문에, UDP 애플리케이션에서는 TCP 및 HTTP 애플리케이션보다 활성 상태 검사가 더욱 중요합니다.
NGINX Plus를 사용하면 업스트림 서버를 즉시 추가하거나 제거할 수도 있습니다. 이를 통해 유지 관리를 위해 서버를 오프라인으로 전환한 다음 부하 분산 풀에 다시 삽입하는 작업이 쉬워집니다. NGINX Plus 상태 모듈의 새로운 UDP 관련 통계와 실시간 활동 모니터링 대시보드를 통해 서버 성능에 대한 중요한 가시성을 얻을 수 있습니다.
NGINX Plus R9는 가장 일반적으로 사용되는 간단한 UDP 기반 애플리케이션의 부하를 분산합니다. DNS, RADIUS, syslog 및 NTP. Voice over IP 및 기타 SIP 기반 애플리케이션과 같은 장기 UDP 프로토콜은 현재 지원되지 않습니다.
SRV
레코드를 사용한 서비스 검색최신 웹 애플리케이션은 웹 서버, 애플리케이션 서버, 데이터베이스 등 여러 개의 작은 애플리케이션 구성 요소로 구성됩니다. NGINX Plus와 같은 프런트엔드 로드 밸런서는 들어오는 트래픽을 검사한 다음 애플리케이션 구성 요소 전체에 걸쳐 요청을 라우팅하고 로드 밸런싱합니다.
애플리케이션 구성 요소가 가상 또는 컨테이너 기반 플랫폼에 배포되는 경우 예측할 수 없는 IP 주소와 포트를 가질 수 있습니다. 서비스 검색은 로컬 클라이언트(예: 프런트엔드 NGINX Plus 로드 밸런서)가 이러한 구성 요소를 찾아 해당 구성 요소로 트래픽을 전송하는 프로세스입니다. 서비스 검색은 일반적으로 Consul , etcd , ZooKeeper 와 같은 "서비스 데이터베이스"를 통해 용이해집니다.
NGINX Plus R8에서는 즉석 재구성 API의 영구 버전을 발표하고 서비스 데이터베이스를 확인하고 구성 변경 사항을 NGINX Plus에 푸시하는 Consul , etcd , ZooKeeper 에 대한 데모 솔루션을 공유했습니다. NGINX Plus R9에서는 DNS SRV
쿼리를 사용하는 대체 방법을 지원하게 되어 기쁩니다. DNS SRV
쿼리는 특정 유형의 애플리케이션 서버의 IP 주소, 포트, 우선 순위 및 가중치를 반환합니다.
etcd용 Consul 과 SkyDNS는 모두 클라이언트가 SRV
레코드를 검색하는 데 사용할 수 있는 DNS 인터페이스를 제공합니다. NGINX Plus는 서비스의 DNS 인터페이스를 직접 쿼리하여 부하 분산 구성을 얻습니다. NGINX Plus는 서비스를 정기적으로 다시 점검하므로, 모든 변경 사항이 신속하고 자동으로 전파됩니다.
다음 예제에서는 NGINX Plus가 DNS를 통해 my_service 에 대한 업스트림 서버 목록을 가져오도록 구성합니다. 서버
지시문의 service=http
매개변수는 DNS SRV
레코드에 대한 지원을 활성화합니다. 이제 my_service를 지원하는 애플리케이션 인스턴스가 NGINX Plus에서 자동으로 검색됩니다.
http { resolver dns-server-ip ; 업스트림 my_service { 영역 백엔드 64k; 서버 hostname-for-my_service service=http resolve; } 서버 { # ... 위치 /my_service { # ... proxy_pass http://my_service; } } }
인스턴스당 가격은 NGINX Plus를 시작하기에 좋은 방법이며 하드웨어 로드 밸런서에 대한 매우 비용 효율적인 대안을 제공하지만 NGINX Plus의 잠재적 사용은 간단한 하드웨어 교체를 훨씬 넘어섭니다. NGINX Plus는 가벼운 소프트웨어 아키텍처로 인해 각 애플리케이션의 전담 로드 밸런싱에 적합하며, NGINX Plus는 NGINX 오픈 소스를 기반으로 구축되었으므로 애플리케이션의 웹 및 애플리케이션 서버도 대체할 수 있습니다. 이러한 사용 사례는 인스턴스당 가격이 비용 효율적이지 않거나 충분히 유연하지 않은 NGINX Plus의 배포를 점점 더 늘리고 있습니다.
NGINX Plus R9에서는 특정 애플리케이션에 대해 원하는 만큼 많은 NGINX Plus 인스턴스를 실행할 수 있는 새로운 "무제한" 앱 가격 모델을 도입합니다. 언제 어디서나 원하는 방식으로 NGINX Plus를 애플리케이션 인프라와 개발, 테스트, 스테이징, 재해 복구 및 프로덕션 환경 전반에 배포하세요. VM, 컨테이너 또는 노드 수에 관계없이 1년 동안 고정된 요금을 지불하면 됩니다.
모든 구독에는 NGINX Plus 소프트웨어의 모든 기능 과 수상 경력에 빛나는 지원 및 구성 지원이 포함되어 있습니다. 또한 앱 가격 모델을 선택하면 다음과 같은 혜택이 제공됩니다.
각 신청 별로 사용에 제한이 없습니다. 애플리케이션은 단일 웹 애플리케이션이나 개별적으로 명명된 데스크톱 또는 모바일 애플리케이션을 지원하는 소프트웨어 구성 요소와 팀으로 정의됩니다. 이 모델에서는 마이크로서비스 기반 아키텍처와 기타 분산 아키텍처가 예상되고 수용됩니다.
또한, 사이트 라이선스 구독을 이용하면 조직 전체에서 NGINX Plus를 무제한으로 사용할 수 있습니다.
NGINX Plus R9는 다음을 포함한 여러 가지 추가 개선 사항을 도입했습니다.
비멱등 요청 재시도 – 오류나 시간 초과로 인해 HTTP 요청이 실패하는 경우, 기본적으로 NGINX Plus는 자동으로 업스트림 그룹의 다른 서버에서 재시도합니다. proxy_next_upstream
지시문을 사용하여 NGINX Plus가 요청을 반복하는 오류 유형(특정 오류 포함)을 정의할 수 있습니다. 4xx
또는 5xx
응답 코드.
관례적으로 POST
요청은 일반적으로 재시도되지 않습니다. 왜냐하면 본문 데이터가 서버로 스트리밍되고 서버에 장애가 발생하면 재생할 수 없기 때문입니다. 그러나 특정 실패 상황에서 이전 버전의 NGINX Plus는 POST
요청을 다시 시도했는데, 이는 비멱등성이기 때문에 재시도되지 않는다는 가정과 일치하지 않습니다.
NGINX Plus는 더 이상 실패한 비멱등 HTTP 요청( POST
, LOCK
및 PATCH
)을 자동으로 재시도하지 않습니다. 이전 동작을 복원하고 가능한 경우 NGINX Plus가 실패한 비멱등 요청을 다시 시도할 수 있게 하려면 proxy_next_upstream
지시문에 새 non_idempotent
매개변수를 포함합니다.
NGINX Plus를 실행 중이라면 가능한 한 빨리 릴리스 9로 업그레이드하는 것을 적극 권장합니다. 여러분은 여러 가지 수정 사항과 개선 사항을 얻을 수 있으며, 지원 티켓을 제출해야 할 경우 도움을 드릴 수 있습니다.
NGINX Plus를 사용해보지 않으셨다면 웹 가속, 부하 분산, 애플리케이션 전송을 위해 사용해보시거나, 향상된 모니터링 과 동적 재구성을 위한 API를 갖춘 완벽하게 지원되는 웹 서버로 사용해보시기 바랍니다. 오늘 무료 30일 체험판을 시작하고 NGINX Plus가 어떻게 귀하의 애플리케이션을 제공하고 확장하는 데 도움이 될 수 있는지 직접 확인해 보세요.
편집자 - NGINX Plus R9의 주요 새로운 기능에 대한 자세한 내용은 다음 관련 리소스를 참조하세요.
"이 블로그 게시물에는 더 이상 사용할 수 없거나 더 이상 지원되지 않는 제품이 참조될 수 있습니다. 사용 가능한 F5 NGINX 제품과 솔루션에 대한 최신 정보를 보려면 NGINX 제품군을 살펴보세요. NGINX는 이제 F5의 일부가 되었습니다. 이전의 모든 NGINX.com 링크는 F5.com의 유사한 NGINX 콘텐츠로 리디렉션됩니다."