본문 바로가기

ElasticSearch

(3)
[ElasticSearch] Replica에 관하여 ElasticSearch Cluster를 검토해보고 사용할 때 정말 많은 사람들이 아무 생각 없이 Replica를 사용하고 있는데, 이는 굉장히 중요한 개념이므로 사용 목적에 대해 깊게 고민해보아야 한다. Replica는 말 그대로 데이터의 복제본이다. 이를 사용하는 근본적인 이유는 당연히 하드디스크 즉, 물리장치의 장애가 발생했을때 데이터가 유실되는 것을 방지하기 위해 같은 내용의 데이터를 복사하여 다른 물리장치에 저장해두는 것이다. 이 목적이 Replica라는 개념이 나오게 된 이유이자 가장 근본적인 목적이기 때문에 elasticsearch cluster에서도 yellow라는 status를 따로 만들어 primary shard와 replica shard를 클러스터에 노드가 단 하나가 있더라도 절대 같..
[Elasticsearch] Splitbrain이란? 클러스터 마스터 노드가 홀수개면 좋은 이유 Elasticsearch 뿐만 아니라 클러스터로 작동하는 모든 서비스들은 공통적으로 마스터 후보 노드를 홀수개로, 그리고 최소 살아있어야 하는 노드 수를 n/2+1로 설정하라고 권장한다.(살아있어야 하는 노드 수의 경우 최근에는 자동으로 설정되는 경우가 많은 것 같다.) 사실 클러스터를 구성하는 노드 수에 맞게 자동으로 살아있어야 하는 노드 수가 조절되는 경우 만약 노드가 시간 간격을 두고 하나씩 차례로 다운되는 것은 전혀 문제가 되지 않는다. 마스터 노드를 홀수개로, 최소 살아있어야 하는 노드 수 설정 등은 모두 splitbrain 상황을 대비하여 설정하는 것이다. splitbrain이란 간단하게 여러 개의 노드가 동시에 클러스터에서 떨어져나오는 현상이라고 생각하면 된다. (실제 동시에 다운된 것일 수..
[ElasticSearch] Rolling Restart 방법 ElasticSearch를 운영하다보면 Rolling Restart를 해야 될 상황이 발생한다. Rolling Restart란 클러스터를 구성하는 노드 중 하나씩 리스타트를 해나가는 것이다. 최근에 클러스터 디스크 사이즈가 부족하여 증설을 해야하는 케이스가 발생하였는데, 노드가 추가되는 것이 아닌 data path만 늘려주는 것이라서 rolling restart를 해야했다. rolling restart 방법은 다음과 같다. 1. rebalancing 기능 disable rebalancing이란 노드가 삭제되거나 추가되었을때 클러스터를 균형적으로 유지하기 위해 구현되어 있는 기능인데, 노드를 삭제하거나 추가하면 자동으로 rebalancing을 했을 때와 안했을 때의 효율성 지표를 계산하여 rebalanci..