Redis 学习总结(3) Redis 哨兵模式

Redis 学习总结(3) Redis 哨兵模式,第1张

在实际开发中不会仅仅部署一个 Redis 服务器,为了获得高可用,Redis 哨兵模式 则是高可用的一种选择。

本文先介绍下 哨兵模式,再介绍了如何在 springboot 项目中使用。

这意味着使用 Sentinel (哨兵模式),您可以创建一个 Redis 部署,它可抵抗某些类型的故障(进行故障迁移)而无需人工干预。

它有这些功能:

Sentinel 的分布式特性
Redis Sentinel 是一个分布式系统,多个 Sentinel 进程协同工作,有这些优势:

部署前需要了解:

三个节点的基本配置

法定人数和仲裁
在配置 哨兵模式时,要指定一个 quorum,它可理解为“法定人数”。
假设有3 个 哨兵,法定人数为2。那么:

哨兵和副本的自动发现
Sentinel 与其他 Sentinel 保持连接,以便相互检查彼此的可用性并交换消息。

但是,您不需要在您运行的每个 Sentinel 实例中配置其他 Sentinel 地址的列表,因为 Sentinel 使用 Redis 实例的 Pub/Sub 功能来发现正在监视相同主节点和副本的其他 Sentinel。

类似地,您不需要配置附加到主服务器的副本地址在哪里,因为 Sentinel 会通过查询 Redis 自动发现它们。

参考我的另一篇文章:

一般需要三个节点,每个节点有一个 redis 和一个哨兵。

下面再分别描述。

我这里按三个 节点,先配置 redis 的主从复制。1个节点作为 master ,2个副本。

配置节点1:master
这里的 redis 作为 master 主redis,其他两个节点作为从节点。
我的文件夹名字叫 box1,这里编辑一个 box1/redisconf 文件,主要配置内容如下:

配置节点2:副本
编辑一个 box2/redisconf 文件,主要配置内容如下:

配置节点3:副本
编辑一个 box3/redisconf 文件,主要配置内容如下:

分别启动这三个redis
命令行执行 redis-server ,并指定 配置文件的路径参数。

如何查看“主从复制”是否配置成功?
使用 info replication 命令, *** 作如下:

副本节点设置为只读?
从 Redis 26 开始,副本已被默认设置为 只读,无需额外配置。

一般情况下,至少会需要三个哨兵对redis 进行监控,我们可以通过修改端口启动多个sentinel 服务。

第一个哨兵:
哨兵的 默认端口是 26379 ,这里不改。

第二个哨兵:
修改哨兵端口。

第三个哨兵:
修改哨兵端口。

启动哨兵
使用 redis-sentinel 命令,分别启动这三个哨兵

哨兵的自动发现
当三个哨兵都启动后,在各个哨兵的打印日志里可以看到, 三个哨兵已互相发现了彼此的存在 。

至此,配置完毕了,我们有三个 redis,和三个哨兵,看下截图。

模拟 master 宕机
按 ctrl+c 停止 master ,其位于 6379 。停止后,从日志可以看到,哨兵和 redis副本先努力继续连接 6379,反复几次失败后,开始选举出新的 master。截图如下:

至此,配置完毕。

我们看下 springboot 项目的客户端如何配置 以访问 哨兵模式的 redis。

Redis 哨兵支持
对于处理高可用Redis,Spring Data Redis 已经支持Redis Sentinel,使用RedisSentinelConfiguration,如下例所示:

Jedis 和 Lettuce 两种 redis 驱动都可以支持。

RedisSentinelConfiguration 也可以用可以 通过 PropertySource 来设置,它允许您设置以下属性:

配置applicationyml

比如我这里修改我的 applicationyml 文件如下:

我的配置文件示例: >这个软件很少见的,把上面的名字翻译过来是“哨兵保护安置者”,找了很久才知道,这款软件叫“企业网络哨兵”,下面是介绍:
企业网络哨兵全面管理局域网内计算机Internet活动:1Internet流量监测;2Internet带宽监测与控制;3Internet流量日志,实时记录局域网内计算机的Internet流量、流速和带宽占用;4规定哪些站址可以访问;5哪些计算机可以上网;6哪些计算机可以在什么时间上网;7 监视网内计算机收发邮件,保留邮件摘要副本;8限制使用Web Mail邮箱;9独立日志记录计算机上网情况、实时查询;10IP地址与MAC绑定,防止私自修改IP逃避监测;8安装容易,可以安装在代理服务器或局域内任1台计算机上;11 适合通过代理服务器、路由器、专线等各种方式接入Internet环境;12自动扫描局域网内IP节点,包括网络、工作组、网络打印机、计算机。

原文地址: >Redis的Sentinel文档

概述:Redis的Sentinel系统用于管理多个Redis服务器,该系统执行以下三个任务:

如何使用?

启动Sentinel

    对于 redis-sentinel 程序,你可以用一下命令来启动Sentinel系统:

    对于 redis-server 程序,你可以用下面的命令来启动一个运行在Sentinel模式下的Redis服务器

    两种方式都可以启动一个sentinel实例,启动sentinel实例必须指定相应的配置文件,系统会使用配置文件来保存sentinel的当前状态,并在Sentinel重启时通过载入配置文件来进行状态还原。

    注意:如果启动Sentinel时没有指定相应的配置文件,或者指定的配置文件不可用(not writabel),那么Sentinel会拒绝启动。

    如何配置Sentinel?

    Redis 源码中包含了一个名为 sentinelconf 的文件, 这个文件是一个带有详细注释的 Sentinel 配置文件示例。

运行一个 Sentinel 所需的最少配置如下所示:

    解读一下第一条指令的意思:

    其他选项的基本格式如下

学到这里我们进行实 *** 一下,感受一下哨兵的威力!

    我们先在test目录下,新建三个配置文件:26379conf、26380conf、26381conf(Sentinel服务器端口号默认是在redis服务器前拼个2),用 vi 命令创建这三个配置文件,然后我们在配置文件中写入一些简单的配置:
端口号:26379,哨兵名称:mymaster,主机地址:127001,监控的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 去查看相关的发布订阅情况

特斯拉哨兵模式显示有一个事件是特斯拉哨兵系统检测到轻微威胁。

在车辆锁闭后,哨兵模式会通过前视摄像头、两侧翼子板摄像头和后视摄像头持续监控周围环境。哨兵模式功能启用后,警戒模式将进入“待机”状态,并且像许多家庭警报系统一样,它使用汽车的外部摄像头来检测潜在威胁。

如果检测到轻微威胁,例如有人斜倚在汽车上,哨兵模式功能将切换为“警报”状态,并且将在触摸屏上显示一条消息。 如果检测到更严重的威胁,则哨兵模式功能将切换为“警报”状态,激活汽车警报,增加中央显示屏的亮度,并以汽车音频的最大音量播放音乐系统。

哨兵模式的回放:

哨兵模式的回放与特斯拉行车记录仪的回放一样,只能通过电脑或者购买一个手机OTG转接头查看U盘里的记录。

需要注意的是,开启特斯拉哨兵模式需要先准备好高速USB 30的大容U盘(建议64G)插到车辆前排的USB口,然后在车辆设置的安全选项中打开哨兵模式。哨兵模式会比较费电,大概开一天哨兵模式会减/少30-40km的续航里程。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/13167497.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-06-15
下一篇 2023-06-15

发表评论

登录后才能评论

评论列表(0条)

保存