论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
软件与程序人生
›
后端开发
›
Java
›
配置Redis哨兵集群所遇到的问题
配置Redis哨兵集群所遇到的问题
汕尾海湾
金牌会员
|
2023-8-30 02:35:04
|
显示全部楼层
|
阅读模式
楼主
主题
946
|
帖子
946
|
积分
2838
配置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)具体问题具体分析,但是分析流程可以相同
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
汕尾海湾
金牌会员
这个人很懒什么都没写!
楼主热帖
RabbitMQ 进阶 -- 阿里云服务器部署Rab ...
在Ubuntu系统上安装StoneDB数据库 ...
Spark快速上手(3)Spark核心编程-RDD转 ...
基于FPGA的一维卷积神经网络CNN的实现 ...
Vue 全套教程(二),入门 Vue 必知必 ...
redis实现主从复制
Silverlight教程_编程入门自学教程_菜 ...
一文了解袋鼠云在实时数据湖上的探索与 ...
用开源github,还是咱中国自己的代码托 ...
Kafka生产者
标签云
存储
服务器
快速回复
返回顶部
返回列表