2017-10-16 18 views
0

linux debian에서 HA 용 센티넬 모니터링 (redis v4.0.2 사용)을 설정했습니다.redis sentinel client-reconfig-script가 트리거되지 않았습니다.

센티넬은 3 개의 노드 중 하나를 종료 할 때 다른 노드가 새로운 마스터로 선출되기 때문에 잘 작동합니다.

이제 클라이언트에게 새로운 마스터를 알리기 위해 reconfig 스크립트를 설정하려고합니다.

:

나는 그때 /etc/redis/sentinel.conf 내 3 개 전초 림프절에 같은 라인을 추가 /var/redis/test.sh에서 읽기 및 실행 (chmod를의 A + RX) 스크립트를 생성 sentinel master mymaster 명령 감시 설정을 보면
sentinel client-reconfig-script mymaster /var/redis/test.sh 

, 그 클라이언트 재구성 스크립트가 잘 구성되어 확인할 수 있습니다 : 장애 조치가 발생했을 때, 내 재구성 스크립트가 트리거되지

그러나
10.2.0.6:26379> sentinel master mymaster 
... 
43) "client-reconfig-script" 
44) "/var/redis/test.sh" 

. 왜 그런지 궁금합니다. 다음은 감시 로그입니다.

29765:X 16 Oct 23:03:11.724 # Executing user requested FAILOVER of 'mymaster' 
29765:X 16 Oct 23:03:11.724 # +new-epoch 480 
29765:X 16 Oct 23:03:11.724 # +try-failover master mymaster 10.2.0.7 6379 
29765:X 16 Oct 23:03:11.777 # +vote-for-leader 5a0661a5982701465a387b4872cfa4c576edbd38 480 
29765:X 16 Oct 23:03:11.777 # +elected-leader master mymaster 10.2.0.7 6379 
29765:X 16 Oct 23:03:11.777 # +failover-state-select-slave master mymaster 10.2.0.7 6379 
29765:X 16 Oct 23:03:11.854 # +selected-slave slave 10.2.0.8:6379 10.2.0.8 6379 @ mymaster 10.2.0.7 6379 
29765:X 16 Oct 23:03:11.854 * +failover-state-send-slaveof-noone slave 10.2.0.8:6379 10.2.0.8 6379 @ mymaster 10.2.0.7 6379 
29765:X 16 Oct 23:03:11.910 * +failover-state-wait-promotion slave 10.2.0.8:6379 10.2.0.8 6379 @ mymaster 10.2.0.7 6379 
29765:X 16 Oct 23:03:12.838 # +promoted-slave slave 10.2.0.8:6379 10.2.0.8 6379 @ mymaster 10.2.0.7 6379 
29765:X 16 Oct 23:03:12.838 # +failover-state-reconf-slaves master mymaster 10.2.0.7 6379 
29765:X 16 Oct 23:03:12.893 * +slave-reconf-sent slave 10.2.0.6:6379 10.2.0.6 6379 @ mymaster 10.2.0.7 6379 
29765:X 16 Oct 23:03:13.865 * +slave-reconf-inprog slave 10.2.0.6:6379 10.2.0.6 6379 @ mymaster 10.2.0.7 6379 
29765:X 16 Oct 23:03:13.865 * +slave-reconf-done slave 10.2.0.6:6379 10.2.0.6 6379 @ mymaster 10.2.0.7 6379 
29765:X 16 Oct 23:03:13.937 # +failover-end master mymaster 10.2.0.7 6379 
29765:X 16 Oct 23:03:13.937 # +switch-master mymaster 10.2.0.7 6379 10.2.0.8 6379 
29765:X 16 Oct 23:03:13.937 * +slave slave 10.2.0.6:6379 10.2.0.6 6379 @ mymaster 10.2.0.8 6379 
29765:X 16 Oct 23:03:13.937 * +slave slave 10.2.0.7:6379 10.2.0.7 6379 @ mymaster 10.2.0.8 6379 

누락 된 구성 옵션이 있습니까?

추가 정보 : 몇 주 전에 유사한 아키텍처 (redis 4.0.1)를 설치했는데 (reconfig 스크립트를 실행 한 것 같습니다.) 구성을 유지하지 않았으므로 뭔가 놓 쳤어. 또는 ... v4.0.2에서 도입 된 버그 일 수 있습니까?!

답변

0

나는 결국 내 문제를 해결했습니다.

은 "reconfig.sh"스크립트는 장애 조치에 의해 해고되었다,하지만 난 있기 때문에 몰랐어요 :

  1. 감시 (심지어 디버그 모드에서) 로그인이 재구성 스크립트 실행에 대한 아주 명확하지 않다
  2. reconfig 스크립트는 내 테스트를 관련없는과 같은 chroot와 유사한 환경의 에서 실행되는 것으로 보입니다!

    32711:X 18 Oct 16:06:42.615 # +failover-state-reconf-slaves master mymaster 10.2.0.6 6379 
    32711:X 18 Oct 16:06:42.671 * +slave-reconf-sent slave 10.2.0.8:6379 10.2.0.8 6379 @ mymaster 10.2.0.6 6379 
    32711:X 18 Oct 16:06:42.671 . +script-child 397 
    32711:X 18 Oct 16:06:42.813 . -script-child 397 0 0 
    

    그런 다음 내 reconfig.sh이처럼 보였다 :

    #!/bin/bash 
    touch /tmp/reconfig 
    exit 0 
    
    다음

는 클라이언트 재구성 스크립트가 트리거되는 감시 로그 ("스크립트 아이"라인)입니다

=>이 스크립트가 Sentinel에 의해 호출 될 때/tmp/reconfig 파일을 찾지 않을 것입니다!

그러나 내부적으로 어떻게 작동하는지 정확히 알 수는 없습니다 ...