Redis 使用经验总结(四):redis-sentinel 哨兵模式高可用架构

时间:2018-10-07 21:57 作者:Mr.Pan 阅读数:1175


在上一篇文章中,写了redis主从复制模式的创建,这篇文章介绍 redis哨兵模式的创建,哨兵模式是以主从复制模式的基础上,继续完善可用性!


哨兵模式


顾名思义,哨兵的作用就是监控Redis系统的运行状况。它的功能包括以下两个。


(1)监控主数据库和从数据库是否正常运行。

(2)主数据库出现故障时自动将从数据库转换为主数据库。


images/wdBTSrEMmazZbcr4xS8kfyhsNiNYFDR3.jpg(图片来源网络)


可以用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

image.png


在日志的输出信息中,可以看出 1个主,两个从,在33:19.108 ,又启动一个哨兵,在34:55.273,关闭了端口6379,哨兵监控到了6379的状态sdown

主库断开后,会自动推选出一个主库,在日志中可以看到这个过程,

主库6379掉线后,推选了6381为主库

image.png




推荐文章

[推荐] linux kingbase 简单操作命令

[推荐] Redis 使用经验总结(四):redis-sentinel 哨兵模式高可用架构

[推荐] 数据库_MySQL: mysql函数

[推荐] MySQL数据库的一些简单方法

[推荐] MySQL 编译安装

[推荐] mysql端口号不是默认端口的连接方式


评论列表

   回复 引用
#1楼    2019/9/11 11:27:05    liuyuxuan
看不懂 能通俗一点吗



注册用户登录后才能发表评论,请登录注册,访问 博客首页