这个 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
然后按照同样的方法分别:
就搞定了
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
slave节点启动没有master node配置把... 配置贴出来.
用的是 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"