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持久化与主从复制的实践
Apr 27 Redis
详解缓存穿透击穿雪崩解决方案
May 28 Redis
redis不能访问本机真实ip地址的解决方案
Jul 07 Redis
Redis性能监控的实现
Jul 09 Redis
Redis分布式锁Redlock的实现
Aug 07 Redis
Redis读写分离搭建的完整步骤
Sep 14 Redis
Redis的字符串是如何实现的
Oct 24 Redis
Window server中安装Redis的超详细教程
Nov 17 Redis
SpringBoot整合Redis入门之缓存数据的方法
Nov 17 Redis
Redis之RedisTemplate配置方式(序列和反序列化)
Mar 13 Redis
Redis 中使用 list,streams,pub/sub 几种方式实现消息队列的问题
Mar 16 Redis
Redis特殊数据类型Geospatial地理空间
Jun 01 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 cron中的批处理
2008/09/16 PHP
THINKPHP+JS实现缩放图片式截图的实现
2010/03/07 PHP
PHP中使用sleep造成mysql读取失败的案例和解决方法
2014/08/21 PHP
PHP加密解密类实例分析
2015/04/20 PHP
Zend Framework动作助手Redirector用法实例详解
2016/03/05 PHP
详解Yii2 rules 的验证规则
2016/12/02 PHP
php str_replace替换指定次数的方法详解
2017/05/05 PHP
PHP 7.0新增加的特性介绍
2017/06/08 PHP
PHP性能分析工具xhprof的安装使用与注意事项
2017/12/19 PHP
Thinkphp5 如何隐藏入口文件index.php(URL重写)
2019/10/16 PHP
腾讯UED 漂亮的提示信息效果代码
2011/09/12 Javascript
找出字符串中出现次数最多的字母和出现次数精简版
2012/11/07 Javascript
原生js结合html5制作小飞龙的简易跳球
2015/03/30 Javascript
星期几的不同脚本写法(推荐)
2016/06/01 Javascript
Js获取当前日期时间及格式化代码
2016/09/17 Javascript
微信小程序中做用户登录与登录态维护的实现详解
2017/05/17 Javascript
React 无状态组件(Stateless Component) 与高阶组件
2018/08/14 Javascript
vue axios封装及API统一管理的方法
2019/04/18 Javascript
vue 移动端注入骨架屏的配置方法
2019/06/25 Javascript
详解Python的Django框架中manage命令的使用与扩展
2016/04/11 Python
python Celery定时任务的示例
2018/03/13 Python
wxPython的安装与使用教程
2018/08/31 Python
python except异常处理之后不退出,解决异常继续执行的实现
2020/04/25 Python
Python 无限级分类树状结构生成算法的实现
2021/01/21 Python
浅析HTML5:'data-'属性的作用
2018/01/23 HTML / CSS
世界上最大的在线汽车租赁预订平台:Rentalcars.com(支持中文)
2018/10/12 全球购物
泰国王权免税店官方网站:KingPower
2019/03/11 全球购物
Harrods英国:世界领先的奢侈品百货商店
2020/09/23 全球购物
几个数据库方面的面试题
2016/07/01 面试题
毕业生自我推荐
2013/11/04 职场文书
房屋出租协议书范本(标准版)
2014/09/24 职场文书
迎国庆横幅标语
2014/10/08 职场文书
2014年房地产销售工作总结
2014/12/01 职场文书
小学生必读成语故事大全:送给暑假的你们
2019/07/09 职场文书
Linux中Nginx的防盗链和优化的实现代码
2021/06/20 Servers
Redis源码阅读:Redis字符串SDS详解
2021/07/15 Redis