Redis的哨兵(sentinel) 系统用于管理多个 Redis 服务器,该系统执行以下三个任务:
· 监控(Monitoring): 哨兵(sentinel) 会不断地检查你的Master和Slave是否运作正常。
· 提醒(Notification):当被监控的某个 Redis出现问题时, 哨兵(sentinel) 可以通过 API 向管理员或者其他应用程序发送通知。
· 自动故障迁移(Automatic failover):当一个Master不能正常工作时,哨兵(sentinel) 会开始一次自动故障迁移操作,它会将失效Master的其中一个Slave升级为新的Master, 并让失效Master的其他Slave改为复制新的Master; 当客户端试图连接失效的Master时,集群也会向客户端返回新Master的地址,使得集群可以使用Master代替失效Master。
哨兵(sentinel) 是一个分布式系统,你可以在一个架构中运行多个哨兵(sentinel) 进程,这些进程使用流言协议(gossipprotocols)来接收关于Master是否下线的信息,并使用投票协议(agreement protocols)来决定是否执行自动故障迁移,以及选择哪个Slave作为新的Master.
每个哨兵(sentinel) 会向其它哨兵(sentinel)、master、slave定时发送消息,以确认对方是否”活”着,如果发现对方在指定时间(可配置)内未回应,则暂时认为对方已挂(所谓的”主观认为宕机” Subjective Down,简称sdown).
若“哨兵群”中的多数sentinel,都报告某一master没响应,系统才认为该master"彻底死亡"(即:客观上的真正down机,Objective Down,简称odown),通过一定的vote算法,从剩下的slave节点中,选一台提升为master,然后自动修改相关配置.
虽然哨兵(sentinel) 释出为一个单独的可执行文件 redis-sentinel ,但实际上它只是一个运行在特殊模式下的 Redis 服务器,你可以在启动一个普通 Redis 服务器时通过给定 --sentinel 选项来启动哨兵(sentinel).哨兵(sentinel) 的一些设计思路和zookeeper非常类似单个哨兵(sentinel)。
哨兵模式修改配置
在redis 安装文件中找到 sentinel.conf 配置文件
修改监听redis 的IP和端口号以及选举次数,以及密码
主节点 名称 IP 端口号 选举次数
修改心跳检测 1000毫秒
因为我的redis服务器很少一主一从 所以最多合格节点数只能配置成一
sentinel parallel-syncs mymaster 数值 --- 最多多少合格节点
启动哨兵模式
/usr/local/redis/etc/注意: 这个路径要根据你的sentinel所在的路径写。
./redis-server /usr/local/redis/etc/sentinel.conf --sentinel &
启动结果如下
下面再来确定一下从redis 的leader
ok ,现在让主redis 宕机
因为现在从redis 就一个 192.168.2.108
此时查看从redis 的信息 这是从redis 的角色已经变成master了
此时插入数据,已经可以做写入了
至此redis 的哨兵机制已经验证成功了。
。。。。。
那么如果现在把原先那个主的启动又会怎样呢?感兴趣的小伙伴可以继续向下看实验。
原来主的角色已经变成从的了。已经没有写的权限了。
好了,针对本次实验,总结一下整个过程。
本次实验
1、最开始 主的redis 服务器 命名为A 从的redis服务器命名为B。
2、为 B 配上redis的哨兵监听。
3、让A宕机,此时就剩一台B 。根据哨兵机制的投票选举算法只能选择B 此时B 就成了主redis。
4、当原先A重新启动,此时A 已经是从redis了。