0

// 더 구체적으로 말하자면, 네트워크 케이블을 사용하여 ReDiS 클러스터의 마스터를 해당 클러스터의 ReDiS 노예에서 분리한다고 가정 해 보겠습니다. 주인의 수가 두 배로 늘어나도 고객이 분할 전의 "첫 번째"주인에게만 쓸 수있게 할 수 있습니까?// 네트워크 케이블을 자르고 ReDiS 클러스터의 마스터를 해당 클러스터의 ReDiS 노예에서 분리하면 마스터 수가 두 배로 증가하면 어떻게해야합니까?

예를 들어, 다음과 같은 속성을 가진 클러스터가 있고 서브넷 192.168 사이의 네트워크 케이블을 사용하여 트립합니다. . * 및 192.168. . * 나는 6 명의 주인으로 바람을 피 웁니까?

192.168에 ReDiS 1. 53.1 : 7000 (주인)
192.168에 ReDiS2. 53.1 : 7001 (주인)
192.168의 ReDiS 3. 53.1 : 7002 (마스터)
192.168에서 ReDiS 4. 105.2 : 7000 (슬레이브)
ReDiS 5 on 192.168. 105.2 : 7001 (슬레이브)
ReDiS 6 on 192.168. 105.2: 7002 (슬레이브)

내가 레디 스 4, 레디 스 (5), 그리고 레디 스 (6) 신속 스스로 주인을 것이라고, 나는 다음으로 끝날 것 같은데요 :

레디 스 192.168에 1 53.1 : 7000 (주인)
192.168에 ReDiS2. 53.1 : 7001 (주인)
192.168의 ReDiS 3. 53.1 : 7002 (주인)
=//==== // 케이블 고정 //
ReDiS 4 on 192.168. 105.2 : 7000 (마스터)
192.168의 ReDiS 5. 105.2 : 7001 (마스터)
192.168의 ReDiS 6. 105.2
: 7002 (마스터) 내가 스냅 된 케이블을 교체 할 때

또한, 나는 다시 다음으로 끝날 것 맞죠?

192.168에 ReDiS 1. 53.1 : 7000 (주인)
192.168에 ReDiS2. 53.1 : 7001 (주인)
192.168의 ReDiS 3. 53.1 : 7002 (마스터)
192.168에서 ReDiS 4. 105.2 : 7000 (슬레이브)
ReDiS 5 on 192.168. 105.2 : 7001 (슬레이브)
ReDiS 6 on 192.168. 105. 2 : 7002 (슬레이브) 내가 주인이 될 "해야"무엇을 알고 있어야 내 고객을 작성하고, 그들 만 192.168의 주인에 기록해야 함이 현명한 경우

입니다. . *?

이 시나리오에서 문제를 완화하는 예를 들면 firstThreeMasters 구성원으로 표시된 ReDiS 중 하나가 슬레이브가 될 때 다음 변수 만 업데이트 할 수 있습니까?

firstThreeMasters = [ "192.168.53.1:7000", "192.168.53.1:7001", "192.168.53.1:7002" ] 

답변

1

"나는 (내 클라이언트 코드의 행동이이 serverfault.com에 속하는 생각하십니까? 의견에 조언하거나, 이동 그렇다면 것이 좋습니다하시기 바랍니다.이 질문의 대상이지만) ReDiS 4, ReDiS 5 및 ReDiS 6가 빠르게 마스터가 될 것이라고 추측합니다. "

사실상 마스터의 절반 이상이 분리되면 슬레이브가 장애 조치되지 않습니다. 사실 슬레이브가 자동 장애 조치를 요청할 때 지정된 슬롯이있는 마스터 만 선거 프로세스에 참여합니다.

그리고 클라이언트가 클러스터 업무에 관여해서는 안되기 때문에 어떤 노드가 클라이언트에서 임의의 마스터인지 추정하지 마십시오. 노드 세트가 끊임없이 주인이되기를 원할 경우, 노예가되는 노드에 cluster failover 명령을 보내는 데몬을 작성하는 것이 좋습니다.

+0

// 마스터의 절반이 연결을 끊지 않고 연결을 끊을 수있는 모든 마스터가됩니다. "ReDiS의 반이 끊어지면 ..."이라고 읽었습니까? –

+0

@NathanBasanese 슬레이브가 장애 조치를 수행하고 다른 마스터가 선택했기 때문에 마스터가됩니다. 적어도 ** 마스터 중 절반이 연결이 끊어진 경우 ("적어도"을 추가해야 함) 선거 결과가 나오지 않아 노예가 자동으로 마스터가되지 않습니다. – neuront

+0

//, Hm. 저는 오늘 베타 시스템에서이를 테스트하고 있습니다. –