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 11 Redis
redis内存空间效率问题的深入探究
May 17 Redis
Redis Cluster 字段模糊匹配及删除
May 27 Redis
5分钟教你docker安装启动redis全教程(全新方式)
May 29 Redis
详解Redis基本命令与使用场景
Jun 01 Redis
解析Redis Cluster原理
Jun 21 Redis
Redis集群的关闭与重启操作
Jul 07 Redis
 Redis 串行生成顺序编码的方法实现
Apr 03 Redis
redis 解决库存并发问题实现数量控制
Apr 08 Redis
Redis如何实现验证码发送 以及限制每日发送次数
Apr 18 Redis
Redis基本数据类型String常用操作命令
Jun 01 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
SONY ICF-SW55的电路分析
2021/03/02 无线电
php 数组使用详解 推荐
2011/06/02 PHP
php中mysql模块部分功能的简单封装
2011/09/30 PHP
md5 16位二进制与32位字符串相互转换示例
2013/12/30 PHP
分享下页面关键字抓取components.arrow.com站点代码
2014/01/30 PHP
ThinkPHP框架搭建及常见问题(XAMPP安装失败、Apache/MySQL启动失败)
2016/04/15 PHP
php使用自定义函数实现汉字分割替换功能示例
2017/01/30 PHP
php 使用html5 XHR2实现上传文件与进度显示功能示例
2020/03/03 PHP
10个实用的脚本代码工具
2010/05/04 Javascript
JS组件Bootstrap实现弹出框和提示框效果代码
2015/12/08 Javascript
基于javascript实现表格的简单操作
2016/05/21 Javascript
原生js实现中奖信息无间隙滚动效果
2017/01/18 Javascript
vue.js的安装方法
2017/05/12 Javascript
Angular中ng-repeat与ul li的多层嵌套重复问题
2017/07/24 Javascript
jQuery实现的淡入淡出与滑入滑出效果示例
2018/04/18 jQuery
详解Angular操作cookies方法
2018/06/01 Javascript
Vue 实现对quill-editor组件中的工具栏添加title
2020/08/03 Javascript
[53:15]2018DOTA2亚洲邀请赛3月29日 小组赛A组 KG VS OG
2018/03/30 DOTA
Python中的对象,方法,类,实例,函数用法分析
2015/01/15 Python
详解Python中的__new__()方法的使用
2015/04/09 Python
日常整理python执行系统命令的常见方法(全)
2015/10/22 Python
Python数据类型之Set集合实例详解
2019/05/07 Python
pytorch 批次遍历数据集打印数据的例子
2019/12/30 Python
Python描述数据结构学习之哈夫曼树篇
2020/09/07 Python
英国时尚服饰电商:Boohoo
2017/10/12 全球购物
英国第一的购买便宜玩具和游戏的在线购物网站:Bargain Max
2018/01/24 全球购物
古驰英国官网:GUCCI英国
2020/03/07 全球购物
公司中秋节活动方案
2014/02/12 职场文书
婚礼司仪主持词
2014/03/14 职场文书
校园联欢晚会主持词
2014/03/17 职场文书
小学生保护环境倡议书
2014/05/15 职场文书
党支部三会一课计划
2014/09/24 职场文书
对照四风自我剖析材料
2014/10/07 职场文书
党员群众路线剖析材料
2014/10/08 职场文书
离婚起诉书范文2016
2015/11/26 职场文书
Mysql中常用的join连接方式
2022/05/11 MySQL