로드 밸런싱은 트래픽을 여러 서버에 배포하여 응용 프로그램의 성능 및 가용성을 높이는 것입니다. Nginx는 다른 알고리즘을 사용하여 폴링, IP 해싱 및 최소 연결을 포함하여 요청 트래픽을 처리합니다.
(1) Round Robin : 이것은 Nginx의 기본 부하 밸런싱 정책이며 요청은 서버 순서대로 할당됩니다.
(2) IP HASH :이 정책은 클라이언트 IP 주소를 기반으로 요청한 대상 서버를 결정하여 동일한 IP에 대한 요청이 항상 동일한 서버에 의해 처리되는지 확인합니다.
(3) 최소 연결 :이 정책은 현재 가장 낮은 연결로 서버에 요청을 할당합니다.
간단한 NGINX로드 밸런싱 구성 예는 다음과 같습니다.
http { 상류 백엔드 { Server Backend1.example.com; Server Backend2.example.com; Server Backend3.example.com; } 서버 { 80; 위치 / { proxy_pass http : // 백엔드; } } }
이 구성에서는 3 개의 백엔드 서버가 포함 된 업스트림 블록을 정의하고 Proxy_Pass 지시문을 통해 백엔드 서버로 요청을 전달합니다.
재해 복구 계획은 서버가 실패 할 때 시스템이 여전히 서비스를 제공 할 수 있도록합니다. Nginx로드 밸런싱을 사용하면 다음과 같은 방법으로 재해 복구를 달성 할 수 있습니다.
(1) 건강 점검 : Nginx는 백엔드 서버의 건강 상태를 정기적으로 점검 할 수 있습니다. 서버가 응답하지 않거나 오류를 반환하는 경우 Nginx는 트래픽을 다른 건강한 서버로 자동 전달합니다.
다음은 건강 검사 구성의 예입니다.
http { 상류 백엔드 { Server Backend1.example.com Max_Fails = 2 FAIL_TIMEOUT = 30S; Server backend2.example.com max_fails = 2 FAIL_TIMEOUT = 30S; Server Backend3.example.com Max_Fails = 2 FAIL_TIMEOUT = 30S; 점검 간격 = 3000 상승 = 2 가을 = 5 타임 아웃 = 1000; check_http_send "헤드 /체크 http /1.0"; check_http_expect_alive http_2xx http_3xx; } 서버 { 80; 위치 / { proxy_pass http : // 백엔드; } } }
이 구성에서는 각 백엔드 서버에 대한 최대 실패 수 (Max_Fail) 및 실패 시간 초과 (실패)를 설정합니다. 서버가 미리 정해진 횟수 이상으로 지속적으로 실패하면 Nginx는이를 사용할 수없는 것으로 표시합니다.
(2) 백업 서버 : 모든 기본 서버를 사용할 수없는 경우 Nginx는 트래픽을 사전 구성된 백업 서버로 전달합니다.
다음은 백업 서버 구성의 예입니다.
http { 상류 백엔드 { Server Backend1.example.com 백업; Server Backend2.example.com; Server Backend3.example.com; } 서버 { 80; 위치 / { proxy_pass http : // 백엔드; } } }
이 예에서 Backend1.example.com은 백업 서버로 구성됩니다.
NGINX 구성 관리를 단순화하려면 자동화 도구 및 스크립트를 사용하면 구성 파일을 자동으로 생성하고 업데이트 할 수 있습니다. 두 가지 일반적인 자동화 방법은 다음과 같습니다.
(1) Nginx Plus : Nginx Plus는 공식 상업 버전으로 동적 구성 관리, 결함 감지,로드 밸런싱 등과 같은 고급 기능을 제공하며 API 게이트웨이, 캐시 및 기타 시스템과 통합 할 수 있습니다.
(2) LUA 스크립트 사용 : NGINX는 LUA 스크립트를 통해 구성 파일 생성을 지원하므로 구성을 자동화하는 유연한 방법을 제공합니다.
다음은 LUA 스크립트를 사용하여 nginx 구성을 생성하는 예입니다.
- Generate_backend.lua 로컬 백엔드 _servers = { "backend1.example.com", "backend2.example.com", "backend3.example.com" } 로컬 업스트림 = "업스트림 백엔드 {\ n" i의 경우 ipairs (backend_servers)의 서버 업스트림 = 업스트림 .. "Server".. Server .. "; \ N" 끝 업스트림 = 업스트림 .. "} \ n" 인쇄 (상류)
이 예에서 LUA 스크립트는 3 개의 백엔드 서버를 포함하는 상류 블록을 생성합니다.
다음 명령을 통해 스크립트를 실행하고 구성 파일을 생성 할 수 있습니다.
$ lua generate_backend.lua> nginx.conf
합리적인 구성 및 자동화 된 관리를 통해 NGINX의로드 밸런싱 기능은 애플리케이션 성능을 향상시킬뿐만 아니라 시스템의 재해 복구 기능과 유지 관리를 향상시킬 수 있습니다.