일래스틱서치 아키텍처에 대한 일반적인 구성과 검색 환경에서 사용할 수 있는 아키텍처가 있을 수 있다.



일래스틱서치 문서에 있는 대로 일래스틱서치는 클러스터링이 가능하다. 따라서 보통 아래 그림 1과 같이 검색노드, 데이터노드, 모니터링 노드를 나누어서 사용하는 구조를 가진다. 



<그림 1> 전통적인 일래스틱서치 아키텍처





일반적이지 않은 아키텍처이지만, 검색환경에서 사용할 수 있는 구조는 그림 2에 있다. 각 일래스틱서치는 standalone으로 실행할 수 있고, nginx에 앞단에 두어 서비스할 수 있다. HTTP 9200 포트가 아닌 HTTP 80으로 요청을 보낼 수 있으며(proxy pass), L7 health  check를 추가할 수 있다. 또한 특정 시간 내로 처리되지 못하면 요청을 timeout할 수 있다. 즉, nginx의 장점을 잘 활용할 수 있다.




일래스틱서치가 오래 걸리는 슬로우 쿼리만 볼 수 있지만, nginx을 두어 추세나 요청 건수를 확인할 수 있다. 일래스틱서치의 모니터링을 더 확보할 수 있는 장점이 있다. 클러스터링의 단점은 master->data node의 연결이 없기 때문에 조금 더 빠른 속도로 진행할 수 있다. replica 없이 샤드 한개로의 작업이 문제없었다. 그러나, 단점은 클러스터링 이슈이다. 특별히 integrity를 보장하기 위한 작업이 필요하며, snapshot/backup을 통해 서버 재시작/점검에도 데이터가 잃지 않도록 하는 작업이 특별히 필요했다. 



Posted by '김용환'
,