Database/Redis

[Redis] 센티넬이란, 센티넬 구동 및 모니터링 방법

꽁담 2020. 3. 19. 01:41

센티넬이란


일반적으로 운영환경에서는 마스터와 복제로 구성됩니다.

운영 중 예기치 않은 이슈로 마스터가 다운되면, 서버 담당자는 복제를 마스터로 올리고 클라이언트가 새로운 마스터에 접속할 수 있도록 해야 합니다.


센티넬은 마스터와 복제서버의 네트워크 통신이 가능한지 시도하고 있다가, 마스터에서 통신이 되지 않으면 자동으로 복제를 마스터로 올립니다.



센티넬의 기능


모니터링

센티넬은 마스터, 복제서버가 제대로 동작하고 있는지 주기적으로 검사합니다.


자동 장애조치

마스터가 예기치 않게 다운되었을 때 복제 서버를 마스터로 올립니다.

복제 서버가 여러개 있을 경우 다른 복제서버는 새로운 마스터로부터 데이터를 받을 수 있도록 재 구성합니다.

기존 마스터가 구동되는 경우 복제로 전환하여 새로운 마스터로부터 데이터를 받을 수 있도록 합니다.


알림

Failover 되었을 때 관리자에게 이메일이나 문자로 알림을 전송할 수 있습니다.




센티넬 구동 & 마스터, 복제 모니터링 방법


마스터, 복제 서버 포트

하나의 로컬서버에 구성되어 있고 마스터, 복제서버의 포트는 서로 다릅니다.

마스터 6379

복제1  6380

복제2  6381


센티넬 conf 파일 설정

1
2
3
4
5
6
$ cat sentinel.conf 
port 8000
logfile "sentinel_8000.log"
daemonize yes
sentinel monitor mymaster 127.0.0.1 6379 1
sentinel down-after-milliseconds mymaster 5000
cs


1. 센티넬의 포트를 8000 으로 설정했습니다.

2. 센티넬의 로그는 sentinal_8000.log 에 기록됩니다.

3. 센티넬도 백그라운드로 구동되도록 설정했습니다.

4. 센티넬이 구동할 때 마스터를 감지할 IP PORT QUORUM을 입력합니다.

- 마스터만 입력해주면 복제서버 정보는 마스터로부터 가지고 옵니다.

- QUORUM 은 자동장애조치 의사진행에 필요한 정족 수를 나타냅니다.

( 센티넬이 3대이고 설정한 값이 2라면, 2대 이상의 센티넬에서 마스터가 다운되었다고 인지해야 장애조치 작업이 진행)

5. 센티넬에서 마스터가 다운되었다고 인지하는 시간을 5초로 설정합니다.


* 이 값은 변경될 수 있으며, 더 많은 파라미터를 설정할 수 있습니다.


센티넬 구동

1
$ redis-sentinel sentinel.conf
cs



센티넬 구동 시 로그

1
2
3
4
5
6
7
8
9
10
2185:X 19 Mar 2020 01:03:41.947 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
2185:X 19 Mar 2020 01:03:41.947 # Redis version=5.0.6, bits=64, commit=00000000, modified=0, pid=2185, just started
2185:X 19 Mar 2020 01:03:41.947 # Configuration loaded
2186:X 19 Mar 2020 01:03:41.947 * Increased maximum number of open files to 10032 (it was originally set to 1024).
2186:X 19 Mar 2020 01:03:41.948 * Running mode=sentinel, port=8000.
2186:X 19 Mar 2020 01:03:41.948 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
2186:X 19 Mar 2020 01:03:41.949 # Sentinel ID is 7e574c84be98986bf0e0620ba4b75a7d80eb6a66
2186:X 19 Mar 2020 01:03:41.949 # +monitor master mymaster 127.0.0.1 6379 quorum 1
2186:X 19 Mar 2020 01:03:41.950 * +slave slave 127.0.0.1:6380 127.0.0.1 6380 @ mymaster 127.0.0.1 6379
2186:X 19 Mar 2020 01:03:41.951 * +slave slave 127.0.0.1:6381 127.0.0.1 6381 @ mymaster 127.0.0.1 6379
cs


Line 5 : sentinel 은 8000 포트로 구동되었습니다.

Line 8 : 마스터 서버를 모니터에 추가하였습니다.

Line 9, 10 : 마스터 서버로부터 복제서버 정보를 가지고 왔으며 센티넬 모니터링 대상에 포함하였습니다.


info sentinel

info sentinel 명령어를 통해서 sentinel 의 정보를 알 수 있습니다.
1
2
3
4
5
6
7
8
9
$ redis-cli -8000
127.0.0.1:8000> info sentinel
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=mymaster,status=ok,address=127.0.0.1:6379,slaves=2,sentinels=1
cs