카테고리 없음

클러스터, 노드, 인덱스, 샤드

라우브 2021. 5. 13. 00:16

클러스터, 노드, 인덱스, 샤드

Node

Elastic search 서버가 실행되는 서버 단위를 Node라고 한다.

물론, 하나의 서버에 여러 노드를 실행할 수 있지만 이는 권장하지 않는다. (가용성을 위해)

 

Cluster

하나 이상의 Node로 구성된 Node들의 묶음 단위. 

cluster.name 설정값으로 구분한다.

 

Index

관계형 데이터베이스에서 Database에 해당하는 Component이다. 인덱스는 Shard라는 단위로 분리되어 저장된다. 

Shard

관계형 데이터베이스에서 Partition에 해당하는 Component이다. 샤드가 루씬의 단일 검색 인스턴스이다.

 

프라이머리 샤드와 복제본(Primary shard & Replica)

처음 생성된 샤드를 Primary Shard, 복제본은 Replica라고 부른다.

(7.0 이후 버전은 디폴트로 샤드 1개, 6.x 이하 버전에서는 5개로 구성)

 

샤드의 개수는 인덱스를 처음 생성할 때 지정할 수 있다. 또한, 프라이머리 샤드 수는 인덱스를 처음 생성할 때 지정하고, 인덱스를 재색인 하지 않는 이상은 바꿀 수 없다.

 

장애 상황

정상적인 상황.

 

 위 그림처럼 Node-3에 장애가 발생하더라도, Node-1과 Node-2가 Node-3이 가지고 있던 0,4번 샤드에 대한 정보를 가지고 있기 때문에

데이터 유실이 생기지 않는다.

 

또한, Node-1과 Node-2가 가지고 있던 0, 4번 샤드 정보를 남아있는 노드들에게 적절히 분배하여 기존의 샤드 수(총 10개)를 유지할 수 있다.

 

장애 복구 매커니즘

  1. 유실된 노드가 복구되기를 기다림
  2. 타임아웃 시 유실된 노드가 복구되지 않는다 판단하여, 장애 서버가 가지고 있던 인덱스와 동일한 데이터를 가지고 있는 노드를 찾고 찾은 노드에서 샤드를 복사.
  3. 복사한 데이터를 살아있는 노드들에게 적절히 분배.

*프라이머리 샤드가 유실된 경우에는 새로 프라이머리 샤드를 생성하는 것이 아니라, 남아있던 복제본이 프라이머리 샤드로 승격이 되고, 다른 노드에 새로운 복제본을 생성함

 

 

Reference: https://esbook.kimjmin.net/03-cluster/3.2-index-and-shards