본문 바로가기

IT/Elasticsearch

[Elasticsearch] 스케일 아웃

#노드 해체하기


curl -XPUT 'localhost:9200/_cluster/settings' -d '{

"transient" : {

"cluster.routing.allocation.exclude._ip" : "192.168.1.10"

}

}'

 - 재시작을 원하는 노드를 그냥 종료하면 데이터의 손실이다. 위와같이 하면 (192.168.1.10은 해당 노드의 ip) 노드의 데이터들을 다른 노드들이 나눠가지면서 클러스터 green 상태를 유지하면서 재시작이 가능하다.


### 일반적으로 루씬 색인은 21억건 이상의 문서 혹은 2740억건 이상의 고유 텀들을 가질 수 없다. (p410)


#롤링 리스타트

 - 노드 업그레이드 혹은 설정값을 바꿀 때, 데이터 가용성을 해치지 않으면서 재구동을 하는 방법이다. 과정은 다음과 같다.

   1. 클러스터의 allocation을 비활성화

   2. 업그레이드할 노드를 정지

   3. 노드 업그레이드

   4. 업그레이드된 노드 구동

   5. 업그레이드된 노드가 클러스터에 추가되기를 기다림

   6. 클러스터의 allocation을 활성화

   7. 클러스터가 그린 상태가 되기를 기다림


 - allocation이라는 것은 노드의 리밸런싱을 의미한다. 비활성화/활성화 방법은 다음과 같다.

curl -XPUT 'localhost:9200/_cluster/settings' -d '{

"transient" : {

"cluster.routing.allocation.enable" : "none"

}

}'

curl -XPUT 'localhost:9200/_cluster/settings' -d '{

"transient" : {

"cluster.routing.allocation.enable" : "all"

}

}'


#_cat API 사용하기


 - 클러스터의 상태를 떠 좋은 가독성을 가지고 보여준다.

curl -XGET 'localhost:9200/_cat/health?v'

 - 노드의 상태를 보여준다.

curl -XGET 'localhost:9200/_cat/nodes?v'

 - _cat API 명령들

allocation - 각 노드에 할당된 샤드의 수

count - 전체 클러스터 혹은 색인의 문서의 수

health - 클러스터 상태

indices - 색인들에 관한 정보

master - 어떤 노드가 현재 마스터로 선출되었는지

nodes - 클러스터 내의 모든 노데 대한 다양한 정보

recovery - 클러스터에서 현재 진행되고 있는 리커버리 작업들의 상태

shards - 클러스터 내 샤드들의 크기, 수, 이름

plugins - 설치된 플러그인에 관한 정보