redis sentinel监控高可用集群实现的配置步骤


Posted in Redis onApril 01, 2022
目录

一、端口转发。

如果在一个主机里面,安装了两个redis实例,可以在项目里面配置IP端口,用iptables转发。

iptables -t nat -A PREROUTING -p tcp --dport 6379 -j REDIRECT --to-ports 7379

当发生切换的时候,触发了脚本,执行语句。端口可以马上转发带正确的redis上面。参数的含义:

redis sentinel监控高可用集群实现的配置步骤

脚本配置:

redis sentinel监控高可用集群实现的配置步骤

脚本实例:

#!/bin/bash

 iptables -t nat -I PREROUTING -p tcp --dport 6379 -j REDIRECT --to-ports $7

这样在项目配置就可以直接使用6379,有什么切换交给iptables转发。IP转发也可以用这种方法实现。不能这样实现的原因是,sentinel和redis都是由不同的容器实现。除非用宿主机安装的办法,不然由sentinel执行的脚本根本不能控制到宿主机的iptables来选择redis。

二、修改HOST文件。

这种方法和第一种少有不同。就不是从网络上面改了。项目里面的配置可以直接用主机名。不过这种方法的缺陷是只能改IP,就是说使用的端口号要一致,每次故障只切换IP,不切换端口。

echo "192.168.20.26 redis" >> /etc/hosts

这种方法不能实现的原因是,sentinel和项目执行容器独立,由sentinel执行的脚本动不了apache的host文件,除非sentinel和apache共享host文件。这非常麻烦。而且,每个sentinel有执行一次,就需要和sentinel一样数量的apache容器。

脚本示例:

#!/bin/bash

sed -i 's/$4/$6/g'  /etc/hosts

三、用第三方代理haproxy。

用这种方法的话,就不管sentinel怎么切换,haproxy只需检测到可读写的redis交给项目就行,而且项目里面配置指向haproxy的IP。

redis sentinel监控高可用集群实现的配置步骤

上图可知haproxy是通过交互发现master可用,slave都切换为down。haproxy是利用轮询检测。

redis sentinel监控高可用集群实现的配置步骤

项目的配置:

redis sentinel监控高可用集群实现的配置步骤

四、插曲

这里是sentinel检测redis。如果3个redis,mater挂了,另外一个slave顶上。如果master重启了,却没有加入集群。

问题就在这里,1的状态都知道2是master,2确不知道有1这个slave。那就是1和2没有通讯了。

1、初始状态:

redis sentinel监控高可用集群实现的配置步骤

2、初始master:

redis sentinel监控高可用集群实现的配置步骤

3、关掉1,

redis sentinel监控高可用集群实现的配置步骤

4、2切换为master:

redis sentinel监控高可用集群实现的配置步骤

5、master状态:

redis sentinel监控高可用集群实现的配置步骤

6、重启1的状态:

redis sentinel监控高可用集群实现的配置步骤
 

1启动之后,马上变为master,但是没有slave,后面切换回slave,他的master是2.。就是说1是master,2、3都是slave,1的状态可以看到2、3的存在。1挂了,2就是master,3还是slave。1重启了就应该是slave,1的状态也说他的master是2,但是2说他只有3这一个slave。

7、查看sentinel的切换日志:

redis sentinel监控高可用集群实现的配置步骤

第一行,说明检测到1已经挂了。

第二行,移除挂了这个状态,即是1已经恢复。

第三行,把1转变为slave,master为2.

这个日志说明出问题不在sentinel,因为他已经完成了使命。

8、查看1的日志:

redis sentinel监控高可用集群实现的配置步骤

这个日志说明1想去连接,但是认证失败。

9、我们去改redis的配置:

redis sentinel监控高可用集群实现的配置步骤

10、检查后一切正常。

以上就是redis sentinel监控高可用集群实现的配置步骤的详细内容,更多关于redis sentinel监控高可用集群的资料请关注三水点靠木其它相关文章!

Redis 相关文章推荐
Redis5之后版本的高可用集群搭建的实现
Apr 27 Redis
详解Redis集群搭建的三种方式
May 31 Redis
redis实现的四种常见限流策略
Jun 18 Redis
解析高可用Redis服务架构分析与搭建方案
Jun 20 Redis
redis cluster支持pipeline的实现思路
Jun 23 Redis
聊一聊Redis与MySQL双写一致性如何保证
Jun 26 Redis
使用Redis实现实时排行榜功能
Jul 02 Redis
redis中lua脚本使用教程
Nov 01 Redis
Redis超详细讲解高可用主从复制基础与哨兵模式方案
Apr 07 Redis
Redis实现分布式锁的五种方法详解
Jun 14 Redis
Redis主从复制操作和配置详情
Sep 23 Redis
redis调用二维码时的不断刷新排查分析
Apr 01 #Redis
基于Redis6.2.6版本部署Redis Cluster集群的问题
Redis分布式锁的7种实现
Redis 哨兵机制及配置实现
Redis如何使用乐观锁(CAS)保证数据一致性
Mar 25 #Redis
Redis 操作多个数据库的配置的方法实现
Mar 23 #Redis
Redis安装使用RedisJSON模块的方法
Mar 23 #Redis
You might like
php判断两个浮点数是否相等的方法
2015/03/14 PHP
Laravel5.5 手动分页和自定义分页样式的简单实现
2019/10/15 PHP
js内存泄露的几种情况详细探讨
2013/05/31 Javascript
String.prototype实现的一些javascript函数介绍
2013/11/22 Javascript
js+div实现图片滚动效果代码
2014/02/10 Javascript
javascript的回调函数应用示例
2014/02/20 Javascript
javascript实现通过表格绘制颜色填充矩形的方法
2015/04/21 Javascript
js钢琴按钮波浪式图片排列效果代码分享
2015/08/26 Javascript
JS只能输入正整数的简单实例
2016/10/07 Javascript
简单理解js的冒泡排序
2016/12/19 Javascript
Javascript 实现计算器时间功能详解及实例(二)
2017/01/08 Javascript
bootstrap table服务端实现分页效果
2017/08/10 Javascript
vue axios请求超时的正确处理方法
2018/04/02 Javascript
vue全局自定义指令-元素拖拽的实现代码
2019/04/14 Javascript
详解vue的数据劫持以及操作数组的坑
2019/04/18 Javascript
JS中的const命令你真懂它吗
2020/03/08 Javascript
python实现计算倒数的方法
2015/07/11 Python
Python通过调用mysql存储过程实现更新数据功能示例
2018/04/03 Python
在Python中增加和插入元素的示例
2018/11/01 Python
在Pycharm中自动添加时间日期作者等信息的方法
2019/01/16 Python
用sqlalchemy构建Django连接池的实例
2019/08/29 Python
Python连接SQLite数据库并进行增册改查操作方法详解
2020/02/18 Python
PyCharm Anaconda配置PyQt5开发环境及创建项目的教程详解
2020/03/24 Python
利用python绘制数据曲线图的实现
2020/04/09 Python
详解Python多线程下的list
2020/07/03 Python
python 用Matplotlib作图中有多个Y轴
2020/11/28 Python
pyspark对Mysql数据库进行读写的实现
2020/12/30 Python
python中HTMLParser模块知识点总结
2021/01/25 Python
详解HTML5中垂直上下居中的解决方案
2017/12/20 HTML / CSS
精细化工应届生求职信
2013/11/17 职场文书
建筑安全员岗位职责
2014/03/13 职场文书
关于梦想的演讲稿
2014/05/05 职场文书
党性锻炼的心得体会
2014/09/03 职场文书
2014年村官工作总结
2014/11/24 职场文书
施工单位工程部经理岗位职责
2015/04/09 职场文书
班主任班级管理心得体会
2016/01/07 职场文书