共计 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 机制怎么用”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。