在上一篇文章中,写了redis主从复制模式的创建,这篇文章介绍 redis哨兵模式的创建,哨兵模式是以主从复制模式的基础上,继续完善可用性!
哨兵模式
顾名思义,哨兵的作用就是监控Redis系统的运行状况。它的功能包括以下两个。
(1)监控主数据库和从数据库是否正常运行。
(2)主数据库出现故障时自动将从数据库转换为主数据库。
(图片来源网络)
可以用info replication查看主从情况 例子: 1主2从 1哨兵,可以用命令起也可以用配置文件里 可以使用双哨兵,更安全,参考命令如下:
redis-server --port 6379 redis-server --port 6380 --slaveof 192.168.0.167 6379 redis-server --port 6381 --slaveof 192.168.0.167 6379
哨兵配置文件 redis.sentinel.conf
port 20086 sentinel monitor mymaster 127.0.0.1 6381 1 sentinel down-after-milliseconds mymaster 15000 sentinel failover-timeout mymaster 120000 sentinel config-epoch mymaster 1
详细说明: 1.port 20086 --使用的端口号 2.sentinel monitor mymaster 127.0.0.1 6381 1 --Sentinel去监视一个名为master001的主redis实例,这个主实例的IP地址为本机地址192.168.110.101,端口号为6379,而将这个主实例判断为失效至少需要2个 Sentinel进程的同意,只要同意Sentinel的数量不达标,自动failover就不会执行 3.sentinel down-after-milliseconds mymaster 15000 --指定了Sentinel认为Redis实例已经失效所需的毫秒数。当实例超过该时间没有返回PING,或者直接返回错误,那么Sentinel将这个实例标记为主观下线。只有一个 Sentinel进程将实例标记为主观下线并不一定会引起实例的自动故障迁移:只有在足够数量的Sentinel都将一个实例标记为主观下线之后,实例才会被标记为客观下线,这时自动故障迁移才会执行 4.sentinel failover-timeout mymaster 120000 --如果在该时间(ms)内未能完成failover操作,则认为该failover失败 5.sentinel config-epoch mymaster 1 --master被当前sentinel实例认定为“失效”(SDOWN)的间隔时间
启动哨兵程序
>redis-server redis11.conf --sentinel
在日志的输出信息中,可以看出 1个主,两个从,在33:19.108 ,又启动一个哨兵,在34:55.273,关闭了端口6379,哨兵监控到了6379的状态sdown
主库断开后,会自动推选出一个主库,在日志中可以看到这个过程,
主库6379掉线后,推选了6381为主库