[Practice] Redis Sentinel

2020. 10. 8. 19:34Database/Practice

1. Redis Sentinel

1) VMware 설정

Sentinel은 Redis와 동일한 서버에 설치해도 되고, 독립적인 서버에 설치해도 상관없다. Port만 따로 설정하면된다. 편의를 위해 각각의 Slave 서버에 포트만 다르게 설치한다.

VMware IP  
Master 192.168.94.10 : 6379  
Slave 1 / Sentinel 1 192.168.94.20 : 6380 192.168.94.20 : 26379
Slave 2 / Sentinel 2 192.168.94.30 : 6381 192.168.94.30 : 36379
Slave 3 / Sentinel 3 192.168.94.40 : 6382 192.168.94.40 : 46379

2) Slave 1 / Sentinel 1

'/etc/redis.conf'와 '/etc/redis-sentinel.conf'에 필요한 설정을 적용해준다.

// CentOS 6 epel 설치
rpm -Uvh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

// Redis 설치 
yum install redis

// CentOS 6 자동 실행 
chkconfig redis on 
service redis start
bind 0.0.0.0
port 6380
requirepass test1234
slaveof 192.168.94.10 6379
masterauth test1234

// Master와의 동기화 주기
repl-ping-slave-period 10
repl-timeout 60

기본적인 Slave로서의 설정이 완료되면 Sentinel 설정을 해준다.

항목 설명
sentinel monitor 마지막 '2'는 Sentinel 서버 몇 대가 Master의 응답이 없다는 상태로 판단할 때 Redis Master를 장애로 판단할 것인지에 대한 숫자 값이다.
sentinel down-after-milliseconds
몇초동안 응답에 실패했을 때 응답이 없는 상태로 판단할 것인지에 대한 시간 설정이다.
sentinel parallel-syncs Master에 장애가 발생했을 때 Slave는 새로운 Master의 데이터를 Sync해야하기에 새로운 Master에 Slave가 동시에 몇대를 접속할 수 있게 하는지에 대한 설정이다.

여러대의 Slave가 동시의 Master로 접속 시 과부하가 생길 수 있기에 1대씩 순차적으로 접속할 수 있도록 설정한다.
sentinel failover-timeout
Failover 시 3분이내에 Failover가 처리 완료되면 Slave를 Master로 변환처리한다.
sentinel auth-pass Sentinel이 Failover시 사용될 Master / Slave 암호를 입력한다.
bind 0.0.0.0
port 26379

sentinel monitor mymaster 192.168.94.10 6379 2
sentinel down-after-milliseconds mymaster 5000

sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000
sentinel auth-pass mymaster test1234

daemonize yes
pidfile /var/run/sentinel.pid
logfile /var/log/redis/sentinel.log

3) Slave 2 / Sentinel 2

// CentOS 6 epel 설치
rpm -Uvh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

// Redis 설치 
yum install redis

// CentOS 6 자동 실행 
chkconfig redis on 
service redis start
bind 0.0.0.0
port 6381
requirepass test1234
slaveof 192.168.94.10 6379
masterauth test1234

// Master와의 동기화 주기
repl-ping-slave-period 10
repl-timeout 60
bind 0.0.0.0
port 36379

sentinel monitor mymaster 192.168.94.10 6379 2
sentinel down-after-milliseconds mymaster 5000

sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000
sentinel auth-pass mymaster test1234

daemonize yes
pidfile /var/run/sentinel.pid
logfile /var/log/redis/sentinel.log

4) Slave 3 / Sentinel 3

// CentOS 6 epel 설치
rpm -Uvh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

// Redis 설치 
yum install redis

// CentOS 6 자동 실행 
chkconfig redis on 
service redis start
bind 0.0.0.0
port 6382
requirepass test1234
slaveof 192.168.94.10 6379
masterauth test1234

// Master와의 동기화 주기
repl-ping-slave-period 10
repl-timeout 60
bind 0.0.0.0
port 46379

sentinel monitor mymaster 192.168.94.10 6379 2
sentinel down-after-milliseconds mymaster 5000

sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000
sentinel auth-pass mymaster test1234

daemonize yes
pidfile /var/run/sentinel.pid
logfile /var/log/redis/sentinel.log

※ bind 항목의 경우 Sentinel들의 IP로 변경해주는게 좋다.

※ Master와 Slave 암호를 Sentinel 설정파일에 입력한 암호로 동일하게 변경을 해야한다.

5) Sentinel 실행

3대의 Sentinel을 실행한다. 각각 기본적으로 Redis를 설치하면서 제공해주는 기본 스크립트를 이용하여 구동하고, 확인한다.

sudo /etc/init.d/redis-sentinel start
ps -ef | grep sentinel
tail -n 16 /var/log/redis/sentinel.log

Sentinel 실행

6) Sentinel 테스트

모든 Sentinel이 구동이 완료되었을 경우, Redis Master를 종료한 뒤 Sentinel에서의 로그를 확인한다. Slave 1으로 Master가 승격이 된것을 확인할 수 있다.

Sentinel 테스트


[참고] crystalcube.co.kr/177

[참고] ossian.tistory.com/39?category=764921

728x90

'Database > Practice' 카테고리의 다른 글

[Practice] AWS EC2 인스턴스 Redis 설치  (0) 2020.10.15
[Practice] Redis Cluster  (0) 2020.10.08
[Practice] Redis Replication (Master-Slave)  (0) 2020.10.08
[Practice] 트리거  (0) 2020.09.30