마스터 노드의 선거 과정 MongoDB의 복제 세트

MongoDB의 복제 세트가 문제가 복제 세트에서 때때로 발생, 자동 허용 일부 노드의 기능이 중단 있으며, 선거 관련 프로세스가 자동으로 완료 기본 노드에서 전환되는 트리거합니다. 각 복제 세트 구성원은 백그라운드에서 하트 비트 스레드 실행해야하며 상태 검출 프로세스를 트리거 두 경우 모두, 모든 노드의 설정 복사합니다 :

  1. 복제 설정 부재 심장 박동 검출 결과의 변화와 같은 노드가 다운되거나 새로운 노드;
  2. 상태 검출 프로세스 4S 이상 수행되지 않는다. 상태 검출 공정에서 일반적 단계를 포함한다 :

(1)이 프로세스에서,이 경우, 선거 과정에 있는지 여부를 검출한다.
(2) 백업 마스터 노드의 목록을 유지, 목록에있는 모든 노드는 자체가 감지 각 노드를 마스터 노드로 선출 될 가능성이 글로벌 조건이 충족됩니다
. 설정된 복제가 대부분 여부를 온라인으로 볼 수 있습니다.
B. 자신의 우선 순위는 0보다 크다.
다. 그 자체가 중재자가 아닙니다.
라. opTime 최신 노드보다 더 그들의 10 초에 뒤 떨어지지.
전자. 최신 정보에 따라 클러스터 프로그램에 의해 저장됩니다.
모든 조건이 충족되는 경우, 기본 백업 노드의 목록에 자신을 추가 할 것이다, 그렇지 않으면, 목록에서 자신을 제거하는 것입니다.

检测以下条件,若都满足,将主节点降为从节点(如果要降级的主节点是自身,直接调用降级方法,如果不为自身,调用replSetStepDown命令将复制集主节点降级为从节点:
    a. 集群中主节点存在。
    b. "主节点的备用列表”中存在比当前的主节点priority更高的节点。
    c. "主节点的备用列表”中priority最高的节点,其opTime要比其他所有节点最新的opTime落后10s以内。
    d. 检测自身是否为主,若为主,且自身无法看见复制集的Majority在线,将自身降级为从。
    e. 如果看不见集群中有主节点存在,检测自身是否在”主节点的备用列表”,若不在,打印log并退出此流程。
    f. 若自身在”主节点的备用列表”中,开始判断自身可否向复制集中发送选举自身为主节点的通知,判断过程包含:
         1> 自身是否可以看见复制集中的Majority在线。
         2>自身是否在”主节点的备用列表”。

조건이 충족되면, 플래그가 true "자체가 선거 과정에있다"로 설정하고 "선거 자체 마스터 노드"접근 방식을 입력합니다.
이 방법은 다음과 같은 조건을 만족하는지 확인합니다
. 스레드는이 스레드는 잠금을 얻었다.
B.이 노드는 구성 또는 0으로 구성 가능한 옵션 slaveDelay slaveDelay되지 않습니다.
다.이 노드는 중재하도록 구성되지 않는다.
: 만난 경우, 다음 조건이 트리거되는 경우, 상기 발신 환경 검출은, 추천 "마스터 노드 나 선출하여"보내지
실행 steppedDown +는 내부 설정된 시간 정지 한 시점 (1> 현재 시간이 냉동주기 steppedDown 끝 미만인 그것은) 60을 요구한다.
2> 자신의 opTime하지 최신 모든 노드.
3> 새로운 종료이 과정을보다 노드 opTime 경우.
, 만약 판사가 계속 후에 이러한 노드, 약간의 시간에 대한 임의 수면의 모든 일에 대한 자신의 대부분의 다른 최근의 새로운 노드, 같은.
가. 자신의 온라인 설정 복제에서 5 분 내에 라인과 모든 노드에서.
다른 문제가 없다면이 과정에서 자신의 투표가가, 30 대에 투표 실시로, 전체 프로세스를 종료 여부를 결정하기 위해 실시 될 때 나., 표를 얻으려고.
우리는 마침내 투표를 보낼 수 있습니다 감지 한 후이 모든 복잡한 복제 세트에 "마스터 노드로 저를 선출".
절반 이하 자신의 마스터 노드와 동일한 투표 수를 변경하지 않는 경우 절반 이상, 자신의 주인을 제공하는 경우 전송 한 후는, 모든 노드에서 표를받을 수 있습니다.
투표 후, 설정을 false로 플래그 "그 자체가 선거 과정에있다".
모든 결정은 모든 조건이 충족 조건 누락되는 것을 방지하고 있는지 확인해야한다 전에 우리는 관계를 결정하기 위해 더 복잡한 로직과 관련이있을 수 있습니다 위의 결정 로직의 일부는 판단을 반복, 볼 수 있지만 최종 결과에 영향을주지 않습니다.
노드 세트를 복사 할 때이 정보를 투표 다른 노드에 의해 전송 된 "마스터 노드로 저를 선출했습니다"다음 심판이있을 것입니다
. 저장된 구성 버전이 너무 낮은 경우 복제가 투표를하지 않는, 자신을 설정합니다.
B. 구성 버전을 저장하는 복제 개시 요청 세트 노드가 너무 낮 으면, 로그인.
원래 노드가 투표 여기서 c. 설정은 반대, 투표 자체를 복제하지 않습니다.
D. 중앙 집중식 복제 마스터 노드는 투표를 존재한다.
노드보다 노드 우선 순위의 존재 선거에 참여할 수 있습니다 때,에 대한 투표를 요청 기반.
투표 자체의 수를 획득하여 모든 조건이 (그것은 또한, 더 투표에 참석하지 않는 경우 자신의 30 대, 투표에 참여 여부를 결정합니다) 경우, 투표 수는 캐스팅.
그것에 대해 말할 필요가있다, 그것은 최종만큼 야당 노드가있는 한, 대부분의 경우 10,000 표, 그 잘라 반대하는 것, 노드의 요청은 마스터가 될 수 없습니다.
실제로 두 지점에 요약되어 매우 복잡 사용되는 선거 과정 :
5 초에 대한 일반적인 필요성이 주요 선거였다.
새로운 선출 마스터 노드는 즉시 중지하는 경우, 당신은 적어도 30 시간에 다시 선거 차를해야합니다.

추천

출처blog.51cto.com/8413723/2436423