cluster create 是什么
redis-cli --cluster create 是官方提供的集群初始化工具:把一组已经以集群模式启动、但还没有分配槽的实例一次性组织成一个可用集群。工具按命令行给出的节点顺序、结合 --cluster-replicas 指定的副本数划分主从关系,把 16384 个槽平均分配给主节点,然后通过节点间握手把拓扑广播出去。执行过程中会打印槽分配计划并要求确认,确认后各节点开始互相认识。
基本信息
| 命令形式 | redis-cli --cluster create ip1:port1 ip2:port2 ... --cluster-replicas 1 |
|---|---|
| 前提条件 | 各节点已以 cluster-enabled yes 启动,且尚未分配槽 |
| 副本参数 | --cluster-replicas 1 表示每个主节点配一个从节点 |
| 节点顺序 | 先列全部主节点再列从节点时更容易预测分配结果 |
| 最小规模 | 3 个主节点才能容忍单主故障,生产建议 3 主 3 从起步 |
典型使用场景
- 新环境初始化:一次性把六个实例组织成 3 主 3 从并完成槽分配
- 重建集群:旧集群彻底不可用后按同样拓扑从零搭建,再从备份恢复数据
- 测试环境快速搭集群验证客户端兼容性与多键限制
- 扩容前的拓扑准备:先建好新节点,再用 reshard 从现有集群迁槽过来
- 多套环境参数一致化:把创建命令固化进部署脚本,避免手工分配带来的差异
创建三主三从
创建三主三从
redis-cli --cluster create \
10.0.0.11:7000 10.0.0.12:7000 10.0.0.13:7000 \
10.0.0.11:7001 10.0.0.12:7001 10.0.0.13:7001 \
--cluster-replicas 1
# 工具会打印主从与槽分配计划,输入 yes 确认
redis-cli --cluster check 10.0.0.11:7000 # 创建后体检
redis-cli -p 7000 CLUSTER INFO | grep cluster_state # 期望 ok
redis-cli -p 7000 CLUSTER NODES | head -n 6 # 复核角色与槽区间创建前后的检查项
| 阶段 | 检查内容 | 失败表现 |
|---|---|---|
| 创建前 | 各节点已启动、未分配槽、端口互通 | 报节点已有数据或无法连接 |
| 创建前 | 集群总线端口 p+10000 已放行 | 节点握手失败,拓扑不完整 |
| 创建中 | 确认槽分配计划是否均匀 | 主节点槽数差异过大,需重新规划 |
| 创建后 | cluster_state 为 ok 且槽全覆盖 | 存在未分配槽,集群整体不可写 |
主从是怎么分配的:工具按节点在命令行中出现的顺序处理,先确定主节点,再把后续节点按副本数分给它们。节点较多时自己先画一张分布表再执行,比事后用 CLUSTER NODES 反推拓扑更可靠;创建完成后也可以继续用 CLUSTER MEET 或 --cluster add-node 调整。
创建命令只需执行一次:重复执行会因为节点已经分配了槽而失败,更糟的情况是误把新节点写进命令导致拓扑混乱。创建失败后应先查看当前实际拓扑再决定重试还是清理,不要盲目重跑命令。