cluster and nodes
elastic - cluster
- elastic search 구성방법
- 클러스터 : 여러 대의 컴퓨터를 병렬로 연결해 하나의 시스템을 구성하는 것을 말한다 - 여러 노드의 집합
- 노드
- 노드의 통신모듈 2가지
- transport(전송)모듈 : 클러스터 내부에서 노드와 노드간의 통신에 사용
- http(외부통신)모듈 : 노드와 외부 클라이언트간의 통신에 사용
- 노드의 통신모듈 2가지
- 노드, 샤드, 설정
- 노드
- 물리서버 하나에 노드 하나를 구성하는 방식을 권장
- 노드
- 노드
- 마스터 노드
- 인덱스의 설정, 매핑정보와 물리적인 위치, 클러스터의 설정정보나 인덱스 템플릿 정보등 클러스터의 모든 상태정보를 관리
- 후보 선출과정
- 사용자 지정 방식이 아니라, 투표에 의해서 결정되는 방식
- 과반수가 넘는 경우 마스터노드로 선출된다.
- 마스터노드가 나갔다 들어오면 그 사이 선출된 마스터가 그대로 마스터한다.
- 스플릿 브레인 : 네트워크 장애로 클러스터가 분리되는 경우 각각의 클러스터에서 마스터 노드를 선출한다.
- 투표 전용 노드 : 마스터 후보 노드들이 대량으로 장애가 발생하는 경우 시스템이 멈추지 않고 동작할 수 있다.
- 데이터 노드
- 인덱싱한 도큐먼트를 샤드 형태로 저장하여 데이터의 CRUD 작업과 검색, 집계작업을 한다.
- 마스터 노드와 데이터 노드의 역할을 분리한다.
- 항상 모니터링하면서 부하를 체크하고, 샤드를 재분배해주어야 한다.
- 인제스트 노드
- 도큐먼트의 가공과 정제를 위한 노드 : 복잡한 가공이 아니라면 오히려 로그스테쉬 설치 없이 가능하다는 장점이 있다.
- 데이터 가공을 많이 하는 시스템이라면 별도의 인제스트 노드를 구성하는 것이 좋다.
- 파이프라인과 프로세서의 사용법
- 파이프라인 : 도큐먼트를 변형할 수 있는 모듈 프로세서의 집합
- 프로세서 : 도큐먼트를 원하는 형태로 변경할 수 있는 작은 컴포넌트들 - date, drop, grok, set, split
- 머신러닝 노드
- 유료, 이상탐지기능
- 코디네이터 노드
- 모든 노드가 코디네이터 노드 역할을 수행할 수 있으며, REST-API요청을 처리하는 역할을 한다. 규모가 크고 복잡한 검색에서는 각 데이터 노드가 계산된 결과에 집중할 수 있도록 load-balancing 및 요청 라우팅, 캐싱에 유리한 코디네이터 노드를 두는것이 좋다.
- 마스터 노드
- 전용 노드를 최적화하여 구성하는 방법
- 노드 역할에 따라 전용노드를 구성하면 최적화가 가능하기 때문에, 대규모 시스템의 경우 전용노드를 활용해 시스템을 구성하는 것이 좋다.
- 각 노드에 따른 하드웨어도 다른 방식으로 구현할 수 있다.
- 규모에 따른 전용노드 구성 방법
- 소규모 클러스터(3~5대 노드)
- 총 5개의 데이터 노드. 그중 3개는 마스터 후보노드이면서 데이터 노드 역할.
- 대규모 클러스터
- 정답은 없다. 하지만 노드를 효율적으로 관리하기 위해서는 전용노드를 최대한 잘 활용하는 것이 중요하다.
- 소규모 클러스터(3~5대 노드)
- 핫/웜 노드를 구성하는 방법
- 핫(hot), 웜(warm), 콜드(cold)
- 샤드 할당 필터링(shard allocation filtering)
- 속성(테그)를 달아 저장하는 방법
- ILM(index lifecycle management)에서 관리
- 데이터 티어(data tier)
- 스냅샷
- 안정적인 시스템 구성을 위해 데이터 백업을 지원한다 -> elasticsearch는 데이터 백업을 위해 스냅샷을 지원
- 레포지토리는 파일시스템, 하둡, s3등 여러가지를 지원함
- 스냅샷 운영주기는 SLM(snapshot lifecycle management) 가 관리한다.
- 샤드
- 프라이머리 샤드
- 레플리카 샤드
- 인덱스 할당방법
- 노드 추가와 삭제시 샤드가 어떻게 변경되는지
- 성능 최적화를 위한 샤드 개수와 샤드 크기 결정방법
- rollover API, shrink API
- 샤드관리
- https://www.elastic.co/kr/blog/how-many-shards-should-i-have-in-my-elasticsearch-cluster
elastic - cluster
- elastic search 구성방법
- 노드, 샤드, 설정
- 노드
- 마스터 노드
- 후보 선출과정
- 데이터 노드
- 인제스트 노드
- 파이프라인과 프로세서의 사용법
- 마스터 노드
- 전용 노드를 최적화하여 구성하는 방법
- 규모에 따른 전용노드 구성 방법
- 핫/웜 노드를 구성하는 방법
- 스냅샷
- 샤드
- 프라이머리 샤드
- 레플리카 샤드
- 인덱스 할당방법
- 노드 추가와 삭제시 샤드가 어떻게 변경되는지
- 성능 최적화를 위한 샤드 개수와 샤드 크기 결정방법
- rollover API, shrink API
- 샤드관리
- https://www.elastic.co/kr/blog/how-many-shards-should-i-have-in-my-elasticsearch-cluster