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. vi 撤销操作

    'u' : 撤销上一个编辑操作 'ctrl + r' : 恢复,即回退前一个命令 'U' : 行撤销,撤销所有在前一个编辑行上的操作

  2. cadence allegro 封装产考原点修改

    打开 dra文件后 在菜单栏 setup - change drawing origin 在命令栏输入 新的参考点位置 如想更改新坐标位置为 1,2 .输入  x 1 2 上面两步操作后即可修改!

  3. VB学习之路基础(一)

    1.VB不区分大小定,VB编辑器会自动更正. 2.每一行代码语句,没有语句结束符. 3.续行符:一个"空格"加上一个"下划线".不能在参数中间加续行符. 5.合 ...

  4. 【CF708E】Student's Camp 组合数+动态规划

    [CF708E]Student's Camp 题意:有一个n*m的网格,每一秒钟,所有左面没有格子的格子会有p的概率消失,右面没有格子的格子也会有p的概率消失,问你t秒钟后,整个网格的上边界和下边界仍 ...

  5. 微信小程序:wx.navigateTo中url无法跳转问题(app.json中配置的tabBar与wx.navigateTo中url引用相同页面导致)

    今天在做微信小程序时,设置wx.navigateTo页面跳转并传参数,点击始终没有效果,代码如下: //事件处理函数 newsDetail: function (event) { console.lo ...

  6. iOS - 处理计算精度要求很高的数据,floatValue,doubleValue等计算不精确问题

    .问题描述:服务器返回的double类型9...94的数字时 .之前处理方式是 :(从内存.cpu计算来说double都是比较合适的,一般情况下都用double) goodsPrice.floatVa ...

  7. django和flask的区别

    转载至https://blog.csdn.net/tulan_xiaoxin/article/details/79132214 (1)Flask Flask确实很“轻”,不愧是Micro Framew ...

  8. 利用 background 和 filter 模糊指定区域

    背景知识:background-size: cover;,background-attachment:fixed;,filter:blur() 难题: 通常,我们会通过filter:blur()去实现 ...

  9. Django的视图与网址之加法计算

    在最新的Django2.1中,views.py中采用的地址映射方式发生了变化,通过一个加法运算我们来看一看. 方法一:在视图views.py中定义视图逻辑,求解两个数的加法运算:c = a + b,定 ...

  10. redis两种持久化方式的优缺点

    redis两种持久化的方式 RDB持久化可以在指定的时间间隔内生成数据集的时间点快照 AOF持久化记录服务器执行的所有写操作命令,并在服务器启动时,通过重新执行这些命令来还原数据集,AOF文件中全部以 ...