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
深入浅析Redis 集群伸缩原理
May 15 Redis
分布式锁为什么要选择Zookeeper而不是Redis?看完这篇你就明白了
May 21 Redis
redis哨兵常用命令和监控示例详解
May 27 Redis
详解Redis基本命令与使用场景
Jun 01 Redis
Redis缓存-序列化对象存储乱码问题的解决
Jun 21 Redis
redis客户端实现高可用读写分离的方式详解
Jul 04 Redis
Redis 彻底禁用RDB持久化操作
Jul 09 Redis
redis的list数据类型相关命令介绍及使用
Jan 18 Redis
Grafana可视化监控系统结合SpringBoot使用
Apr 19 Redis
基于redis+lua进行限流的方法
Jul 23 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
编写漂亮的代码 - 将后台程序与前端程序分开
2008/04/23 PHP
PHP中的错误处理、异常处理机制分析
2012/05/07 PHP
浅析PHP中Collection 类的设计
2013/06/21 PHP
JoshChen_web格式编码UTF8-无BOM的小细节分析
2013/08/16 PHP
PHP中遇到BOM、编码导致json_decode函数无法解析问题
2014/07/02 PHP
php无限级评论嵌套实现代码
2018/04/18 PHP
微信公众号开发之获取位置信息php代码
2018/06/13 PHP
laravel model模型处理之修改查询或修改字段时的类型格式案例
2019/10/17 PHP
js实现input密码框提示信息的方法(附html5实现方法)
2016/01/14 Javascript
在create-react-app中使用css modules的示例代码
2018/07/31 Javascript
在Angular中使用JWT认证方法示例
2018/09/10 Javascript
vue-element-admin 菜单标签失效的解决方式
2019/11/12 Javascript
微信小程序登陆注册功能的实现代码
2019/12/10 Javascript
分享JS表单验证源码(带错误提示及密码等级)
2020/01/05 Javascript
python 统计代码行数简单实例
2017/05/04 Python
python实现百万答题自动百度搜索答案
2018/01/16 Python
Python使用POP3和SMTP协议收发邮件的示例代码
2019/04/16 Python
python tqdm 实现滚动条不上下滚动代码(保持一行内滚动)
2020/02/19 Python
keras处理欠拟合和过拟合的实例讲解
2020/05/25 Python
python装饰器实现对异常代码出现进行自动监控的实现方法
2020/09/15 Python
通过实例解析Python文件操作实现步骤
2020/09/21 Python
python 使用三引号时容易犯的小错误
2020/10/21 Python
夏威夷航空官网:Hawaiian Airlines
2016/09/11 全球购物
选购国际女性时装设计师品牌:IFCHIC(支持中文)
2018/04/12 全球购物
消防战士优秀事迹材料
2014/02/13 职场文书
一年级学生期末评语
2014/04/21 职场文书
司法建议书范文
2014/05/13 职场文书
学习型党组织建设经验材料
2014/05/26 职场文书
英语分层教学实施方案
2014/06/15 职场文书
学校拾金不昧表扬信
2015/01/16 职场文书
交通事故和解协议书
2015/01/27 职场文书
红色革命电影观后感
2015/06/18 职场文书
预备党员入党感想
2015/08/10 职场文书
Python基础之hashlib模块详解
2021/05/06 Python
Linux中Nginx的防盗链和优化的实现代码
2021/06/20 Servers
Python爬虫基础之初次使用scrapy爬虫实例
2021/06/26 Python