首页 新闻 会员 周边 捐助

部署高可用 redis 集群遇到问题

0
悬赏园豆:30 [已解决问题] 解决于 2025-12-22 22:03

这个 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

请问如何解决这个问题?

dudu的主页 dudu | 高人七级 | 园豆:24045
提问于:2025-12-22 16:38
<
分享
最佳答案
0

根据之前的博问 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
dudu | 高人七级 |园豆:24045 | 2025-12-22 21:48
其他回答(1)
0

slave节点启动没有master node配置把... 配置贴出来.

收获园豆:30
czd890 | 园豆:14750 (专家六级) | 2025-12-22 17:37

用的是 bitnami redis helm chart https://github.com/bitnami/charts/tree/redis-cluster/8.1.3/bitnami/redis-cluster

之前另外一个 redis 集群也是从 3 节点升级到 6 节点,当时升级升级成功,这个集群就是不行,很奇怪

升级用的是下面的清单

cluster:
  nodes: 6
  replicas: 1
  update:
    addNodes: true
    currentNumberOfNodes: 3
    currentNumberOfReplicas: "0"
支持(0) 反对(0) dudu | 园豆:24045 (高人七级) | 2025-12-22 21:25
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册