Cluster 分片扩缩容
在所属的 Valkey 资源上修改 spec.replicas.shards,以添加或移除
Cluster 分片。支持范围为 3–128。Operator 会创建或删除分片工作负载,
并重新平衡 16,384 个哈希槽。
此操作步骤仅适用于 spec.arch: cluster。对于 Failover 或 Replica
成员变更,请使用 更新和扩缩容。
准备开始
- 确认高层资源处于
Ready状态,并且 Cluster 报告所有槽位均已分配。 - 不要将分片扩缩容与服务器升级、滚动重启、存储、访问、调度、TLS 或配置变更同时进行。
- 确认支持 Cluster 的客户端会遵循
MOVED和ASK重定向。 - 请在流量较低时安排此操作。重新平衡会消耗 CPU、内存和网络带宽,并可能增加请求延迟。
- 扩容时,确保每个新增分片成员及其持久卷声明(PVC)都有足够容量。
- 缩容时,确保剩余分片能够容纳迁移后的数据集以及正常运行开销。Operator 不会执行外部容量规划,也不会创建备份。
记录基线:
如果需要访问控制列表(ACL)身份验证,请添加
--user <username> --askpass,并使用 kubectl exec -it 分配一个终端。
扩容
此示例将 Cluster 从三个分片增加到四个分片,并将每个分片保留两个成员:
replicasOfShard 的值表示一个分片中的成员总数,包括主节点。除非同一次维护操作有意同时更改冗余和容量,否则请保留现有值。
缩容
在移除分片之前,请对所有主节点比较数据集大小和可用内存。不要直接从其他产品复制固定的内存系数;所需余量取决于工作负载、持久化、碎片化、客户端缓冲区、模块以及目标 Valkey 版本。
此示例将一个四分片 Cluster 缩减为三个分片:
Operator 必须先将槽位迁移离开要删除的分片,然后才能删除其工作负载。不要手动删除 StatefulSets、Pods 或 PVCs 来加快该操作。
监控进度
查看高层阶段、消息、节点、子 Cluster 状态、Pods 和 Events:
Rebalancing 表示正在移动槽位。创建或删除工作负载时可能会出现 Initializing。在阶段为 Ready 且 .status.message 清空之前,不要提交另一项拓扑变更。
验证完成
在一个就绪的数据 Pod 中运行健康检查命令:
验证以下所有项:
- 报告
cluster_state:ok; - 所有 16,384 个槽位均已分配,且没有失败槽位;
- 存在所需数量的分片和成员;
- 每个预期的 Pod 都已就绪,且每个必需的 PVC 都已绑定;
- 应用的读写可通过支持 Cluster 的客户端成功执行;
- 延迟、内存、网络和 exporter 指标已恢复到可接受范围。
故障边界
在迁移进行期间,不要立即修补旧的分片数量。第二次拓扑变更会让恢复更困难。请保留 Valkey 和子 Cluster 的 YAML、Events、Operator 日志、CLUSTER INFO 和 CLUSTER NODES 输出。请先修复调度、存储、网络或容量故障;如果协调无法继续,请遵循产品支持恢复方案。