센티넬 메커니즘

센티넬 (센티넬, 보초) 고 가용성 솔루션 레디 스 : 센티넬 시스템은 마스터 서버의 수를 모니터링 할 수 있습니다 센티넬의 인스턴스를 하나 이상 가지고 있으며, 모든 서버에서 마스터 서버 미만 및 모니터링 마스터가 오프라인 상태로 전환 될 때, 상기 자동 오프 마스터 대신 메인 서버, 주 서버하에 업그레이드 서버로부터 오프라인 새로운 주 서버로부터의 요구 명령을 처리하는 것을 계속한다.

 

하나 : 주 서버의 정보를 얻을 수

센티넬은 기본적으로 10 초마다 한 번 명령은 INFO 명령을 모니터링 메인 서버에 연결되어 전송하고, 주 서버 응답 명령 정보를 분석하여이 정보를 획득한다. 두 가지 정보 :

서버 자체에 대한 정보

run_id 도메인 서버 실행 기록 ID 및 도메인 기록 서버 역할의 역할을 포함

세 이하 서버에서 마스터 서버에 대한 모든 정보

1 : 각 행은 문자열 "노예"의 시작 부분에 서버에서 레코드로 구성, IP는 = 도메인 서버의 IP 주소, 포트 = 서버에서 포트 번호 필드 레코드에서 각 행을 기록합니다. 서버에서 주소 정보를 제공, 서버는 자동으로 사용자없이 이러한 IP 주소와 포트 번호, 센티넬에서 발견 할 수 있습니다.

2 : 정보 run_id 역할 도메인과 도메인 구조의 예 센티넬 마스터 서버가 업데이트됩니다. 그리고 서버에서 반환 마스터 정보는 사전이 구조의 업데이트 마스터 슬레이브 예에 사용됩니다

3 :이 경우에는은 (서버에서이 표시가없는 경우는, 서버의 구성 예에서 갱신 될 : 경계병 분석 INFO 명령은 서버 인스턴스에 대응하는 구조는 이미 슬레이브에 존재하는 경우의 사전를 확인에서 서버 정보에 포함 새로 발견 된이), 센티넬은 노예에 대한 사전 서버에서 서버에서 구조체의 새 인스턴스를 생성합니다.

주 서버 및 구조의 서버 인스턴스에서 :

서버에서 SRI_SLAVE가 주 서버의 예로는, 플래그 SRI_MASTER의 구성이며

자동으로 IP + 포트에서 서버 이름 센티넬에 따라 서버에서 사용자 이름 센티넬 사용 프로필 설정하여 기본 서버 구성의 예.

 

2 : 서버 정보 얻기

센티넬은 주 서버가 새 서버가 나타납니다을 가지고 있음을 발견했을 때,뿐만 아니라, 서버의 명령에서 연결 및 가입 연결에 연결된 서버에서 해당 인스턴스는 새로운 구조이 추가 할 생성 생성됩니다.

다음과 같은 응답에 따라 정보를 서버에서 정보 명령을 전송하고 분석하는 10 초마다 연결하는 명령을 생성 한 후 :

서버 실행 ID의 run_id에서

역할 서버 역할

포트 번호 master_port에는 IP 주소는 주 서버와 기본 서버를 MASTER_HOST

마스터 master_link_status에서 서버의 연결 상태

우선 slave_priority 서버에서

slave_repl_offset 복제 서버로부터의 오프셋 (offset)

이 정보를 기반 구조의 센티넬의 예는 서버로부터 업데이트됩니다

 

III : 서버와 메인 서버에서 정보를 전송

, 2 초마다 한번 상기 마스터 서버 모니터 모든 명령 서버로부터 전송 된 명령에 의해 접속되고

 

IV : 마스터 서버 및 서버로부터 수신 된 채널 정보

 

다섯 : 업데이트 센티넬 사전

사전 센티넬 센티넬 자체, 다른 모든 정보는 모니터링 센티넬 마스터 서버를 저장하는 방법에 대한 자세한 내용은 :

1 : IP : 핵심은 형식 센티넬 중 하나의 이름입니다 포트

2 구조의 대응하는 실시 예의 값 센티넬

메시지가 다른 센티넬 센티넬하여 전송을 (대상 센티넬 센티넬로 정보를 수신하는 단계, 센티넬 센티넬 송신 정보 소스라고도 함)를 수신하면, 센티넬은 다음의 정보로부터 특정 정보를 분석 :

관련 매개 변수를 감시 : 센티넬 IP의 소스를, 포트, run_id 배치 시대

기본 서버 매개 변수 : 주요 소스 센티넬 서버의 이름이 모니터링되고, IP, 포트, 구성 시대

이 마스터 서버 파라미터로부터 대상 센티넬 적절한 기본 인스턴스 구조 마스터 후 센티넬 파라미터, 파수 차 서버 인스턴스 구조 센티넬 예 구조의 소스인지를 확인하기 위해 사전을 항에있어서, 자신의 센티넬 상태를 사전으로 검색 할 수있다 :

업데이트 된 소스 센티넬의 구조의 예를 들면, 존재

존재하지 않는, 소스는 센티넬 새로운 센티넬의 주요 서버, 센티넬의 대상이 소스 센티넬과 구조체의 새 인스턴스를 생성하고, 사전 센티넬이 구조를 추가합니다 모니터 시작 설명

 

식스 : 센티넬 다른 명령에 연결도 만들기

센티넬은 채널 정보에 의해 새로운 센티넬을 발견했을 때 새로운 센티넬 센티넬은, 명령의 새로운 센티넬에 연결된 회사를 만드는 것, 그것은 단지 사전에 대응하는 구조의 인스턴스를 생성하지 않습니다. 새로운 센티넬은 결국 명령의 센티넬로도 연결 만들 센티넬 다중의 네트워크를 형성됩니다 동일한 호스트 서버가 상호 감시합니다 SentinelA 심지어 SentinelB 명령에 연결 한 SentinelB 심지어 SentinelA 명령에이 연결되어 있습니다.

세븐 : 탐지 주관적 오프라인 상태

PING 명령 반환 응답 예 예 판단 기본적으로 센티넬은 한 번에 모든 명령에 초당 그것은 PING 명령하여 전송 (다른 센티넬을 포함하여 서버, 마스터 서버 포함) 연결의 인스턴스를 생성합니다 온라인 여부.

PING 명령의 응답의 경우 두 종류의 예 :

효과적인 재 : 예를 들면, 세 종류의 -MASTERDOWN 하나를 -LOADING, + PONG을 반환

답변 위의 세 가지 유형이 아닌 다른 이외에 잘못된 응답은, 또는 지정된 시간 내에 어떤 응답을 반환하지 않습니다

다운 후 millseconds 밀리 초 인스턴스가 지속적으로 센티넬 유효하지 않은 응답을 반환하는 경우, 그것은 센티넬 수정합니다 : 센티넬 구성 파일 다운 후-millseconds 옵션은 센티넬이 필요 오프라인 인스턴스가 주관적으로 판단하는 시간을 지정합니다 대응하는 구성 예로는, 예 플래그가 오프라인 상태가 주관적 들어간 것을 나타낸다 대한 식별이 개방 구조 SRI_S_DOWN 때문이다.

참고 :

서버 1. 모든 긴 옵션, 즉 다운 후 다운 오프라인 주관적이 단지 마스터 서버의 오프라인 상태 센티넬 주관적인 판단에 사용하지 않을 마스터 서버가 결정될 이하로 사용되는 값과 같은 모든 다른 주관적인 오프라인 센티넬 마스터 서버의 상태를 모니터링.

주관적 오프라인 2. 복수의 센티넬이 때, 따라서, 하향 후 밀리 센티넬 옵션 설정 값은 상이해도 동일한 센티넬의 마스터 서버를 복수의 모니터링을 위해 배치 될 때 길이가 상이해도 주 서버 센티넬 이 주관적으로 오프라인으로 결정되면, 그 다음 다른 센티넬은 주 서버가 온라인 고려 될 수있다

여덟 : 피검 오프라인 상태

주 서버가 센티넬 주관적인 오프라인을 결정하면, 센티넬이 정말 서버를 오프라인으로, 그것은 심판의 충분한 수를받은 후, 다른 모니터 센티넬 같은 마스터 서버에 문의를하게되어 있는지 여부를 오프라인으로하는 결정 서버는 대물 오프라인 및 주 서버 페일 오버 동작에서 판정한다.

1 : SENTINEL 명령 센티넬 오프라인 다른 주 서버의 동의 여부를 물어 마스터 다운 별 요지이다 보내기

센티넬은 마스터 다운 별 ADDR <IP> <포트> <current_epoch> <runid>

센티넬의 IP는 마스터 서버의 IP 주관적 오프라인으로 결정된다

센티넬 포트는 주관적 오프라인의 마스터 서버 포트 번호로 결정된다

센티넬 선거로 이어지는, 센티넬 현재 구성 시대를 current_epoch

또는 센티넬 동작 ID runid 될 수 * 심볼은 * 오프라인 명령은 호스트 서버의 주 목적만을위한 나타내고, ID는 센티넬 리드 선거 센티넬을 실행하는 데 사용되는

2 : SENTINEL를 수신하는 단계 인 마스터 다운 별 ADDR 명령

센티넬 (목표 센티넬) 다른 센티넬 (소스 센티넬)를 수신하고 전송하는 경우 SENTINEL 명령 대상 센티넬은 요청에 포함 된 각 파라미터 및 삭제 명령을 분석 마스터 별 ADDR이고, 내부 IP 항 및 포트, 기본 서버를 오프라인 여부를 결정하고 멀티 대량 응답이 소스 센티넬에 대한 응답이 명령의 세 가지 매개 변수를 포함 반환합니다.

이 세 가지 매개 변수는 다음과 같습니다

<Down_state>는 마스터 서버 센티넬 다시 대상 검사 결과는 마스터 서버 0은 주 서버 오프라인 나타냄 1 오프라인

<Leader_runid> * ID 기호 또는 센티넬 센티넬 ~ 만 호스트 서버 및 로컬 ID의 오프라인 상태가 리드 선거 센티넬에 대한 센티넬 리드를 실행하기위한 명령입니다 주요 대상 지역을 실행할 수 있습니다

지역 선도 센티넬 <leader_epoch> 센티넬 대상 구성 시대, 선거 센티넬로 이어지는. 값이 leader_runid *이없는 경우에만 유효합니다, * 값 경우,이 매개 변수는 항상 0

3 : 수신 SENTINEL은 마스터 다운 별 요지 명령 응답

기타에 따르면 센티넬은 SENTINEL입니다 마스터 다운 별 요지로 응답, 주 서버의 센티넬 통계 동의 번호가 오프라인 상태, 값이 (목적 오프라인 필요한 수를 결정하는 지정된 구성에 도달, 즉 쿼럼 속성을 다시 전송 값), 센티넬 구조 오픈 SRI_O_DOWN 식별 주 서버 인스턴스 특성 플래그 것이다 마스터 서버를 식별하는 대물 오프라인 상태로 체결했다.

IX : 센티넬 선거 리드

서버가 주요 목적 오프라인 상태로 판정 된 경우, 모니터 센티넬 오프라인 주 서버는 각각의 리드 센티넬 오프라인 주 서버 페일 오버 동작에 의해, 센티넬 리드 선출 협상.

 

센티넬 최고의 방법 선거 규칙과 방법에 관해서는 :

1 : 각 센티넬에 관계없이 구성 시대가 증가 될 것입니다 선거의 성공의 리더가 될 수있는 기회를 가지고있다.

2 : 부분적으로 납 : 송신 요구 센티넬 센티넬 로컬 선도 B가하기를 나타내는 다른 센티넬 B에 runid의 + SentinelA 마스터 다운 별 ADDR이 때

3 :이 규칙은 먼저 제 1 리드 로컬로 제공 와서, 첫 번째 명령은 절반 이상 투표 때, 센티넬 대상을 거부됩니다 요구 사항에 다시 모든 설정을 수신 센티넬 센티넬을 선도 지역화 대상이 같은 센티넬로 대상에 전송 그것은 센티넬 리드하고, 기본 서버를 오프라인의 페일 오버 작업이된다.

텐 : 장애 조치

선출 된 지도자 센티넬 후, 센티넬은 조립 라인을 이끌 것은 장애 복구 작업을위한 기본 서버하고있다 :

주 서버로 선택된 서버에서 모든 서버는 마스터 서버 아래 로그 오프에서

서버에서 완전한 데이터를 좋은 조건을 선택하고 전송한다 아무도 명령을 SLAVEOF하지, 서버에서 호스트 서버로 변환

주 서버 대신 모든 새로운 주 서버를 복사하는 서버에서 오프라인 보자

사용자는 주 서버가 서버에 설정에서 로그 오프, 온라인 이전 마스터 서버 다시 새로운 주 서버, 서버에서 새 마스터 서버가 될 것이다.

 

게시 50 개 원래 기사 · 원 찬양 2 · 조회수 2,271

추천

출처blog.csdn.net/eafun_888/article/details/104714263