2014-06-12 7 views
0

복구 :레디 스 듀얼 실패 동안 석사 일시적으로 다음과 같이 우리는 세 레디 스 서버 설치를

Node1: Default Redis Master & Running Redis Sentinel Software 
Node2: Redis Slave & Running Redis Sentinel Software 
Node3: Redis Slave & Running Redis Sentinel Software 

나는 레디 스 서버 (서비스 레디 스 서버 정지)를 중지하는 노드 1로 이동하여 명령을 실행하는 경우 , 센티넬은 주인에 redis가 내려 가고 Node2 또는 Node3를 주인으로 승진시킨 ㄴ다는 것을 빨리 검출한다 (정확하게 우리가 원하는/예상한다).

이제 노드 1로 돌아가 다시 시작합니다 (서비스 redis-server 시작). "redis-cli info | grep^role"을 실행하면 몇 초 (10-15 초) 동안 Node1이 여전히 마스터라고 생각합니다.

결국 우리는 짧은 시간 동안 듀얼 마스터로 끝납니다. 결국 몇 초 후에 감시자가 상황을 분류하고 노드 1은 노예로 강등됩니다. 그러나 나는 듀얼 마스터 (심지어 몇 초 동안) 데이터 무결성 문제가 발생할 수 있다고 가정합니다.

복구 중에 Node1에 전송 된 데이터가 마스터라고 계속 생각한 후 슬레이브로 강등되면 어떻게됩니까? 그 데이터를 잃어 버렸습니까?

우리가이를 피할 수있는 방법이 있습니까? 센티 날이 슬레이브/마스터에게 날씨를 알릴 때까지 redis-server가 연결을 허용하지 않는 설정이 있습니까? 어떻게 우리가이 문제를 해결할 수 있습니까?

감사 브래드

답변

0

우리가 이것을 해결 방법에 대한 호기심이있는 사람들을위한. https://github.com/antirez/redis/issues/1813

기본적으로 우리는 sentinal을 쿼리하고 상태를로드 밸런서에 다시보고하는 bash 쉘 스크립트로 구성된 xinetd http 서비스를 설정합니다.