[Redis] Sentinel 설정 및 동작 확인

Sentinel 설정

code를 이용하여 redis를 설치했다면, sentinel은 자동으로 설치되어 있다. /lib/redis/redis-stable 경로의 sentinel.conf file을 커스터마이징 해 보자.

먼저, 해당 file을 복사한 후 vim으로 연다.

1
2
3
cd /lib/redis/redis-stable
sudo cp sentinel.conf 11001.conf
sudo vim 11001.conf

다음의 몇 가지를 수정하여 저장한다.

1
2
3
4
5
protected-mode no
port 11001
pidfile "/var/run/redis-sentinel_11001.pid"
logfile "/var/log/sentinel_11001.log"
sentinel monitor mymaster 127.0.0.1 6379 2

다른 네트워크에서 정상적으로 sentinel을 사용하기 위해서는, 127.0.0.1 을 master의 ip로 설정하면 된다. 센티넬을 총 세 개 돌릴 것이기 때문에 이렇게 총 세 번을 반복해야 한다. 11002, 11003 file을 생성하여 수정해 보자.

1
2
3
4
5
6
# copy file
sudo cp 11001.conf 11002.conf
sudo cp 11001.conf 11003.conf
# edit file
sudo vim 11002.conf
sudo vim 11003.conf

아래를 참고하여 수정한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
# 11002.conf
protected-mode no
port 11002
pidfile "/var/run/redis-sentinel_11002.pid"
logfile "/var/log/sentinel_11002.log"
sentinel monitor mymaster 127.0.0.1 6379 2

# 11003.conf
protected-mode no
port 11003
pidfile "/var/run/redis-sentinel_11003.pid"
logfile "/var/log/sentinel_11003.log"
sentinel monitor mymaster 127.0.0.1 6379 2

Sentinel 실행 & 종료

sentinel은 다음의 명령으로 실행 가능하다.

1
sudo redis-sentinel ./11001.conf & sudo redis-sentinel ./11002.conf & sudo redis-sentinel ./11003.conf &

redis와 마찬가지로, 각각의 client shell에 정상적으로 접속하면 실행된 것이다. shell에서 info 를 입력하면 sentinel의 정보를 볼 수 있다.

1
2
3
redis-cli -p 11001
redis-cli -p 11002
redis-cli -p 11003

다음의 명령어로 종료할 수 있다.

1
2
3
redis-cli -p 11001 shutdown
redis-cli -p 11002 shutdown
redis-cli -p 11003 shutdown

Redis, Sentinel 동작 확인

sentinel의 정상 동작을 확인하기 위해서는 master redis의 동작을 중지시켜야 한다. 6379 포트를 master로 설정하였기에, 이 포트를 사용하는 redis를 내려 보자.

1
redis-cli -p 6379 shutdown

master node가 중지될 경우, 다음과 같은 일이 일어날 것이다.

  1. 6382, 6383 redis가 master(6379)를 찾지 못한다.
  2. 특정 시간(conf file에서 정의함)이 지난 후, sentinel끼리 투표를 진행한다.
  3. 과반수 이상(conf file에서 정의함) 득표한 node가 새로운 master로 등록된다.
  4. 6379 redis가 재가동되면, 새로운 master와 동기화를 시도한다.

실제로 그러한지 로그로 확인 가능하다.

1
2
3
4
5
6
7
8
9
# redis log
cat /var/log/redis_6379.log
cat /var/log/redis_6382.log
cat /var/log/redis_6383.log

# sentinel log
cat /var/log/sentinel_11001.log
cat /var/log/sentinel_11002.log
cat /var/log/sentinel_11003.log

참고


Share