Redis SENTINEL FAILOVER-TIMEOUT

Redis Sentinel Course Redis Technical Support Redis Enterprise Server

Redis SENTINEL FAILOVER-TIMEOUT Parameter

FAILOVER-TIMEOUT는 장애조치가 일정 시간이 지나도 완료되지 않았으면 취소(abort)하는 시간이다.   주의할 것은 장애조치 시작부터 완료될때까지의 시간이 아니고, 각 단계마다의 시간을 체크하는 것이다.   아래 각 단계 완료 직후에 failover_state_change_time을 세팅하고, 이 시각과 현재 시각을 비교해서 failover-timeout 보다 크면 장애조치를 취소한다.
장애조치를 취소(abort)한다는 것은 각 단계마다 설정한 플레그를 초기화하고 선정된 슬레이브 정보를 삭제한다.   객관적 다운(odown) 플레그는 그대로 둔다.   정확한 의미에서 모두 롤백(rollback)하는 것은 아니지만 장애조치를 다시 시작할 수 있도록 초기화하는 것이다.   따라서 취소된 후 센티널 서버는 odown 단계에서 부터 다시 시작할 수 있다.
디폴트는 180초이다.   이 값은 일반적으로 장애조치를 하는데 충분한 시간이다.

failover_state_change_time을 세팅하는 단계
  • 1단계: 객관적 다운(odown)
  • 2단계: 센티널 리더 선출(elected-leader)
  • 3단계: 슬레이브 선정(selected-slave)
  • 4단계: 선정된 슬레이브 마스터로 승격(promoted-slave)
  • 5단계: 슬레이브들이 새 마스터에서 데이터를 받도록 SLAVEOF 명령 수행(slave-reconf-done)
  • 6단계: 센티널 내 정보 갱신(failover-end, switch-master, update_config)

시간초과(timeout)가 발생해서 취소(abort)되면 각 단계마다 다음과 같은 메시지가 센티널 로그에 남는다.

  • 2단계: 센티널 리더 선출 -> "-failover-abort-not-elected"
  • 3단계: 슬레이브 선정 -> "-failover-abort-no-good-slave"
  • 4단계: 선정된 슬레이브 마스터로 승격 -> "-failover-abort-slave-timeout"
  • 5단계: 슬레이브들이 새 마스터에서 데이터를 받도록 명령 수행 -> "+failover-end-for-timeout"

2,3,4단계에서 시간초과(timeout)가 발생하면 "failover-abort-..."로 시작하는 메시지를 남기고 취소를 한다.   하지만 5단계에서 좀 다르다.   5단계는 첫 번째 슬레이브부터 마지막 슬레이브까지 "slaveof" 명령이 완료된 시간을 체크하므로 슬레이브 수에 따라 시간초과 발생 가능성이 다른 단계에 비해서 높다.   이 단계에서 시간초과가 발생하면 센티널 로그에 "+failover-end-for-timeout" 메시지를 남기고, 완료되지 않은 슬레이브들에 대해서 "slaveof" 명령을 다시 보낸다.   이 때 센티널 로그에는 "+slave-reconf-sent-be" 메시지를 남긴다.   따라서 5단계에서는 시간초과가 발생해도 장애조치는 이상없이 완료된다.

사용법

Syntax: sentinel failover-timeout <master-name> <milliseconds>
sentinel.conf 파일: sentinel failover-timeout master-name 180000

  • 존재하지 않는 master-name을 지정했을 경우:
    *** FATAL CONFIG FILE ERROR ***     "No such master with specified name."
  • 0 또는 음수를 입력했을 경우:
    *** FATAL CONFIG FILE ERROR ***     "negative or zero time parameter."
  • 실수(소수점)를 입력했을 경우: 에러가 발생하지 않는다. 정수부분만 남아 적용된다.
    예) 1000.5 ---» 1000 적용

파라미터

  • 이 파라미터는 version 2.8.0 부터 사용할 수 있습니다.

문서

  • 이 문서는 버전 3.2.8을 기준으로 만들었습니다.

<< DOWN-AFTER-MILLISECONDS FAILOVER-TIMEOUT PARALLEL-SYNCS >>

조회수 :

Email 답글이 올라오면 이메일로 알려드리겠습니다.