Search

[ES] Elasticsearch 색인 과정 + shard 배치 연계

이번 글에서는 색인에 대해서 자세히 정리하기 보다는, 문서가 들어왔을 때 색인되는 과정과 Elasticsearch shard 배치와 연관 지어서 전체적인 흐름을 정리해보려 한다.

색인(Indexing) 이란?

문서를 분석하고 저장하는 과정을 색인이라고 정의한다. Elasticsearch에서 문서를 분석하고 저장하는 일련의 과정을 색인 이라고 한다.
한 클러스터 안에 3개의 노드가 있고 특정 인덱스가 4개의 샤드로 구성 되어 있다면 아래와 같은 이미지의 형태를 하고 있을 것 이다.
Primary shard는 실제 데이터를 저장하는 기본 단위이며 Replica shard는 Primary shard의 복사본이다. Primary shard와 Replica shard는 장애 복구나 백업, 읽기 부하 분산용으로 반드시 다른 노드에 위치해 있어야 한다.
이때 클라이언트가 문서 색인을 요청하면 Elasticsearch는 문서 ID와 샤드 수를 기반으로 어느 Primary 샤드에 저장할지를 결정한다.
Primary 샤드에 색인이 실행되게 되고 성공하면 → Replica 샤드로 색인 요청이 복제된다.
이후 Replica 샤드로 복제가 성공하게 되면 사용자에게 200 OK 또는 201 Created 응답을 반환하게 된다.
만약 특정 노드가 다운돼서 해당 노드에 있는 샤드가 유실이 된다면 다른 노드들에 서 복제를 해서 데이터의 유실없이 사용할 수가 있다.
3번 노드가 다운된 상황에서 1번과 3번 Primary 샤드는 다른 노드에 복제본을 생성하게 되고, 2번 Replica 샤드는 Primary 샤드로 승격하고 이 후 Replica 샤드를 생성하게 된다.
1번, 3번 Primary 샤드가 Replica 샤드를 새로 생성
2번 Replica 샤드가 Primary 샤드로 승격 후 Replica 샤드 새롭게 생성
이런식으로 Elasticsearch는 운영 중에 노드가 유실되어도 데이터를 잃어버리지 않고 데이터의 가용성과 무결성을 유지하게 된다.

Reference