服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|数据库技术|

服务器之家 - 数据库 - Redis - redis sentinel监控高可用集群实现的配置步骤

redis sentinel监控高可用集群实现的配置步骤

2022-10-13 15:25一夕如环 Redis

这篇文章主要介绍了redis sentinel监控高可用集群实现的配置步骤,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步早日升职加薪

一、端口转发

如果在一个主机里面,安装了两个redis实例,可以在项目里面配置IP端口,用iptables转发。

iptables -t nat -A PREROUTING -p tcp --dport 6379 -j REDIRECT --to-ports 7379

当发生切换的时候,触发了脚本,执行语句。端口可以马上转发带正确的redis上面。参数的含义:

redis sentinel监控高可用集群实现的配置步骤

脚本配置:

redis sentinel监控高可用集群实现的配置步骤

脚本实例:

?
1
2
#!/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监控高可用集群的资料请关注服务器之家其它相关文章!

原文链接:https://www.cnblogs.com/hodge01/p/8650025.html

延伸 · 阅读

精彩推荐
  • Redis关于redisson缓存序列化的几枚大坑说明

    关于redisson缓存序列化的几枚大坑说明

    这篇文章主要介绍了redisson缓存序列化几枚大坑,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...

    努力的小星星10062021-09-15
  • Redisphp安装redis扩展过程介绍

    php安装redis扩展过程介绍

    大家好,本篇文章主要讲的是php安装redis扩展过程介绍,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览...

    autofelix5902022-01-25
  • RedisSpringBoot详解整合Redis缓存方法

    SpringBoot详解整合Redis缓存方法

    本文主要介绍了SpringBoot整合Redis缓存的实现方法,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    悠然予夏8552022-07-28
  • Redis详解centos7 yum安装redis及常用命令

    详解centos7 yum安装redis及常用命令

    这篇文章主要介绍了centos7 yum安装redis及常用命令,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...

    钢铁侠的知识库1552020-12-20
  • Redis解决redis sentinel 频繁主备切换的问题

    解决redis sentinel 频繁主备切换的问题

    这篇文章主要介绍了解决redis sentinel 频繁主备切换的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    咫尺的梦想ing10362021-07-31
  • RedisRedis中Scan命令的踩坑实录

    Redis中Scan命令的踩坑实录

    这篇文章主要给大家介绍了关于Redis中Scan命令踩坑的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要...

    菠菜东5722020-07-21
  • RedisRedis教程(十一):虚拟内存介绍

    Redis教程(十一):虚拟内存介绍

    这篇文章主要介绍了Redis教程(十一):虚拟内存介绍,本文讲解了虚拟内存简介、应用场景和配置方法等内容,需要的朋友可以参考下 ...

    Redis教程网2422019-10-24
  • Redis解决redis服务启动失败的问题

    解决redis服务启动失败的问题

    今天小编就为大家分享一篇解决redis服务启动失败的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 ...

    qq_3344078115212019-11-14