[Practice] Redis Sentinel
2020. 10. 8. 19:34ㆍDatabase/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
6) Sentinel 테스트
모든 Sentinel이 구동이 완료되었을 경우, Redis Master를 종료한 뒤 Sentinel에서의 로그를 확인한다. Slave 1으로 Master가 승격이 된것을 확인할 수 있다.
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 |