sentinel_set
Redis SENTINEL SET
레디스 센티널 교육 신청 |
레디스 정기점검/기술지원 Redis Technical Support |
레디스 엔터프라이즈 서버 Redis Enterprise Server |
---|
Redis SENTINEL SET
센티널 설정을 변경한다. 여기 설명한 항목은 sentinel set 명령으로도 변경 가능하고, sentinel.conf 파일에 파라미터로 설정 가능하다.
사용법
명령: SENTINEL SET master-name option value
설명
SET 명령은 센티널 설정을 변경하고 로그에 기록한다. 알림(notification-script)을 설정했으면 이메일이나 SMS로 변경 사항을 받아볼 수 있다.
- down-after-milliseconds milliseconds
이 시간 동안 해당 서버(마스터, 복제, 센티널)와 통신이 않되면 주관적 다운(sdown) 상태로 변경한다. 디폴트는 30000ms(30초)이다. - failover-timeout milliseconds
이것은 장애조치가 일정 시간이 지나도 완료되지 않았으면 취소(abort)하는 시간이다. 주의할 것은 장애조치 시작부터 완료될때까지의 시간이 아니고, 각 단계마다의 시간을 체크하는 것이다. 아래 각 단계 완료 직후에 failover_state_change_time을 세팅하고, 이 시각과 현재 시각을 비교해서 failover-timeout 보다 크면 장애조치를 취소한다.
장애조치를 취소(abort)한다는 것은 각 단계마다 설정한 플레그를 초기화하고 선정된 복제 정보를 삭제한다. 객관적 다운(odown) 플레그는 그대로 둔다. 정확한 의미에서 모두 롤백(rollback)하는 것은 아니지만 장애조치를 다시 시작할 수 있도록 초기화하는 것이다. 따라서 취소된 후 센티널 서버는 odown 단계에서 부터 다시 시작할 수 있다.
failover_state_change_time을 세팅하는 단계
1단계: 객관적 다운(odown)
2단계: 센티널 리더 선출(elected-leader)
3단계: 복제 선정(selected-slave)
4단계: 선정된 복제 마스터로 승격(promoted-slave)
5단계: 복제들이 새 마스터를 바라보도록 명령 수행(slave-reconf-done)
6단계: 센티널 내 정보 갱신(failover-end, switch-master, update_config)
디폴트는 180초이다. 이 값은 일반적으로 장애조치를 하는데 충분한 시간이다.
시간초과(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단계에서는 시간초과가 발생해도 장애조치는 이상없이 완료된다. - parallel-syncs count
이것은 위에서 설명한 5단계에서 동시에 몇 개의 복제에 "slaveof" 명령을 수행할지 정하는 파라이터이다. 디폴트는 1이다. 그러므로 한 번에 하나의 복제에 명령을 실행하고 완료되면 다음 복제에 명령을 수행한다. 센티널은 자신이 블로킹(blocking)되지 않게하려고 명령을 비동기(async)로 실행한다. 만약 이 기능이 없다면 여러 복제가 동시에 새 마스터에 데이터 전체 동기(Full resync)를 요청할 것이다. 이 기능(파라미터)이 있기 때문에 아래 로그에서 보는 것처럼 복제 하나씩 slaveof 명령을 보내고(sent), 데이터를 받는 중임을 확인(inprog)하고, 완료(done)되는 것이다.13:19:20.671 * +slave-reconf-sent slave 127.0.0.1:7123 127.0.0.1 7123 @ Xmaster 127.0.0.1 7124
13:19:21.688 * +slave-reconf-inprog slave 127.0.0.1:7123 127.0.0.1 7123 @ Xmaster 127.0.0.1 7124
13:19:22.723 * +slave-reconf-done slave 127.0.0.1:7123 127.0.0.1 7123 @ Xmaster 127.0.0.1 7124
13:19:22.780 * +slave-reconf-sent slave 127.0.0.1:7125 127.0.0.1 7125 @ Xmaster 127.0.0.1 7124
13:19:23.786 * +slave-reconf-inprog slave 127.0.0.1:7125 127.0.0.1 7125 @ Xmaster 127.0.0.1 7124
13:19:24.817 * +slave-reconf-done slave 127.0.0.1:7125 127.0.0.1 7125 @ Xmaster 127.0.0.1 7124 - notification-script path+file-name
이것은 경고(warning) 이벤트가 발생할때마다 지정한 스크립트 파일 또는 실행 파일을 실행해서 관리자에게 이메일이나 문자(SMS)로 변경사항을 알리는 기능이다.
파일이 없거나 실행 파일이 아니면 다음과 같은 에러 메시지가 나온다."Notification script seems non existing or non executable"스크립트 파일 지정 예) /var/redis/notify.sh
2018년 8월 3일 발표된 레디스 버전 4.0.11에 추가된 내용: sentinel.conf에 deny-scripts-reconfig yes 일 경우 변경할 수 없다.
notification(알림)에 대한 자세한 내용은 여기를 참조하세요. - client-reconfig-script path+file-name
이것은 레디스 마스터의 주소가 from-ip, port 에서 to-ip, port로 바뀌었다는 것을 알릴 때 사용한다. 이 데이터를 받아서 필요한 설정을 변경한다. 필드는 7개이고 각각 아래와 같다.
<master-name> <role> <state> <from-ip> <from-port> <to-ip> <to-port>
<role>은 "leader" 또는 "observer"
<state>는 "start" 이다.
2018년 8월 3일 발표된 레디스 버전 4.0.11에 추가된 내용: sentinel.conf에 deny-scripts-reconfig yes 일 경우 변경할 수 없다.
- auth-pass password
레디스 서버(마스터, 복제)에 requirepass가 설정되어 있다면 그 값(패스워드)를 넣는다. 센티널에는 인증(auth) 기능이 없기 때문에 이 기능은 다른 센티널에 접속할 때 사용하는 것은 아니다. - quorum count
쿼럼(정족수)이다. 객관적 다운(odown)을 판정할 때 사용되는 것으로, 이 값 이상의 센티널들이 해당 마스터가 다운되었다고 인지하면 객관적 다운이 되는 것이다. 객관적 다운 후에 장애조치가 시작된다. 값의 범위는 1에서 센티널 개수까지 이다.
명령문
SENTINEL SET master-name option value
- 이 명령은 version 2.8.0 부터 사용할 수 있다.
- 이 문서는 버전 3.2.2을 기준으로 만들었다.
Clients for Java | Jedis, Lettuce | Clients for C | Hiredis |
<< SIMULATE-FAILURE | SENTINEL SET | FLUSHCONFIG >> |
---|
조회수 :
Email
답글이 올라오면 이메일로 알려드리겠습니다.