RedisCluster 添加/删除节点
一,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 槽中的键。
这些命令是集群所独有的。执行上述命令要先登录
- [root@manage redis]# redis-cli -c -p 6382 -h 192.168.10.220 //登录
- 192.168.10.220:6382> cluster info //查看集群情况
- cluster_state:ok
- cluster_slots_assigned:16384
- cluster_slots_ok:16384
- cluster_slots_pfail:0
- cluster_slots_fail:0
- cluster_known_nodes:6
- cluster_size:3
- cluster_current_epoch:8
- cluster_my_epoch:4
- cluster_stats_messages_sent:82753
- cluster_stats_messages_received:82754
二,添加节点
1,新配置二个测试节点
- # cd /etc/redis
- //新增配置
- # cp redis-6379.conf redis-6378.conf && sed -i "s/6379/6378/g" redis-6378.conf
- # cp redis-6382.conf redis-6385.conf && sed -i "s/6382/6385/g" redis-6385.conf
- //启动
- # redis-server /etc/redis/redis-6385.conf > /var/log/redis/redis-6385.log 2>&1 &
- # redis-server /etc/redis/redis-6378.conf > /var/log/redis/redis-6378.log 2>&1 &
2,添加主节点
- # 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集群任一个旧节点
3,添加从节点
- # 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集群任一个旧节点
4,重新分配slot
- # redis-trib.rb reshard 192.168.10.219:6378 //下面是主要过程
- How many slots do you want to move (from 1 to 16384)? 1000 //设置slot数1000
- What is the receiving node ID? 03ccad2ba5dd1e062464bc7590400441fafb63f2 //新节点node id
- 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:all //表示全部节点重新洗牌
- Do you want to proceed with the proposed reshard plan (yes/no)? yes //确认重新分
新增加的主节点,是没有slots的,
M: 03ccad2ba5dd1e062464bc7590400441fafb63f2 192.168.10.219:6378
slots:0-332,5461-5794,10923-11255 (0 slots) master
主节点如果没有slots的话,存取数据就都不会被选中。
可以把分配的过程理解成打扑克牌,all表示大家重新洗牌;输入某个主节点的node id,然后在输入done的话,就好比从某个节点,抽牌。
5,查看一下,集群情况
- [root@slave2 redis]# redis-trib.rb check 192.168.10.219:6379
- Connecting to node 192.168.10.219:6379: OK
- Connecting to node 192.168.10.220:6385: OK
- Connecting to node 192.168.10.219:6378: OK
- Connecting to node 192.168.10.220:6382: OK
- Connecting to node 192.168.10.220:6383: OK
- Connecting to node 192.168.10.219:6380: OK
- Connecting to node 192.168.10.219:6381: OK
- Connecting to node 192.168.10.220:6384: OK
- >>> Performing Cluster Check (using node 192.168.10.219:6379)
- M: 5d8ef5a7fbd72ac586bef04fa6de8a88c0671052 192.168.10.219:6379
- slots:5795-10922 (5128 slots) master
- 1 additional replica(s)
- S: 9c240333476469e8e2c8e80b089c48f389827265 192.168.10.220:6385
- slots: (0 slots) slave
- replicates 03ccad2ba5dd1e062464bc7590400441fafb63f2
- M: 03ccad2ba5dd1e062464bc7590400441fafb63f2 192.168.10.219:6378
- slots:0-332,5461-5794,10923-11255 (1000 slots) master
- 1 additional replica(s)
- M: 19b042c17d2918fade18a4ad2efc75aa81fd2422 192.168.10.220:6382
- slots:333-5460 (5128 slots) master
- 1 additional replica(s)
- M: b2c50113db7bd685e316a16b423c9b8abc3ba0b7 192.168.10.220:6383
- slots:11256-16383 (5128 slots) master
- 1 additional replica(s)
- S: 6475e4c8b5e0c0ea27547ff7695d05e9af0c5ccb 192.168.10.219:6380
- slots: (0 slots) slave
- replicates 19b042c17d2918fade18a4ad2efc75aa81fd2422
- S: 1ee01fe95bcfb688a50825d54248eea1e6133cdc 192.168.10.219:6381
- slots: (0 slots) slave
- replicates b2c50113db7bd685e316a16b423c9b8abc3ba0b7
- S: 9a2a1d75b8eb47e05eee1198f81a9edd88db5aa1 192.168.10.220:6384
- slots: (0 slots) slave
- replicates 5d8ef5a7fbd72ac586bef04fa6de8a88c0671052
- [OK] All nodes agree about slots configuration.
- >>> Check for open slots...
- >>> Check slots coverage...
- [OK] All 16384 slots covered.
三,改变从节点的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'
新的master节点被删除了,这样就回到了,就是这篇文章开头,还没有添加节点的状态
<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">
RedisCluster 添加/删除节点的更多相关文章
- redis cluster 添加/删除节点操作
RedisCluster 添加/删除节点 添加节点新配置两个测试节点8008和9009 [root@--- ~]# /usr/local/redis-/bin/redis-server /u02/re ...
- mongodb replica set 添加/删除节点方法--http://www.ii123.com/jc/bc/bczh/258948.html
replica set多服务器主从,添加,删除节点,肯定会经常遇到的.下面详细说明一下,添加,删除节点的2种方法. 一,利用rs.reconfig,来添加,删除节点 1,添加节点 代码如下 re ...
- MongoDB添加删除节点
副本集添加删除节点 sharding添加删除节点 先将节点设置为hidden,再remove
- Hadoop日常维护系列——Hadoop添加删除节点
添加节点 1.修改host 和普通的datanode一样.添加namenode的ip 2.修改namenode的配置文件conf/slaves 添加新增节点的ip或host 3.在新节点的 ...
- 节点操作-创建并添加&删除节点&替换&克隆节点
<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" ...
- redis集群添加删除节点
Redis3.0集群添加节点 1:首先把需要添加的节点启动 cd /usr/local/cluster/ mkdir 7006 cp /usr/local/cluster/redis.conf /u ...
- Mongodb 3.6 副本集测试及添加删除节点等操作
下载tar包并安装curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-3.6.8.tgz [root@mysqlt ...
- dom 添加删除节点
//找到 div1 var div1 = document.getElementById("div1"); //创建 一个 p标签 var p = document.createE ...
- hadoop动态添加删除节点datanode及恢复
1. 配置系统环境 主机名,ssh互信,环境变量等 本文略去jdk安装,请将datanode的jdk安装路径与/etc/hadoop/hadoop-evn.sh中的java_home保持一致,版本ha ...
随机推荐
- k8s-helm01-----helm基本使用
什么是helm Helm 是 Kubernetes 生态系统中的一个软件包管理工具. 基础概念: Helm:客户端,主要负责管理本地的 Charts.repositories 以及与tiller服务器 ...
- document.onselectstart=function(){return false;} 引起的拖动问题
在网页中拖动时,会引起某些文字或一些内容被选中,导致网页中蓝蓝的一片,视觉效果很差,所以我加了个1.document.onselectstart=function(){return false;}或者 ...
- css3弹性盒子display:flex
先看上面的代码,解释一下意思,看你能认识多少(后面有注释): .container { display: flex; //弹性布局 flex-direction: column; //容器内项目的排列 ...
- div固定在浏览器的最上方,不随滚动条滚动
#topDIV { position: fixed; ; ; width: 100%; height: 35px; border-bottom: 1px solid #eee; background- ...
- JavaScript抽象语法树英文对照
type:"Program" //顶级对象类型 type:"Identifier" // 标识符 type:"FuncationDeclaration ...
- pandas中groupby的参数:as_index
参考:https://blog.csdn.net/cjsyr6wt/article/details/78200444?locationNum=11&fps=1 以下是pandas官方的解释: ...
- button与subit区别
submit介绍 submit是button的一个特例,也是button的一种,它把提交这个动作自动集成了.如果表单在点击提交按钮后需要用JS进行处理(包括输入验证)后再提交的话,通常都必须把su ...
- Ingreslock后门漏洞
一.简介 1524端口 ingreslock Ingres 数据库管理系统(DBMS)锁定服务 利用telnet命令连接目标主机的1524端口,直接获取root权限. Ingreslock后门程序监听 ...
- 19.通过MAPREDUCE 把收集数据进行清洗
在eclipse软件里创建一个maven项目 jdk要换成本地安装的1.8版本的 加载pom.xml文件 <project xmlns="http://maven.apache.org ...
- PTA(Basic Level)1033.旧键盘打字
旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现.现在给出应该输入的一段文字.以及坏掉的那些键,打出的结果文字会是怎样? 输入格式: 输入在 2 行中分别给出坏掉的那些键.以及应该输入 ...