MEET 是组建集群的第一步
CLUSTER MEET ip port 是手工组建集群的起点:它让当前节点与目标节点握手,双方随后通过 gossip 协议逐步交换各自的节点列表,最终全网节点互相可见。执行成功只表示节点加入了集群拓扑,并不代表它拥有槽或数据,还需要用 CLUSTER ADDSLOTS 分配槽,或用 CLUSTER REPLICATE 把它设为某个主节点的从库。
基本信息
| 语法 | CLUSTER MEET <ip> <port> |
|---|---|
| 执行位置 | 在集群中任一已运行的节点上执行 |
| 结果 | 目标节点加入集群,默认不持有任何槽 |
| 幂等性 | 对已存在的节点重复执行不会重复加入 |
| 前提 | 两节点双向可达,含集群总线端口 |
典型使用场景
- 手工搭建六节点集群,逐台 MEET 形成初始拓扑
- 新增主节点后把它并入现有集群再分配槽
- 拓扑状态异常需要重新建立节点间的可见关系
- 演练环境快速拉起一套小集群做功能验证
- 排查节点只认识自己、集群节点列表长期不完整的现象
组建示例
组建示例
redis-cli -p 7000 CLUSTER MEET 10.0.0.12 7000 # 与第二个节点握手
redis-cli -p 7000 CLUSTER MEET 10.0.0.13 7000 # 继续加入第三个节点
redis-cli -p 7000 CLUSTER NODES | wc -l # 节点数是否达到预期
redis-cli -p 7000 CLUSTER INFO | grep cluster_state # 未分配槽时通常为 fail
redis-cli -p 7000 CLUSTER ADDSLOTS $(seq 0 5460) # 分配槽位,shell 写法需按版本与长度调整MEET 之后的步骤
| 步骤 | 命令 | 说明 |
|---|---|---|
| 加入节点 | CLUSTER MEET | 只建立拓扑关系,不涉及数据 |
| 分配槽位 | CLUSTER ADDSLOTS | 让节点承担键空间,未分配完集群状态为 fail |
| 设置从属 | CLUSTER REPLICATE | 把节点设为某个主节点的副本 |
| 核对拓扑 | CLUSTER NODES | 确认节点数、角色与槽区间符合预期 |
集群总线端口等于业务端口加 10000,防火墙与安全组必须双向放行,否则 MEET 看似成功,节点列表却长时间同步不过来。
全部槽分配完毕之前集群状态会显示 fail,这是组建过程中的正常中间态,不必急着当作故障处理。