Issue replica shard
replica shard란?
Replica는 또 다른 형태의 shard라고 할 수 있다.
Elasticsearch에서 replica의 기본값은 1이다.
이 때 replica의 값이 1이라는 것은 primary shard를 제외한 replica shard가 1개라는 것을 의미한다.
그렇기에 replica의 최대 개수는 전체 노드의 수 -1.
Replica가 필요한 이유는 크게 두 가지인데, 그 중 첫 번째는 ‘검색성능(search performance)‘이고, 두 번째는 ‘장애복구(fail-over)‘입니다.
Replica shard가 존재하는 경우 하나의 노드에 문제가 발생하게 된다고 해도 나머지 노드에 모든 데이터 shrad들이 존재하기 때문에 정상적인 서비스가 가능하며 문제가 없는 노드에 있던 replica shard가 자동적으로 primary shard가 된다.
클러스터상의 노드에 문제가 발생하여 가용한 노드의 수가 replica의 수보다 같거나 작은경우 어떠한 노드에서 할당되지 못한 shard가 발생하게 되며, 이러한 경우 클러스터의 상태가 "YELLOW"가 된다. (정상적인 경우의 클러스터 상태는 "GREEN")
*issue
진행중인 프로젝트의 경우 현재 단일노드 구성이기에 위 설명에서의 replica의 값이 0으로 설정되어 있는지 클러스터 구성을 하고 구글 플러그인 'Elasticsearch head'를 활용하여 확인해보면
위 이미지와 같이 3개 노드 중 하나의 노드에만 shard가 존재하게 된다.
그말인즉슨, 기껏 클러스터링 구성을 하였음에도 노드 1개만 죽어도 이미지의 metricbeats 데이터를 확인할 수가 없는 것이다.
clustering의 의미를 살리기 위해 위에 설명한 shard replica를 활용하여 1-replica 혹은 2-replica(=full-replica)로 운용하면 위와 같은 사태를 방지할 수 있다.
shard replica를 활용하기 위해 'postman'을 활용하여 ES의 ELB 도메인 주소:ES_PORT에 PUT으로
위와 같이 설정해줄 수 있다.
설정 후 다시 'Elasticsearch head'를 활용하여 확인해보면
위 이미지(Postman 이미지에선 1-replica였으나 이 이미지는 full-replica인 다른 상황이다)와 같이 shard가 늘어나게 되며
일부 노드가 죽어도 정상적으로 서비스를 이용할 수 있게 된다.
'Elasticsearch' 카테고리의 다른 글
Elasticsearch shard (0) | 2020.12.11 |
---|---|
Elasticsearch restart issue (0) | 2020.12.11 |
Elasticsearch clustering 구현 (0) | 2020.12.08 |
Elasticsearch clustering (0) | 2020.12.08 |