redis sentinel
4732 단어 redissentinelmaster-slave
redis 앞에서 master - salve 를 소 개 했 지만 고장 난 자동 전환 효 과 는 완성 되 지 않 았 습 니 다.redis 2.8 + 는 상대 적 으로 안정 적 인 체 제 를 제공 하여 단점: sentinel 을 방지 합 니 다. ,주소:http://redis.io/topics/sentinel
기본 기능
1. Monitor: redis 인 스 턴 스 가 정상적으로 작 동 하 는 지 모니터링 할 수 있 습 니 다.
2. Notification: 모니터링 하 는 redis 인 스 턴 스 오 류 를 발견 하면 API 를 통 해 다른 기계 에 알 릴 수 있 습 니 다.
3. Automatic failover: master 가 예상 한 대로 실행 되 지 않 으 면 자동 으로 salve 를 master 로 향상 시 키 고 연결 을 제공 합 니 다.그리고 다른 salve 도 새로운 master 에 연 결 됩 니 다.
4. Configuration provider: Sentinel 은 클 라 이언 트 를 연결 하 는 중심 으로 클 라 이언 트 가 sentinel 에 연결 되 어 사용 가능 한 서 비 스 를 제공 합 니 다. 서비스 가 끊 기 면 자동 으로 새로운 사용 가능 한 서비스 로 전 이 됩 니 다.
3. sentinel 은 분포 식 클 러 스 터 를 지원 합 니 다.
그 자체 가 클 러 스 터 배 치 를 지원 합 니 다. 보통 우 리 는 2n + 1 개의 노드 를 원 합 니 다. ZK 원리 와 유사 합 니 다. 만약 에 절반 의 노드 가 redis master 가 사용 할 수 없다 는 것 을 발견 하면 사용 할 수 없다 고 생각 하고 노드 를 이전 합 니 다.이렇게 하면 오심 을 줄 일 수 있다.
현재 안정 판 은 2.8 과 3.0 버 전이 가장 안정 적 이다.
간단 한 설정
1. redis - sentinel 시동 기 가 있 습 니 다. redis - server 와 유사 한 시작 방식 이 있 습 니 다. redis-sentinel sentinel.conf
redis-sentinel sentinel.conf
2. sentinel. conf 설정, 여기 나 도 3 개의 노드 설정 을 사 용 했 습 니 다.
# , sentinel ,
port 26379
# master , 2: 2
# 2 , ,
sentinel monitor mymaster 127.0.0.1 6379 2
# 6 ping ,
sentinel down-after-milliseconds mymaster 60000
# , ,
sentinel failover-timeout mymaster 180000
# , , master savle ,
# ,slave ,
sentinel parallel-syncs mymaster 1
# salve ,resque - -
sentinel monitor resque 127.0.0.1 10001 4
sentinel down-after-milliseconds resque 10000
sentinel failover-timeout resque 180000
sentinel parallel-syncs resque 5
3. redis 인 스 턴 스 와 sentinel 모니터링 시작
#
redis-server redis-6379.conf
redis-server redis-10001.conf
redis-sentinel redis-sentinel-23769.conf
redis-sentinel redis-sentinel-23768.conf
redis-sentinel redis-sentinel-23767.conf
4. 시동 걸 수 있 으 면 OK
테스트
@org.junit.Test
public void sentinePool(){
//
Set sentinels = new HashSet();
sentinels.add(new HostAndPort("localhost", 26379).toString());
sentinels.add(new HostAndPort("localhost", 26378).toString());
sentinels.add(new HostAndPort("localhost", 26377).toString());
JedisSentinelPool sentinelPool = new JedisSentinelPool("mymaster", sentinels);
Jedis jredis = sentinelPool.getResource();
System.out.println(jredis.keys("*"));
}
테스트 피드백:
1. key 데 이 터 를 모두 가 져 오기 (데이터 가 적 음)
2. 마스터 수 동 정지 6379, 몇 초 후 연결 OK, 이동 중 이상 발생
3. 6379 를 다시 시작 하면 salve 가 되 고 데이터 동기 화 OK 가 됩 니 다.
4. 반복 적 으로 조작 하면 가용성 이 보장 되 지만 끊 을 때 몇 초 동안 연결 되 지 않 습 니 다.
5. 동시에 redis 를 멈 추고 다시 시작 합 니 다. 다시 시작 하기 전에 MS 결 과 는 변 하지 않 습 니 다. conf 에 지속 적 인 ID 가 있 기 때 문 입 니 다.
6. 기타:
이 설정 을 통 해 sentinel. conf 파일 을 바 꾸 고 ID 를 오래 유지 합 니 다. 이것 은 고 쳐 야 할 파일 입 니 다.
#
port 26377
sentinel monitor mymaster 127.0.0.1 6379 2
sentinel down-after-milliseconds mymaster 60000
sentinel config-epoch mymaster 3
sentinel leader-epoch mymaster 3
sentinel known-slave mymaster 127.0.0.1 10001
sentinel known-sentinel mymaster 127.0.0.1 26379 627853b7495425dc3a558ba981f5cbcd619b6417
sentinel known-sentinel mymaster 127.0.0.1 26378 0a825a64892c136b033f1a961f3f4feb92ef2402
sentinel monitor resque 127.0.0.1 10001 4
# Generated by CONFIG REWRITE
dir "/Users/qqr"
sentinel down-after-milliseconds resque 10000
sentinel parallel-syncs resque 5
sentinel config-epoch resque 0
sentinel leader-epoch resque 0
sentinel known-slave resque 127.0.0.1 6379
sentinel known-sentinel resque 127.0.0.1 26379 627853b7495425dc3a558ba981f5cbcd619b6417
sentinel known-sentinel resque 127.0.0.1 26378 0a825a64892c136b033f1a961f3f4feb92ef2402
sentinel current-epoch 3
소결:
1. 이것 은 간단 한 테스트 일 뿐 입 니 다. 많은 설정 은 원문 코드 를 봅 니 다.
2. 원 리 는 구독 을 통 해 모니터링 을 완료 하 는 것 입 니 다. 좋 습 니 다 ~ ~,많은 것들 이 아직 깊이 파고 들 지 않 았 으 니, 잘못 이 있 으 면 지적 해 주 십시오.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Redis 해시에 대한 완벽한 가이드변경 가능하므로 필요에 따라 쉽게 변경하고 업데이트할 수 있습니다. Redis 해시는 구조가 평평하므로 JSON에서와 같이 여러 수준을 가질 수 없습니다. redis 해시의 명명 규칙은 hash:key 로 입력되므로...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.