Redis 5.0 cluster 添加和移除节点

Redis 5.0 cluster 添加和移除节点,第1张

如果所示,之前的集群是三主三从的Redis集群,现在要加入一主一从,主从复制。主节点端口是7004,从节点端口是8004。

此时新加入的节点 7004 并没有数据,并且也没有被分配 slot 也就是 目前 7004 是不可用的,现在要重新分配原集群的 slot

迁移多少个slots呢,16384/4=4096,那么就迁移4096个。

这里是选择接收方的 node id ,就是执行 cluster nodes 显示7004的字符串。

这里是选择slot的迁出方,我们这边选择的是 all ,也就是所有的节点,总共迁出4096个slot到7004.

中间会让你输入 yes

一顿 *** 作之后

我们看到 7004 已经有slot了 0-1364 5461-6826 10923-12287

输入 yes 之后主从复制就完成了。我们看一下节点没问题了。

redis 集群多了之后,发现现在的有些节点有些多余没用,或者达不到用那么多节点的情况,那么就可以进行 节点的移除, 5.0 版本由于不用 ruby 进行集群 *** 作了,所以方式跟5.0以前有很多不同的地方

我们由于刚刚添加了2个节点,现在把这2个节点删除,需要注意的是,假如你要下线节点7004,节点8004,请务必先下线从节点,并且把节点7004的slot的迁移到其他节点,如果先线下节点7004的话 会发产生故障切换,节点8004成主节点了。

查看一下,已经没有节点8004了

接着删除7004,这个是一个主节点,删除起来比较麻烦一点,因为主节点分配了slot槽, 所以这里我们必须先把 7004的slot槽放到其他的可用节点中去,然后再进行移除节点 *** 作才行,不然会出现数据丢失问题

由于节点7004有4096个slot,那么3个节点平均可以分配 4096/3=1365.3 ,不能有小数,那么我们可以分别分配 1365 , 1365 , 1366 给 7001 , 7002 , 7003 节点

这里输入 1365 和 接收者 7001 的 node id

这里输入你想从那个节点移走数据,我们选 7004 的 node id

其实是让你还可以选择源节点,但是我这里只要把7004 节点分到其它地方就行,如果没有再把其它主节点分摊的需要,此处输入 done即可,否则输入其它节点的ID,最后输入 done

是否按照计划分配,输入 yes

完成!!!

然后继续向另外2个节点分配slot

。。。。

我们最后查看

7004已经没有slot了,那么就可以删除了节点7004了

查看,完美!

执行在任意一个客户端下执行 cluster nodes 命令,可以看到7007 已经作为主节点添加到我们的集群中了,但是可以看到他没有分配哈希槽,没有分配哈希槽的话表示就没有存储数据的能力,所以我们需要将其他节点上的哈希槽分配到这个节点上。

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的,


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11601316.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存