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 ...
随机推荐
- Android操作外置SD卡和U盘相关文章
Android设备与外接U盘实现数据读取操作https://blog.csdn.net/true100/article/details/77775700 usbdisklibhttps://githu ...
- driver.switch_to.window(driver.window_handles[0])切换到最新打开窗口
有时,使用selenium 定位页面元素时,浏览器明明打开的是需要定位的页面,但就是定位不到元素.打印一下元素page_source,会发现源码与页面不同. 主要问题是页面没有加载完成导致,需要设置 ...
- UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb9 in position 16: invalid start byte
读取一个csv文件失败,提示: UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb9 in position 16: invalid sta ...
- UITableView+FDTemplateLayoutCell计算行高显示<二>
之前记录过一篇UITableView+FDTemplateLayoutCell计算行高不成功的博客... 传送门:http://www.cnblogs.com/pengsi/p/6571311.htm ...
- 2. bash基础
通配符 通配符 功能说明 实例 * 匹配所有字符 ls *.o ? 匹配所有的当个字符 ls net??? [a-z] 匹配属于a到z范围集合内的一个字符 ls [a-i]* [...] 与方括号内的 ...
- 树莓派实现摄像头监控(使用motion和mjpg-streamer)
购买raspBerryCarmen,大概20元, 启动树莓派,安装: `sudo apt install motion` 配置/etc/motion/motion.conf, `sudo vim /e ...
- Python3 Selenium自动化web测试 ==> 第九节 WebDriver高级应用 -- 操作select 和 alert
学习目的: 掌握页面常规元素的定位方法 场景: 网页正常的select元素下拉框常规方法和select专属方法 正式步骤: step1:常规思路select页面元素定位 处理HTML代码截图 # -* ...
- UUID相同导致的网络连接问题
目录 场景 思路 解决过程 提升虚拟机配置 直连交换机 最终解决方案 总结 场景 有同事从公司寄了一台服务器到现场,用来安装数据库.缓存等组件供开发使用.到了之后,连接电源.网线,设置IP,用vSph ...
- PJzhang:在windows10中实现右键命令行快捷打开
猫宁!!! (windows10---设置---轻松使用---键盘---开启PrtScn快速截图),或者winodws+shift+s kali linux中右键就可以打开终端命令行. 采用手工修改注 ...
- 【VS开发】socket编程原理
socket编程原理 1.问题的引入 1) 普通的I/O操作过程: UNIX系统的I/O命令集,是从Maltics和早期系统中的命令演变出来的,其模式为打开一读/写一关闭(open-write-rea ...