首页 问答 部署高可用 redis 集群遇到问题
问题详情

这个 redis 集群之前没有采用高可用部署,只有3个 master 节点

NAME               READY   STATUS    RESTARTS        AGE
redis-postbody-0   1/1     Running   1 (7h31m ago)   18h
redis-postbody-1   1/1     Running   1 (7h35m ago)   18h
redis-postbody-2   1/1     Running   2 (7h11m ago)   17h

现在改为高可用解决,新增了3个节点,但新增的节点无法进入 ready 状态

NAME               READY   STATUS    RESTARTS        AGE
redis-postbody-0   1/1     Running   1 (7h31m ago)   18h
redis-postbody-1   1/1     Running   1 (7h35m ago)   18h
redis-postbody-2   1/1     Running   2 (7h11m ago)   17h
redis-postbody-3   0/1     Running   1 (18h ago)     18h
redis-postbody-4   0/1     Running   1 (17h ago)     17h
redis-postbody-5   0/1     Running   2 (17h ago)     17h

master 节点的日志是这样的

1:M 22 Dec 2025 01:23:38.742 # Cluster state changed: ok
1:M 22 Dec 2025 02:01:33.523 * Replication backlog freed after 3600 seconds without connected replicas.

slave 节点的日志是这样的

1:M 21 Dec 2025 14:17:07.353 # Server initialized
1:M 21 Dec 2025 14:17:07.354 * Ready to accept connections

请问如何解决这个问题?

回答

根据之前的博问 redis 集群的一个 pod 无法启动 中的记录,通过 redis-cli --cluster add-node 命令手动在集群中添加新节点作为 slave 解决了

先登录第1台 master 节点,查询 redis 集群信息

# kubectl exec -it redis-postbody-0 -- /bin/bash
$ redis-cli
127.0.0.1:6379> cluster nodes
4bc6af2c0d4f71ae0cd2dff87e 192.168.31.253:6379@16379 myself,master - 0 1766410084000 1 connected 0-5460
7c66501b4f2268b33d014b374 192.168.17.13:6379@16379 master - 0 1766410085190 2 connected 5461-10922
bef055a174dbd61924c8d1fdb5 192.168.39.145:6379@16379 master - 0 1766410084186 3 connected 10923-16383

记下第1台 master 的 node id 4bc6af2c0d4f71ae0cd2dff87e 与 IP 地址 192.168.31.253

登录第1台准备作为 slave 的新节点

# kubectl exec -it redis-postbody-3 -- /bin/bash
$ redis-cli 
127.0.0.1:6379> cluster nodes
551abadc7201136a2df044ef12ae 192.168.16.15:6379@16379 myself,master - 0 0 0 connected

记下新节点的 IP 192.168.16.15,并退出 redis-cli

127.0.0.1:6379> exit

通过下面的 redis-cli 命令将新节点作为 redis-postbody-0(第1个master) 的 slave 加入集群

$ redis-cli --cluster add-node 192.168.16.15:6379 192.168.31.253:6379 --cluster-slave --cluster-master-id 4bc6af2c0d4f71ae0cd2dff87e

显示下面的信息,说明加入集群成功了

>>> Adding node 192.168.16.15:6379 to cluster 192.168.31.253:6379
>>> Performing Cluster Check (using node 192.168.31.253:6379)
M: 4bc6af2c0d4f71ae0cd2dff87e 192.168.31.253:6379
   slots:[0-5460] (5461 slots) master
M: 7c66501b4f2268b33d014b374 192.168.17.13:6379
   slots:[5461-10922] (5462 slots) master
M: bef055a174dbd61924c8d1fdb5 192.168.39.145:6379
   slots:[10923-16383] (5461 slots) master
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
>>> Send CLUSTER MEET to node 192.168.16.15:6379 to make it join the cluster.
Waiting for the cluster to join

>>> Configure node as replica of 192.168.31.253:6379.
[OK] New node added correctly.
I have no name!@redis-postbody-3

然后按照同样的方法分别:

  • 将 redis-postbody-4 作为 redis-postbody-1(第2个master) 的 slave 加入集群
  • 将 redis-postbody-5 作为 redis-postbody-2(第3个master) 的 slave 加入集群

就搞定了

NAME               READY   STATUS    RESTARTS      AGE
redis-postbody-0   1/1     Running   0               2m4s
redis-postbody-1   1/1     Running   0               2m31s
redis-postbody-2   1/1     Running   1 (2m52s ago)   2m59s
redis-postbody-3   1/1     Running   1 (48m ago)     49m
redis-postbody-4   1/1     Running   1 (48m ago)     49m
redis-postbody-5   1/1     Running   1 (48m ago)     49m

版权:言论仅代表个人观点,不代表官方立场。转载请注明出处:https://www.stntk.com/question/230.html

发表评论
暂无评论

还没有评论呢,快来抢沙发~

点击联系客服

在线时间:8:00-16:00

客服QQ

70068002

客服电话

400-888-8888

客服邮箱

70068002@qq.com

扫描二维码

关注微信公众号

扫描二维码

手机访问本站