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 相关文章推荐
解决redis sentinel 频繁主备切换的问题
Apr 12 Redis
浅谈Redis存储数据类型及存取值方法
May 08 Redis
SpringBoot 集成Redis 过程
Jun 02 Redis
解析高可用Redis服务架构分析与搭建方案
Jun 20 Redis
Redis缓存-序列化对象存储乱码问题的解决
Jun 21 Redis
Redis集群的关闭与重启操作
Jul 07 Redis
使用redis生成唯一编号及原理示例详解
Sep 15 Redis
Spring Boot实战解决高并发数据入库之 Redis 缓存+MySQL 批量入库问题
Feb 12 Redis
解决Redis启动警告问题
Feb 24 Redis
Redis安装使用RedisJSON模块的方法
Mar 23 Redis
python中使用redis用法详解
Dec 24 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
ASP知识讲座四
2006/10/09 PHP
PHP中for循环语句的几种变型
2007/03/16 PHP
php数组查找函数in_array()、array_search()、array_key_exists()使用实例
2014/04/29 PHP
php建立Ftp连接的方法
2015/03/07 PHP
PHP实现的随机IP函数【国内IP段】
2016/07/20 PHP
JavaScript中的细节分析
2012/06/30 Javascript
javascript 正则表达式相关应介绍
2012/11/27 Javascript
javascript函数定义的几种区别小结
2014/01/06 Javascript
JavaScript闭包实例讲解
2014/04/22 Javascript
使用AngularJS创建自定义的过滤器的方法
2015/06/18 Javascript
js+css绘制颜色动态变化的圈中圈效果
2016/01/27 Javascript
基于zepto的移动端轻量级日期插件--date_picker
2016/03/04 Javascript
jqGrid 学习笔记整理——进阶篇(一 )
2016/04/17 Javascript
深入理解jQuery layui分页控件的使用
2016/08/17 Javascript
浅析$(function) ready和onload 的区别
2016/09/03 Javascript
vue之debounce属性被移除及处理详解
2019/11/13 Javascript
用Python的Django框架来制作一个RSS阅读器
2015/07/22 Python
Python调用系统底层API播放wav文件的方法
2017/08/11 Python
浅谈python for循环的巧妙运用(迭代、列表生成式)
2017/09/26 Python
浅谈python 导入模块和解决文件句柄找不到问题
2018/12/15 Python
python调用java的jar包方法
2018/12/15 Python
python字符串分割及字符串的一些常规方法
2019/07/24 Python
基于python分析你的上网行为 看看你平时上网都在干嘛
2019/08/13 Python
Python打印不合法的文件名
2020/07/31 Python
selenium+python实现基本自动化测试的示例代码
2021/01/27 Python
乌克兰网上服装店:Bolf.ua
2018/10/30 全球购物
英国领先的维生素和补充剂品牌:Higher Nature
2019/08/26 全球购物
出国留学自荐信
2013/10/25 职场文书
会计电算化毕业生自荐信
2014/03/03 职场文书
社区母亲节活动记录
2014/03/06 职场文书
集中整治工作方案
2014/05/01 职场文书
用golang如何替换某个文件中的字符串
2021/04/25 Golang
vue实现移动端div拖动效果
2022/03/03 Vue.js
IIS服务器中设置HTTP重定向访问HTTPS
2022/04/29 Servers
一文搞懂PHP中的抽象类和接口
2022/05/25 PHP
微信小程序纯CSS实现无限弹幕滚动效果
2022/09/23 HTML / CSS