Elasticsearch + NGINX 배포 가이드
Elasticsearch 는 구조화되지 않은 데이터와 구조화된 데이터에 대한 전문 검색 및 실시간 분석을 제공하는 고급, 고성능 및 확장 가능한 오픈소스 검색 엔진입니다. NGINX Plus 는 매우 높은 동시성으로 우수한 성능으로 HTTP 트래픽을 로드 밸런싱하기 때문에, Elasticsearch 서버를 여러 대로 확장하는 경우에 리버스 프록시 로드 밸런서로 사용하기에 이상적입니다.
RESTful API를 통해 제공되는 기능을 사용하여 현대적인 웹 아키텍처에 쉽게 통합할 수 있습니다.
목차
1. Elasticsearch 로 NGINX Plus 를 배포할 때 이점
1-1. Elasticsearch client, NGINX 오픈소스, NGINX Plus 기능 비교
2. Elasticsearch 로 NGINX Plus 배포
3. 요약
1. Elasticsearch 로 NGINX Plus 를 배포할 때 이점
Elasticsearch는 확장성을 위해 몇 가지 기능을 갖추고 있지만, 요청의 로드 밸런싱을 NGINX 오픈소스 또는 NGINX Plus에 맡겨 Elasticsearch 서버의 리소스를 해방할 수 있습니다.
NGINX 또는 NGINX Plus를 단일 서버 앞에 배치하면 요청 로깅과 같은 이점을 제공하지만, 여러 개의 Elasticsearch 서버로 확장할 때 진정한 가치가 발휘됩니다.

NGINX와 NGINX Plus는 API 요청마다 로깅하는 것 외에도 다음과 같은 기능을 제공합니다.
- 매우 많은 클라이언트 연결을 지원하며, Elasticsearch 서버에는 훨씬 적은 수의 지속적인 연결을 유지합니다(keepalive를 사용).
- Elasticsearch 서버 간에 요청을 로드 밸런싱합니다.
- 동일한 콘텐츠에 대한 반복적인 Elasticsearch 서버 요청을 줄이기 위해 데이터를 로컬로 캐시합니다. NGINX Plus는 캐시에서 객체를 삭제하기 위한 HTTP API도 제공합니다.
- (NGINX Plus 전용) 서버가 작동 중인지 지속적으로 확인하기 위해 애플리케이션 상태 확인을 제공합니다.
다운된 서버는 자동으로 로드 밸런싱 회전에서 제거되고, 다시 작동할 때 다시 추가됩니다. - (NGINX Plus 전용) 모니터링과 관리를 개선하기 위해 다양한 실시간 메트릭을 보고합니다. 메트릭의 데모는 demo.nginx.com에서 확인할 수 있습니다.
- (NGINX Plus 전용) NGINX Plus API를 통해 업스트림 서버 그룹의 동적 재구성을 지원합니다.
업스트림 그룹에 서버를 추가하거나 제거하고, 상태를 변경하거나 가중치를 조정할 수 있습니다.
1-1. Elasticsearch client, NGINX 오픈소스, NGINX Plus 기능 비교
다음 표는 Elasticsearch 자체로 사용할 때와 NGINX 오픈 소스 및 NGINX Plus와 결합하여 사용할 때의 기능을 비교합니다.
Elasticsearch client | NGINX 오픈소스 | NGINX Plus | |
---|---|---|---|
수평적 확장성 | ✅ | ✅ | ✅ |
Keepalive 최적화 | ❌ | ✅ | ✅ |
중앙 집중식 HTTP 액세스 로그 | ❌ | ✅ | ✅ |
대기열 및 동시성 제어 | ❌ | ❌ | ✅ |
Response caching | ❌ | ✅ | ✅ |
실패한 연결의 Failover | ✅ | ✅ | ✅ |
Elasticsearch 노드의 Active Monitoring | ✅ (some clients) | ❌ | ✅ |
고급 로드 밸런싱 메소드 | ❌ | ✅ | ✅ |
가중 로드 밸런싱 | ❌ | ✅ | ✅ |
동적 재구성 | ❌ | ❌ | ✅ |
Status monitoring | ❌ | ❌ | ✅ |
범용 HTTP 로드 밸런싱 | ❌ | ✅ | ✅ |
NGINX Plus를 고가용성 (HA) Active-passive 구성으로 사용하여 클러스터의 로드 밸런싱을 수행할 때, 또 다른 이점은 Elasticsearch 클라이언트를 Elasticsearch 서버가 아닌 NGINX Plus로 요청을 보낼 수 있다는 것입니다.
이는 클러스터를 필요에 따라 확장할 수 있으며 클라이언트를 업데이트하지 않아도 되는 것을 의미합니다.
2. Elasticsearch 로 NGINX Plus 배포
NGINX Plus를 Elasticsearch와 함께 배포하는 것은 매우 간단합니다.
다음 샘플 NGINX Plus 구성의 지시문은 두 개의 서버에 대한 로드 밸런싱 설정을 정의합니다.
- upstream – IP 주소가 192.168.187.132와 192.168.187.133이며 포트 9200에서 수신 대기하는 두 개의 Elasticsearch 서버에 대해 요청을 로드 밸런싱합니다.
- proxy_cache_valid – 유효한 응답은 10분 동안 캐시하고, 404 응답은 1분 동안 캐시합니다.
- health_check – 서버의 상태를 활성적으로 확인하여, 서버가 다운되었을 때 로드 밸런싱 회전에서 제외하고, 다시 정상적으로 동작할 때 로테이션에 추가합니다.
health_check는 match 블록을 참조하는데, 이는 서버가 상태 코드 200을 반환하는 것뿐만 아니라 응답이 JSON 형식으로 포맷되어 있고 Elasticsearch에서 기대하는 문자열을 반환하는지 확인합니다.
"status" : 200
- Final server block – NGINX Plus API를 활성화하여 통계를 수집하고, 대시보드.html 페이지에 대한 요청을 처리하기 위해 포트 8080에서 수신 대기합니다. 이 페이지는 통계를 표시합니다.
# in the 'http' context
proxy_cache_path /var/cache/nginx/cache keys_zone=elasticsearch:10m inactive=60m;
upstream elasticsearch_servers {
zone elasticsearch_servers 64K;
server 192.168.187.132:9200;
server 192.168.187.133:9200;
}
match statusok {
status 200;
header Content-Type ~ "application/json";
body ~ '"status" : 200';
}
server {
listen 9200;
status_zone elasticsearch;
location / {
proxy_pass http://elasticsearch_servers;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_cache elasticsearch;
proxy_cache_valid 200 302 10m;
proxy_cache_valid 404 1m;
proxy_connect_timeout 5s;
proxy_read_timeout 10s;
health_check interval=5s fails=1 passes=1 uri=/ match=statusok;
}
# redirect server error pages to the static page /50x.html
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
access_log logs/es_access.log combined;
}
server {
listen 8080;
root /usr/share/nginx/html;
location = /api {
api write=on;
# directives to restrict access to authorized networks or users
}
location / {
index dashboard.html;
}
}
3. 요약
강력하고 유연한 검색 엔진인 Elasticsearch와 엔터프라이즈급 애플리케이션 전달 플랫폼인 NGINX Plus는 확장 가능한 모던 웹 아키텍처의 구성 요소로서 자연스럽게 결합됩니다. 이 소프트웨어 제품들은 어디에 설치하든 동일한 기능과 기능을 제공합니다. 베어메탈 서버, 가상 머신, 클라우드 또는 컨테이너에 설치하더라도 동일합니다.
NGINX Plus를 Elasticsearch와 함께 사용해보려면 NGINX Plus의 무료 30일 체험판을 시작하거나 사용 사례에 대해 문의하여 상담하세요.
아래 뉴스레터를 구독하고 NGINX와 NGINX STORE의 최신 정보들을 빠르게 전달 받아보세요.
댓글을 달려면 로그인해야 합니다.