일래스틱서치 아키텍처에 대한 일반적인 구성과 검색 환경에서 사용할 수 있는 아키텍처가 있을 수 있다.
일래스틱서치 문서에 있는 대로 일래스틱서치는 클러스터링이 가능하다. 따라서 보통 아래 그림 1과 같이 검색노드, 데이터노드, 모니터링 노드를 나누어서 사용하는 구조를 가진다.
<그림 1> 전통적인 일래스틱서치 아키텍처
일반적이지 않은 아키텍처이지만, 검색환경에서 사용할 수 있는 구조는 그림 2에 있다. 각 일래스틱서치는 standalone으로 실행할 수 있고, nginx에 앞단에 두어 서비스할 수 있다. HTTP 9200 포트가 아닌 HTTP 80으로 요청을 보낼 수 있으며(proxy pass), L7 health check를 추가할 수 있다. 또한 특정 시간 내로 처리되지 못하면 요청을 timeout할 수 있다. 즉, nginx의 장점을 잘 활용할 수 있다.
일래스틱서치가 오래 걸리는 슬로우 쿼리만 볼 수 있지만, nginx을 두어 추세나 요청 건수를 확인할 수 있다. 일래스틱서치의 모니터링을 더 확보할 수 있는 장점이 있다. 클러스터링의 단점은 master->data node의 연결이 없기 때문에 조금 더 빠른 속도로 진행할 수 있다. replica 없이 샤드 한개로의 작업이 문제없었다. 그러나, 단점은 클러스터링 이슈이다. 특별히 integrity를 보장하기 위한 작업이 필요하며, snapshot/backup을 통해 서버 재시작/점검에도 데이터가 잃지 않도록 하는 작업이 특별히 필요했다.
'Elasticsearch' 카테고리의 다른 글
[elasticsearch] optimize api (0) | 2015.08.26 |
---|---|
[elaseticsearch] 플러그인 개발 및 python 좋은 자료 (0) | 2015.08.25 |
[elasticsearch] 일래스틱서치 프로토콜과 포트 (0) | 2015.08.25 |
[elasticsearch] scroll (0) | 2015.08.15 |
[Elasticsearch] 운영시 주의 사항 - Out of Memory 발생 (0) | 2015.08.14 |