Redis中的Sentinel机制怎么用

52次阅读
没有评论

共计 2289 个字符,预计需要花费 6 分钟才能阅读完成。

这篇文章将为大家详细讲解有关 Redis 中的 Sentinel 机制怎么用,丸趣 TV 小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

1. 概述

Redis-Sentinel 是 Redis 官方推荐的高可用性 (HA) 解决方案,当用 Redis 做 Master-slave 的高可用方案时,假如 master 宕机了,Redis 本身 (包括它的很多客户端) 都没有实现自动进行主备切换,而 Redis-sentinel 本身也是一个独立运行的进程,它能监控多个 master-slave 集群,发现 master 宕机后能进行自懂切换。

它的主要功能有以下几点:

不时地监控 redis 是否按照预期良好地运行;

如果发现某个 redis 节点运行出现状况,能够通知另外一个进程(例如它的客户端);

能够进行自动切换。当一个 master 节点不可用时,能够选举出 master 的多个 slave(如果有超过一个 slave 的话)中的一个来作为新的 master, 其它的 slave 节点会将它所追随的 master 的地址改为被提升为 master 的 slave 的新地址。

2. Sentinel 支持集群

很显然,只使用单个 sentinel 进程来监控 redis 集群是不可靠的,当 sentinel 进程宕掉后 (sentinel 本身也有单点问题,single-point-of-failure) 整个集群系统将无法按照预期的方式运行。所以有必要将 sentinel 集群,这样有几个好处:

即使有一些 sentinel 进程宕掉了,依然可以进行 redis 集群的主备切换;

如果只有一个 sentinel 进程,如果这个进程运行出错,或者是网络堵塞,那么将无法实现 redis 集群的主备切换(单点问题);

如果有多个 sentinel,redis 的客户端可以随意地连接任意一个 sentinel 来获得关于 redis 集群中的信息。

3. Sentinel 版本

Sentinel 当前最新的稳定版本称为 Sentinel 2(与之前的 Sentinel 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。

4. 运行 Sentinel

运行 sentinel 有两种方式:

第一种

redis-sentinel /path/to/sentinel.conf

第二种

redis-server /path/to/sentinel.conf –sentinel

以上两种方式,都必须指定一个 sentinel 的配置文件 sentinel.conf,如果不指定,将无法启动 sentinel。sentinel 默认监听 26379 端口,所以运行前必须确定该端口没有被别的进程占用。

5. Sentinel 的配置

Redis 源码包中包含了一个 sentinel.conf 文件作为 sentinel 的配置文件,配置文件自带了关于各个配置项的解释。典型的配置项如下所示:

sentinel monitor mymaster 127.0.0.1 6379 2

sentinel down-after-milliseconds mymaster 60000 sentinel failover-timeout mymaster 180000 sentinel parallel-syncs mymaster 1 sentinel monitor resque 192.168.1.3 6380 4 sentinel down-after-milliseconds resque 10000 sentinel failover-timeout resque 180000 sentinel parallel-syncs resque 5

上面的配置项配置了两个名字分别为 mymaster 和 resque 的 master,配置文件只需要配置 master 的信息就好啦,不用配置 slave 的信息,因为 slave 能够被自动检测到(master 节点会有关于 slave 的消息)。需要注意的是,配置文件在 sentinel 运行期间是会被动态修改的,例如当发生主备切换时候,配置文件中的 master 会被修改为另外一个 slave。这样,之后 sentinel 如果重启时,就可以根据这个配置来恢复其之前所监控的 redis 集群的状态。

接下来我们将一行一行地解释上面的配置项:

sentinel monitor mymaster 127.0.0.1 6379 2

这一行代表 sentinel 监控的 master 的名字叫做 mymaster, 地址为 127.0.0.1:6379,行尾最后的一个 2 代表什么意思呢?我们知道,网络是不可靠的,有时候一个 sentinel 会因为网络堵塞而误以为一个 master redis 已经死掉了,当 sentinel 集群式,解决这个问题的方法就变得很简单,只需要多个 sentinel 互相沟通来确认某个 master 是否真的死了,这个 2 代表,当集群中有 2 个 sentinel 认为 master 死了时,才能真正认为该 master 已经不可用了。(sentinel 集群中各个 sentinel 也有互相通信,通过 gossip 协议)。

关于“Redis 中的 Sentinel 机制怎么用”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-17发表,共计2289字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)