Redis 哨兵机制
概述
由一个或多个 Sentinel(哨兵)实例组成的 Sentinel 系统可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器,并在被监视的主服务器进入下线状态时,自动将下线主服务器属下的某个从服务器升级为新的主服务器
简单来说,哨兵就是带有自动故障转移功能的主从架构
搭建哨兵架构
以 Ubuntu 18.04.5,redis-7.0.4 为例,这里以一台机器的三个端口作演示,分别是 6379、6380、6381,对应主节点、从节点一、从节点二
搭建哨兵集群,端口分别是 26379、26380、26381,从 Redis 源码目录复制三份哨兵配置文件 sentinel.conf,需要的修改内容如下:
# sentinel实例端口
port 26379
# sentinel monitor <被监控主节点名称(此处可自定义)> <被监控主节点ip> <被监控主节点port> <quorum>
# quorum:只有超过quorum数量的哨兵认为主机已死,才能推举新的主机,quorum值最好超过Sentinel数量(单数)的一半
sentinel monitor master 127.0.0.1 6379 2
使用如下命令分别启动三个哨兵节点
redis-sentinel sentinel.conf
此时哨兵架构就搭建完成了,如果 Master 异常,就会选取一个 Slave 作为 Master,将其他 Slave 连接到新的 Master
Master-Slave 切换后,Master、Slave、Sentinel 的配置文件都会发生变化,新的 Master 节点没有了 slaveof 配置,其他 Slave 节点则 slaveof 新的 Master 节点,Sentinel 节点的监控目标也会发生变化
本章的例子中,一个哨兵只监控了一个主节点,实际上,一个哨兵可以监控多个主节点,通过配置多条 sentinel monitor 即可实现
SpringBoot 操作哨兵集群
启用哨兵机制,主节点可能会经常发生变化,因此配置文件也需要修改
# 不再需要这样配置
#spring.redis.host=39.108.6.119
#spring.redis.port=6379
#spring.redis.database=0
# redis 哨兵监听的主节点名
spring.redis.sentinel.master=master
# redis 哨兵的 IP 和端口
spring.redis.sentinel.nodes=127.0.0.1:26379,127.0.0.1:26380,127.0.0.1:26381
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战