UDP 로드 밸런싱 NGINX 및 NGINX Plus로 사용하기
NGINX 오픈소스 및 애플리케이션 제공 플랫폼인 NGINX Plus에 UDP 로드 밸런싱 이라는 새롭고 흥미로운 기능을 추가하게 된 것을 기쁘게 생각합니다.
이 새로운 기능은 기존 TCP 및 HTTP 기능을 향상시켜 NGINX를 훨씬 더 광범위한 인터넷 애플리케이션 및 장치를 위한 더욱 강력하고 사용자 친화적이며 신뢰할 수 있는 프론트엔드로 만듭니다.
이미 세계에서 가장 바쁜 애플리케이션의 절반 이상을 지원하고 있는 로드 밸런싱 기능을 사물 인터넷(IoT)을 개발하는 새로운 사용자 그룹으로 확장하게 되어 기쁩니다.
목차
1. UDP 로드 밸런싱을 지원해야 하는 이유
2. UDP 로드 밸런싱, 어떻게 작동할까요?
3. UDP 로드 밸런싱 사용 사례
4. 시작하기
1. UDP 로드 밸런싱을 지원해야 하는 이유
HTTP는 대부분의 인터넷 애플리케이션의 기초이지만 일부 애플리케이션은 다양한 목적을 위해 여러 프로토콜을 필요로 하며 많은 핵심 인터넷 프로토콜이 HTTP보다 앞서 있습니다.
완전한 로드 밸런싱 및 리버스 프록싱 솔루션은 TCP 기반 및 UDP 기반의 광범위한 프로토콜을 지원해야 합니다.
UDP는 DNS, syslog 및 RADIUS와 같은 비 트랜잭션 용도로 사용되는 경량 프로토콜입니다.
이러한 프로토콜에 대한 신뢰성은 엄격하지 않지만 인터넷 서비스의 올바른 작동을 위해서는 서비스가 중요합니다.
UDP는 낮은 대역폭 요구 사항으로 인해 새로운 IoT 응용 분야에서도 인기를 얻고 있습니다.
NGINX는 TCP 로드 밸런싱을 도입했으며 기능에 UDP 로드 밸런싱을 추가되어 있습니다.
NGINX 및 NGINX Plus를 통해 사용자는 신뢰성, 확장성 및 성능을 갖춘 UDP 기반 서비스를 제공할 수 있습니다.
2. UDP 로드 밸런싱, 어떻게 작동할까요?
NGINX는 관리자가 정의한 하나 이상의 주소(IP 주소 및 포트)에서 DNS, syslog 및 RADIUS와 같은 프로토콜에 대한 UDP 네트워크 트래픽을 수신할 수 있습니다.
이 주소는 클라이언트가 원하는 서비스에 대한 요청을 보낼 위치를 알 수 있도록 게시됩니다.
HTTP 및 TCP 로드 밸런싱의 경우 UDP 로드 밸런싱 구성은 UDP 기반 서비스를 제공하는 Origin 서버 집합인 업스트림 그룹과 서버 간 트래픽을 로드 밸런싱할 때 사용할 알고리즘(예: 라운드 로빈, 최소 연결 또는 Source IP 주소 기반 해시)을 정의합니다. 또한 이 구성은 연결된 서비스를 제공하는 업스트림 그룹의 이름을 proxy_pass
지시문으로 지정하여 각 UDP 포트에 대한 가상 서버를 정의합니다.
# Load balance UDP‑based DNS traffic across two servers
stream {
upstream dns_upstreams {
server 192.168.136.130:53;
server 192.168.136.131:53;
}
server {
listen 53 udp;
proxy_pass dns_upstreams;
proxy_timeout 1s;
proxy_responses 1;
error_log logs/dns.log;
}
NGINX는 특정 포트(예: 53번 포트의 DNS 쿼리)에서 UDP 데이터그램을 수신하면, 미리 설정된 로드 밸런싱 알고리즘(여기서는 기본 라운드 로빈)을 사용하여 어떤 서버가 해당 데이터그램을 처리할지 선택합니다.
적절한 경우, NGINX는 서버로부터 응답을 기다리고 해당 응답(및 제한 시간 내에 수신된 다음 패킷)을 클라이언트에게 전달합니다.
서버가 요청에 응답하지 않으면, NGINX는 해당 서버를 ‘실패한’ 것으로 표시하고 일시적으로 해당 서버로 데이터그램을 전송하지 않습니다. 몇 초마다 NGINX는 작은 양의 실시간 트래픽을 보내서 서버의 상태를 확인하여 회복되었는지 확인합니다.
NGINX Plus에는 HTTP 및 TCP 트래픽과 유사한 UDP 서비스용 애플리케이션(또는 비동기 또는 합성) Health Check가 포함됩니다. NGINX Plus를 구성하여 업스트림 서버로 특수 UDP 요청을 보내고, 서버가 건강하게 인식되는 데 필요한 응답 유형을 정의할 수 있습니다.
UDP 로드 밸런싱을 지원하는 다른 기능으로는 웹 서버 스타일의 Access log에 대한 트랜잭션 로깅,
IP 주소 기반의 액세스 제어 목록(ACL) 및 다양한 속도 제한(Rate Limit) 기능이 있습니다.
NGINX Plus의 상태 모듈에서 제공되는 라이브 활동 모니터링 통계에는 UDP 메트릭이 포함되며,
HTTP 기반 API 및 DNS를 사용하여 HTTP 및 TCP 서버와 마찬가지로 UDP 업스트림 그룹을 실시간으로 재구성할 수 있습니다.
3. UDP 로드 밸런싱 사용 사례
UDP 로드 밸런싱은 두 가지 주요 사용 사례, 즉 고 가용성 및 수평적 확장을 해결합니다.
UDP는 데이터의 종단 간 전달을 보장하지 않기 때문에 클라이언트 소프트웨어가 네트워크 수준의 오류와 재전송을 처리해야 합니다. UDP 기반 프로토콜은 일반적으로 두 대의 서버를 정의합니다.
클라이언트가 선호하는 서버에 연결할 수 없는 경우, 다른 서버를 시도하기 전에 정의된 타임아웃 기간 동안 기다려야 합니다. 이로 인해 UDP 거래에 오랜 지연이 발생할 수 있습니다
NGINX 또는 NGINX Plus를 UDP 서버 앞에 고가용성 및 신뢰성있는 로드 밸런서로 배치함으로써 이러한 지연을 제거하거나 줄일 수 있습니다. 클라이언트는 UDP 요청을 NGINX 또는 NGINX Plus 로드 밸런서로 보내고, 로드 밸런서는 UDP 서버의 상태와 가용성을 모니터링하며 실패한 서버 또는 과부하 상태인 서버에 요청을 보내지 않습니다.
이로 인해 클라이언트는 연결 또는 요청 실패를 경험하지 않으며, 재시도 요청에 따른 지연도 겪지 않습니다.
NGINX 또는 NGINX Plus를 로드 밸런서로 사용하면 UDP 애플리케이션을 처리하는 데 필요한 대규모 트래픽 처리가 가능해집니다.
일반적인 UDP 배포에서 클라이언트는 최대 두 개의 UDP 서버를 인식할 수 있지만, 고수요를 충족하기 위한 확장에는 더 많은 UDP 서버가 필요합니다. 이 경우, 클라이언트는 알려진 하나 또는 두 개의 NGINX 또는 NGINX Plus 인스턴스로 UDP 요청을 보내고, 요청을 더 많은 UDP 서버로 로드 밸런싱하여 트래픽을 처리합니다.
NGINX 및 NGINX Plus를 사용한 UDP 로드 밸런싱은 데이터를 보내고 선택적으로 하나 이상의 응답을 기대하는 모든 UDP 기반 애플리케이션에 적합합니다.
또한 IoT 환경에서 발견되는 전용 UDP 기반 프로토콜도 로드 밸런싱이 가능합니다.
4. 시작하기
UDP 로드 밸런싱이 NGINX에서 구체적으로 이용 가능한 시기는 다음과 같습니다.
- NGINX는 UDP 로드 밸런싱의 첫 번째 버전 코드를 오픈소스 NGINX 소프트웨어 저장소에 제공하기로 약속했습니다. 초기 사용자 및 구현을 테스트하려는 사용자는 소스를 복제하고 UDP 로드 밸런싱 기능을 갖춘 NGINX 이진 파일을 빌드할 수 있습니다.
- NGINX 버전 1.9.13에서 부터 UDP 로드 밸런싱이 포함되었습니다.(그 버전을 기반으로 한 미리 빌드된 이진 파일도 마찬가지입니다).
- NGINX Plus 릴리스 9(R9) 이상 버전부터 UDP 로드 밸런싱이 포함되어 있습니다.
NGINX의 상용 솔루션인 NGINX Plus는 오픈소스에서 UDP 로드 밸런싱 기능을 추가적으로 확장하고 신뢰성이 높고 확장성 있는 UDP 기반 서비스를 구축하고 모니터링하는 기능을 제공합니다.
NGINX와 NGINX Plus는 다양한 인터넷 프로토콜을 위한 완전한 로드 밸런싱 및 애플리케이션 전달 플랫폼을 제공합니다. HTTP 기반 애플리케이션, 하위 수준 TCP 애플리케이션 또는 UDP 기반 프로토콜을 전달하는 경우에도 NGINX와 NGINX Plus를 신뢰할 수 있습니다.
이들은 하나의 경량 애플리케이션에서 고가용성, 신뢰성, 확장성 및 성능을 제공합니다.
새로운 UDP 로드 밸런싱 기능과 그것이 새로운 기기에 대한 고성능 로드 밸런싱과 완벽한 애플리케이션 전달을 가져올 수 있는 잠재력에 대해 매우 기대하고 있습니다.
UDP 로드 밸런싱을 통해 NGINX Plus에 친숙해지고 싶으세요? 30일 무료 평가판을 시작하거나 사용 사례에 대해 논의하기 위해 저희에게 연락하세요.
아래 뉴스레터를 구독하여 NGINX Plus의 최신 소식을 빠르게 전달 받아보세요.