[redis] redis failover tool "Sentinel" 사용법.
redis failover tool "Sentinel" 사용법.
Redis Sentinel이란 고가용성 서비스를 위한 Failover 도구 입니다.
Master 서버가 죽을경우 Replication 서버인 Slave가 Master로 승격되는 형태로 동작하는 전형적인 서버 이중화를 구현 가능
하도록 돕는 도구 입니다.
( 버그가 존재한다고는 하는데 아직까지 깊이 있게 경험해보지 못한 관계로 사용법에 대해서만 다루도록 하겠습니다.)
일단 기본적으로 Redis가 설치 되어야 합니다.
공식 사이트에 지원하는 버전에 대해 나와 있습니다.
Redis Sentinel is compatible with Redis 2.4.16 or greater, and redis 2.6.0-rc6 or greater.
Redis Sentinel의 Failover 과정
Redis Failover를 판단하기 위해 두가지 과정을 거쳐야 합니다.
바로 Subjective down (sdown), Objective down (odown)
Subjective down은 Sentinel이 장애를 감지한 경우로 Subjective down 만으로는 Failover가 진행되지 않습니다.
감지하는 Sentinel 과반수 이상이 장애를 감지 할 경우 Objective down이 발생하는데 이 경우 Failover를 진행 하게 됩니다.
1. Master, Slave Monitoring
[그림1] Sentinel Monitoring
2. Objective down 발생
[그림2] Objective down
3. 기존 Slave, Master 승격
[그림3] Master 승격
설치환경
Ubuntu : 12.10
Redis : redis-2.6.14
step 1. redis 설치
일단 선수과제로 Redis를 설치합니다.
http://rocksea.tistory.com/83 -> 설치하기.
http://rocksea.tistory.com/87 -> master, slave 설정
redis를 설치하면 sentinel은 같이 설치 됩니다. ( 소스안에 sentinel.conf와 실행 바이너리가 존재함 )
step 2. redis sentinel 설정 및 실행
redis-2.6.14/sentinel.conf
sentinel monitor mymaster 127.0.0.1 6379 1 # monitoring할 master 아이피 및 odown 기준을 위한 sentinel 정족 수 설정
sentinel auth-pass mymaster 1234 # master password 설정
sentinel down-after-milliseconds mymaster 30000 # 장애감지 이후 몇초 후 sdown으로 전이 될지 설정
sentinel can-failover mymaster yes # failover 진행 여부 설정
로그내용을 살펴보면 Master가 sdown, odown진행 후 failover 기능이 동작 한 뒤 기존의 slave를 master로 승격시키고
slave를 sdown시킨 후 동작이 완료 됩니다.
기존의 Master를 다시 올리게 되면 Slave로 올라오게 되면서 서로 Master <-> Slave 역할이 바뀌게 됩니다.
[22248] 28 Oct 18:30:20.461 * +demote-old-slave slave 127.0.0.1:6379 127.0.0.1 6379 @ mymaster 127.0.0.1 6389
[22248] 28 Oct 18:30:20.662 # -sdown slave 127.0.0.1:6379 127.0.0.1 6379 @ mymaster 127.0.0.1 6389
일단 여기까지 Test를 진행 하였으며 앞으로 버그라던지 다른 보완점을 찾게되면 Post Update를 하도록 하겠습니다.
.by rocksea