實現redis高可用主從之sentinel
阿新 • • 發佈:2018-04-09
redis sentinel redis主從 redis高可用 sentinel作用
- 監控(Monitoring): Sentinel 會不斷地檢查你的主服務器和從服務器是否運作正常。
- 提醒(Notification): 當被監控的某個 Redis 服務器出現問題時, Sentinel 可以通過 API 向管理員或者其他應用程序發送通知。
- 自動故障遷移(Automatic failover): 當一個主服務器不能正常工作時, Sentinel 會開始一次自動故障遷移操作, 它會將失效主服務器的其中一個從服務器升級為新的主服務器, 並讓失效主服務器的其他從服務器改為復制新的主服務器; 當客戶端試圖連接失效的主服務器時, 集群也會向客戶端返回新主服務器的地址, 使得集群可以使用新主服務器代替失效服務器。
實施環境
系統環境:centos7
redis版本:4.0.8
主服務器IP:192.168.20.101 6379
從服務器IP:192.168.20.99 6379
主服務器sentinel端口:26379
從服務器sentinel端口:26379
安裝redis
[root] # wget http://download.redis.io/releases/redis-4.0.8.tar.gz [root] # tar zxvf redis-4.0.8.tar.gz [root] # cd redis-4.0.8 [root] # make [root] # mkdir -p /usr/local/redis [root] # cp /usr/local/src/redis-4.0.8/src/redis-server /usr/local/redis/ [root] # cp /usr/local/src/redis-4.0.8/src/redis-cli /usr/local/redis/ [root] # cp /usr/local/src/redis-4.0.8/redis.conf /usr/local/redis/ [root] # cd /usr/local/redis [root] # vim /usr/local/redis/redis.conf
修改以下四項:
bind 0.0.0.0 #接受所有來自於可用網絡接口的連接
daemonize yes #啟用後臺守護進程
protected-mode no #禁用保護模式
requirepass 123456 #設置密碼
[root] # vim /etc/init.d/redis
#!/bin/sh # description: Start and Stop redis #PATH=/usr/local/bin:/sbin:/usr/bin:/bin REDISPORT=6379 EXEC=/usr/local/redis/redis-server REDIS_CLI=/usr/local/redis/redis-cli PIDFILE=/var/run/redis_6379.pid CONF="/usr/local/redis/redis.conf" AUTH="123456" case "$1" in start) if [ -f $PIDFILE ] then echo "$PIDFILE exists, process is already running or crashed" else echo "Starting Redis server..." $EXEC $CONF fi if [ "$?"="0" ] then echo "Redis is running..." fi ;; stop) if [ ! -f $PIDFILE ] then echo "$PIDFILE does not exist, process is not running" else PID=$(cat $PIDFILE) echo "Stopping ..." $REDIS_CLI -p $REDISPORT SHUTDOWN while [ -x ${PIDFILE} ] do echo "Waiting for Redis to shutdown ..." sleep 1 done echo "Redis stopped" fi ;; restart|force-reload) ${0} stop ${0} start ;; *) echo "Usage: /etc/init.d/redis {start|stop|restart|force-reload}" >&2 exit 1 esac
[root] # chmod 755 /etc/init.d/redis #可執行
[root] # chkconfig --add redis #添加系統服務
[root] # vim /etc/rc.local
在文件末尾添加以下內容
service redis start #開機啟動
開啟redis服務
[root] # service redis start
查看進程
[root] # ps aux | grep redis
配置redis主從
-
主(master):192.168.20.101
- 添加以上redis配置
-
從(slave):192.168.20.99
- 添加以上redis配置
- 添加以下配置
slaveof 192.168.20.101 6379
masterauth 123456
查看主從信息
[root] # cd /usr/local/redis
[root] # ./redis-cli -a 123456
[root] > info replication
- 主(master)
- 從(slave)
- 驗證
主-停止redis
從-變主
從-保存數據,遷移數據到主redis
主-重啟redis服務
從-重新切換成從redis
從-又成為只讀redis服務
配置高可用redis主從
[root] # cp /usr/local/src/redis-4.0.8/sentinel.conf /usr/local/redis/ #復制sentinel配置文件
[root] # vim /usr/local/redis/sentinel.conf
修改如下配置
daemonize yes
protected-mode no
sentinel monitor mymaster 192.168.20.101 6379 1
sentinel down-after-milliseconds mymaster 1000
sentinel failover-timeout mymaster 5000
sentinel auth-pass mymaster 123456
詳細配置及解釋見redis中文網
[root] # netstat -lap |grep 26379
[root] # ./redis-cli -h 192.168.20.101 -p 26379
[root] # >info
kill主redis進程
自動切換成功
實現redis高可用主從之sentinel