해결된 질문
작성
·
428
1
클러스터 구성에서 사용자가 마스터 노드를 직접 선택할 수 있나요?
마스터노드를 3대 이상 구성하고, 그 중에서 선출되는 것으로 들었습니다.
두대의 노드로 클러스터를 구성했을 때 특정 노드를 마스터노드로 지정할 수 있는지 알고 싶습니다.
두대의 노드를 HA 구성으로 사용하려는 목적이 있기 때문에 평상시에 마스터노드 정보를 공유할 수 있도록 두대 모두 마스터노드로 설정합니다.
이런 경우에 특정 노드를 마스터노드로 지정할 수 있을까요?
답변 2
0
마스터 후보 노드가 짝수로 운영 되면 스플릿브레인 현상이 발생할 수 있습니다. 물론 스플릿브레인 현상이 발생하지 않는다면 정상적으로 동작은 합니다. 스플릿브레인 현상이 발생하는 경우는 노드 간 네트워크가 단절되는 경우에 발생할 수 있기 때문에 네트워크가 단절되지 않는다면 짝수여도 정상적으로 동작은 합니다.
6.x 버전 이하의 경우에는 discovery.zen.minimum_master_nodes
설정을 통해 최소 몇 대 이상의 마스터 후보 노드가 있어야 하는지를 설정할 수 있고 7.x 이상의 버전 부터는 마스터 후보 노드의 개수를 자동으로 계산해서 계산된 값의 과반수 이상의 마스터 후보 노드가 있을 경우에만 정상적으로 동작하도록 설정 됩니다.
7.x 이상의 버전이라는 가정 하에 조금 더 설명을 해보자면, 만약 마스터 노드의 개수가 3개 라면 (3/2) + 1 = 2가 되기 때문에 두 대 이상의 마스터 후보 노드가 살아 있는 경우에만 클러스터가 유지되고 네트워크 단절에 의해 마스터 후보 노드가 한 개인 클러스터가 생긴다면 해당 클러스터를 동작하지 않게 됩니다. 만약 마스터 노드의 개수가 4개 라면 (4/2) + 1 = 3이 되기 때문에 세 대 이상의 마스터 후보 노드가 살아 있는 경우에만 클러스터가 유지 됩니다만, 만약 마스터 후보 노드가 두 대/두 대 이렇게 네트워크 단절이 된다면 양쪽 클러스터 모두 정상적으로 동작하지 않게 되겠죠. 그래서 마스터 후보 노드를 홀수로 설정해야 네트워크 단절 시에도 한 쪽 클러스터는 살아있게 됩니다.
그리고 독립적인 클러스터로 운영되던 노드를 하나의 클러스터로 합치는 것은 설정 만으로는 불가능 합니다. 이미 클러스터의 이름이 서로 다르기 때문 입니다. 만약 A 클러스터와 B 클러스터를 합치고자 한다면 아래와 같은 시나리오로 할 수 있습니다. (B 클러스터를 종료하고 B 클러스터의 문서를 A 클러스터로 합친다고 가정 하겠습니다.)
A 클러스터에 새로운 데이터 노드 추가
B 클러스터에 색인되어 있던 문서를 A 클러스터에 재색인
B 클러스터의 모든 문서가 색인 되었는지 확인 후 B 클러스터 종료, 이 때 확인은 문서 개수를 비교해서 해볼 수 있습니다.
이미 클러스터의 이름이 다르기 때문에 단순 설정 변경으로는 통합할 수 없고 문서를 재색인 하는 과정을 통해 진행해야 합니다.
0
두 대의 노드로 클러스터를 구성할 때 두 대 모두 마스터 후보 노드로 설정하시려는 건가요? 그리고 그 중에서 특정 노드를 마스터 노드로 설정 할 수 있는지를 문의 하신 것으로 이해 했습니다. 답변을 먼저 드리자면 특정 노드를 마스터 노드로 설정하는 것은 불가능 합니다. 마스터 후보 노드들 중에서 어떤 노드가 마스터 노드가 될지는 자동으로 설정 됩니다. 이 부분을 수동으로 특정 노드를 마스터 노드로 지정할 수는 없습니다.
그리고 두 대로 HA를 구성하는 건 Split Brain 현상이 발생할 수 있기 때문에 가급적 홀수로 구성 하는 것을 권고 합니다. 동일한 사양으로 구성하는 게 어렵다면 마스터 후보 노드 역할만 할 수 있도록 비교적 낮은 사양의 노드를 추가해서 홀수를 맞추는 것이 좋습니다.
감사합니다. 그렇다면,
신규노드 추가
노드 한대로 운영되던 클러스터에 신규 노드 1대를 합류시키면 정상적으로 동작되는 건가요?
이때도 스플릿브레인 현상이 발생할 수 있나요?
통합클러스터
각각 독립적인 클러스터로 운영되던 노드를 하나의 클러스터로 합치려면 어떻게 진행하는 것이 좋은지요?