redis 哨兵集群
redis哨兵集群依赖主从复制集群,目前主从复制集群是1主2从,单机部署测试,目录分别为
/usr/local/redis-7.0.15-master
/usr/local/redis-7.0.15-slave
/usr/local/redis-7.0.15-slave2
redis部署包自带哨兵程序/usr/local/redis-7.0.15-master/src/redis-sentinel和哨兵配置/usr/local/redis-7.0.15-master/sentinel.conf,因此分别在这3个目录启动3个哨兵
slave-priority 100
当本机为从角色时, 读取 从的 等级,该数值 越小,等级越大, 在主从切换时,
哨兵读取该配置,并选取值最小的从节点作为新主
3个哨兵都监控主节点,通过主节点可以知道有哪些slave,所以sentinel monitor mymaster配置都一样
1、修改master的哨兵配置
vim /usr/local/redis-7.0.15-master/sentinel.conf #17行,关闭保护模式 protected-mode no #21行,Redis哨兵默认的监听端口 port 26379 #26行,指定sentinel为后台启动 daemonize yes pidfile "/var/run/redis-sentinel_26379.pid" #36行,指定日志存放路径 logfile "/var/log/sentinel_26379.log" #65行,指定数据库存放路径 dir "/var/lib/redis/26379" #84行,修改 指定该哨兵节点监控主节点 sentinel monitor mymaster 192.168.18.14 6379 2 # mymaster是自定义的,192.168.18.14:6379这个主节点,该主节点的名称是mymaster,最后的2的含义与主节点的故障判定有关:表示至少需要2个哨兵节点同意,才能判定主节点故障并进行故障转移 #主节点的登录密码 sentinel auth-pass mymaster sykj@2025
2、修改第一个slave的哨兵配置
vim /usr/local/redis-7.0.15-slave/sentinel.conf #17行,关闭保护模式 protected-mode no #21行,Redis哨兵默认的监听端口 port 26380 #26行,指定sentinel为后台启动 daemonize yes pidfile "/var/run/redis-sentinel_26380.pid" #36行,指定日志存放路径 logfile "/var/log/sentinel_26380.log" #65行,指定数据库存放路径 dir "/var/lib/redis/26380" #84行,修改 指定该哨兵节点监控主节点 sentinel monitor mymaster 192.168.18.14 6379 2 # mymaster是自定义的,192.168.18.14:6379这个主节点,该主节点的名称是mymaster,最后的2的含义与主节点的故障判定有关:表示至少需要2个哨兵节点同意,才能判定主节点故障并进行故障转移 #主节点的登录密码 sentinel auth-pass mymaster sykj@2025
3、修改第二个slave的哨兵配置
vim /usr/local/redis-7.0.15-slave2/sentinel.conf #17行,关闭保护模式 protected-mode no #21行,Redis哨兵默认的监听端口 port 26381 #26行,指定sentinel为后台启动 daemonize yes pidfile "/var/run/redis-sentinel_26381.pid" #36行,指定日志存放路径 logfile "/var/log/sentinel_26381.log" #65行,指定数据库存放路径 dir "/var/lib/redis/26381" #84行,修改 指定该哨兵节点监控主节点 sentinel monitor mymaster 192.168.18.14 6379 2 # mymaster是自定义的,192.168.18.14:6379这个主节点,该主节点的名称是mymaster,最后的2的含义与主节点的故障判定有关:表示至少需要2个哨兵节点同意,才能判定主节点故障并进行故障转移 #主节点的登录密码 sentinel auth-pass mymaster sykj@2025
4、创建3个哨兵的数据目录
mkdir /var/lib/redis/26379 mkdir /var/lib/redis/26380 mkdir /var/lib/redis/26381
5、启动3个哨兵
/usr/local/redis-7.0.15-master/src/redis-sentinel /usr/local/redis-7.0.15-master/sentinel.conf /usr/local/redis-7.0.15-slave/src/redis-sentinel /usr/local/redis-7.0.15-slave/sentinel.conf /usr/local/redis-7.0.15-slave2/src/redis-sentinel /usr/local/redis-7.0.15-slave2/sentinel.conf
6、哨兵的配置文件自动生成了一些主从复制状态的信息,此后主从复制状态会由哨兵接管
7、查看sentinel状态
8、实时查看某个Sentinel的日志,等下kill掉master
tail -f /var/log/sentinel_26380.log
9、测试,kill掉master查看某个Sentinel日志。通过日志查看新的master变成192.168.18.14:6381,挂掉的master变成slave。并且已经挂掉的master的配置也被修改成slave角色的配置
第一个slave的master也变成了192.168.18.14:6381
再次查看sentinel状态,显示的master也变成了192.168.18.14:6381
10、恢复之前挂掉的master
恢复前查看现在master的状态
启动6379端口的之前挂掉的master,恢复后查看现在master的状态
已经挂掉的master重启后变成slave,这是因为已经挂掉的master的配置也被修改成slave角色的配置
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)