2016-09-02 5 views
1

단일 인스턴스 redis를 실행할 때 "slave of"를 사용하여이 하나의 redis 노드의 읽기 전용 복제본을 만들 수 있습니다.Redis가 단일 인스턴스 슬레이브 (슬레이브)를 클러스터 또는 센티넬에 연결

redis 클러스터를 사용할 때 데이터를 Partitons (마스터)로 분할하고 각 파티션마다 슬레이브를 만들 수 있습니다.

이 클러스터를 단일 인스턴스로 취급하고 연결된 노드의 파티션뿐만 아니라 클러스터의 모든 데이터의 복제본을 보유 할이 클러스터에 "슬레이브"슬레이브를 연결할 수 있습니까?

redis 클러스터에서는 가능하지 않은 경우, 센티넬을 사용할 때 이것이 유용한 해결책입니까?

우리의 현재 문제 : 우리는 keepalived 기능과 함께 "slave of"기능을 사용하여 마스터 중단시 redis 인스턴스를 장애 조치합니다.

하지만 캐시 된 데이터를 전달하기 위해 페일 오버 설정의 가상 IP에 연결된 많은 "슬레이브"슬레이브가 있습니다. 이제는 시스템이 장애 조치 될 때마다 (예 : 유지 보수상의 이유로) 연결된 모든 슬레이브는 새 마스터와 데이터를 다시 동기화해야 할 때 최대 30 초 동안 타임 아웃을 갖습니다.

우리는 이미 가능한 모든 redis 구성 매개 변수를 사용했지만이 동기화 시간은 더 짧아 질 수 없습니다 (예 : 장애 조치 후 새 마스터에서 사용할 수없는 복제 백 로그에 의존).

누구나 아이디어가 있으십니까?

답변

0

글쎄, 난 그냥이 글을 읽어

https://seanmcgary.com/posts/how-to-build-a-fault-tolerant-redis-cluster-with-sentinel

이 저자는 하나 대신, 마스터 당 2 노예, 레디 스 클러스터로 하나의 마스터를 사용을, 그는하자 주인이 무너 졌을 때 Redis Sentinel이 주인에게 노예를 선출합니다.

이 설정을 사용하여 Master 선거가 빠르게 수행되는지 확인할 수 있습니다. 그것이 일어나고있는 동안, 고객은 노예에게 봉사 할 것이고 중단 시간을 경험해서는 안됩니다.