redis 5.0中使用 redis-cli 添加cluster node 并 reshard

本文详细介绍了在Redis 5中利用redis-cli进行集群部署、扩容及收缩的操作流程。从创建集群、分配slot到添加及删除节点,涵盖了集群管理的关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在redis-5中redis-trib.rb的功能被集成到了redis-cli中,大大简化了redis的集群部署,加快了进群部署的速度,也方便后期维护与扩容。

以下简要介绍一下redis-cli在集群中的操作:

环境:Ubuntu 18.04.2 LTS

redis版本:redis-5.0.5

集群架构:3master+3slave(后期添加1master+1slave)

创建集群:

1、新建所需目录,创建配置文件,启动6个redis实例进程(配置参数尽量保持一致)。在这里原始集群端口号为6379-6384,监听在127.0.0.1上。添加节点监听为127.0.0.1:6385(master),127.0.0.1:6386(slave)

2、创建集群:

命令 :redis-cli --cluster create 127.0.0.1:6379 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384 --cluster-replicas 1

--cluster-replicas 表示有一个主有几个slave

3、扩容:

(1)查看每个集群节点的node ID和身份

进入任意集群master节点:redis-cli -p 6379

查看节点ID:cluster nodes  

注意:以上我是在测试环境中,没有使用身份验证,在生产环境中,必须添加requirepass参数。

(2)添加master节点

redis-cli --cluster add-node 127.0.0.1:6385 127.0.0.1:6379

这里是将节点加入了集群中,但是并没有分配slot,所以这个节点并没有真正的开始分担集群工作。

(3)分配slot

redis-cli --cluster reshard 127.0.0.1:6379 --cluster-from 2846540d8284538096f111a8ce7cf01c50199237,e0a9c3e60eeb951a154d003b9b28bbdc0be67d5b,692dec0ccd6bdf68ef5d97f145ecfa6d6bca6132 --cluster-to 46f0b68b3f605b3369d3843a89a2b4a164ed21e8 --cluster-slots 1024

--cluster-from:表示slot目前所在的节点的node ID,多个ID用逗号分隔

--cluster-to:表示需要新分配节点的node ID(貌似每次只能分配一个)

--cluster-slots:分配的slot数量

(4)添加slave节点

redis-cli --cluster add-node 127.0.0.1:6386 127.0.0.1:6385 --cluster-slave --cluster-master-id 46f0b68b3f605b3369d3843a89a2b4a164ed21e8

add-node: 后面的分别跟着新加入的slave和slave对应的master

cluster-slave:表示加入的是slave节点

--cluster-master-id:表示slave对应的master的node ID

4、收缩集群

下线节点127.0.0.1:6385(master)/127.0.0.1:6386(slave)

(1)首先删除master对应的slave

redis-cli --cluster del-node 127.0.0.1:6386 530cf27337c1141ed12268f55ba06c15ca8494fc

del-node后面跟着slave节点的 ip:port 和node ID

(2)清空master的slot

redis-cli --cluster reshard 127.0.0.1:6385 --cluster-from 46f0b68b3f605b3369d3843a89a2b4a164ed21e8 --cluster-to 2846540d8284538096f111a8ce7cf01c50199237 --cluster-slots 1024 --cluster-yes

reshard子命令前面已经介绍过了,这里需要注意的一点是,由于我们的集群一共有四个主节点,而每次reshard只能写一个目的节点,因此以上命令需要执行三次(--cluster-to对应不同的目的节点)。

--cluster-yes:不回显需要迁移的slot,直接迁移。

(3)下线(删除)节点

redis-cli --cluster del-node 127.0.0.1:6385 46f0b68b3f605b3369d3843a89a2b4a164ed21e8

至此就是redis cluster 简单的操作过程

 

 

 

 

 

 

 

 

<think>嗯,用户想了解如何使用redis-cli创建Redis集群,特别是redis-cli --cluster create命令的用法和示例。首先,我需要回忆一下Redis Cluster的相关知识,以及redis-cli工具的使用方法。根据之前提供的引用内容,比如引用3中提到创建集群需要几个空Redis实例运行在集群模式下,配置文件中需要设置cluster-enabled yes等参数。引用5里提到了使用redis-cli命令的示例,可能需要六个节点,指定副本数。 首先,我应该整理创建集群的基本步骤。用户可能需要知道先准备好多个Redis实例,每个实例的配置是否正确,比如端口号、集群模式开启、节点超时时间等。然后使用redis-cli --cluster create命令将这些节点组合成集群。这里需要注意的是,在Redis 5.0之后,redis-cli取代了旧的redis-trib.rb工具,所以用户应该使用新命令。 接下来,需要详细说明命令的语法和参数。比如--cluster-replicas参数用来指定每个主节点的副本数。如果用户指定了副本数为1,那么总节点数需要满足主节点数乘以(1+副本数)。例如,3主3从需要6个节点。这时候需要举例说明,比如命令中的节点列表如何排列,主节点和从节点的分配逻辑。 然后,应该给出具体的步骤示例,比如如何启动六个实例,确认配置正确,然后运行创建命令。还要注意可能的常见问题,比如端口未开放、配置错误、依赖缺失(如Ruby的问题在引用5中提到过,但现在用redis-cli可能不需要Ruby了)。但用户现在问的是redis-cli命令,所以可能不需要处理Ruby的问题,但需要提醒环境要求,比如Redis版本是否支持。 另外,引用4中提到迁移slot报错和reshard的问题,可能用户在创建集群后需要进行这些操作,但当前问题主要是在创建步骤,所以暂时不需要深入。不过可以提到创建后的检查命令,如redis-cli --cluster check,这在引用2里提到过,用于验证集群状态。 用户可能需要示例命令,比如具体的IP和端口如何填写。例如,如果用户有六个节点运行在本地不同端口,命令可能是redis-cli --cluster create 127.0.0.1:7000 127.0.0.1:7001 ... --cluster-replicas 1。需要解释每个参数的作用,以及执行命令后的确认步骤,输入yes来接受配置。 还要注意错误处理,比如节点未启动或者配置错误时的提示。例如,如果某个节点没有正确配置cluster-enabled,创建集群时会失败,这时候需要检查配置文件。引用3中的配置项是关键,必须确保每个实例的配置正确。 最后,总结关键点,确保用户按照步骤操作,验证集群是否成功创建。可能还需要提到后续管理命令,如添加节点、重新分片等,但用户当前的问题集中在创建命令本身,所以这部分可以简要提及或放在相关问题里。</think>### 使用 `redis-cli --cluster create` 创建 Redis 集群的步骤 Redis 5.0 及以上版本使用 `redis-cli` 工具直接创建集群,无需依赖 Ruby 环境[^5]。以下是具体步骤和示例: --- #### **1. 准备 Redis 实例** - 在每个节点配置文件中启用集群模式,例如 `redis.conf`: ```bash port 7000 cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout 5000 appendonly yes ``` 每个实例需修改 `port` 重启服务[^3]。 --- #### **2. 执行集群创建命令** - **基本语法**: ```bash redis-cli --cluster create <ip1:port1> <ip2:port2> ... <ipN:portN> --cluster-replicas <replica_num> ``` 其中: - `--cluster-replicas <replica_num>`:每个主节点的副本数量。 - 总节点数需满足公式:$N = M \times (replica\_num + 1)$($M$ 为主节点数)[^5]。 - **示例**(3主3从集群): ```bash redis-cli --cluster create \ 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 \ 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 \ --cluster-replicas 1 ``` 命令会自动分配主从关系,前 $M$ 个节点为主节点,后 $M \times replica\_num$ 为从节点[^5]。 --- #### **3. 验证集群状态** - 检查集群节点分布: ```bash redis-cli --cluster check 127.0.0.1:7000 ``` 输出应显示所有节点和槽位(slots)分配正常[^2]。 --- #### **4. 常见问题** 1. **节点未启动或配置错误** 确保所有实例的 `cluster-enabled` 和端口配置正确。 2. **槽位未完全分配** 执行 `redis-cli --cluster fix <ip:port>` 修复[^2]。 3. **网络问题** 若跨服务器部署,需开放防火墙端口(如 TCP 和集群总线端口:`<port> + 10000`)[^4]。 --- ###
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值