Redis6 集群新增节点

2024-03-13 17:50
文章标签 集群 新增 节点 redis6

本文主要是介绍Redis6 集群新增节点,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

先确保新增的节点中没有数据,否则会报错;

当前的节点信息

127.0.0.1:8000> cluster slots
1) 1) (integer) 02) (integer) 54613) 1) "127.0.0.1"2) (integer) 80003) "25d25af226ac55e9c03723288c20f53520420767"4) 1) "127.0.0.1"2) (integer) 81003) "e4ec27a4f61c66131faebab76d0c33c38fb5695c"
2) 1) (integer) 54622) (integer) 109223) 1) "127.0.0.1"2) (integer) 80013) "68507c82e45915e6a257afbfc2626c2424684879"4) 1) "127.0.0.1"2) (integer) 81013) "30bb3d720a0c7dad6aed79f17ab33313246a0629"
3) 1) (integer) 109232) (integer) 163833) 1) "127.0.0.1"2) (integer) 80023) "3db06c21c6dea8701fadbebfebf1aa92e5b13037"4) 1) "127.0.0.1"2) (integer) 81023) "e4df1b413eb5731f4de442e3e38a14612dc65700"

现在需要新增节点 127.0.0.1:8003,127.0.0.1:8103

5.0之后版本新增节点命令:  

redis-cli  --cluster add-node {新节点IP:PORT} {集群中任一节点IP:PORT}

[root@XXX ~]# redis-cli  --cluster add-node 127.0.0.1:8003 127.0.0.1:8002
>>> Adding node 127.0.0.1:8003 to cluster 127.0.0.1:8002
>>> Performing Cluster Check (using node 127.0.0.1:8002)
M: 3db06c21c6dea8701fadbebfebf1aa92e5b13037 127.0.0.1:8002slots:[10923-16383] (5461 slots) master1 additional replica(s)
S: 30bb3d720a0c7dad6aed79f17ab33313246a0629 127.0.0.1:8101slots: (0 slots) slavereplicates 68507c82e45915e6a257afbfc2626c2424684879
M: 68507c82e45915e6a257afbfc2626c2424684879 127.0.0.1:8001slots:[5462-10922] (5461 slots) master1 additional replica(s)
S: e4df1b413eb5731f4de442e3e38a14612dc65700 127.0.0.1:8102slots: (0 slots) slavereplicates 3db06c21c6dea8701fadbebfebf1aa92e5b13037
S: e4ec27a4f61c66131faebab76d0c33c38fb5695c 127.0.0.1:8100slots: (0 slots) slavereplicates 25d25af226ac55e9c03723288c20f53520420767
M: 25d25af226ac55e9c03723288c20f53520420767 127.0.0.1:8000slots:[0-5461] (5462 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:8003 to make it join the cluster.
[OK] New node added correctly.
[root@XXX ~]# redis-cli  --cluster add-node 127.0.0.1:8103 127.0.0.1:8002 
>>> Adding node 127.0.0.1:8103 to cluster 127.0.0.1:8002
>>> Performing Cluster Check (using node 127.0.0.1:8002)
M: 3db06c21c6dea8701fadbebfebf1aa92e5b13037 127.0.0.1:8002slots:[10923-16383] (5461 slots) master1 additional replica(s)
S: 30bb3d720a0c7dad6aed79f17ab33313246a0629 127.0.0.1:8101slots: (0 slots) slavereplicates 68507c82e45915e6a257afbfc2626c2424684879
M: 68507c82e45915e6a257afbfc2626c2424684879 127.0.0.1:8001slots:[5462-10922] (5461 slots) master1 additional replica(s)
M: e9aac3ea026f8b5b14267861021a282103671a9c 127.0.0.1:8003slots: (0 slots) master
S: e4df1b413eb5731f4de442e3e38a14612dc65700 127.0.0.1:8102slots: (0 slots) slavereplicates 3db06c21c6dea8701fadbebfebf1aa92e5b13037
S: e4ec27a4f61c66131faebab76d0c33c38fb5695c 127.0.0.1:8100slots: (0 slots) slavereplicates 25d25af226ac55e9c03723288c20f53520420767
M: 25d25af226ac55e9c03723288c20f53520420767 127.0.0.1:8000slots:[0-5461] (5462 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:8103 to make it join the cluster.
[OK] New node added correctly.

执行后,集群中每个节点都会将新节点添加到自己的"通讯录"中;

添加后默认情况下,新节点角色是master,且没有任何hash slot;

127.0.0.1:8000> cluster nodes
e9aac3ea026f8b5b14267861021a282103671a9c 127.0.0.1:8003@18003 master - 0 1626230308792 0 connected
e4ec27a4f61c66131faebab76d0c33c38fb5695c 127.0.0.1:8100@18100 slave 25d25af226ac55e9c03723288c20f53520420767 0 1626230307788 16 connected
68507c82e45915e6a257afbfc2626c2424684879 127.0.0.1:8001@18001 master - 0 1626230306000 14 connected 5462-10922
89609f9d318bbca243c622195dcffb0c4c739c21 127.0.0.1:8103@18103 master - 0 1626230309795 17 connected
25d25af226ac55e9c03723288c20f53520420767 127.0.0.1:8000@18000 myself,master - 0 1626230306000 16 connected 0-5461
e4df1b413eb5731f4de442e3e38a14612dc65700 127.0.0.1:8102@18102 slave 3db06c21c6dea8701fadbebfebf1aa92e5b13037 0 1626230306785 12 connected
30bb3d720a0c7dad6aed79f17ab33313246a0629 127.0.0.1:8101@18101 slave 68507c82e45915e6a257afbfc2626c2424684879 0 1626230307000 14 connected
3db06c21c6dea8701fadbebfebf1aa92e5b13037 127.0.0.1:8002@18002 master - 0 1626230307000 12 connected 10923-16383

现在来分配slot,

命令: 

redis-cli  --cluster reshard 127.0.0.1:8000  

127.0.0.1:8000  为集群中的任意一个节点

[root@xxx ~]# redis-cli  --cluster reshard 127.0.0.1:8000                
>>> Performing Cluster Check (using node 127.0.0.1:8000)
M: 25d25af226ac55e9c03723288c20f53520420767 127.0.0.1:8000slots:[0-5461] (5462 slots) master      # 0-54611 additional replica(s)
M: e9aac3ea026f8b5b14267861021a282103671a9c 127.0.0.1:8003slots: (0 slots) master                #新节点没有slots
S: e4ec27a4f61c66131faebab76d0c33c38fb5695c 127.0.0.1:8100slots: (0 slots) slavereplicates 25d25af226ac55e9c03723288c20f53520420767
M: 68507c82e45915e6a257afbfc2626c2424684879 127.0.0.1:8001slots:[5462-10922] (5461 slots) master #5462-109221 additional replica(s)
M: 89609f9d318bbca243c622195dcffb0c4c739c21 127.0.0.1:8103slots: (0 slots) master                #新节点没有slots
S: e4df1b413eb5731f4de442e3e38a14612dc65700 127.0.0.1:8102slots: (0 slots) slave                replicates 3db06c21c6dea8701fadbebfebf1aa92e5b13037
S: 30bb3d720a0c7dad6aed79f17ab33313246a0629 127.0.0.1:8101slots: (0 slots) slavereplicates 68507c82e45915e6a257afbfc2626c2424684879
M: 3db06c21c6dea8701fadbebfebf1aa92e5b13037 127.0.0.1:8002slots:[10923-16383] (5461 slots) master #10923-163831 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)? 

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

Redis一共16384个slots,之前是3个Master,现在变成4个Master,需要移动16384/4 = 4096个槽位

How many slots do you want to move (from 1 to 16384)? 4096
What is the receiving node ID? e9aac3ea026f8b5b14267861021a282103671a9c
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: allReady to move 4096 slots.

What is the receiving node ID?  输入要接收槽位的节点node-id,填入127.0.0.1:8003的node-id

Source node #1:  从哪个Master移动4096个slots过来? 填all; 从另外3个Master平均移动4096个slots过来,每个Master移动1365个slots;

Ready to move 4096 slots.Source nodes:M: 25d25af226ac55e9c03723288c20f53520420767 127.0.0.1:8000slots:[0-5461] (5462 slots) master1 additional replica(s)M: 68507c82e45915e6a257afbfc2626c2424684879 127.0.0.1:8001slots:[5462-10922] (5461 slots) master1 additional replica(s)M: 89609f9d318bbca243c622195dcffb0c4c739c21 127.0.0.1:8103slots: (0 slots) masterM: 3db06c21c6dea8701fadbebfebf1aa92e5b13037 127.0.0.1:8002slots:[10923-16383] (5461 slots) master1 additional replica(s)Destination node:M: e9aac3ea026f8b5b14267861021a282103671a9c 127.0.0.1:8003slots: (0 slots) master

展示了Source nodes 机器当前所包含的slots

Destination node为 127.0.0.1:8003

  Resharding plan:Moving slot 0 from 25d25af226ac55e9c03723288c20f53520420767Moving slot 1 from 25d25af226ac55e9c03723288c20f53520420767Moving slot 2 from 25d25af226ac55e9c03723288c20f53520420767
......Moving slot 1363 from 25d25af226ac55e9c03723288c20f53520420767Moving slot 1364 from 25d25af226ac55e9c03723288c20f53520420767Moving slot 1365 from 25d25af226ac55e9c03723288c20f53520420767Moving slot 5462 from 68507c82e45915e6a257afbfc2626c2424684879Moving slot 5463 from 68507c82e45915e6a257afbfc2626c2424684879Moving slot 5464 from 68507c82e45915e6a257afbfc2626c2424684879
......Moving slot 6823 from 68507c82e45915e6a257afbfc2626c2424684879Moving slot 6824 from 68507c82e45915e6a257afbfc2626c2424684879Moving slot 6825 from 68507c82e45915e6a257afbfc2626c2424684879Moving slot 6826 from 68507c82e45915e6a257afbfc2626c2424684879Moving slot 10923 from 3db06c21c6dea8701fadbebfebf1aa92e5b13037Moving slot 10924 from 3db06c21c6dea8701fadbebfebf1aa92e5b13037Moving slot 10925 from 3db06c21c6dea8701fadbebfebf1aa92e5b13037
......Moving slot 12285 from 3db06c21c6dea8701fadbebfebf1aa92e5b13037Moving slot 12286 from 3db06c21c6dea8701fadbebfebf1aa92e5b13037Moving slot 12287 from 3db06c21c6dea8701fadbebfebf1aa92e5b13037
Do you want to proceed with the proposed reshard plan (yes/no)? yes
Moving slot 0 from 127.0.0.1:8000 to 127.0.0.1:8003: 
Moving slot 1 from 127.0.0.1:8000 to 127.0.0.1:8003: 
Moving slot 2 from 127.0.0.1:8000 to 127.0.0.1:8003: 
... ...
Moving slot 12285 from 127.0.0.1:8002 to 127.0.0.1:8003: 
Moving slot 12286 from 127.0.0.1:8002 to 127.0.0.1:8003: 
Moving slot 12287 from 127.0.0.1:8002 to 127.0.0.1:8003: 

上面执行结果可以看到,会从每个分片里面取1365个slot到新增的Master中;

查看node的slot分配情况可以看到当前是平均分配的,每个节点4096个slots

最后还将127.0.0.1:8103修改为127.0.0.1:8003的从库;

127.0.0.1:8103> cluster replicate e9aac3ea026f8b5b14267861021a282103671a9c
OK

 查看nodes状态,当前是4主4从

127.0.0.1:8103> cluster nodes
e9aac3ea026f8b5b14267861021a282103671a9c 127.0.0.1:8003@18003 master - 0 1626233452000 18 connected 0-1365 5462-6826 10923-12287
25d25af226ac55e9c03723288c20f53520420767 127.0.0.1:8000@18000 master - 0 1626233451000 16 connected 1366-5461
3db06c21c6dea8701fadbebfebf1aa92e5b13037 127.0.0.1:8002@18002 master - 0 1626233451999 12 connected 12288-16383
68507c82e45915e6a257afbfc2626c2424684879 127.0.0.1:8001@18001 master - 0 1626233453002 14 connected 6827-10922
e4df1b413eb5731f4de442e3e38a14612dc65700 127.0.0.1:8102@18102 slave 3db06c21c6dea8701fadbebfebf1aa92e5b13037 0 1626233452000 12 connected
e4ec27a4f61c66131faebab76d0c33c38fb5695c 127.0.0.1:8100@18100 slave 25d25af226ac55e9c03723288c20f53520420767 0 1626233450000 16 connected
30bb3d720a0c7dad6aed79f17ab33313246a0629 127.0.0.1:8101@18101 slave 68507c82e45915e6a257afbfc2626c2424684879 0 1626233451000 14 connected
89609f9d318bbca243c622195dcffb0c4c739c21 127.0.0.1:8103@18103 myself,slave e9aac3ea026f8b5b14267861021a282103671a9c 0 1626233451000 18 connected

查看slots分布

127.0.0.1:8103> cluster slots
1) 1) (integer) 02) (integer) 13653) 1) "127.0.0.1"2) (integer) 80033) "e9aac3ea026f8b5b14267861021a282103671a9c"4) 1) "127.0.0.1"2) (integer) 81033) "89609f9d318bbca243c622195dcffb0c4c739c21"
2) 1) (integer) 13662) (integer) 54613) 1) "127.0.0.1"2) (integer) 80003) "25d25af226ac55e9c03723288c20f53520420767"4) 1) "127.0.0.1"2) (integer) 81003) "e4ec27a4f61c66131faebab76d0c33c38fb5695c"
3) 1) (integer) 54622) (integer) 68263) 1) "127.0.0.1"2) (integer) 80033) "e9aac3ea026f8b5b14267861021a282103671a9c"4) 1) "127.0.0.1"2) (integer) 81033) "89609f9d318bbca243c622195dcffb0c4c739c21"
4) 1) (integer) 68272) (integer) 109223) 1) "127.0.0.1"2) (integer) 80013) "68507c82e45915e6a257afbfc2626c2424684879"4) 1) "127.0.0.1"2) (integer) 81013) "30bb3d720a0c7dad6aed79f17ab33313246a0629"
5) 1) (integer) 109232) (integer) 122873) 1) "127.0.0.1"2) (integer) 80033) "e9aac3ea026f8b5b14267861021a282103671a9c"4) 1) "127.0.0.1"2) (integer) 81033) "89609f9d318bbca243c622195dcffb0c4c739c21"
6) 1) (integer) 122882) (integer) 163833) 1) "127.0.0.1"2) (integer) 80023) "3db06c21c6dea8701fadbebfebf1aa92e5b13037"4) 1) "127.0.0.1"2) (integer) 81023) "e4df1b413eb5731f4de442e3e38a14612dc65700"

这篇关于Redis6 集群新增节点的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/805690

相关文章

服务器集群同步时间手记

1.时间服务器配置(必须root用户) (1)检查ntp是否安装 [root@node1 桌面]# rpm -qa|grep ntpntp-4.2.6p5-10.el6.centos.x86_64fontpackages-filesystem-1.41-1.1.el6.noarchntpdate-4.2.6p5-10.el6.centos.x86_64 (2)修改ntp配置文件 [r

HDFS—集群扩容及缩容

白名单:表示在白名单的主机IP地址可以,用来存储数据。 配置白名单步骤如下: 1)在NameNode节点的/opt/module/hadoop-3.1.4/etc/hadoop目录下分别创建whitelist 和blacklist文件 (1)创建白名单 [lytfly@hadoop102 hadoop]$ vim whitelist 在whitelist中添加如下主机名称,假如集群正常工作的节

Hadoop集群数据均衡之磁盘间数据均衡

生产环境,由于硬盘空间不足,往往需要增加一块硬盘。刚加载的硬盘没有数据时,可以执行磁盘数据均衡命令。(Hadoop3.x新特性) plan后面带的节点的名字必须是已经存在的,并且是需要均衡的节点。 如果节点不存在,会报如下错误: 如果节点只有一个硬盘的话,不会创建均衡计划: (1)生成均衡计划 hdfs diskbalancer -plan hadoop102 (2)执行均衡计划 hd

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

搭建Kafka+zookeeper集群调度

前言 硬件环境 172.18.0.5        kafkazk1        Kafka+zookeeper                Kafka Broker集群 172.18.0.6        kafkazk2        Kafka+zookeeper                Kafka Broker集群 172.18.0.7        kafkazk3

day-51 合并零之间的节点

思路 直接遍历链表即可,遇到val=0跳过,val非零则加在一起,最后返回即可 解题过程 返回链表可以有头结点,方便插入,返回head.next Code /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}*

【每日一题】LeetCode 2181.合并零之间的节点(链表、模拟)

【每日一题】LeetCode 2181.合并零之间的节点(链表、模拟) 题目描述 给定一个链表,链表中的每个节点代表一个整数。链表中的整数由 0 分隔开,表示不同的区间。链表的开始和结束节点的值都为 0。任务是将每两个相邻的 0 之间的所有节点合并成一个节点,新节点的值为原区间内所有节点值的和。合并后,需要移除所有的 0,并返回修改后的链表头节点。 思路分析 初始化:创建一个虚拟头节点

Android13_SystemUI下拉框新增音量控制条

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 Android13_SystemUI下拉框新增音量控制条 一、必备知识二、源码分析对比1.brightness模块分析对比2.statusbar/phone 对应模块对比对比初始化类声明对比构造方法 三、源码修改四、相关资源 一、必备知识 在Android12 版本上面已经完成了功能的实现,目前是在And

详解Tomcat 7的七大新特性和新增功能(1)

http://developer.51cto.com/art/201009/228537.htm http://tomcat.apache.org/tomcat-7.0-doc/index.html  Apache发布首个Tomcat 7版本已经发布了有一段时间了,Tomcat 7引入了许多新功能,并对现有功能进行了增强。很多文章列出了Tomcat 7的新功能,但大多数并没有详细解释它们

一种改进的red5集群方案的应用、基于Red5服务器集群负载均衡调度算法研究

转自: 一种改进的red5集群方案的应用: http://wenku.baidu.com/link?url=jYQ1wNwHVBqJ-5XCYq0PRligp6Y5q6BYXyISUsF56My8DP8dc9CZ4pZvpPz1abxJn8fojMrL0IyfmMHStpvkotqC1RWlRMGnzVL1X4IPOa_  基于Red5服务器集群负载均衡调度算法研究 http://ww