Redis哨兵模式(自动选取主机的模式)

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
简介: Redis哨兵模式(自动选取主机的模式)

概述

网络异常,图片无法展示
|

哨兵模式主要通过redis-sentinel进行配置

网络异常,图片无法展示
|

网络异常,图片无法展示
|

比如我们有一个主机6379,还有两个从机6380,6381,不仅要配置基本的一主多从,还要单独的配置一个哨兵进程,需要不定时发请求判断我们三个服务器是否存活,哨兵通过发送命令,等待Redis服务器响应,从而监控运行的多个redis实例(服务),如果没有回复响应,那么就是断开连接宕机
这里的哨兵有两个作用
1 通过发送命令,让Redis服务器返回监控它的运行状态,包括主机和从机(主服务器和从服务器)
2 当哨兵检测到master宕机,会自动将slave变为master,然后通过发布订阅模式通知其他的从服务器,修改配置文件,让它们切换主机
然而一个哨兵进程对Redis服务器进行监控,可能会出现问题,为此,我们可以使用多个哨兵进行监控,各个哨兵直接还会进行检测,这样就形成了多哨兵模式(集群),起步就是6个进程 3哨兵 3服务器 一主二从

2上述例子是一个单机哨兵,如果这个哨兵宕机就无法保证我们的服务正常运行,正常情况下我们也会给哨兵配置集群,就是以下流程图

网络异常,图片无法展示
|

3 哨兵模式的工作流程

假设服务器宕机,哨兵1检测到这个结果,系统并不会马上进行failover过程,仅仅是哨兵1主观的认为主服务器不是决定性的(一个哨兵的判断不会立马决定结果),这个现象称为主观下线,当后面的哨兵也检测到主服务器不可用,并且数量达到一定值的时候,那么哨兵就会判断这个主服务器宕机, 这时哨兵直接会进行选票(投票的发起者是随机的),投票的结果由一个哨兵发起,进行failover(故障移除操作),切换成功后,就会通过发布订阅(比如给从机1投了一票,给从机2投了两票,那么从机2就会胜出称为新的主机),让各个哨兵把自己监控的从服务器实现切换主服务器(投票胜出的那个),这个过程称为客观下线
哨兵模式的投票是一个算法

4 配置哨兵模式

首先声明:现在我们主从复制的模式是一主(6379)二从(6380,6381),而不是层层链入
1 配饰哨兵配置文件(sentinel.conf),因为哨兵启动的时候会检测这个文件

网络异常,图片无法展示
|

#注意单词不要写错
#配置的哨兵不止于此,但是这个 最核心基本的配置
#哨兵    监控     被监控的名称  主机的ip和端口
#后面这个数字1,代表主机挂了,哨兵投票看让谁接替成为新的主机,票数最多的,就会成为主机
sentinel moitor myredis 127.0.0.1 6379 1
2 配置完成之后启动哨兵(redis-sentinel)

网络异常,图片无法展示
|

网络异常,图片无法展示
|

网络异常,图片无法展示
|

网络异常,图片无法展示
|

3 这样我们的哨兵模式就启动成功了,上图所示,哨兵模式正在检测127.0.0.1 6379这个主机,还检测到6380和6381两台从机,主机里面有1票,是它们的老大

5 测试主机宕机会怎么样

 1 首先给主机set一个值 set k1 v1然后宕机

网络异常,图片无法展示
|

2 需要等待哨兵模式一会,因为它要发送信息监控服务器等待响应,等哨兵模式得到监控信息,此时查看哨兵模式,发现79宕机,进行数据迁移然后选举新的主机

网络异常,图片无法展示
|

3 此时查看6380这个从机,发现它还是从机

网络异常,图片无法展示
|

4 查看我们的6381,发现它自动成为了主机

网络异常,图片无法展示
|

哨兵模式也有说明,6379以及shutdown,经过哨兵们的选举6381成为我们新的主机

网络异常,图片无法展示
|

结论:如果master节点断开了,就会从从机中随机选出一个从机成为新的主机(这里面有一个投票算法)

哨兵日志的几个重要部分,故障转移(数据迁移)failover,主机宕机down,选举推送新的主机

网络异常,图片无法展示
|

6 那么,现在把6379这个主机连回来有用吗?

网络异常,图片无法展示
|

网络异常,图片无法展示
|

1 答案是没用的,虽然它还是一个主机,但是其他是光杆司令,没有任何从机,需要我们手动去配置
2 查看哨兵日志,convert(转换)6379转换成为了6381的从机

网络异常,图片无法展示
|

3 再次查看6381的信息,发送它有两个从机6379,6380,所以就算6379这个曾经的主机回来,也只能给新的主机做从机

网络异常,图片无法展示
|

4 查看曾经的主机6379,也只能给新的主机6381做从机

如果主机此时正常连接回来了,只能归并到新的从机下,当作新的主机的从机,这就是哨兵模式的规则

网络异常,图片无法展示
|

7 哨兵模式的优点和缺点

1 优点
1 哨兵模式,基于主从复制,所有的主从配置的优点,它全都有,而且它还会自动配置
2主从可以切换,数据可以转移,系统的可用性就会更好(高可用)
3 哨兵模式就是主从模式的升级版,从手动升级到自动,更加完善健壮
2 缺点
1 Redis不好在线扩容的,如果集群容量一旦到达上限(集群的容量满了),在线扩容就非常麻烦(可以做横向扩展)
2 实现哨兵模式的配置其实是很麻烦的,里面有很多选择,我们配置的只是一个最基础的

8 哨兵模式的全部配置

1 哨兵模式的端口

网络异常,图片无法展示
|

2 定义哨兵的工作目录

网络异常,图片无法展示
|

3 默认主机的节点

网络异常,图片无法展示
|

4 配置主机密码,如果没有可以不进行配置

网络异常,图片无法展示
|

5 默认的延迟操作,也就是我们等待哨兵监控服务器等待的时间,默认30s,可以不用配置

网络异常,图片无法展示
|

6 故障转移的操作,并行同步的时间

网络异常,图片无法展示
|

7 设置一些其他操作,比如说默认的三分钟的故障转移,如果觉得时间长,可以进行更改

网络异常,图片无法展示
|

8 执行脚本 出现故障可以发送到我们的邮件或者服务器上面,来通知管理员(需要编写sheet脚本)

网络异常,图片无法展示
|

9 主节点改变的时候,脚本被调用

网络异常,图片无法展示
|

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
3月前
|
存储 缓存 NoSQL
Redis常见面试题(二):redis分布式锁、redisson、主从一致性、Redlock红锁;Redis集群、主从复制,哨兵模式,分片集群;Redis为什么这么快,I/O多路复用模型
redis分布式锁、redisson、可重入、主从一致性、WatchDog、Redlock红锁、zookeeper;Redis集群、主从复制,全量同步、增量同步;哨兵,分片集群,Redis为什么这么快,I/O多路复用模型——用户空间和内核空间、阻塞IO、非阻塞IO、IO多路复用,Redis网络模型
Redis常见面试题(二):redis分布式锁、redisson、主从一致性、Redlock红锁;Redis集群、主从复制,哨兵模式,分片集群;Redis为什么这么快,I/O多路复用模型
|
3月前
|
监控 NoSQL Redis
Redis 哨兵模式高可用
Redis 哨兵模式高可用
55 4
|
3月前
|
NoSQL Java Redis
分布式锁实现原理问题之使用Redis的setNx命令来实现分布式锁问题如何解决
分布式锁实现原理问题之使用Redis的setNx命令来实现分布式锁问题如何解决
|
4月前
|
存储 运维 NoSQL
Redis Cluster集群模式部署
Redis Cluster集群模式部署
104 4
|
4月前
|
运维 监控 NoSQL
Redis Sentinel哨兵模式部署
Redis Sentinel哨兵模式部署
87 2
|
4月前
|
消息中间件 负载均衡 NoSQL
Redis系列学习文章分享---第七篇(Redis快速入门之消息队列--List实现消息队列 Pubsub实现消息队列 stream的单消费模式 stream的消费者组模式 基于stream消息队列)
Redis系列学习文章分享---第七篇(Redis快速入门之消息队列--List实现消息队列 Pubsub实现消息队列 stream的单消费模式 stream的消费者组模式 基于stream消息队列)
51 0
|
7天前
|
NoSQL 网络协议 Redis
Redis的主从复制和哨兵模式
本文详细介绍了Redis的主从复制配置、原理(包括全量复制和增量复制)以及如何搭建一主二从的Redis集群,同时还探讨了Redis哨兵模式的概念、配置文件、以及如何配置一主二从三哨兵的Redis哨兵模式,以实现高可用性。
|
2月前
|
监控 NoSQL 算法
深入理解Redis哨兵模式原理
该文章讨论了Redis Sentinel模式的原理及其在Redis高可用性中的角色。
深入理解Redis哨兵模式原理
|
2月前
|
缓存 负载均衡 NoSQL
【Azure Redis】Azure Redis添加了内部虚拟网络后,其他区域的主机通过虚拟网络对等互连访问失败
【Azure Redis】Azure Redis添加了内部虚拟网络后,其他区域的主机通过虚拟网络对等互连访问失败
|
3月前
|
存储 NoSQL 算法
Redis 集群模式搭建
Redis 集群模式搭建
69 5
下一篇
无影云桌面