はじめに
他のRedis構築に関するページは以下をご参考ください。
Redis構築のまとめ
▽参考にさせていただきました
http://qiita.com/toshiro3/items/931ededeece6b8b1c680
Redis Sentinelとは
SentinelがRedisのレプリケーションの状態を監視し、
マスタのダウンを検知すると任意のスレーブがマスタへ昇格してくれる監視プロセス
環境
CentOS 6.8
Redis 3.2.5
構成
IPアドレス | ポート番号 | 役割 |
---|---|---|
192.168.56.111 | 6379 | Master |
192.168.56.112 | 6379 | Slave |
192.168.56.113 | 26379 | Sentinel |
192.168.56.113 | 26379 | Sentinel |
192.168.56.113 | 26379 | Sentinel |
各種設定
Master/Slaveサーバのredis.conf設定
$ vim /etc/redis/6379.conf
daemonize yes
デーモンとして使わないのならこの設定はしない
Sentinelサーバのredis.conf設定
$ vim /etc/redis/6379.conf
slaveof 192.168.56.111 6379
台数を増やす場合は追記サーバに上記と同様の設定を追加
Masterのレプリケーション確認
192.168.56.111:6379> info replication
# Replication
role:master
connected_slaves:1
slave0:ip=192.168.56.112,port=6379,state=online,offset=15,lag=0
master_repl_offset:15
repl_backlog_active:1
repl_backlog_size:1048576
192.168.56.112がレプリケーション設定されていることがわかる
Sentinelサーバのsentinel.conf設定
(詳細設定はsentinel.confの設定内容参照)
$ cp -p /usr/local/redis-3.2.5/sentinel.conf /etc/redis/26379.conf
$ vim /etc/redis/26379.conf
---
protected-mode no //もしくはbindに「0.0.0.0」を設定
port 26379 //プロセス毎にポート番号を+1する
daemonize yes
pidfile redis_sentinel.pid
dir /var/run/redis
sentinel monitor mymaster 192.168.56.111 6379 2
logfile "/var/log/redis/sentinel_26379.log"
loglevel notice
---
上記「sentinel monitor mymaster 192.168.56.111 6379 2」の「2」はsentinelでMasterが落ちたと検知したらフェールオーバするための件数(Sentinelが2台検知したらフェールオーバする)
protected-modeが無効になっていないと自動フェールオーバができない
参考)http://kenken0807.hatenablog.com/entry/2016/06/10/103656
sentinelのスクリプト化
service redis startみたいにredis-sentinelも開始できるようにする(redisをスクリプト化してなかったらRedisインストール〜起動までを参照)
$ cp -p /etc/init.d/redis /etc/init.d/redis-sentinel // 複数プロセス設定時はredis-sentinel-80,81と設定
$ vim /etc/init.d/redis-sentinel
#chkconfig:345 75 15
REDISPORT=26379 //プロセス毎にポート番号を+1する
EXEC=/usr/local/bin/redis-sentinel
PIDFILE=/var/run/redis/sentinel_${REDISPORT}.pid
$ service redis-sentinel start
Starting Redis server...
$ sudo chkconfig redis-sentinel on //自動起動する場合は設定
これでredis-sentinelをserviceコマンドが使用できるようになる
※同サーバでsentinelを複数自動起動する場合は、chkconfigの優先度をそれぞれ変更すること
例:「chkconfig: 345 75 15」「chkconfig: 345 76 16」みたいに