Redis集群添加和删除节点(主和从)

redis cluster如何添加和删除节点? redis cluster如何增加和删除节点? 阅读详情

一、原始集群(6个节点,3主3从):

(1)启动集群:因为集群创建一次就行,所以直接启动所有节点服务即可

[root@Master ~]# /usr/local/redis/bin/redis-server /usr/local/redis-cluster/7001/redis.conf

[root@Master ~]# /usr/local/redis/bin/redis-server /usr/local/redis-cluster/7002/redis.conf

[root@Master ~]# /usr/local/redis/bin/redis-server /usr/local/redis-cluster/7003/redis.conf

[root@Master ~]# /usr/local/redis/bin/redis-server /usr/local/redis-cluster/7004/redis.conf

[root@Master ~]# /usr/local/redis/bin/redis-server /usr/local/redis-cluster/7005/redis.conf

[root@Master ~]# /usr/local/redis/bin/redis-server /usr/local/redis-cluster/7006/redis.conf

(2)查看服务器的运行状态

[root@Master ~]# ps -ef | grep redis

root 2071 1 0 18:19 ? 00:00:00 /usr/local/redis/bin/redis-server 192.168.1.111:7001 [cluster]

root 2075 1 0 18:19 ? 00:00:00 /usr/local/redis/bin/redis-server 192.168.1.111:7002 [cluster]

root 2079 1 0 18:19 ? 00:00:00 /usr/local/redis/bin/redis-server 192.168.1.111:7003 [cluster]

root 2083 1 0 18:19 ? 00:00:00 /usr/local/redis/bin/redis-server 192.168.1.111:7004 [cluster]

root 2089 1 0 18:19 ? 00:00:00 /usr/local/redis/bin/redis-server 192.168.1.111:7005 [cluster]

root 2095 1 0 18:19 ? 00:00:00 /usr/local/redis/bin/redis-server 192.168.1.111:7006 [cluster]

root 2101 1974 0 18:19 pts/0 00:00:00 grep redis

(3)登录其中一个节点,查看集群状态

[root@Master src]# /usr/local/redis/bin/redis-cli -c -h 192.168.1.111 -p 7001

192.168.1.111:7001> 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:6

cluster_my_epoch:1

cluster_stats_messages_sent:1366

cluster_stats_messages_received:866

二、新建集群节点操作

(4)我们将新建两个服务,在之前搭建的集群中新增两个节点(一主一从)

Master:7007 Slave:7008

步骤一:创建7007、7008文件夹,拷贝redis.conf文件到两个文件夹下,然后进行配置文件的修改

[root@bhz004 redis-cluster]# mkdir 7007

[root@Master redis-cluster]# mkdir 7008

[root@Master redis-cluster]# cd 7001

[root@Master 7001]# cp redis.conf /usr/local/redis-cluster/7007/

[root@Master 7001]# cp redis.conf /usr/local/redis-cluster/7008/

[root@Master 7001]# vim /usr/local/redis-cluster/7007/redis.conf

修改内容如下:

          port:7007

      dir /usr/local/redis-cluster/7007/

      cluster-config-file nodes7007.conf

[root@Master 7001]# vim /usr/local/redis-cluster/7008/redis.conf

修改内容如下:

          port:7008

      dir /usr/local/redis-cluster/7008/

      cluster-config-file nodes7008.conf

步骤二:启动7007和7008俩个服务并查看服务状态。

[root@bhz004 7001]# /usr/local/redis/bin/redis-server /usr/local/redis-cluster/7007/redis.conf

[root@bhz004 7001]# /usr/local/redis/bin/redis-server /usr/local/redis-cluster/7008/redis.conf

[root@bhz004 7001]# ps -el | grep redis

(5)先稍微看一下redis-trib脚本能怎么使用:

[root@Master src]# ./redis-trib.rb

Usage: redis-trib <command> <options> <arguments ...>



create host1:port1 ... hostN:portN

--replicas <arg>

check host:port

info host:port

fix host:port

--timeout <arg>

reshard host:port

--from <arg>

--to <arg>

--slots <arg>

--yes

--timeout <arg>

--pipeline <arg>

rebalance host:port

--weight <arg>

--auto-weights

--use-empty-masters

--timeout <arg>

--simulate

--pipeline <arg>

--threshold <arg>

add-node new_host:new_port existing_host:existing_port

--slave

--master-id <arg>

del-node host:port node_id

set-timeout host:port milliseconds

call host:port command arg arg .. arg

import host:port

--from <arg>

--copy

--replace

help (show this help)



For check, fix, reshard, del-node, set-timeout you can specify the host and port of any working node in the cluster.

1 create:创建一个集群环境host1:port1 ... hostN:portN(集群中的主从节点比例)

2 call:可以执行redis命令

3 add-node:将一个节点添加到集群里,第一个参数为新节点的ip:port,第二个参数为集群中任意一个已经存在的节点的ip:port

4 del-node:移除一个节点

5 reshard:重新分片

6 check:检查集群状态

(6)新增一个主节点7007(Master)

步骤一:使用add-node命令,第一个为新增节点,第二个为集群中已知存在节点(任意一个)

[root@Master src]# ./redis-trib.rb add-node 192.168.1.111:7007 192.168.1.111:7001

>>> Adding node 192.168.1.111:7007 to cluster 192.168.1.111:7001

/usr/local/rvm/gems/ruby-2.4.4/gems/redis-3.2.1/lib/redis/client.rb:443: warning: constant ::Fixnum is deprecated

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

M: 3a9f07e1ed2f9a8c5e42d51f96bce53dc6a567ac 192.168.1.111:7001

slots:0-5460 (5461 slots) master

1 additional replica(s)

S: 56fb12f39b02c38f2c43cfc19f7b9faafdd900a0 192.168.1.111:7006

slots: (0 slots) slave

replicates fbd2b0bf4ec21c23af7d15a20964688fb23f214c

M: b9e97e221fb3ae239cc0e2831779381ace7c6b9b 192.168.1.111:7002

slots:5461-10922 (5462 slots) master

1 additional replica(s)

S: 53e5b386290843bb57af3c9cea8af7ccc38314f9 192.168.1.111:7005

slots: (0 slots) slave

replicates b9e97e221fb3ae239cc0e2831779381ace7c6b9b

M: fbd2b0bf4ec21c23af7d15a20964688fb23f214c 192.168.1.111:7003

slots:10923-16383 (5461 slots) master

1 additional replica(s)

S: 146f1006dc5df60c3d4ac2867a21004deb8be6eb 192.168.1.111:7004

slots: (0 slots) slave

replicates 3a9f07e1ed2f9a8c5e42d51f96bce53dc6a567ac

[OK] All nodes agree about slots configuration.

>>> Check for open slots...

>>> Check slots coverage...

[OK] All 16384 slots covered.

>>> Send CLUSTER MEET to node 192.168.1.111:7007 to make it join the cluster.

[OK] New node added correctly.

步骤二:查看集群节点状态:

[root@Master src]# /usr/local/redis/bin/redis-cli -c -h 192.168.1.111 -p 7001

192.168.1.111:7001> cluster nodes

3a9f07e1ed2f9a8c5e42d51f96bce53dc6a567ac 192.168.1.111:7001 myself,master - 0 0 1 connected 0-5460

56fb12f39b02c38f2c43cfc19f7b9faafdd900a0 192.168.1.111:7006 slave fbd2b0bf4ec21c23af7d15a20964688fb23f214c 0 1534848168901 6 connected

b9e97e221fb3ae239cc0e2831779381ace7c6b9b 192.168.1.111:7002 master - 0 1534848166887 2 connected 5461-10922

53e5b386290843bb57af3c9cea8af7ccc38314f9 192.168.1.111:7005 slave b9e97e221fb3ae239cc0e2831779381ace7c6b9b 0 1534848167894 5 connected

fbd2b0bf4ec21c23af7d15a20964688fb23f214c 192.168.1.111:7003 master - 0 1534848169908 3 connected 10923-16383

bdb0ce9cc5cca545b9182a09346246827af40490 192.168.1.111:7007 master - 0 1534848170916 0 connected

146f1006dc5df60c3d4ac2867a21004deb8be6eb 192.168.1.111:7004 slave 3a9f07e1ed2f9a8c5e42d51f96bce53dc6a567ac 0 1534848171419 4 connected

192.168.1.111:7001>

注意:当添加节点以后,新增的节点不会有任何数据,因为它没分配任何的slot(hash槽),这是拿来存放数据的,Master必须得有才能存放数据。那么我们需要手动为新节点分配slot。

(7)为新节点7007分配slot槽

步骤一:使用redis-trib命令的reshard,找到集群中的任意一个主节点,对其进行重新分片工作。

[root@Master src]# ./redis-trib.rb reshard 192.168.1.111:7001

/usr/local/rvm/gems/ruby-2.4.4/gems/redis-3.2.1/lib/redis/client.rb:443: warning: constant ::Fixnum is deprecated

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

M: 3a9f07e1ed2f9a8c5e42d51f96bce53dc6a567ac 192.168.1.111:7001

slots:0-5460 (5461 slots) master

1 additional replica(s)

S: 56fb12f39b02c38f2c43cfc19f7b9faafdd900a0 192.168.1.111:7006

slots: (0 slots) slave

replicates fbd2b0bf4ec21c23af7d15a20964688fb23f214c

M: b9e97e221fb3ae239cc0e2831779381ace7c6b9b 192.168.1.111:7002

slots:5461-10922 (5462 slots) master

1 additional replica(s)

S: 53e5b386290843bb57af3c9cea8af7ccc38314f9 192.168.1.111:7005

slots: (0 slots) slave

replicates b9e97e221fb3ae239cc0e2831779381ace7c6b9b

M: fbd2b0bf4ec21c23af7d15a20964688fb23f214c 192.168.1.111:7003

slots:10923-16383 (5461 slots) master

1 additional replica(s)

M: bdb0ce9cc5cca545b9182a09346246827af40490 192.168.1.111:7007

slots: (0 slots) master

0 additional replica(s)

S: 146f1006dc5df60c3d4ac2867a21004deb8be6eb 192.168.1.111:7004

slots: (0 slots) slave

replicates 3a9f07e1ed2f9a8c5e42d51f96bce53dc6a567ac

[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? bdb0ce9cc5cca545b9182a09346246827af40490

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: 3a9f07e1ed2f9a8c5e42d51f96bce53dc6a567ac 192.168.1.111:7001

slots:0-5460 (5461 slots) master

1 additional replica(s)

M: b9e97e221fb3ae239cc0e2831779381ace7c6b9b 192.168.1.111:7002

slots:5461-10922 (5462 slots) master

1 additional replica(s)

M: fbd2b0bf4ec21c23af7d15a20964688fb23f214c 192.168.1.111:7003

slots:10923-16383 (5461 slots) master

1 additional replica(s)

Destination node:

M: bdb0ce9cc5cca545b9182a09346246827af40490 192.168.1.111:7007

slots: (0 slots) master

0 additional replica(s)

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

Moving slot 5461 from b9e97e221fb3ae239cc0e2831779381ace7c6b9b

Moving slot 5462 from b9e97e221fb3ae239cc0e2831779381ace7c6b9b

......

Moving slot 0 from 3a9f07e1ed2f9a8c5e42d51f96bce53dc6a567ac

Moving slot 2 from 3a9f07e1ed2f9a8c5e42d51f96bce53dc6a567ac

.....

Moving slot 10923 from fbd2b0bf4ec21c23af7d15a20964688fb23f214c

Moving slot 10924 from fbd2b0bf4ec21c23af7d15a20964688fb23f214c

Moving slot 10925 from fbd2b0bf4ec21c23af7d15a20964688fb23f214c

....

Moving slot 10986 from fbd2b0bf4ec21c23af7d15a20964688fb23f214c

(提示三)

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

Moving slot 5461 from 192.168.1.111:7002 to 192.168.1.111:7007:

......

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

Moving slot 1 from 192.168.1.111:7001 to 192.168.1.111:7007:

......

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

.....

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

提示二:接收这些槽的节点的id。下个提示是从哪些主节点抽取槽到新节点中:all为所有主节点,done:你可以指定节点:)

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

(8)在最后,我们查看一下集群状态:

[root@Master src]# /usr/local/redis/bin/redis-cli -c -h 192.168.1.111 -p 7001

192.168.1.111:7001> cluster nodes

3a9f07e1ed2f9a8c5e42d51f96bce53dc6a567ac 192.168.1.111:7001 myself,master - 0 0 1 connected 66-5460

56fb12f39b02c38f2c43cfc19f7b9faafdd900a0 192.168.1.111:7006 slave fbd2b0bf4ec21c23af7d15a20964688fb23f214c 0 1534850426284 6 connected

b9e97e221fb3ae239cc0e2831779381ace7c6b9b 192.168.1.111:7002 master - 0 1534850428299 2 connected 5528-10922

53e5b386290843bb57af3c9cea8af7ccc38314f9 192.168.1.111:7005 slave b9e97e221fb3ae239cc0e2831779381ace7c6b9b 0 1534850423259 5 connected

fbd2b0bf4ec21c23af7d15a20964688fb23f214c 192.168.1.111:7003 master - 0 1534850427294 3 connected 10989-16383

bdb0ce9cc5cca545b9182a09346246827af40490 192.168.1.111:7007 master - 0 1534850424268 7 connected 0-65 5461-5527 10923-10988

146f1006dc5df60c3d4ac2867a21004deb8be6eb 192.168.1.111:7004 slave 3a9f07e1ed2f9a8c5e42d51f96bce53dc6a567ac 0 1534850429305 4 connected

如上所示,现在新增的主节点7007已经有自己的slot槽了,也就是说可以在7007上面进行读写数据咯~到现在为止,集群中已经有7个节点了,而且是4主3从。

那我们再给7007弄个Slave咯,不能太偏心。

(9)添加从节点(7008)到集群中

步骤一:使用add-node添加新节点

[root@Master src]# ./redis-trib.rb add-node 192.168.1.111:7008 192.168.1.111:7001

步骤二:提示成功后再查看一下集群的节点信息:

[root@Master src]# /usr/local/redis/bin/redis-cli -c -h 192.168.1.111 -p 7001

192.168.1.111:7001> cluster nodes

6101db56f13af2252e356eb08977b6bd2bb3e2f9 192.168.1.111:7008 master - 0 1534850805149 0 connected

3a9f07e1ed2f9a8c5e42d51f96bce53dc6a567ac 192.168.1.111:7001 myself,master - 0 0 1 connected 66-5460

56fb12f39b02c38f2c43cfc19f7b9faafdd900a0 192.168.1.111:7006 slave fbd2b0bf4ec21c23af7d15a20964688fb23f214c 0 1534850806155 6 connected

b9e97e221fb3ae239cc0e2831779381ace7c6b9b 192.168.1.111:7002 master - 0 1534850804647 2 connected 5528-10922

53e5b386290843bb57af3c9cea8af7ccc38314f9 192.168.1.111:7005 slave b9e97e221fb3ae239cc0e2831779381ace7c6b9b 0 1534850801627 5 connected

fbd2b0bf4ec21c23af7d15a20964688fb23f214c 192.168.1.111:7003 master - 0 1534850805653 3 connected 10989-16383

bdb0ce9cc5cca545b9182a09346246827af40490 192.168.1.111:7007 master - 0 1534850800622 7 connected 0-65 5461-5527 10923-10988

146f1006dc5df60c3d4ac2867a21004deb8be6eb 192.168.1.111:7004 slave 3a9f07e1ed2f9a8c5e42d51f96bce53dc6a567ac 0 1534850803640 4 connected

如上面所示,但是我们可以看到,7008还是一个Master节点,而且没有拥有自己的slot槽。那么我们接下来要让它变成从节点。

步骤二:使用cluster replicate命名来给当前节点(从节点7008)指定主节点的id。

首先我们当然需要登录到7008节点的客户端,然后使用上面的命令来进行操作,现在我们让7007成为7008的主节点。

[root@Master src]# /usr/local/redis/bin/redis-cli -c -h 192.168.1.111 -p 7008

192.168.1.111:7008> cluster replicate bdb0ce9cc5cca545b9182a09346246827af40490

OK (提示OK则表示成功!)

步骤三:我们继续看一下集群的节点信息

192.168.1.111:7008> cluster nodes

b9e97e221fb3ae239cc0e2831779381ace7c6b9b 192.168.1.111:7002 master - 0 1534851019889 2 connected 5528-10922

53e5b386290843bb57af3c9cea8af7ccc38314f9 192.168.1.111:7005 slave b9e97e221fb3ae239cc0e2831779381ace7c6b9b 0 1534851021902 2 connected

bdb0ce9cc5cca545b9182a09346246827af40490 192.168.1.111:7007 master - 0 1534851016866 7 connected 0-65 5461-5527 10923-10988

fbd2b0bf4ec21c23af7d15a20964688fb23f214c 192.168.1.111:7003 master - 0 1534851022907 3 connected 10989-16383

3a9f07e1ed2f9a8c5e42d51f96bce53dc6a567ac 192.168.1.111:7001 master - 0 1534851018879 1 connected 66-5460

6101db56f13af2252e356eb08977b6bd2bb3e2f9 192.168.1.111:7008 myself,slave bdb0ce9cc5cca545b9182a09346246827af40490 0 0 0 connected

146f1006dc5df60c3d4ac2867a21004deb8be6eb 192.168.1.111:7004 slave 3a9f07e1ed2f9a8c5e42d51f96bce53dc6a567ac 0 1534851020896 1 connected

56fb12f39b02c38f2c43cfc19f7b9faafdd900a0 192.168.1.111:7006 slave fbd2b0bf4ec21c23af7d15a20964688fb23f214c 0 1534851017874 3 connected

(10)我们可以对集群进行操作了,来验证是否可以进行读写。下面就不贴例子了。

(11)有添加当然就有删除节点的操作了。删除从节点非常简单,删除的时候指定ip+端口以及节点id即可。但是删除主节点可不能直接删除,一定要先将slot槽重新移动到其他主节点那里再进行删除操作,不然存放的数据就丢失了。我们现在先尝试删除一个从节点(7008)

步骤一:删除子节点用del-node命令。此命令需要制定删除节点的ip和端口,以及节点的id。

[root@Master src]# ./redis-trib.rb del-node 192.168.1.111:7008 6101db56f13af2252e356eb08977b6bd2bb3e2f9
输出如下:

>>> Removing node 6101db56f13af2252e356eb08977b6bd2bb3e2f9 from cluster 192.168.1.111:7008

/usr/local/rvm/gems/ruby-2.4.4/gems/redis-3.2.1/lib/redis/client.rb:443: warning: constant ::Fixnum is deprecated

>>> Sending CLUSTER FORGET messages to the cluster...

>>> SHUTDOWN the node.

步骤二:删除后我们再次查看集群的节点信息,如下所示,7008从节点已经被移除掉。

[root@Master src]# /usr/local/redis/bin/redis-cli -c -h 192.168.1.111 -p 7001

192.168.1.111:7001> cluster nodes

3a9f07e1ed2f9a8c5e42d51f96bce53dc6a567ac 192.168.1.111:7001 myself,master - 0 0 1 connected 66-5460

56fb12f39b02c38f2c43cfc19f7b9faafdd900a0 192.168.1.111:7006 slave fbd2b0bf4ec21c23af7d15a20964688fb23f214c 0 1534861607148 6 connected

b9e97e221fb3ae239cc0e2831779381ace7c6b9b 192.168.1.111:7002 master - 0 1534861607651 2 connected 5528-10922

53e5b386290843bb57af3c9cea8af7ccc38314f9 192.168.1.111:7005 slave b9e97e221fb3ae239cc0e2831779381ace7c6b9b 0 1534861606140 5 connected

fbd2b0bf4ec21c23af7d15a20964688fb23f214c 192.168.1.111:7003 master - 0 1534861605134 3 connected 10989-16383

bdb0ce9cc5cca545b9182a09346246827af40490 192.168.1.111:7007 master - 0 1534861608155 7 connected 0-65 5461-5527 10923-10988

146f1006dc5df60c3d4ac2867a21004deb8be6eb 192.168.1.111:7004 slave 3a9f07e1ed2f9a8c5e42d51f96bce53dc6a567ac 0 1534861609160 4 connected

步骤三:另外,我们可以发现,7008的redis服务进程也被kill掉了。

[root@Master src]# ps -ef | grep 7008

root 4079 1974 0 22:27 pts/0 00:00:00 grep 7008

(12)删除从节点就是这么简单,那么我们现在开始尝试删除之前添加的主节点7007,当然了,我们必须要记得先将7007的slot槽重新放回其他可用的主节点中,然后再进行删除节点操作。

步骤一:删除7007(master)节点之前,我们需要先把其全部的数据(slot槽)移动到其他节点上去(目前只能把master的数据迁移到一个节点上,暂时做不了平均分配功能)。其实就像是我们给7007分配slot槽的操作,只是双方角色互换了一下,用到的当然也是reshard命令了。

[root@Master src]# ./redis-trib.rb reshard 192.168.1.111:7007

输出如下:

/usr/local/rvm/gems/ruby-2.4.4/gems/redis-3.2.1/lib/redis/client.rb:443: warning: constant ::Fixnum is deprecated

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

M: bdb0ce9cc5cca545b9182a09346246827af40490 192.168.1.111:7007

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

0 additional replica(s)

S: 146f1006dc5df60c3d4ac2867a21004deb8be6eb 192.168.1.111:7004

slots: (0 slots) slave

replicates 3a9f07e1ed2f9a8c5e42d51f96bce53dc6a567ac

S: 56fb12f39b02c38f2c43cfc19f7b9faafdd900a0 192.168.1.111:7006

slots: (0 slots) slave

replicates fbd2b0bf4ec21c23af7d15a20964688fb23f214c

M: b9e97e221fb3ae239cc0e2831779381ace7c6b9b 192.168.1.111:7002

slots:5528-10922 (5395 slots) master

M: 3a9f07e1ed2f9a8c5e42d51f96bce53dc6a567ac 192.168.1.111:7001

slots:66-5460 (5395 slots) master

1 additional replica(s)

M: fbd2b0bf4ec21c23af7d15a20964688fb23f214c 192.168.1.111:7003

slots:10989-16383 (5395 slots) master

1 additional replica(s)

S: 53e5b386290843bb57af3c9cea8af7ccc38314f9 192.168.1.111:7005

slots: (0 slots) slave

replicates b9e97e221fb3ae239cc0e2831779381ace7c6b9b

[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)? 199

(ps:这里填的就是7007拥有的slot槽数,上面有打印出来的)

What is the receiving node ID? 3a9f07e1ed2f9a8c5e42d51f96bce53dc6a567ac

(ps:这里是接收slot槽的主节点id,我填的是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:bdb0ce9cc5cca545b9182a09346246827af40490

(ps:这里是数据源节点,当然填的是7007的Id了)

Source node #2:done

(ps:输入done表示可以开始生成迁移计划)

Ready to move 199 slots.

Source nodes:

M: bdb0ce9cc5cca545b9182a09346246827af40490 192.168.1.111:7007

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

0 additional replica(s)

Destination node:

M: 3a9f07e1ed2f9a8c5e42d51f96bce53dc6a567ac 192.168.1.111:7001

slots:66-5460 (5395 slots) master

1 additional replica(s)

Resharding plan:

Moving slot 0 from bdb0ce9cc5cca545b9182a09346246827af40490

.......

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

(ps:输入yes表示可以开始执行迁移计划)

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

.........

步骤二:到此为止,我们应该是将7007主节点的slot槽全部迁移到7001上面去了,我们可以看一下现在的集群节点信息即可,可以看到,7007后面已经没有slot槽的信息了,而7001也多出了slot槽。

[root@Master src]# /usr/local/redis/bin/redis-cli -c -h 192.168.1.111 -p 7001

192.168.1.111:7001> cluster nodes

3a9f07e1ed2f9a8c5e42d51f96bce53dc6a567ac 192.168.1.111:7001 myself,master - 0 0 8 connected 0-5527 10923-10988

56fb12f39b02c38f2c43cfc19f7b9faafdd900a0 192.168.1.111:7006 slave fbd2b0bf4ec21c23af7d15a20964688fb23f214c 0 1534862478538 6 connected

b9e97e221fb3ae239cc0e2831779381ace7c6b9b 192.168.1.111:7002 master - 0 1534862483568 2 connected 5528-10922

53e5b386290843bb57af3c9cea8af7ccc38314f9 192.168.1.111:7005 slave b9e97e221fb3ae239cc0e2831779381ace7c6b9b 0 1534862479544 5 connected

fbd2b0bf4ec21c23af7d15a20964688fb23f214c 192.168.1.111:7003 master - 0 1534862482563 3 connected 10989-16383

bdb0ce9cc5cca545b9182a09346246827af40490 192.168.1.111:7007 master - 0 1534862480550 7 connected

146f1006dc5df60c3d4ac2867a21004deb8be6eb 192.168.1.111:7004 slave 3a9f07e1ed2f9a8c5e42d51f96bce53dc6a567ac 0 1534862476524 8 connected

步骤三:最后我们可以直接使用del-node命令来删除7007主节点了。

[root@Master src]# ./redis-trib.rb del-node 192.168.1.111:7007 bdb0ce9cc5cca545b9182a09346246827af40490

>>> Removing node bdb0ce9cc5cca545b9182a09346246827af40490 from cluster 192.168.1.111:7007

/usr/local/rvm/gems/ruby-2.4.4/gems/redis-3.2.1/lib/redis/client.rb:443: warning: constant ::Fixnum is deprecated

>>> Sending CLUSTER FORGET messages to the cluster...

>>> SHUTDOWN the node.

最后:我们查看集群的节点信息,一切将还原到最初状态~

[root@Master src]# /usr/local/redis/bin/redis-cli -c -h 192.168.1.111 -p 7001

192.168.1.111:7001> cluster nodes

3a9f07e1ed2f9a8c5e42d51f96bce53dc6a567ac 192.168.1.111:7001 myself,master - 0 0 8 connected 0-5527 10923-10988

56fb12f39b02c38f2c43cfc19f7b9faafdd900a0 192.168.1.111:7006 slave fbd2b0bf4ec21c23af7d15a20964688fb23f214c 0 1534863137104 6 connected

b9e97e221fb3ae239cc0e2831779381ace7c6b9b 192.168.1.111:7002 master - 0 1534863140120 2 connected 5528-10922

53e5b386290843bb57af3c9cea8af7ccc38314f9 192.168.1.111:7005 slave b9e97e221fb3ae239cc0e2831779381ace7c6b9b 0 1534863141124 5 connected

fbd2b0bf4ec21c23af7d15a20964688fb23f214c 192.168.1.111:7003 master - 0 1534863143138 3 connected 10989-16383

146f1006dc5df60c3d4ac2867a21004deb8be6eb 192.168.1.111:7004 slave 3a9f07e1ed2f9a8c5e42d51f96bce53dc6a567ac 0 1534863142132 8 connected

192.168.1.111:7001>

Redis集群新增、删除节点以及动态增加内存 Redis集群新增、删除节点以及动态增加内存 一、新增服务节点到集群中 1、创建配置文件 在主机127.0.0.5上创建新端口的配置文件,如之前有端口直接复制之前的配置文件即可。复制完然后修改下配置文件里的端口、内存大小、pid的路径等。 cp redis7001.conf redis7002.conf 2、启动新的端口 cd ../bin/ ./redis-server ../etc/redis7002.conf 该操作在127.0.0.6上同样再操作一次。 3、将新增的两个端口增加到现有集群中 阅读详情

相关推荐

docker搭建redis cluster集群模式

一、创建redis容器 使用docker-compose创建redis容器 启动命令 docker-compose -f docker-compose-redis.yaml up -d 其中docker-compose-redis.yaml的配置内容如下 version: "3.4" services: redis: image: redis container_name: ...

qiangrenpu8881的博客 2459

Redis-Cluster集群操作--添加节点、删除节点

修改内容在上个集群部署的博客中。加入解析/etc/hosts。

冲冲冲 3697

免安装版Notepad++终极配置:右键菜单+图标美化+多文件批量处理(2024新版)

本文详细介绍了如何为免安装版Notepad++进行终极配置,包括右键菜单添加、图标美化以及多文件批量处理功能。通过注册表编辑和高级定制,用户可以在便携版中实现与安装版相同的功能体验,同时保持系统整洁。特别适合开发者、系统管理员和效率追求者使用。

nut55的博客 830

Redis添加从节点

# 1.添加从节点 add-node --slave [新加入节点] [集群中任意节点] - ./redis-trib.rb add-node --slave 192.168.1.158:7006 192.168.1.158:7000 - 注意: 当添加副本节点时没有指定主节点,redis会随机给副本节点较少的主节点添加当前副本节点 # 2.为确定的master节点添加主节点 add-node --slave --master-id master节点id [新加入节点] [集群任意节点] - ./.

Leon_Jinhai_Sun的博客 2283

告别谷歌!QGC地面站v4.0.x保姆级教程:用高德/天地图瓦片替换老旧地图源

本文提供QGroundControl(QGC)地面站v4.0.x的详细教程,指导用户如何用高德地图和天地图瓦片替换默认地图源,解决数据陈旧、访问不稳定等问题。教程涵盖环境配置、源码修改、地图集成及性能优化,帮助无人机开发者打造稳定高效的中文地图解决方案。

weixin_30836759的博客 503

深入解析ViT中的RoPE旋转位置编码:原理、实现与视觉应用

本文深入解析了ViT中的RoPE旋转位置编码原理、实现及其在视觉任务中的应用。RoPE通过旋转变换巧妙地将相对位置信息融入注意力计算,解决了传统绝对位置编码外推性差的问题,在图像分类、目标检测及生成任务中展现出更优的泛化能力和灵活性。

alice7model的博客 706

Redis Cluster替换主库节点

192.168.164.138:7002 主 192.168.164.130:7000 从1 192.168.164.140:7000 从2 新主 1、停止从1节点 redis-cli -c -h 192.168.164.130 -p 7000 shutdown 2、停止主节点,等待完成主从切换 redis-cli -c -h 192.168.164.138 -p 7002 shutdown 3、启动旧主节点 redis-server redis-clu...

u012232730的博客 672

我用 AI Agent 全自动跑 COMSOL 仿真:从建模到后处理,踩了 10+ 个深坑

本文探讨了利用AI通过COMSOL Java API实现AI芯片液冷冷板全流程自动化仿真的实践。针对700W高功耗AI芯片的散热需求,构建了包含4颗Chiplet和微通道冷板的三维液冷模型。通过严格设计的Prompt工程,AI Agent成功完成了从几何建模到结果验证的全过程,最终实现了芯片最高温度54°C的良好散热效果。文章重点分享了10个关键问题的解决经验,包括流体连通性验证、网格顺序控制、离散阶数选择、收敛判据优化等,并建立了包含流场/热场/网格独立性的三重验证体系。实践表明,AI可高效处理重复性工作

sjjsjjsjjsjjsjj的博客 985

redis搭建集群模式、Cluster模式(6节点,3主3从集群模式,添加删除节点)

linux部署redis集群(6节点,3主3从集群模式)

MssGuo的博客 7153

vCenter6.7证书过期导致503报错的全面修复指南:从STS证书更新到SSL信任修复

本文详细解析了VMware vCenter 6.7因STS证书过期导致503服务不可用错误的根本原因,并提供了从诊断、更新STS证书到修复SSL信任链的完整解决方案。通过命令行工具检查证书状态,使用官方脚本更新过期STS证书,并利用lsdoctor工具修复深层SSL信任问题,最终指导用户使用certificate-manager彻底重置所有证书,帮助管理员快速恢复vCenter服务。

pz890123的博客 1294

【文本分析学习】Anaconda+pytorch虚拟环境下的pycharm文本分析(含分词、词性标注、词形归一化、停用词、文本情感分析、词频、文本相似度,附数据代码) NLTK

文本分析学习之 Anadconda+pytorch虚拟环境下的pycharm文本分析(含分词、词性标注、词形归一化、停用词、文本情感分析、词频、文本相似度,附数据代码)

littlexmj的博客 2333

Redis-集群搭建(cluster集群、集群创建、节点配置、节点添加、节点删除、槽位分配)

Redis-集群搭建 在连接Redis集群搭建之前首先具备的前置知识有Redis的安装,Redis持久化,Redis主从复制,若还没了解都可以通过阅读以下文章了解以下 Liunx-安装Redis Redis-主从复制(一主二从、主从复制原理、单哨兵模式、多哨兵模式) Redis-持久化(RDB配置、RDB原理、AOF配置、AOF原理、混合持久化配置) 高可用集群 哨兵模式 其实对于一般的小型项目,利用哨兵模式+主从复制已经可以满足了,但是由于Redis是单线程应用所以在单主节点下理论上说Redis可以

JolyouLu的博客 4万+

基于Jeecgboot3.8.1的vue3版本前后端分离的flowable流程管理平台

基于Jeecgboot3.8.1的vue3版本前后端分离的flowable流程管理平台

宁波阿成的博客 1544

Redis-6.2.7-集群-6主6从

redis6主6从集群部署

weixin_46155421的博客 576

Codex 100个真实案例 - 用AI做股票K线分析工具(技术指标全自动)

本案例将用 Codex 从零搭建一个完整的股票 K 线分析工具。通过自然语言驱动,我们让 AI 自动完成股票数据获取(akshare)、K 线图绘制(mplfinance + ECharts)、技术指标计算(MA/EMA/MACD/RSI/KDJ/布林带)、买卖信号提示(金叉/死叉、超买超卖)、多股对比分析、Web 可视化界面(Flask + ECharts)、PDF 报告生成以及定时监控邮件推送等全套功能。全程用自然语言指令驱动 Codex,零手写代码实现专业级量化分析平台!

yueyeguzhuo的专栏 874

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

十一、Redis集群的水平扩展、伸缩

前言 Redis3.0版本以后,有了集群的功能,提供了比之前版本的哨兵模式更高的性能与可用性,但是集群的水平扩展却比较麻烦,接下来介绍下Redis高可用集群是如何做水平扩展、伸缩的。不了解如何部署Redis集群的,可以参考我的另外一篇文章:《十、Redis 有了主从复制, 为什么还需要搭建集群?以及如何搭建Redis集群详细图解》 环境准备 三台云服务器(106.14.157.48,49.232.112.117,101.34.253.57)。大家也可以使用一台云服务器,部署多个Redis 实例也是可以的。

胖太乙 1万+

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

redis5集群搭建步骤

通常情况下为了redis的高可用,我们一般不会使用redis的单实例去运行,一般都会搭建一个 redis 的集群去运行。此处记录一下 redis5 以后 cluster 集群的搭建。 一、需求 redis5的安装 搭建一个3主3从的集群 动态的往集群中增加节点  |- 增加一个主节点  |- 增加一个从节点 动态的从集群中删除节点  |- 删除一个从节点  |- 删除...

huan的学习记录 3988

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Redis高可用集群之水平扩展操作实战

第一节 Redis的安装 第二节 Redis的五种数据结构(String、Hash、List、Set、ZSet) 第三节 Redis的持久化方式 第四节 Redis主从架构 第五节 Redis哨兵高可用架构 第六节 Redis集群高可用架构 第七节 Redis集群选举原理与脑裂问题从《Redis集群高可用架构》这一节的基础上,本节介绍Redis水平扩展的操作实战。 在三台机器上面分别执行以下的命令启动所有的redis服务 二、连接集群 连接任意一个客户端 集群状态 从上面的打印结果可知,集群运行正常,三

IUNIQUE技术册 548

Linux部署Redis集群

Redis (REmote DIctionary Server) 是一个高性能的 key-value 数据库,完全开源,遵守 BSD 协议。Redis支持数据持久化,可以将内存中的数据保存在磁盘中,重启时可以再次加载进行使用。Redis不仅仅支持简单的key-value类型数据,同时还提供list,set,zset,hash等数据结构的存储。Redis支持数据的备份,即master-slave模式的数据备份。

m0_74824661的博客 731

Redis集群扩容和缩容

一、引言 上一篇文章我们一步一步的教大家搭建了Redis的Cluster集群环境,形成了3个主节点和3个从节点的Cluster的环境。当然,大家可以使用 Cluster info 命令查看Cluster集群的状态,也可以使用Cluster Nodes 命令来详细了解Cluster集群每个节点的详细信息和关系。我们可以在主节点上增加数据、操作数据,也可以在从节点上读取数据,这些操作当然都没有问题。我们今天这篇文章主要是讲解一下如何在不停掉Cluster集群环境的情况下,动态的往集群环境中增加主、从节点和动态的

m0_67265654的博客 766

Redis详解(五)高可用集群之水平扩展

Redis3.0以后的版本虽然有了集群功能,提供了比之前版本的哨兵模式更高的性能与可用性,但是集群的水平扩展却比较麻烦,今天就来带大家看看redis高可用集群如何做水平扩展,原始集群(见下图)由6个节点组成,6个节点分布在三台机器上,采用三主三从的模式。

denggaogui的博客 933

Docker搭建Redis集群之《扩容、缩容》

这篇我们就讲讲如何扩容、缩容。

hhmmj的博客 254

Redis4.0 单节点集群到三主三从节点集群实验

环境相关: OS:CentOS release 7.4.1708 IP:192.168.77.101/102/103 MEM:16G DISK:50G 简单说明 参照《Redis4.0 三主三备集群安装配置》配置三节点主机6个redis实例并启动 第五步配置集群使用本博文操作进行 集群创建 1,在节点一上创建单实例集群: cp -av /usr/local/redis/...

VincentQB的博客 3202

一分钟创建Redis生产集群

Redis Cluster 是 Redis 3.0 版本推出的 Redis 集群方案,它将数据分布在不同的服务区上,以此来降低系统对单主节点的依赖,并且...

无敌码农 396

Redis集群部署详解

所谓的集群,就是通过增加服务器的数量,提供相同的服务,从而让服务器达到一个稳定、高效的状态。

qq_53715074的博客 1903
上一篇: 为Redis集群做准备:安装ruby、rubygems以及重启客户端后rvm等命令无效
下一篇: 关于ActiveMQ的集群方案(多种)
Howinfun
博客等级 码龄10年 165粉丝 213原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值