首页 > 数据库 >配置Redis哨兵集群所遇到的问题

配置Redis哨兵集群所遇到的问题

时间:2023-08-18 17:56:04浏览次数:29  
标签:slave ip xxx Redis 哨兵 集群 master

配置Redis哨兵集群时日志显示+sdown slave的问题

一、配置及其环境描述(问题产生的原因是因为Redis复制中主节点对从节点的ip配置错误,从而导致哨兵无法识别从节点,进而无法进行故障转移)

1.操作系统:Linux

 虚拟机:VMware Workstation 16 Pro 、WSL

 Redis主从复制配置为在VM虚拟机上设置一台master,WSL虚拟机上设置两台slave。

 Redis哨兵配置为在WSL上设置三台哨兵。

 注:虚拟机一共只开启了两台,分别是VM和WSL。在WSL上我分别在两个端口部署了redis-server,以达到两个slave的目的。然后在WSL上我又在三个端口上部署了三个哨兵,用于在监视VM上部署的master。

2.配置的哨兵集群想达成如下效果:

 当我使用shutdown命令关闭部署在VM上的master时,哨兵能够即时检测到master已经宕机,并进行投票选举选出新的master。

3.master的内网ip及端口为:192.xxx.xxx.xxx:6379,两个slave的内网ip及端口为:172.xxx.xxx.xxx:6380与172.xxx.xxx.xxx:6381

 

二、问题复现

 启动一主二从,并启动三台哨兵。手动使master宕机,按照理想状态得到的结果应该是哨兵从剩下的两个slave中选取一个成为新的master,但是剩下的两台slave只是在原地等待旧master的回归,并未有新的master产生。

 

三、分析并解决问题

1.1)翻阅刚启动哨兵时候的哨兵日志,发现如下内容

"+sdown slave",说明一件事,就是哨兵无法与我们的两个从机取得联系(哨兵认为slave主观下线)。那么也很容易就明白了,在之后的投票选出新master的过程中,也无法在两个slave中选出。同时,我们还注意到一件事,从节点的ip竟然是以192开头的,这不对劲,因为从节点的ip应该以172开头。

2)启动Redis复制的一主二从,通过在master上设置键值对,并且在两个从机上取得了对应的键值对可以验证出,主从架构是搭建成功的。然后在master上使用命令"info replication"查询主从机联机状态如下图

从图中看出,两台slave是成功连到了master的。但是,slave的ip开头竟然是192而不是172,说明,master识别从机的ip时,应该出现了问题。

3)那么解决问题就应该从master正确识别slave的ip地址入手了。在Redis配置文件中可以配置配置项"slave-announce-ip  从机ip地址",slave-announce-ip 用于指定从节点在复制(Replication)过程中向主节点汇报的 IP 地址。通过在从节点的Redis配置文件中配置该配置项,我们可以使得master正确的反映出slave的ip地址。在经过上述配置后,我们再在master中使用"info replication"查询主从机联机状态时,发现slave的ip地址显示正确,此时再去哨兵的日志文件中检查,发现,哨兵成功的联系到了两个slave。

注:哨兵成功联系到slave的哨兵日志显示应该是下面的截图所示的内容

这里的"+slave slave"表示哨兵成功与slave的IP以172开头,端口为6381的slave联系成功。

4)再次使master宕机,发现哨兵成功的选举出了新的master,并变更了相应的Redis配置(使得旧的master成为新的master的slave,并使得原本效忠于旧master的slave重新效忠于新的master)

2.1)因为哨兵有在启动的时候会将一些主从机以及自己的基本信息写进哨兵配置文件的操作,所以,上述流程的分析中还可以加上分析哨兵配置文件的流程。

2)具体问题具体分析,但是分析流程可以相同

 

标签:slave,ip,xxx,Redis,哨兵,集群,master
From: https://www.cnblogs.com/sumuwen/p/17640204.html

相关文章

  • 分布式存储系统举例剖析(elasticsearch,kafka,redis-cluster)
    1.概述对于分布式系统,人们首先对现实中的分布式系统进行高层抽象,然后做出各种假设,发展了诸如CAP,FLP等理论,提出了很多一致性模型,Paxos是其中最璀璨的明珠。我们对分布式系统的时序,复制模式,一致性等基础理论特别关注。在共识算法的基础上衍生了选举算法,并且为分布式事务提供......
  • 管理和维护RHCS集群
    管理和维护RHCS集群是一个非常复杂和繁琐的工作,要维护好一个RHCS集群,必须熟悉RHCS的基本运行原理,在集群管理方面,RHCS提供了两种方式:即Luci图形界面方式和命令行方式,这儿重点讲述在命令行下如何管理RHCS集群。启动RHCS集群RHCS集群的核心进程有cman和rgmanager。要启动集群......
  • python监控redis demo
    下载aioredis为了提升性能我们使用一部redispipinstallaioredisdemo:importasyncioimportaioredis#每隔10s获取redis信息asyncdefmonitor_redis(host,port,interval):#建立异步Redis连接redis_uri=f"redis://{host}:{port}"redis=awaitai......
  • Redis扩容与一致性Hash算法解析
    推荐阅读AI文本OCR识别最佳实践AIGamma一键生成PPT工具直达链接玩转cloudStudio在线编码神器玩转GPUAI绘画、AI讲话、翻译,GPU点亮AI想象空间资源分享「java、python面试题」来自UC网盘app分享,打开手机app,额外获得1T空间https://drive.uc.cn/s/2aeb6c2dcedd4AIGC资料......
  • 使用kube-bench检测Kubernetes集群安全
    目录一.系统环境二.前言三.CIS(CenterforInternetSecurity)简介四.什么是Kube-Bench?五.使用kube-bench检测不安全的设置5.1手动设置不安全的参数5.2安装kube-bench5.3kube-bench检测etcd组件5.4kube-bench检测master节点5.5kube-bench检测worker节点六.总结七.附加信息......
  • springboot redssion 单机模式/集群模式/哨兵模式连接
    引入依赖:<dependency><groupId>org.redisson</groupId><artifactId>redisson</artifactId><version>3.10.7</version></dependency><dependency><groupId>......
  • Redis 过期监听 + 加阻塞队列
    https://redis.io/docs/manual/keyspace-notifications/ 简单一句话就是要订阅key失效事件 应用场景:在线客服中开启会话后,如果客户一段时间未回复,则结束会话。为了保证会话结束的时效性,通过redis订阅key失效事件处理        配置notify-keyspace-eventsE......
  • Redis专题-秒杀
    Redis专题-并发/秒杀开局一张图,内容全靠“编”。昨天晚上在群友里看到有人在讨论库存并发的问题,看到这里我就决定写一篇关于redis秒杀的文章。1、理论部分我们看看一般我们库存是怎么出问题的其实redis提供了两种解决方案:加锁和原子操作。1.1、加锁加锁:其实非常常见,读取......
  • 虹科分享|Redis Stack不想再让开发人员受苦了!
    你想构建能提供实时体验的应用程序吗?那么你怎么可以不拥有一个能以最快响应时间处理任何请求的数据库?无论是简单的对象检索、搜索还是复杂的聚合,在一毫秒之内便完成。领先的Redis模块华丽变身为RedisStack来帮你啦!什么是RedisStackRedisStack:整合Redis模块的功能为了简化开发人......
  • 虹科分享|Redis Stack不想再让开发人员受苦了!
    什么是RedisStackRedisStack:整合Redis模块的功能为了简化开发人员对较新的Redis模块及其提供的功能的体验,同时简化支持其功能的文档和客户端。以帮助开发人员从开始使用Redis的那一刻起,就能充分提高工作效率。RedisStack诞生了。RedisStack将较新的Redis模块整合到一......