redis sentinel

서문
     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. 원 리 는 구독 을 통 해 모니터링 을 완료 하 는 것 입 니 다. 좋 습 니 다 ~ ~,많은 것들 이 아직 깊이 파고 들 지 않 았 으 니, 잘못 이 있 으 면 지적 해 주 십시오.

좋은 웹페이지 즐겨찾기