redis sentinel主从切换

sentinel(哨兵)进程是用来监控master redis的,如果主master出现故障,并且符合sentinel设定的切换条件,那么sentinel就会自动的切换主从关系。
老的主从配置
master redis配置

bind 0.0.0.0   //绑定IP地址,可以通过ifconfig 获取Ip地址
protected-mode yes
port 6379
tcp-backlog 511
timeout 30  //Client 端空闲断开连接的时间
tcp-keepalive 300
daemonize yes   //默认值是no,把值修改为yes,以后台模式运行
supervised no
pidfile /var/run/redis_6379.pid
loglevel notice
logfile /var/log/redis/redis.log
databases 16
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir /var/lib/redis
slave-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
slave-priority 100
appendonly no
appendfilename "appendonly.aof"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
lua-time-limit 5000
slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 0
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
aof-rewrite-incremental-fsync yes

slave redis配置

bind 0.0.0.0
protected-mode yes
port 6379
tcp-backlog 511
timeout 30
tcp-keepalive 300
daemonize yes
supervised no
pidfile /var/run/redis_6379.pid
loglevel notice
logfile /var/log/redis/redis.log
databases 16
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir /var/lib/redis
slaveof 10.21.252.172 6379   //主服务器的Ip地址和Port端口号
slave-read-only yes
slave-serve-stale-data no   //如果slave 无法与master 同步,设置成slave不可读,方便监控脚本发现问题。
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
slave-priority 100
appendonly yes   //默认值是No,意思是不使用AOF增量持久化的方式,使用RDB全量持久化的方式。把No值改成Yes,使用AOF增量持久化的方式
appendfilename "appendonly.aof"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
lua-time-limit 5000
slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 0
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
aof-rewrite-incremental-fsync yes

redis-sentinel的配置(和slave redis位于同一台服务器)

port 26379
dir "/tmp"
sentinel myid da322346572a9c576f7969ac1894e6a60acc8f71
sentinel monitor mymaster 10.21.252.172 6379 1  #监控的master redis地址,1表示只需要1个哨兵同意就进行主从切换
sentinel down-after-milliseconds mymaster 5000  //哨兵程序每5秒检测一次Master是否正常
sentinel failover-timeout mymaster 60000
logfile "/var/log/redis/sentinel.log"
sentinel config-epoch mymaster 0
sentinel leader-epoch mymaster 0
sentinel known-slave mymaster 10.21.252.173 6379
sentinel current-epoch 0

启动redis以及sentinel

servis redis start
redis-sentinel /etc/redis-sentinel.conf &

查看主从关系
master查看:
redis sentinel主从切换_第1张图片
slave查看:
redis sentinel主从切换_第2张图片
sentinel的日志:
在这里插入图片描述

接下来模拟master redis挂机,先stop master,然后查看sentinel的日志结果:可以看到已经自动进行主从切换了。
redis sentinel主从切换_第3张图片

再查看之前slave的信息:可以看到之前的slave已经变成了master(因为老的master是stop的,所以slave为0)。
redis sentinel主从切换_第4张图片
我们再启动老的master看看结果:可以看到之前老的master已经变成了slave,而且sentinel对主从关系进行了自动配置。
redis sentinel主从切换_第5张图片
redis sentinel主从切换_第6张图片
我们再来看看sentinel的配置变化:可以看到之前监控的master ip是172,现在已经变成173了。
redis sentinel主从切换_第7张图片
最后再来做一遍模拟新的master挂掉,也就是老的slave又挂了:可以看到主从关系还是顺利的进行了切换。
redis sentinel主从切换_第8张图片
以上就是对sentinel监控下的redis主从关系自动切换进行的简单实践。

你可能感兴趣的:(运维常用,运维之道)