本文将详细解释如何在Redis中使用Sentinel机制。边肖觉得挺实用的,分享给大家参考。希望你看完这篇文章能有所收获。
00-1010 Redis-sentinel是Redis官方推荐的高可用性(HA)解决方案。当redis作为主从的高可用性解决方案时,如果主机宕机,Redis本身(包括它的很多客户端)不会自动在主备之间切换,Redis-sentinel本身是一个独立的进程,可以监控多个主从集群,发现主机。
它的主要功能有以下几点:
随时监控redis是否如预期运行良好;
如果发现一个redis节点正在运行,它可以通知另一个进程(比如它的客户端);
可以进行自动切换。当主节点不可用时,主节点的一个从节点(如果有多个从节点)可以被选为新的主节点,其他从节点会将它所跟随的主节点的地址更改为提升为主节点的从节点的新地址。
00-1010显然,仅使用单个哨点进程来监控redis集群是不可靠的。当sentinel进程宕机时(sentinel本身存在单点问题,单点故障),整个集群系统将无法按预期工作。因此,有必要对哨兵进行集群,这有几个好处:
即使某些sentinel进程失败,redis集群的主备切换仍然可以执行。
如果只有一个sentinel进程,如果这个进程运行不正确,或者网络被阻塞,那么redis集群的主备切换就不会实现(单点问题);
如果有多个哨点,redis的客户端可以随意连接任意一个哨点,获取redis集群的信息。
1. 概述
哨兵最新的稳定版本叫做哨兵2(区别于之前的哨兵1)。随redis2.8安装包发布,安装Redis2.8后,可以在redis2.8/src/中找到Redis-sentinel的启动程序。
强烈建议:如果你使用的是redis2.6(sentinel版本为sentinel 1),你最好应该使用redis2.8版本的sentinel 2,因为sentinel 1有很多的Bug,已经被官方弃用,所以强烈建议使用redis2.8以及sentinel 2。
2. Sentinel支持集群
运行sentinel有两种方式:
3. Sentinel版本
redis-sentinel/path/to/sentinel . conf
4. 运行Sentinel
redis-server/path/to/sentinel . conf-sentinel
以上两种方式,必须指定一个sentinel配置文件sentinel.conf如果不指定,sentinel就不会启动。Sentinel默认监听端口26379,所以在运行之前需要确保这个端口没有被其他进程占用。
第一种
Redis源码包中包含了一个sentinel.conf文件作为sentinel的配置文件,配置文件自带了关于各个配置项的解释。典型的配置项如下所示:
哨兵监视器mymaster 127.0.0.1 6379 2
毫秒后sentinel down-my master 60000 sentinel故障转移-超时mymaster 180000 sentinel并行-同步mymaster 1 sentinel监视器resque 19 2.168.1.3 6380 4 sentinel down-毫秒后resque 10000 sentinel故障转移-超时resque 180000 sentinel并行-同步resque 5
上面的配置项配置了两个分别名为mymaster和resque的master。配置文件只需要配置主节点的信息,不需要配置从节点的信息,因为可以自动检测从节点(主节点会有关于从节点的消息)。需要注意的是,在sentinel运行期间,配置文件会被动态修改。例如,当主从切换发生时,配置文件中的主机将被修改为另一个从机。这样,如果sentinel稍后重新启动,它可以根据此配置恢复之前监控的redis集群的状态。
接下来,我们将逐行解释上述配置项:
哨兵监视器mymaster 127.0.0.1 6379 2
这一行代表哨兵监控的主机,哨兵的名字是mymaster,地址是127 . 0 . 0 . 13600 . 136006360606行尾的最后2是什么意思?我们知道,网络是不可靠的。有时一个哨兵误以为一个redis大师死了是因为网络堵塞。当哨兵被聚集时,这个问题的解决方案变得非常简单。它只需要多个哨兵相互沟通,确认一个主人是否真的死了。这2意味着当集群中的两个哨兵认为主人已经死了,就真的可以认为主人已经不在了。(哨兵集群中的哨兵也通过流言协议相互通信)。
这篇关于“如何在Redis中使用Sentinel机制”的文章就分享到这里了,希望。
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/146799.html