redis cluster中添加删除重分配节点例子

作者:用户 来源:互联网 时间:2016-05-05 10:22:27

摘要: 本文讲的是redis cluster中添加删除重分配节点例子, redis cluster配置好,并运行一段时间后,我们想添加节点,或者删除节点,该怎么办呢。 一,redis cluster命令行     //集群(cluster)  CLUSTER INFO 打印集群的信息  CLUS

redis cluster配置好,并运行一段时间后,我们想添加节点,或者删除节点,该怎么办呢。

一,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节点被删除了,这样就回到了,就是这篇文章开头,还没有添加节点的状态

以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索集群 redis cluster、redis cluster搭建、spring redis cluster、redis cluster 命令、redis cluster 原理,以便于您获取更多的相关知识。

redis cluster中添加删除重分配节点例子相关推荐

  1. redis cluster 添加 删除 重分配 节点

    redis cluster配置好,并运行一段时间后,我们想添加节点,或者删除节点,该怎么办呢. 一,redis cluster命令行 //集群(cluster) CLUSTER INFO 打印集群的信 ...

  2. 【Redis】redis cluster 添加 删除 重分配 节点

    一,redis cluster命令行 //集群(cluster) CLUSTER INFO 打印集群的信息 CLUSTER NODES 列出集群当前已知的所有节点(node),以及这些节点的相关信息. ...

  3. JS记坑 ----- 在父节点中添加删除子节点

    场景:通过javascript为ul标签内动态增删li标签,我通过 liArr = ul.children; 获取了ul的存有所有子元素的类数组,但是在 appendChild().insert()和 ...

  4. openstack中彻底删除计算节点的操作记录

    在使用openstack的过程中,我们经常会添加好几台计算节点来部署虚拟机,在后续使用中由于某些原因,一些计算节点出现了问题,需要将这些出了问题的计算节点从openstack的控制节点中踢出去!但是很 ...

  5. 【LaTeX技巧】 | LaTeX数学公式环境中添加删除线

    LaTeX数学公式环境中添加删除线 LaTeX数学公式环境中添加删除线 LaTeX数学公式环境中添加删除线 作者:刘兴禄,清华大学,博士在读 cancel包 下面是一个例子. \documentcla ...

  6. 在浏览器中添加删除页面元素

    在浏览器中添加删除页面元素 一.添加元素 确定添加元素位置,并找到容器元素. 新建一个填写内容步骤,添加填写项目,获取容器元素,填写属性为添加子元素addchild,填写内容为新元素的html代码. ...

  7. oracle删除主键之一,oracle中添加删除主键的方法

    1.创建表的同时创建主键约束 (1)无命名 sql;"> create table student ( studentid int primary key not null,stude ...

  8. 如何在word表格中添加删除线,划去不想要的部分?

    如何在word表格中添加删除线,划去不想要的部分? 一.在word的表格中不能直接添加删除线,只能先在excel表格中加上删除线,再复制到word表格中 二.excel表格中添加删除线: 右击选中需要 ...

  9. wps启用编辑按钮在哪里_如何在wps工具栏中添加按钮 如何在Excel中添加删除命令按钮...

    延伸:如何在Excel中添加删除命令按钮 描述:在Excel 2003中,很多常用的命令按钮都放置在工具栏中,用户可以很方便地进行操作.添加命令主要是通过拖动的方式完成的,其具体的操作如下:骤一,在视 ...

最新文章

  1. TensorFlow实战笔记(17)---TFlearn
  2. python中configparser详解_python ConfigParser模块详解
  3. Java进阶:AtomicReference详解
  4. matlab错误:vl_feat工具箱问题
  5. spring boot 整合多数据源JDBC、多数据源mybatis、多数据源springdata jpa
  6. nmap入门之主机发现
  7. (99)FPGA最大延迟与最小延迟基础
  8. VC6编译wxWINDOWS-2.4.0-编译EDISON源码
  9. 用vlc搭建rtsp流媒体服务器
  10. 单片机和嵌入式的区别
  11. 计算机word怎么写,电脑word怎么用?
  12. 苦才是人生的经典美言
  13. “鞋王”百丽国际牵手美云智数固筑业权一体管理 以数字化共创鞋履产业新未来
  14. xml报错 Parse Fatal Error :在实体引用中,实体名称必须紧跟在''后面
  15. apache中的php模块安装
  16. 特斯拉Powerwall网关可能受到黑客攻击
  17. 家具行业销售人员销售提成管理系统
  18. JAVA毕业设计_机房管理系统
  19. C#【中级篇】volatile关键字测试-在C#无区别,在Java有区别
  20. VsCode暂存时报错Git:fatal xxx is outside repository

热门文章

  1. webpack打包压缩混淆_细说webpack系列 3. webpack-cli 零配置打包
  2. 字符动图_图解redis五种数据结构底层实现(动图哦)
  3. 23_python基础—模块和包
  4. mysql 批量删除_Python接口测试之对MySQL的增、删、改、查操作(五)
  5. 阿里巴巴整理的python_阿里P8大佬整理的2020年最全99道python面试题,文末附答案...
  6. 负责指挥与控制整台电子计算机,2011秋季计算机应用基础期末考试卷(修改)
  7. sap 客户独立需求作用_SAP 动态安全库存其中动态时间应用
  8. mpp文件转换excel_原来只要按下这个键,Word、PDF、PPT、Excel文件随你互相转换
  9. 钉钉打卡如何破译人脸识别_疫情常态下,如何选择合适的考勤管理系统和考勤打卡工具?...
  10. 庆大学校计算机系,张丽霞(加州大学洛杉矶分校计算机系教授)_百度百科