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延迟队列的实现代码
May 13 Redis
Redis高级数据类型Hyperloglog、Bitmap的使用
May 24 Redis
浅谈Redis主从复制以及主从复制原理
May 29 Redis
Django使用redis配置缓存的方法
Jun 01 Redis
SpringBoot 集成Redis 过程
Jun 02 Redis
Redis 哨兵集群的实现
Jun 18 Redis
Redis集群的关闭与重启操作
Jul 07 Redis
基于Redis结合SpringBoot的秒杀案例详解
Oct 05 Redis
详解Redis在SpringBoot工程中的综合应用
Oct 16 Redis
redis击穿 雪崩 穿透超详细解决方案梳理
Mar 17 Redis
Redis特殊数据类型bitmap位图
Jun 01 Redis
一文教你快速生成MySQL数据库关系图
Jun 28 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中的实现trim函数代码
2007/03/19 PHP
Zend Framework教程之分发器Zend_Controller_Dispatcher用法详解
2016/03/07 PHP
[原创]PHP获取数组表示的路径方法分析【数组转字符串】
2017/09/01 PHP
PHP实现的分解质因数操作示例
2018/08/01 PHP
分享一个自己写的table表格排序js插件(高效简洁)
2011/10/29 Javascript
JavaScript中的document.referrer在各种浏览器测试结果
2014/07/18 Javascript
javascript使用window.open提示“已经计划系统关机”的原因
2014/08/15 Javascript
浅析JSONP技术原理及实现
2016/06/08 Javascript
jQuery实现文字自动横移
2017/01/08 Javascript
vue自定义过滤器创建和使用方法详解
2017/11/06 Javascript
Angular2管道Pipe及自定义管道格式数据用法实例分析
2017/11/29 Javascript
vue插件开发之使用pdf.js实现手机端在线预览pdf文档的方法
2018/07/12 Javascript
微信小程序map组件结合高德地图API实现wx.chooseLocation功能示例
2019/01/23 Javascript
JavaScript实现英语单词题库
2019/12/24 Javascript
在Vue.js中使用TypeScript的方法
2020/03/19 Javascript
python基础教程之popen函数操作其它程序的输入和输出示例
2014/02/10 Python
Python实现的一个简单LRU cache
2014/09/26 Python
简单介绍Python中的decode()方法的使用
2015/05/18 Python
Python实现定时精度可调节的定时器
2018/04/15 Python
Python实现获取汉字偏旁部首的方法示例【测试可用】
2018/12/18 Python
Python字典中的值为列表或字典的构造实例
2019/12/16 Python
解决reload(sys)后print失效的问题
2020/04/25 Python
Python unittest生成测试报告过程解析
2020/09/08 Python
Selenium+BeautifulSoup+json获取Script标签内的json数据
2020/12/07 Python
LightInTheBox西班牙站点:全球商品在线采购
2016/09/22 全球购物
巴西最大的家具及装饰用品店:Mobly
2017/10/11 全球购物
介绍一下#error预处理
2015/09/25 面试题
介绍一下XMLHttpRequest对象的常用方法和属性
2013/05/24 面试题
先进事迹演讲稿
2014/09/01 职场文书
2015年保险公司内勤工作总结
2015/05/23 职场文书
运动会报道稿大全
2015/07/23 职场文书
2015年大学组织委员个人工作总结
2015/10/23 职场文书
2016年学校党支部公开承诺书
2016/03/25 职场文书
用Python实现Newton插值法
2021/04/17 Python
go设置多个GOPATH的方式
2021/05/05 Golang
总结Python使用过程中的bug
2021/06/18 Python