-
什么是redis-sentinel?python
- 当用redis做master-slave的高可用时,若是master自己宕机,redis自己或者客户端都没有实现主从切换的功能。
- 而redis-sentinel就是一个独立运行的进程,用于监控多个master-slave集群,自动发现master宕机,进行自动切换slave > master。
-
sentinel的主要功能redis
- 不时的监控redis是否良好运行,若是节点不可达就会对节点进行下线标识
- 若是被标识的是主节点,sentinel就会和其余的sentinel节点“协商”,若是其余节点也认为主节点不可达,就会选举一个sentinel节点来完成自动故障转义
- 在master-slave进行切换后,master_redis.conf、slave_redis.conf和sentinel.conf的内容都会发生改变,即master_redis.conf中会多一行slaveof的配置,sentinel.conf的监控目标会随之调换
-
环境准备数据库
#三个redis数据库实例 配置好一主多从 #6379.conf port 6379 daemonize yes logfile "6379.log" dbfilename "dump-6379.rdb" dir "/var/redis/data/" #6380.conf port 6380 daemonize yes logfile "6380.log" dbfilename "dump-6380.rdb" dir "/var/redis/data/" slaveof 127.0.0.1 6379 #6381.conf port 6381 daemonize yes logfile "6381.log" dbfilename "dump-6381.rdb" dir "/var/redis/data/" slaveof 127.0.0.1 6379
-
查看主从关系是否正确code
redis-server 6379.conf redis-server 6380.conf redis-server 6381.conf #开启三个redis库 以后能够直接经过端口调用 redis-cli -p 6379 info replication redis-cli -p 6380 info replication redis-cli -p 6381 info replication
-
配置哨兵进程,一样是三个,配置除了监听端口 没有别的不一样,另外须要注意:哨兵第一次启动后,会修改配置文件,若是错了,得删除配置文件,从新写server
#sentinel-26379.conf port 26379 dir /var/redis/data/ logfile "26379.log" // 当前Sentinel节点监控 192.168.182.130:6379 这个主节点 // 2表明判断主节点失败至少须要2个Sentinel节点节点赞成 // s21ms是主节点的别名 sentinel monitor s21ms 127.0.0.1 6379 2 //每一个Sentinel节点都要按期PING命令来判断Redis数据节点和其他Sentinel节点是否可达,若是超过30000毫秒30s且没有回复,则断定不可达 sentinel down-after-milliseconds s21ms 20000 //当Sentinel节点集合对主节点故障断定达成一致时,Sentinel领导者节点会作故障转移操做,选出新的主节点,原来的从节点会向新的主节点发起复制操做,限制每次向新的主节点发起复制操做的从节点个数为1 sentinel parallel-syncs s21ms 1 //故障转移超时时间为180000毫秒 sentinel failover-timeout mymaster 180000 //后台运行 daemonize yes
-
启动哨兵进程
redis-sentinel sentinel-26379.conf redis-sentinel sentinel-26380.conf redis-sentinel sentinel-26381.conf
-
验证哨兵是否正常it
redis-cli -p 26379 info sentinel master0:name=s21ms,status=ok,address=127.0.0.1:6379,slaves=2,sentinels=3
-
干掉主库 检测哨兵的是否正常能够切换状态io
kill -9 12749 ps -ef|grep redis redis-cli -p 6380 info replication redis-cli -p 6381 info replication redis-cli -p 6380 info replication redis-cli -p 6381 info replication