redis高可用-哨兵机制

一:背景

上一节我们已经实现了redis的主从同步,从而实现服务的流量分摊和数据高可用,但是出现故障以后,需要人工手动接入,手动切换主从,来实现故障转移。这是比较麻烦的,毕竟人不能实时盯着服务,如果没有人工介入,如何实现redis高可用呢?还好redis设计者帮我们考虑了解决方案,可以使用哨兵机制。

二:配置实现

1:环境介绍:

主redis服务: ip 192.168.56.101

从1: ip 192.168.56.102

从2: ip 192.168.56.103

2:前提条件(主从同步需要提前配置好):

主服务配置:

masterauth "123456"

从1配置:

masterauth "123456"

replicaof 192.168.56.101 6379

从2配置:

masterauth "123456"

replicaof 192.168.56.101 6379

3:配置哨兵

我们直接在主服务所在服务器上部署哨兵,也可以在每台服务器上单独部署一个哨兵,这里要至少部署三个哨兵。

从redis安装包的src目录复制哨兵启动文件:

mkdir /usr/local/sentinel/

cp /usr/local/redis/redis-6.0.7/src/redis-sentinel /usr/local/sentinel/

创建三份哨兵配置文件,这里监听的端口为5000-5002

vi s1/sentinel_5000.conf

sentinel deny-scripts-reconfig yes //不允许使用SENTINEL SET设置

sentinel monitor mymaster 192.168.56.101 6379 2 //自定义主节点名称

sentinel auth-pass mymaster 123456

sentinel failover-timeout mymaster 18000 //故障中每个阶段的最长超时时间

daemonize yes

port 5000 //哨兵端口号

logfile "/usr/local/sentinel/s1/sentinel.log"

dir "/usr/local/sentinel/s1/data"

复制以上文件,只需要修改端口号,logfile和dir即可

复制的目录为

s2/sentinel_5001.conf

s3/sentinel_5002.conf

启动哨兵:

#!/bin/bash

./redis-sentinel ./s1/sentinel_5000.conf

./redis-sentinel ./s2/sentinel_5001.conf

./redis-sentinel ./s3/sentinel_5002.conf

4:故障自动转移实测

现在我们的主节点是192.168.56.101

我们查看 我们的哨兵日志

发现主节点的确是192.168.56.101

我们把主节点关闭redis服务,哨兵会工作去重新选举一个节点作为主节点,我们试下

关闭服务以后,我们查看哨兵日志

发现主服务从192.168.56.101这台机器变更为192.168.56.103这台机器。

我们在103这台机器的redis上写入数据。

发现103可以写入数据,同时102的服务已经同步了数据了,这时候我们重新打开101的redis服务

发现101这台机器的redis也从103同步了数据。

通过以上的操作,我们发现101主服务出现故障以后,哨兵检测到故障从从服务中的两个102和103中选择了103作为新的主服务,继续工作。

三:总结

redis哨兵机制,可以在主服务挂掉接口,快速的从服务中选举新的服务作为主服务继续提供服务。从而实现故障自动修复。让redis高可用更加稳固。

相关推荐
摇滚侠3 小时前
《On Java 中文版 基础卷》阅读笔记 实现隐藏 12
java·数据库·笔记
川石课堂软件测试3 小时前
学习软件测试需掌握的一些知识
数据库·python·sql·功能测试·网络协议·mysql·http
2501_937767164 小时前
自建 SQL 数据库定时备份踩坑复盘与落地思路
数据库·sql
silvamux_5 小时前
10款模型写种草笔记:可发布性、返工来源与成本数据缺口复盘
java·数据库·笔记
夕除7 小时前
redis--模型
redis
I Am a robert girl7 小时前
从 GameHorizon 拆解多时间尺度游戏评测:数据管线、离线基准与在线回放的三层设计
数据库·游戏·多时间尺度·数据管线·游戏评测·离线基准·在线回放
躺柒7 小时前
读数据安全架构设计与实践17安全架构案例(下)
数据库·安全·零信任·安全架构·防火墙·无边界
SelectDB8 小时前
实时更新排错现场:导入了却查到旧数据,和 FINAL 越加越慢的两条路
大数据·数据库·数据分析
SelectDB8 小时前
拿 Planet 的账单一行行对下来,我总结出三个可自查的校验点
大数据·数据库·数据分析
SelectDB8 小时前
Apache Doris + Vane:让多模态数据进入业务分析
大数据·数据库·数据分析