Redis集群主从复制不生效的问题分析及解决

文章描述了一个采用三主三从配置的Redis集群在实际使用中遇到的问题,即集群在单节点故障时无法自动恢复,主从复制未生效。经过分析发现,问题源于从节点的身份验证失败。通过在从节点配置文件中添加masterauth字段并设置相应密码,解决了主从节点间的认证问题,从而实现了主从复制和集群的正常运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、集群信息

Redis版本:5.0

集群规模:三主三从

二、基本情况

在项目中为了达到高可用的目的,使用了Redis集群,搭建过程同Redis Cluster集群原理+三主三从交叉复制实战+故障切换

但是在实际使用中发现,集群方式比单点模式故障率还要高,集群高可用配置似乎未生效。在开发环境模拟单节点故障时,发现集群不具备单节点故障自动恢复功能,手动恢复故障节点后,节点最新信息未同步,必须将所有节点杀掉重新搭建才能恢复正常。在分析的过程中确认了以下问题:

1.搭建后的集群通过cluster info/nodes指令查看,均显示集群信息正常;

2.单个主节点故障后,对应的从节点未切换,集群不可用;

3.从节点数据量为0,在主节点的任何操作,均未同步至从节点,主从节点复制未实现。

4.各节点服务器防火墙均关闭,各节点端口间通信正常。

5.在从节点使用指令info replication查看时发现,其与主节点间连接状态为“down”,在对应的主节点查看发现主节点连接的从节点数量为0。说明集群的主从关系并未建立成功。

三、问题分析

查看从节点日志发现,在从节点与主节点建立连接的过程中,身份认证未通过。但是该Redis集群中所有节点的配置中均通过requirepass字段设置了相同的密码,这个错误出现的似乎没有道理。

MASTER aborted replication with an error: NOAUTH Authentication required

参考以上内容发现需要在从节点中配置“masterauth”字段。

四、问题解决

在所有从、主(主节点故障后可能成为从节点)节点的配置文件即redis.conf中配置“masterauth”字段,内容与各节点的requirepass字段(各节点requirepass字段内容一致)一致。

配置完成后,重启从节点,查看从节点日志,主从复制正常。

再次在从节点执行info replication发现,从节点与主节点通信正常,集群状态正常。集群实现主从复制。

Redis主从复制是指通过将数据从一个Redis实例(主节点)复制到另一个实例(从节点)来实现数据的备份和负载均衡的过程。主节点接收写入请求并将其同步到从节点,而从节点只能接收读取请求。主从复制模式可以提高Redis的可用性和性能,因为它可以实现读写分离和故障转移。 要搭建主从复制集群,需要进行以下步骤: 1. 在主节点和从节点上安装Redis,并确保它们都可以正常运行。 2. 在主节点的redis.conf配置文件中添加“slaveof”指令,指定从节点的IP地址和端口号。例如,如果从节点的IP地址为192.168.0.2,端口号为6379,则指令为“slaveof 192.168.0.2 6379”。 3. 在从节点的redis.conf配置文件中添加“masterauth”指令,指定主节点的密码(如果有)。例如,如果主节点的密码为“password”,则指令为“masterauth password”。 4. 重启主节点和从节点,以使配置生效。可以使用redis-cli命令行工具验证主从复制是否正常工作,例如,在主节点上键入“set foo bar”,然后在从节点上键入“get foo”,应该会返回“bar”。 5. 可以通过添加更多的从节点来扩展主从复制集群。只需要将每个从节点的“slaveof”指令指向主节点的IP地址和端口号即可。 需要注意的是,主从复制模式并不提供高可用性,因为当主节点发生故障时,必须手动将一个从节点升级为新的主节点。因此,为了实现高可用性,可以考虑使用Redis Sentinel或Redis Cluster等其他技术。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值