redis集群-机器重启无法自动加入集群

文章介绍了Redis集群的故障转移过程,当一个主节点被kill后,其他从节点会选举新的主节点以保持服务。在问题复现部分,作者发现重启的节点未能自动重新加入集群,原因是缺少`dir`配置,该配置关乎集群的持久化和节点信息。解决方案是确保每个节点配置包含`dir`并重新初始化集群。

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

先交代一下背景,如果想直接看解决方案的话,可以直接翻到问题解决

问题背景

在上一篇,我们搭建了一个redis集群。这一篇看看,redis集群实现故障转移的过程。
随意登录一个节点

redis-cli -h 127.0.0.1 -c -p 7001

执行cluster nodes命令,查看集群节点的关系

127.0.0.1:7002> cluster nodes
0484124bc3417523a8d49ba29e555a320c66467f 127.0.0.1:7006@17006 slave 9d7f1f1a3a218e28edb1d042adcfcd81820dfadc 0 1679136165000 6 connected
d733c59098308ea7bc39a114191db81824da56e3 127.0.0.1:7005@17005 slave b82556f6eb686132edcfe0757658f4a2ce7c711b 0 1679136165968 9 connected
9d7f1f1a3a218e28edb1d042adcfcd81820dfadc 127.0.0.1:7002@17002 myself,master - 0 1679136164000 2 connected 5461-10922
c2b8af4aec6bc300b240ec13eb0ecabcb3ab7fa2 127.0.0.1:7004@17004 slave eca1fe20864887f5f60479d2485dd3742a04d284 0 1679136167000 4 connected
b82556f6eb686132edcfe0757658f4a2ce7c711b 127.0.0.1:7001@17001 master - 0 1679136167977 9 connected 0-5460
eca1fe20864887f5f60479d2485dd3742a04d284 127.0.0.1:7003@17003 master - 0 1679136166973 3 connected 10923-16383

3主,3从。没有问题。此时我们kill掉其中一个主节点,比如7001,此时redis会从所有的从节点中选择一个作为主节点。这个选举过程,只有主节点参与,需要N/2+1个主节点同意,从节点才能成为主节点。比如:我们这个场景,3主3从,至少需要3个主节点都同意,从节点才能成为主节点。
kill之后,再次查看集群节点关系

0484124bc3417523a8d49ba29e555a320c66467f 127.0.0.1:7006@17006 slave 9d7f1f1a3a218e28edb1d042adcfcd81820dfadc 0 1679136628967 6 connected
d733c59098308ea7bc39a114191db81824da56e3 127.0.0.1:7005@17005 master - 0 1679136628000 10 connected 0-5460
9d7f1f1a3a218e28edb1d042adcfcd81820dfadc 127.0.0.1:7002@17002 myself,master - 0 1679136628000 2 connected 5461-10922
c2b8af4aec6bc300b240ec13eb0ecabcb3ab7fa2 127.0.0.1:7004@17004 slave eca1fe20864887f5f60479d2485dd3742a04d284 0 1679136628000 4 connected
b82556f6eb686132edcfe0757658f4a2ce7c711b 127.0.0.1:7001@17001 master,fail - 1679136611502 1679136609000 9 disconnected
eca1fe20864887f5f60479d2485dd3742a04d284 127.0.0.1:7003@17003 master - 0 1679136628000 3 connected 10923-16383

从节点7005成为主节点,目前是3主2从,集群依然可以对外提供服务。

问题复现

正常来说,我们再重启7001,7001会成为7005的从节点。但是我重启之后,7001并没有加入集群,在7001上执行cluster nodes命令,只有7001一个节点。

问题解决

这个原因,是因为我们上一篇的redis.conf配置文件中缺少一个配置,如下:

dir ./dataStore/

就是这个dir配置,这个配置里面放着aof或者rdb等持久化文件,同时,如果是集群的话,集群的节点配置信息也在这个目录放着。如果我们希望节点重启自动加入集群,这个dir配置一定要有,加上dir配置后,把所有节点都停掉,然后重新执行redis-cli命令重新创建集群。再次验证,先停一个主,此时它的从会成为主,然后再把之前的主重启,此时它会成为从

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值