Redis 学习总结(3) Redis 哨兵模式
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis 学习总结(3) Redis 哨兵模式相关的知识,希望对你有一定的参考价值。
参考技术A在实际开发中不会仅仅部署一个 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/redis.conf 文件,主要配置内容如下:
配置节点2:副本
编辑一个 box2/redis.conf 文件,主要配置内容如下:
配置节点3:副本
编辑一个 box3/redis.conf 文件,主要配置内容如下:
分别启动这三个redis
命令行执行 redis-server ,并指定 配置文件的路径参数。
如何查看“主从复制”是否配置成功?
使用 info replication 命令,操作如下:
副本节点设置为只读?
从 Redis 2.6 开始,副本已被默认设置为 只读,无需额外配置。.
一般情况下,至少会需要三个哨兵对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 来设置,它允许您设置以下属性:
配置application.yml
比如我这里修改我的 application.yml 文件如下:
我的配置文件示例: https://github.com/vir56k/java_demo/tree/master/redis-sentinel
我的 springboot 配置实例: https://github.com/vir56k/java_demo/tree/master/redis-sentinel/springboot_redis_demo
Redis官网 sentinel 介绍
https://redis.io/topics/sentinel
spring-data/data-redis
https://docs.spring.io/spring-data/data-redis/docs/current/reference/html/#redis:sentinel
https://www.cnblogs.com/jaycekon/p/6237562.html
END
以上是关于Redis 学习总结(3) Redis 哨兵模式的主要内容,如果未能解决你的问题,请参考以下文章
Redis哨兵模式(sentinel)学习总结及部署记录(主从复制读写分离主从切换)
Redis哨兵模式(sentinel)学习总结及部署记录(主从复制读写分离主从切换)