redis - cluster命令

本文介绍如何使用 Redis 集群命令行工具进行节点添加、角色转换及删除等操作,并详细展示了添加主从节点、重新分配槽位、检查集群状态及节点删除的具体步骤。

一、redis cluster命令行

//集群(cluster)  
CLUSTER INFO 打印集群的信息  
CLUSTER NODES 列出集群当前已知的所有节点(node),以及这些节点的相关信息。   
  
//节点(node)  
CLUSTER MEET <ip> <port> 将 ip 和 port 所指定的节点添加到集群当中,让它成为集群的一份子。  
CLUSTER FORGET <node_id> 从集群中移除 node_id 指定的节点。  
CLUSTER REPLICATE <node_id> 将当前节点设置为 node_id 指定的节点的从节点。  
CLUSTER SAVECONFIG 将节点的配置文件保存到硬盘里面。   
  
//槽(slot)  
CLUSTER ADDSLOTS <slot> [slot ...] 将一个或多个槽(slot)指派(assign)给当前节点。  
CLUSTER DELSLOTS <slot> [slot ...] 移除一个或多个槽对当前节点的指派。  
CLUSTER FLUSHSLOTS 移除指派给当前节点的所有槽,让当前节点变成一个没有指派任何槽的节点。  
CLUSTER SETSLOT <slot> NODE <node_id> 将槽 slot 指派给 node_id 指定的节点,如果槽已经指派给另一个节点,那么先让另一个节点删除该槽>,然后再进行指派。  
CLUSTER SETSLOT <slot> MIGRATING <node_id> 将本节点的槽 slot 迁移到 node_id 指定的节点中。  
CLUSTER SETSLOT <slot> IMPORTING <node_id> 从 node_id 指定的节点中导入槽 slot 到本节点。  
CLUSTER SETSLOT <slot> STABLE 取消对槽 slot 的导入(import)或者迁移(migrate)。   
  
//键 (key)  
CLUSTER KEYSLOT <key> 计算键 key 应该被放置在哪个槽上。  
CLUSTER COUNTKEYSINSLOT <slot> 返回槽 slot 目前包含的键值对数量。  
CLUSTER GETKEYSINSLOT <slot> <count> 返回 count 个 slot 槽中的键。

二、添加节点

1、添加主节点

redis-trib.rb add-node 192.168.10.219:6378 192.168.10.219:6379 

注释:

192.168.10.219:6378是新增的节点

192.168.10.219:6379集群任一个旧节点

2、添加从节点

redis-trib.rb add-node --slave --master-id 03ccad2ba5dd1e062464bc7590400441fafb63f2 192.168.10.220:6385 192.168.10.219:6379

注释:

--slave,表示添加的是从节点

--master-id 03ccad2ba5dd1e062464bc7590400441fafb63f2,主节点的node id,在这里是前面新添加的6378的node id

192.168.10.220:6385,新节点

192.168.10.219:6379集群任一个旧节点

3、重新分配slot

  1. redis-trib.rb reshard 192.168.10.219:6378 //下面是主要过程  
  2.   
  3. How many slots do you want to move (from 1 to 16384)? 1000 //设置slot数1000  
  4. What is the receiving node ID? 03ccad2ba5dd1e062464bc7590400441fafb63f2 //新节点node id  
  5. Please enter all the source node IDs.  
  6.  Type 'all' to use all the nodes as source nodes for the hash slots.  
  7.  Type 'done' once you entered all the source nodes IDs.  
  8. Source node #1:all //表示全部节点重新洗牌  
  9. Do you want to proceed with the proposed reshard plan (yes/no)? yes //确认重新分 
新增加的主节点,是没有slots的,主节点如果没有slot的话,存取数据就都不会被选中。

4、查看一下,集群情况

redis-trib.rb check 192.168.10.219:6379
三、改变从节点的master

//查看一下6378的从节点  
# redis-cli -p 6378 cluster nodes | grep slave | grep 03ccad2ba5dd1e062464bc7590400441fafb63f2  
 
//将6385加入到新的master  
# redis-cli -c -p 6385 -h 192.168.10.220  
192.168.10.220:6385> cluster replicate 5d8ef5a7fbd72ac586bef04fa6de8a88c0671052  //新master的node id  
OK  
192.168.10.220:6385> quit  
 
//查看新master的slave  
# redis-cli -p 6379 cluster nodes | grep slave | grep 5d8ef5a7fbd72ac586bef04fa6de8a88c0671052
四、删除节点

1、删除从节点

redis-trib.rb del-node 192.168.10.220:6385 '9c240333476469e8e2c8e80b089c48f389827265' 
2、删除主节点

如果主节点有从节点,将从节点转移到其他主节点

如果主节点有slot,去掉分配的slot,然后在删除主节点


# redis-trib.rb reshard 192.168.10.219:6378 //取消分配的slot,下面是主要过程  
 
How many slots do you want to move (from 1 to 16384)? 1000 //被删除master的所有slot数量  
What is the receiving node ID? 5d8ef5a7fbd72ac586bef04fa6de8a88c0671052 //接收6378节点slot的master  
Please enter all the source node IDs.  
 Type 'all' to use all the nodes as source nodes for the hash slots.  
 Type 'done' once you entered all the source nodes IDs.  
Source node #1:03ccad2ba5dd1e062464bc7590400441fafb63f2 //被删除master的node-id  
Source node #2:done   
 
Do you want to proceed with the proposed reshard plan (yes/no)? yes //取消slot后,reshard

新增master节点后,也进行了这一步操作,当时是分配,现在去掉。反着的。

redis-trib.rb del-node 192.168.10.219:6378 '03ccad2ba5dd1e062464bc7590400441fafb63f2' 



Redis Cluster Operator 是用于管理 Redis 集群的 Kubernetes 操作符。 ### 功能介绍 - **自动化部署**:能在 Kubernetes 集群中快速、自动化地部署 Redis 集群,减少手动配置的复杂性和出错概率。 - **集群管理**:支持对 Redis 集群的节点添加、删除、扩容、缩容等操作,确保集群能根据业务需求灵活调整。 - **故障恢复**:当 Redis 节点出现故障时,Operator 可以自动检测并尝试恢复,保证集群的高可用性。 - **配置管理**:方便用户对 Redis 集群的参数进行统一配置和管理。 ### 使用指南 #### 安装 通常可以通过 Helm Chart 进行安装。示例命令如下: ```bash helm repo add bitnami https://charts.bitnami.com/bitnami helm install my-redis-cluster bitnami/redis-cluster ``` #### 部署 Redis 集群 安装完成后,会在 Kubernetes 中创建 Redis 集群的相关资源,如 Pod、Service 等。可以通过以下命令查看: ```bash kubectl get pods kubectl get services ``` #### 访问 Redis 集群 通过创建的 Service 来访问 Redis 集群。例如,使用 Redis CLI 连接: ```bash kubectl run --namespace default redis-client --restart='Never' --image docker.io/bitnami/redis:6.2.6-debian-10-r23 --command -- sleep infinity kubectl exec --tty -i redis-client --namespace default -- redis-cli -c -h my-redis-cluster -a <password> ``` #### 集群配置调整 若要对集群进行扩容、缩容等操作,可以修改 Helm Chart 的配置文件,然后进行升级: ```bash helm upgrade my-redis-cluster bitnami/redis-cluster -f values.yaml ``` #### 监控和维护 可以使用 Prometheus 和 Grafana 等工具对 Redis 集群进行监控。同时,Operator 会自动处理一些常见的故障和维护任务。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值