Redis集群增删节点
部署环境
  redis-3.0.0

  VM虚拟机redhat6.5-x64:192.168.1.201、192.168.1.202、192.168.1.203、
                                                 192.168.1.204、192.168.1.205、192.168.1.206

  Xshell4
部署方案
    目前已经有:3主3从redis集群,还有两个已安装好redis节点207、208
    现在需要增加 删除 207-master、208-slave
    redis集群搭建参考:https://www.cnblogs.com/cac2020/p/9529900.html

操作步骤
    
    准备工作:
    一、介绍命令redis-trib.rb
    
    
    1 create:创建一个集群环境host1:port1 ... hostN:portN(集群中的主从节点比例)
    2 call:可以执行redis命令
    3 add-node:将一个节点添加到集群里,第一个参数为新节点的ip:port,第二个参数为集群中任意一个已经存在的节点的ip:port
    4 del-node:移除一个节点
    5 reshard:重新分片
    6 check:检查集群状态

二、操作
    登录集群客户端201    
    /usr/local/redis/bin/redis-cli -c -h 192.168.1.201 -p 6379
    操作一:新增207-master    
    /usr/local/redis-3.0.0/src/redis-trib.rb add-node 192.168.1.207:6379 192.168.1.201:6379
    操作二:重新分配slot
    /usr/local/redis-3.0.0/src/redis-trib.rb reshard 192.168.1.207:6379

步骤一:使用redis-trib命令,找到集群中的任意一个主节点(红色位置表现集群中的任意一个主节点),对其进行重新分片工作。

[root@bhz004 7001]# /usr/local/redis3.0/src/redis-trib.rb reshard 192.168.1.171:7001

输出如下:

>>> Performing Cluster Check (using node 192.168.1.171:7001)

M: 614d0def75663f2620b6402a017014b57c912dad 192.168.1.171:7001

slots:0-5460 (5461 slots) master

1 additional replica(s)

S: fa299e41c173fa807ba04684c2f5e5e185d5f7d0 192.168.1.171:7006

slots: (0 slots) slave

replicates 83df08875c7707878756364039df0a4c8658f272

S: adb99506ddccad332e09258565f2e5f4f456a150 192.168.1.171:7005

slots: (0 slots) slave

replicates 8aac82b63d42a1989528cd3906579863a5774e77

M: 382634a4025778c040b7213453fd42a709f79e28 192.168.1.171:7007

slots: (0 slots) master

0 additional replica(s)

S: a69b98937844c6050ee5885266ccccb185a3f36a 192.168.1.171:7004

slots: (0 slots) slave

replicates 614d0def75663f2620b6402a017014b57c912dad

M: 8aac82b63d42a1989528cd3906579863a5774e77 192.168.1.171:7002

slots:5461-10922 (5462 slots) master

1 additional replica(s)

M: 83df08875c7707878756364039df0a4c8658f272 192.168.1.171:7003

slots:10923-16383 (5461 slots) master

1 additional replica(s)

[OK] All nodes agree about slots configuration.

>>> Check for open slots...

>>> Check slots coverage...

[OK] All 16384 slots covered.

(提示一)

How many slots do you want to move (from 1 to 16384)?

(提示二)

What is the receiving node ID? 382634a4025778c040b7213453fd42a709f79e28

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

Ready to move 200 slots.

Source nodes:

M: 614d0def75663f2620b6402a017014b57c912dad 192.168.1.171:7001

slots:0-5460 (5461 slots) master

1 additional replica(s)

M: 8aac82b63d42a1989528cd3906579863a5774e77 192.168.1.171:7002

slots:5461-10922 (5462 slots) master

1 additional replica(s)

M: 83df08875c7707878756364039df0a4c8658f272 192.168.1.171:7003

slots:10923-16383 (5461 slots) master

1 additional replica(s)

Destination node:

M: 382634a4025778c040b7213453fd42a709f79e28 192.168.1.171:7007

slots: (0 slots) master

0 additional replica(s)

Resharding plan:(分片执行计划日志)

Moving slot 5461 from 8aac82b63d42a1989528cd3906579863a5774e77

...

Moving slot 0 from 614d0def75663f2620b6402a017014b57c912dad

...

Moving slot 10923 from 83df08875c7707878756364039df0a4c8658f272

...

(提示三)

Do you want to proceed with the proposed reshard plan (yes/no)? yes

Moving slot 65 from 192.168.1.171:7001 to 192.168.1.171:7007:

...

Moving slot 10923 from 192.168.1.171:7003 to 192.168.1.171:7007:

...

Moving slot 5527 from 192.168.1.171:7002 to 192.168.1.171:7007:

...

1提示一:是希望你需要多少个槽移动到新的节点上,可以自己设置,比如200个槽。

2提示二:是你需要把这200个slot槽移动到那个节点上去(需要指定节点id),并且下个                提示是输入all为从所有主节点(7001 7002 7003)中分别抽取响应的槽数(一共为200个槽到指定的新节点中!,并且会打印执行分片的计划。)

3提示三:输入yes确认开始执行分片任务

操作三:新增208-slave,作为207的从节点
    /usr/local/redis-3.0.0/src/redis-trib.rb add-node 192.168.1.208:6379 192.168.1.201:6379    
    操作四:新增208-slave
    /usr/local/redis/bin/redis-cli -c -h 192.168.1.208 -p 6379
    cluster replicate 207节点id    
    操作五:删除节点208-slave
    /usr/local/redis-3.0.0/src/redis-trib.rb del-node 192.168.1.208:6379 208节点id
    操作六:删除节点207-master
    删除主节点之前需要先将slot迁移到其他主节点上
    /usr/local/redis-3.0.0/src/redis-trib.rb reshard 192.168.1.207:6379
    /usr/local/redis-3.0.0/src/redis-trib.rb del-node 192.168.1.207:6379 207节点id

步骤一:删除7007(master)节点之前,我们需要先把其全部的数据(slot槽)移动到其他节点上去(目前只能把master的数据迁移到一个节点上,暂时做不了平均分配功能)。

[root@bhz004 7001]# /usr/local/redis3.0/src/redis-trib.rb reshard 192.168.1.171:7007

输出如下:

>>> Performing Cluster Check (using node 192.168.1.171:7007)

M: 382634a4025778c040b7213453fd42a709f79e28 192.168.1.171:7007

slots:0-65,5461-5527,10923-10988 (199 slots) master

0 additional replica(s)

S: fa299e41c173fa807ba04684c2f5e5e185d5f7d0 192.168.1.171:7006

slots: (0 slots) slave

replicates 83df08875c7707878756364039df0a4c8658f272

S: a69b98937844c6050ee5885266ccccb185a3f36a 192.168.1.171:7004

slots: (0 slots) slave

replicates 614d0def75663f2620b6402a017014b57c912dad

M: 614d0def75663f2620b6402a017014b57c912dad 192.168.1.171:7001

slots:66-5460 (5395 slots) master

1 additional replica(s)

M: 8aac82b63d42a1989528cd3906579863a5774e77 192.168.1.171:7002

slots:5528-10922 (5395 slots) master

1 additional replica(s)

S: adb99506ddccad332e09258565f2e5f4f456a150 192.168.1.171:7005

slots: (0 slots) slave

replicates 8aac82b63d42a1989528cd3906579863a5774e77

M: 83df08875c7707878756364039df0a4c8658f272 192.168.1.171:7003

slots:10989-16383 (5395 slots) master

1 additional replica(s)

[OK] All nodes agree about slots configuration.

>>> Check for open slots...

>>> Check slots coverage...

[OK] All 16384 slots covered.

How many slots do you want to move (from 1 to 16384)?

(注释:这里不会是正好200个槽)

What is the receiving node ID? 614d0def75663f2620b6402a017014b57c912dad
(注释:这里是需要把数据移动到哪?7001的主节点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:382634a4025778c040b7213453fd42a709f79e28

(注释:这里是需要数据源,也就是我们的7007节点id)

Source node #2:done

(注释:这里直接输入done 开始生成迁移计划)

Ready to move 199 slots.

Source nodes:

M: 382634a4025778c040b7213453fd42a709f79e28
192.168.1.171:7007

slots:0-65,5461-5527,10923-10988 (199 slots)
master

0 additional replica(s)

Destination
node:

M: 614d0def75663f2620b6402a017014b57c912dad
192.168.1.171:7001

slots:66-5460 (5395 slots) master

1 additional replica(s)

Resharding plan:

Moving slot 0 from 382634a4025778c040b7213453fd42a709f79e28

...

Do you want to
proceed with the proposed reshard plan (yes/no)? Yes

(注释:这里输入yes开始迁移)

Moving slot 0 from 192.168.1.171:7007 to
192.168.1.171:7001:

...

到此为止我们已经成功的把7007主节点的数据迁移到7001上去了,我们可以看一下现在的集群状态如下图,你会发现7007下面已经没有任何数据(slot)槽了,证明迁移成功!

操作文档下载:

【Redis学习之十】Redis集群维护的更多相关文章

  1. Redis学习笔记八:集群模式

    作者:Grey 原文地址:Redis学习笔记八:集群模式 前面提到的Redis学习笔记七:主从复制和哨兵只能解决Redis的单点压力大和单点故障问题,接下来要讲的Redis Cluster模式,主要是 ...

  2. redis 学习笔记(6)-cluster集群搭建

    上次写redis的学习笔记还是2014年,一转眼已经快2年过去了,在段时间里,redis最大的变化之一就是cluster功能的正式发布,以前要搞redis集群,得借助一致性hash来自己搞shardi ...

  3. Redis学习笔记~conf自主集群模式

    回到目录 Redis自主提供了集群模式,当然也只是比较简单的读写分离模式,或者叫主从模式,它在各个redis服务端自己做数据同步机制,当然就是将主服务端的信息同步到各个slave服务器上,在客户端集成 ...

  4. 深入学习Redis(5):集群

    前言 在前面的文章中,已经介绍了Redis的几种高可用技术:持久化.主从复制和哨兵,但这些方案仍有不足,其中最主要的问题是存储能力受单机限制,以及无法实现写操作的负载均衡. Redis集群解决了上述问 ...

  5. Redis集群维护、运营的相关命令与工具介绍

    Redis集群的搭建.维护.运营的相关命令与工具介绍 一.概述 此教程主要介绍redis集群的搭建(Linux),集群命令的使用,redis-trib.rb工具的使用,此工具是ruby语言写的,用于集 ...

  6. redis学习五,redis集群搭建及添加主从节点

    redis集群 java架构师项目实战,高并发集群分布式,大数据高可用,视频教程 在redis3.0之前,出现了sentinel工具来监控各个Master的状态(可以看上一篇博客).如果Master异 ...

  7. SpringBoot学习笔记(13)----使用Spring Session+redis实现一个简单的集群

    session集群的解决方案: 1.扩展指定server 利用Servlet容器提供的插件功能,自定义HttpSession的创建和管理策略,并通过配置的方式替换掉默认的策略.缺点:耦合Tomcat/ ...

  8. Redis学习总结(五)--Redis集群创建

    在之前我们讲到了主从,但是对于大数据量的场景下我们就需要用到集群了,让我们来了解下集群吧. 为什么需要集群 单机内存太小 redis最高可以达到10万/s 请求,如果超过该频率呢? 数据分布方式 数据 ...

  9. Redis之高可用、集群、云平台搭建

    原文:Redis之高可用.集群.云平台搭建 文章大纲 一.基础知识学习二.Redis常见的几种架构及优缺点总结三.Redis之Redis Sentinel(哨兵)实战四.Redis之Redis Clu ...

  10. Redis 实战篇之搭建集群

    Redis 集群简介# Redis Cluster 即 Redis 集群,是 Redis 官方在 3.0 版本推出的一套分布式存储方案.完全去中心化,由多个节点组成,所有节点彼此互联.Redis 客户 ...

随机推荐

  1. Unity3D笔记 切水果 一

    最终效果: 一.选择背景图片,选择GUI Texture 二.创建一个空的GameObject,然后添加背景音乐 三.创建GUISkin 四.主要代码 #pragma strict var myGUI ...

  2. 小程序中的block

    <block/> 并不是一个组件,它仅仅是一个包装元素,不会在页面中做任何渲染,只接受控制属性. 因为 wx:if 是一个控制属性,需要将它添加到一个标签上.如果要一次性判断多个组件标签, ...

  3. CCCC L2-008. 最长对称子串

    https://www.patest.cn/contests/gplt/L2-008 题解:想法是扫一遍string,将每一个s[i]作为对称轴,写一个判定函数:不断向两边延伸直到不是回文串为止. ...

  4. CodeForces - 583D Once Again... LIS 循环

    题意:给你n个数(n<=100,ai<=300)  一个T,求n重复T次的最长非递减子序列. 题解:我直接考虑4 3 2 1 的例子,当其重复4次时会出现1 2 3 4 的子序列 ,此时再 ...

  5. python面向对象高级:@property

    @property 把方法『变成』了属性,广泛应用在类的定义中,可以让调用者写出简短的代码,同时保证对参数进行必要的检查,这样,程序运行时就减少了出错的可能性. 最大的作用就是既能检查参数,又可以用类 ...

  6. JS继承封装

    <script> var extend = function (subClass, superClass) { //1.继承类的中间类 var Tmp = function() {}; / ...

  7. 大数据智能SOC解决方案

  8. 常用社交网络(微博等)动态新闻(feed、新鲜事)系统浅析(转)

    add by zhj:同时也看看国外牛逼公司是怎么做的吧 Stream-Framework    Python实现的feed Twitter 2013 Redis based, database fa ...

  9. 在linux下使用sqlcmd

    1.curl https://packages.microsoft.com/config/rhel/6/prod.repo > /etc/yum.repos.d/mssql-release.re ...

  10. 关于微信小程序,你想知道的他们都问了

    微信公开课深圳站小程序专场刚刚结束,大家通过"微信公开课+"互动小程序提出了许多问题.我们筛选了后台问得最多的九个问题进行解答,快来看看这里有没有你想要的答案吧! @谢杨:小程序是 ...