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 24 Redis
Java Socket实现Redis客户端的详细说明
May 26 Redis
Redis Cluster 字段模糊匹配及删除
May 27 Redis
Redisson实现Redis分布式锁的几种方式
Aug 07 Redis
使用redis实现延迟通知功能(Redis过期键通知)
Sep 04 Redis
Redis读写分离搭建的完整步骤
Sep 14 Redis
Redis的字符串是如何实现的
Oct 24 Redis
Spring Boot实战解决高并发数据入库之 Redis 缓存+MySQL 批量入库问题
Feb 12 Redis
Redis实现一个账号只能登录一个设备
Apr 19 Redis
Redis官方可视化工具RedisInsight安装使用教程
Apr 19 Redis
Redis 异步机制
May 15 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面向对象的使用教程 简单数据库连接
2006/11/25 PHP
PHP无限分类的类
2007/01/02 PHP
php 冒泡排序 交换排序法
2011/05/10 PHP
百度工程师讲PHP函数的实现原理及性能分析(一)
2015/05/13 PHP
php打开本地exe程序,js打开本地exe应用程序,并传递相关参数方法
2018/02/06 PHP
javascript笔试题目附答案@20081025_jb51.net
2008/10/26 Javascript
jQuery中的read和JavaScript中的onload函数的区别
2014/08/27 Javascript
jQuery的css()方法用法实例
2014/12/24 Javascript
轻松掌握JavaScript中的Math object数学对象
2016/05/26 Javascript
微信小程序实现轮播图效果
2017/09/07 Javascript
对于input 框限定输入值为浮点型的js代码
2017/09/25 Javascript
Nodejs+angularjs结合multiparty实现多图片上传的示例代码
2017/09/29 NodeJs
Vue项目中设置背景图片方法
2018/02/21 Javascript
VUE2.0+Element-UI+Echarts封装的组件实例
2018/03/02 Javascript
jquery实现图片无缝滚动 蒙版遮蔽效果
2020/01/11 jQuery
python文件和目录操作方法大全(含实例)
2014/03/12 Python
Python常见字典内建函数用法示例
2018/05/14 Python
django反向解析和正向解析的方式
2018/06/05 Python
利用Python代码实现一键抠背景功能
2019/12/29 Python
Python测试线程应用程序过程解析
2019/12/31 Python
python入门之井字棋小游戏
2020/03/05 Python
python操作微信自动发消息的实现(微信聊天机器人)
2020/07/14 Python
解决使用Pandas 读取超过65536行的Excel文件问题
2020/11/10 Python
德国童装购物网站:NICKI´S.com
2018/04/20 全球购物
Myprotein中国网站:欧洲畅销运动营养品牌
2021/02/11 全球购物
请解释在new与override的区别
2012/10/29 面试题
水污染治理专业毕业生推荐信
2013/11/14 职场文书
应届行政管理专业个人自我评价
2013/12/28 职场文书
村级换届选举方案
2014/05/10 职场文书
党的群众路线教育实践活动个人对照检查材料(四风)
2014/11/05 职场文书
子女赡养老人协议书
2016/03/23 职场文书
Nginx配置https原理及实现过程详解
2021/03/31 Servers
jQuery实现影院选座订座效果
2021/04/13 jQuery
SpringBoot 集成短信和邮件 以阿里云短信服务为例
2022/04/22 Java/Android
virtualenv隔离Python环境的问题解析
2022/06/21 Python
table不让td文字溢出操作方法
2022/12/24 HTML / CSS