• 카테고리

    질문 & 답변
  • 세부 분야

    데브옵스 · 인프라

  • 해결 여부

    해결됨

클러스터에서 마스터 노드를 사용자가 선택할 수 있나요?

23.05.08 13:44 작성 조회수 325

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 클러스터로 합친다고 가정 하겠습니다.)

  1. A 클러스터에 새로운 데이터 노드 추가

  2. B 클러스터에 색인되어 있던 문서를 A 클러스터에 재색인

  3. B 클러스터의 모든 문서가 색인 되었는지 확인 후 B 클러스터 종료, 이 때 확인은 문서 개수를 비교해서 해볼 수 있습니다.

이미 클러스터의 이름이 다르기 때문에 단순 설정 변경으로는 통합할 수 없고 문서를 재색인 하는 과정을 통해 진행해야 합니다.

0

두 대의 노드로 클러스터를 구성할 때 두 대 모두 마스터 후보 노드로 설정하시려는 건가요? 그리고 그 중에서 특정 노드를 마스터 노드로 설정 할 수 있는지를 문의 하신 것으로 이해 했습니다. 답변을 먼저 드리자면 특정 노드를 마스터 노드로 설정하는 것은 불가능 합니다. 마스터 후보 노드들 중에서 어떤 노드가 마스터 노드가 될지는 자동으로 설정 됩니다. 이 부분을 수동으로 특정 노드를 마스터 노드로 지정할 수는 없습니다.

그리고 두 대로 HA를 구성하는 건 Split Brain 현상이 발생할 수 있기 때문에 가급적 홀수로 구성 하는 것을 권고 합니다. 동일한 사양으로 구성하는 게 어렵다면 마스터 후보 노드 역할만 할 수 있도록 비교적 낮은 사양의 노드를 추가해서 홀수를 맞추는 것이 좋습니다.

godsman님의 프로필

godsman

질문자

2023.05.08

감사합니다. 그렇다면,

신규노드 추가
노드 한대로 운영되던 클러스터에 신규 노드 1대를 합류시키면 정상적으로 동작되는 건가요?
이때도 스플릿브레인 현상이 발생할 수 있나요?

통합클러스터
각각 독립적인 클러스터로 운영되던 노드를 하나의 클러스터로 합치려면 어떻게 진행하는 것이 좋은지요?