请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册
首页 社区 数据库 Redis中的Sentinel机制

Redis中的Sentinel机制

猿梦 2022-12-30 11:46:28
啊拉谢亦丝哭肿?电脑它抹掉‘Redis的Sentinel文档概述:Redis的Sentinel系统用于管理多个Redis服务器,该系统执行以下三个任务:如何使用?启动Sentinel    对于 redis-sentinel 程序,你可以用一下命令来启动Sentinel系统:    对于 redis-server 程序,你可以用下面的命令来启动一个运行在Sentinel模式下的Redis服务器    两种方式都可以启动一个sentinel实例,启动sentinel实例必须指定相应的配置文件,系统会使用配置文件来保存sentinel的当前状态,并在Sentinel重启时通过载入配置文件来进行状态还原。    注意:如果启动Sentinel时没有指定相应的配置文件,或者指定的配置文件不可用(not writabel),那么Sentinel会拒绝启动。    如何配置Sentinel?    Redis 源码中包含了一个名为 sentinel.conf 的文件, 这个文件是一个带有详细注释的 Sentinel 配置文件示例。运行一个 Sentinel 所需的最少配置如下所示:    解读一下第一条指令的意思:    其他选项的基本格式如下学到这里我们进行实操一下,感受一下哨兵的威力!    我们先在test目录下,新建三个配置文件.conf、.conf、.conf(Sentinel服务器端口号默认是在redis服务器前拼个2),用 vi 命令创建这三个配置文件,然后我们在配置文件中写入一些简单的配置:端口,哨兵名称:mymaster,主机地址:127.0.0.1,监控的redis端口号:6379,必须要2台从Sentinel服务器同意才会切换master,并进行故障迁移。(注意,这三个配置文件监控的redis服务器端口都是6379)用相同的方法,创建了另外两个sentinel配置文件我们先启动一个6379作为master再启动6380、6381,作为两个slave接下来正菜上场了!启动Sentinel!可以发现,有两个slave正在跟随master,我们只要拿哨兵监控master,就可以看到有几个slave我们继续启动,再接着启动两个Sentinel服务器现在我们做一个小实验:如果我们将master服务器(6379)关闭,两个slave之间会发生什么?当把master关闭之后,两个slave直接会有一段时间提示主服务器拒绝访问:而哨兵开始也没有立马进行选举投票,选出新master,因为redis选举默认配的时间是有些长的,要过一点时间才开始选举投票,经过重新选举之后,sentinel选择了6381作为新的master。那既然6381作为新秀,它应该有了很大的指导权,我们现在看看:我们可以看到,在6381中设置的数据,确实在6380中可以查的到!说明6380在跟随6381,说明哨兵自动帮我们实现了故障转移。我们再查看一下配置文件,看看有何变化?可以发现,和原来我们写进去的2句配置完全不一样了,也就是说哨兵会自己改动配置文件。现在的master是6381。接下来探讨一个问题:哨兵是如何发现其他哨兵的?答案是:发布订阅机制。活着的master会去查看slave是谁,然后会去订阅其他的slave我们可以用 psubscribe 去查看相关的发布订阅情况

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册