Redis集群节点增加

添加的节点以主节点从节点 两种不同的节点类型加入集群。

  • 若为主节点 ,需要创建一个空节点,然后将某些哈希槽移动到这个空节点中
  • 若为从节点 ,需要创建一个空节点,然后将新节点设置为集群中某个master节点的slave节点

注意: 无论是主节点还是从节点,首先第一步都是创建一个空节点,所以创建步骤都是一致的。

添加节点

1.启动新的redis实例

接上一篇文章的描述,首先,新建7117目录;然后,将目录7116的redis服务的配置文件拷贝到7117目录中;最后,将配置文件中的7116全部改为7117并安装一下命令启动服务:

/usr/local/redis4/bin/redis-server /usr/local/redis4/cluster/7117/redis-7116.conf

2.添加节点到集群中

#redis-tirb 的add-node命令解释
#add-node        new_host:new_port existing_host:existing_port
]# redis-trib add-node 127.0.0.1:7117 127.0.0.1:7112
>>> Adding node 127.0.0.1:7117 to cluster 127.0.0.1:7112
>>> Performing Cluster Check (using node 127.0.0.1:7112)
M: 9fd3ed4af7d8ade053112eb30b87ae60710ab823 127.0.0.1:7112slots:5461-10922 (5462 slots) master1 additional replica(s)
S: 3af81b11efae0c0b921218ec4ca1b920f662e985 127.0.0.1:7115slots: (0 slots) slavereplicates 9fd3ed4af7d8ade053112eb30b87ae60710ab823
S: ca15cf3f79f34f6fc40f354d3d8f88e62d9404e5 127.0.0.1:7116slots: (0 slots) slavereplicates bcac95efa02b24ddb07ae186161457f575425bb6
M: f17572645ee8a0e60a62bd9d22a3f8f34e73b6bc 127.0.0.1:7114slots:0-5460 (5461 slots) master0 additional replica(s)
M: bcac95efa02b24ddb07ae186161457f575425bb6 127.0.0.1:7113slots:10923-16383 (5461 slots) master1 additional replica(s)
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
>>> Send CLUSTER MEET to node 127.0.0.1:7117 to make it join the cluster.
[OK] New node added correctly.

3.查看新增节点信息

使用/user/local/redis4/bin/reids-cli -c -p 7114 连接到redis 集群,然后用如下命令查看集群信息:

4.选择新增节点的类型

  • 作为从节点

    由于在新增主节点的时候将端口号为7117的redis实例作为master节点了,此处重新安装上述步骤新增端口为7118的实例作为slave节点

    • 将新增的节点作为127.0.0.1:7114 的从节点,执行的命令如下:

    /usr/local/redis4/bin/redis-cli -c -p 7118 cluster replicate f17572645ee8a0e60a62bd9d22a3f8f34e73b6bc
    注意: 执行上述命令的正确返回结果为返回OK

    • 检查新增的节点是否已经成为从节点

    至此新增节点作为slave节点的全部过程已结束。

  • 作为主节点

    • 使用redis-trib工具,将集群中的某些哈希槽移动到新增节点中,此刻该新增节点才成为主节点 。要将集群中的哈希槽进行移动需要执行如下命令:

    • 指定将哈希槽移动到那个节点,以及从哪几个节点移动哈希槽

    注意all 表示从所有节点中随机转移,凑够3000个哈希槽

  • 再次确实是否开始哈希槽的移动

  • 查看增加主节点后,集群节点的情况

    至此将新增的节点设置为master节点全部操作已经结束。

删除节点

与添加节点类似,删除节点也需要分为两类处理,包括主节点从节点

删除主节点

此处以上文中新增的master节点(127.0.0.1:7117)为例进行说明,该节点有300个哈希槽。

1.移动该节点的哈希槽到集群中的其他节点

执行命令redis-trib reshard 127.0.0.1:7117,控制台输出如下内容:

完成上述步骤的输入后,最后输入done表示输入完毕

2.删除该节点

检查负责该节点负责哈希槽是否全部移除

使用如下命令删除该节点
//最后一个参数为需要删除的节点ID
bin]# redis-trib del-node 127.0.0.1:7113 a83732804a1bea9f8e5408e7fe06fe6e3fe698ac
>>> Removing node a83732804a1bea9f8e5408e7fe06fe6e3fe698ac from cluster 127.0.0.1:7113
>>> Sending CLUSTER FORGET messages to the cluster...
>>> SHUTDOWN the node.

删除从节点

删除从节点的操作比较简单,只需要使用redis集群管理工具redis-trib直接删除该节点即可。此处以上文中添加的redis实例(127.0.0.1:7118)为例。

//最后一个参数为需要删除的节点ID
bin]# redis-trib del-node 127.0.0.1:7115 61c19e097b56e91d6a67c9c833172790717bce0d
>>> Removing node 61c19e097b56e91d6a67c9c833172790717bce0d from cluster 127.0.0.1:7115
>>> Sending CLUSTER FORGET messages to the cluster...
>>> SHUTDOWN the node.

遇到的问题

在用redis-tirb 工具进行reshard 的时候,报如下错误:

[ERR] Calling MIGRATE ERR Syntax error, try CLIENT (LIST | KILL | GETNAME | SETNAME | PAUSE | REPLY)

ruby gem安装的redis库,版本不能使用最新的4.x版本的,否则redis-trib reshard 127.0.0.1:7117重新分片会报语法错误

解决方法

  • 卸载安装的redis库,gem uninstall redis

  • 安装3.x版本,gem install redis -v 3.3.5 测试3.2.1到3.3.5都可以,4.x以上的分片报错。

Redis集群节点的变更相关推荐

  1. redis集群节点宕机 fail状态 redis的投票机制实测

    redis集群节点宕机 fail状态 redis的投票机制实测  redis集群是有很多个redis一起工作,那么就需要这个集群不是那么容易挂掉,所以呢,理论上就应该给集群中的每个节点至少一个备用的r ...

  2. redis集群节点连不上的原因之一

    原因:redis集群管理工具配置集群的节点ip不对. 我的虚拟机是直接从别人那里镜像过来的,原本就已经搭建好了redis集群.我直接拷过来使用报连不上其他节点,原因是之前集群管理工具配置指定的是之前虚 ...

  3. redis集群增加节点和删除节点、或者reshard时报 migrating 错误

    目录 redis安装和创建集群看这里 redis安装 redis集群 Redis集群节点增加 添加节点 节点的 redis.conf  配置 端口 6307 启动新的redis实例 2.添加节点到集群 ...

  4. Redis 集群规范(中文稿)(MOVED错误码及ASK错误码

    引言? 这个文档是正在开发中的 Redis 集群功能的规范(specification)文档,文档分为两个部分: 第一部分介绍目前已经在 unstable 分支中实现了的那些功能. 第二部分介绍目前仍 ...

  5. Redis 集群规范(MOVED错误码及ASK错误码)

    引言? 这个文档是正在开发中的 Redis 集群功能的规范(specification)文档,文档分为两个部分: 第一部分介绍目前已经在 unstable 分支中实现了的那些功能. 第二部分介绍目前仍 ...

  6. Redis集群架构搭建和原理

    Redis集群架构教程 Redis常见的架构有主从.哨兵.高可用集群,接下来的文章分四章分别介绍linux安装redis.主从架构搭建.哨兵模式搭建.集群架构搭建 第一章 Redis的安装 我的cen ...

  7. Redis集群运维与核心原理(哨兵选举、集群选举等)剖析

    1.Redis集群方案比较 哨兵模式 高可用集群模式 redis集群是一个由多个主从节点群组成的分布式服务器群,它具有复制.高可用和分片特性.Redis集群不需要 sentinel哨兵也能完成节点移除 ...

  8. 七、Redis集群搭建

    1.搭建步骤 第一步:在第一台机器的/usr/local下创建文件夹redis‐cluster,然后在其下面分别创建2个文件夹如下 1. mkdir ‐p /opt/module/redis‐clus ...

  9. Redis集群进阶之路

    Redis集群规范 本文档基于Redis 3.X或更高版本,讲解Redis集群算法以及设计原理.此官方文档长期更新且随着Redis新版本特性的变化变动,详细请留意官网. 官网地址:https://re ...

最新文章

  1. 常用的数据结构-数组
  2. Python 2.7 学习笔记
  3. 那些财务眼中的SAP
  4. Timus 1049 Brave Balloonists
  5. Play Framework入门引导
  6. kafka 消费端 api_在消费者的眼中:您真的需要为您的API提供客户端库吗?
  7. docker 镜像 导入导出
  8. 使用python写一个倒计时_Python 实现一个计时器
  9. nginx 配合jersey+netty的奇怪问题
  10. 调用Thread类的方法:public final String getName() 为什么得到的线程对象的名称默认是:Thread-0、Thread-1、Thread-2、...呢?...
  11. SpringBoot-DDD领域驱动设计的概念
  12. 服务器状态监控,LOL服务器状态监控
  13. 2021-4-22-Python自动化31期-day01作业答案
  14. 人工智能在法律中的应用丨“AI+传统行业”全盘点
  15. Python+Vue计算机毕业设计个人学习博客系统wyz5v(源码+程序+LW+部署)
  16. cmd中文输入和显示问题
  17. 怎么彻底清除计算机病毒,Win7旗舰版系统如何才能彻底删除电脑病毒
  18. java操作文件之文件重命名
  19. pycharm配置可视化界面流程简介
  20. 如何过滤掉xml字符串中的gt,lt,quot,amp,apos

热门文章

  1. 电工(特种作业)无证上岗的法律后果可不轻,最新建筑施工 电工(建筑特种作业)机考题库及建筑电工模拟试题
  2. Flask开发实现在线问答系统的问题发布功能
  3. C语言导致键盘按键错乱,c语言获得键盘的按键
  4. 谷歌的优化得分有什么好处?
  5. 第一章 系统体系结构
  6. Win7电脑开机无法进入系统的解决方法
  7. 连锁便利管理系统需要解决的问题点
  8. Windows驱动_文件系统微小过滤驱动之二驱动的安装和加载
  9. 用python中If-Else做奇偶数的判断
  10. 卡方分布、t分布 和F分布