본문 바로가기
책벌레와 벌레 그 사이 어딘가/개념쌓기

[개념쌓기] Split-Brain?

by veganwithbacon 2022. 9. 22.
반응형

ES(ElasticSearch)관련 개념을 볼때마다 Split-Brain(뇌분할)이 나오길래 뭔지 궁금해서 우선적으로 알아보게 되었다.

 

  Split-Brain 을 먼저 말하기 전에 마스터 노드에 대해서

 Elasticsearch 뿐만 아니라 클러스터로 작동하는 모든 서비스들은 공통적으로 마스터 후보 노드를 홀수개로, 그리고 최소 살아있어야 하는 노드 수를 n/2+1로 설정하라고 권장한다.

왜일까? ElasticSearch에서는 장애시 즉시 복구를 위해 마스터 노드를 멀티로 구성한다

마스터 노드는 이중 1개가 선출되어 사용되는데 선출된 노드가 에러가 생길 시에 후보군 중 다른 마스터노드가 이것을 대체하는 역할을 수행하는 것이다.

 

이를 위해 멀티로 된 마스터노드는 서로 간 health check가 되어야하고 데이터 정합성이 깨지지 않기 위해서는 마스터노드는 언제나 1개로 유지되되 나머지 후보들과 동기화가 이뤄져야한다.

 

  개념 정리

만약 에러가 발생해 네트워크 환경 자체에 에러가 발생하게 되면 마스터노드들은 각자 마스터노드가 자신만 존재한다고 생각해서 서로 마스터노드의 역할을 하려고 할것이다. 이때 여러 개의 마스터노드가 생기는데, 하나 이상의 클러스터가 구성되는 것이다.

위와 같은 경우 대부분이 네트워크 파티션/하드웨어 오류 또는 소프트웨어 등이 일반적인 원인으로 불일치 및 데이터 손실이 발생할 수 있다.

즉, 데이터 정합성에 문제가 생기는 것인데 이러한 문제를 Split-Brain이라고 하는 것이다

 

  자체 지원 서비스

ElasticSearch 에서는 최소 마스터 노드 수를 6.*이하에서는 discovery.zen.minimum_master_nodes로 설정했으나 

7.*이상 버전에서는 이런 설정없이 cluster.initial_master_nodes에 마스터 노드만 지정하면 지정된 마스터 노드 수에 따라 자동으로 minimum_master_nodes값이 변경된다.

 

 

참고 자료 : 

https://4orty.tistory.com/4

https://blog.naver.com/PostView.naver?blogId=vefe&logNo=222187701195&parentCategoryNo=&categoryNo=60&viewDate=&isShowPopularPosts=false&from=postView 

https://www.alibabacloud.com/topic-center/knowledge/3/gddtqgw1b4-what-is-split-brain-in-elasticsearch

 

반응형

댓글