阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Redis 集群节点操作

127次阅读
没有评论

共计 9855 个字符,预计需要花费 25 分钟才能阅读完成。

Redis 集群操作

当前 Redis Cluster 状态:

$ pwd
/home/zxm/BD/redis-cluster
$ ls -l
总用量 32
drwxrwxr-x. 2 zxm zxm 4096 824 20:15 7000
drwxrwxr-x. 2 zxm zxm 4096 824 20:22 7001
drwxrwxr-x. 2 zxm zxm 4096 824 17:32 7002
drwxrwxr-x. 2 zxm zxm 4096 824 20:36 7003
drwxrwxr-x. 2 zxm zxm 4096 824 17:32 7004
drwxrwxr-x. 2 zxm zxm 4096 824 20:23 7005

集群中各个节点状态:

$ ./redis-trib.rb check 192.168.174.3:7000
>>> Performing Cluster Check (using node 192.168.174.3:7000)
M: 7f12512f46ce8e0bac2fffcb7ca05c9941d2864c 192.168.174.3:7000
   slots:0-5460 (5461 slots) master
   1 additional replica(s)
M: ca33b3d7a60f8df7b74473f86c11f84df609fa45 192.168.174.3:7002
   slots:10923-16383 (5461 slots) master
   1 additional replica(s)
S: 8f26d8a386853e338e7176c33e66166b5f835175 192.168.174.3:7003
   slots: (0 slots) slave
   replicates 7f12512f46ce8e0bac2fffcb7ca05c9941d2864c
S: 46f81794cfcf6fbf10fcf18c44f137f446f28be9 192.168.174.3:7005
   slots: (0 slots) slave
   replicates ca33b3d7a60f8df7b74473f86c11f84df609fa45
M: a2e08eda093f5b962881f309b8a3b9d5961e6aa8 192.168.174.3:7001
   slots:5461-10922 (5462 slots) master
   1 additional replica(s)
S: 43d98665d41381c89d45c6f69bf8a2622b7b9dc3 192.168.174.3:7004
   slots: (0 slots) slave
   replicates a2e08eda093f5b962881f309b8a3b9d5961e6aa8
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

Redis 集群 Resharding

resharding 步骤:

1) 使用命令开启 reshard 命令

./redis-trib.rb reshard host:port

2) 指定需要重新 reshard 的 slots 个数

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

3) 指定需要接收的节点 ID

What is the receiving node ID? 7f12512f46ce8e0bac2fffcb7ca05c9941d2864c

4) 指定需要重新 shard 的节点,输入 done 开始 reshard

Source node #1:ca33b3d7a60f8df7b74473f86c11f84df609fa45
Source node #2:done

具体操作流程如下:

$ ./redis-trib.rb reshard 192.168.174.3:7000
>>> Performing Cluster Check (using node 192.168.174.3:7000)
M: 7f12512f46ce8e0bac2fffcb7ca05c9941d2864c 192.168.174.3:7000
   slots:0-5460 (5461 slots) master
   1 additional replica(s)
M: ca33b3d7a60f8df7b74473f86c11f84df609fa45 192.168.174.3:7002
   slots:10923-16383 (5461 slots) master
   1 additional replica(s)
S: 8f26d8a386853e338e7176c33e66166b5f835175 192.168.174.3:7003
   slots: (0 slots) slave
   replicates 7f12512f46ce8e0bac2fffcb7ca05c9941d2864c
S: 46f81794cfcf6fbf10fcf18c44f137f446f28be9 192.168.174.3:7005
   slots: (0 slots) slave
   replicates ca33b3d7a60f8df7b74473f86c11f84df609fa45
M: a2e08eda093f5b962881f309b8a3b9d5961e6aa8 192.168.174.3:7001
   slots:5461-10922 (5462 slots) master
   1 additional replica(s)
S: 43d98665d41381c89d45c6f69bf8a2622b7b9dc3 192.168.174.3:7004
   slots: (0 slots) slave
   replicates a2e08eda093f5b962881f309b8a3b9d5961e6aa8
[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)? 1000
What is the receiving node ID? 7f12512f46ce8e0bac2fffcb7ca05c9941d2864c
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:ca33b3d7a60f8df7b74473f86c11f84df609fa45
Source node #2:done

Ready to move 1000 slots.
  Source nodes:
    M: ca33b3d7a60f8df7b74473f86c11f84df609fa45 192.168.174.3:7002
   slots:10923-16383 (5461 slots) master
   1 additional replica(s)
  Destination node:
    M: 7f12512f46ce8e0bac2fffcb7ca05c9941d2864c 192.168.174.3:7000
   slots:0-5460 (5461 slots) master
   1 additional replica(s)
  Resharding plan:
    Moving slot 10923 from ca33b3d7a60f8df7b74473f86c11f84df609fa45
    ... ...
    Moving slot 11921 from ca33b3d7a60f8df7b74473f86c11f84df609fa45
    Moving slot 11922 from ca33b3d7a60f8df7b74473f86c11f84df609fa45
Do you want to proceed with the proposed reshard plan (yes/no)?yes
Moving slot 10923 from 192.168.174.3:7002 to 192.168.174.3:7000:
Moving slot 10924 from 192.168.174.3:7002 to 192.168.174.3:7000:
... ...
Moving slot 11921 from 192.168.174.3:7002 to 192.168.174.3:7000:
Moving slot 11922 from 192.168.174.3:7002 to 192.168.174.3:7000:

重新 sharding 后集群中各个节点状态:

$ ./redis-trib.rb check 192.168.174.3:7000
>>> Performing Cluster Check (using node 192.168.174.3:7000)
M: 7f12512f46ce8e0bac2fffcb7ca05c9941d2864c 192.168.174.3:7000
   slots:0-5460,10923-11922 (6461 slots) master
   1 additional replica(s)
M: ca33b3d7a60f8df7b74473f86c11f84df609fa45 192.168.174.3:7002
   slots:11923-16383 (4461 slots) master
   1 additional replica(s)
S: 8f26d8a386853e338e7176c33e66166b5f835175 192.168.174.3:7003
   slots: (0 slots) slave
   replicates 7f12512f46ce8e0bac2fffcb7ca05c9941d2864c
S: 46f81794cfcf6fbf10fcf18c44f137f446f28be9 192.168.174.3:7005
   slots: (0 slots) slave
   replicates ca33b3d7a60f8df7b74473f86c11f84df609fa45
M: a2e08eda093f5b962881f309b8a3b9d5961e6aa8 192.168.174.3:7001
   slots:5461-10922 (5462 slots) master
   1 additional replica(s)
S: 43d98665d41381c89d45c6f69bf8a2622b7b9dc3 192.168.174.3:7004
   slots: (0 slots) slave
   replicates a2e08eda093f5b962881f309b8a3b9d5961e6aa8
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

新增节点

1) 添加节点

添加 redis 实例,端口为 7006

$ cp -r 7005 7006

修改 7006 目录中 redis-cluster.conf 文件中的参数:

$ cat 7006/redis-cluster.conf
bind 192.168.174.3
port 7006
daemonize yes
logfile "/home/zxm/BD/redis-cluster/7006/redis.log"
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes

启动 redis 实例节点

$ cd 7006
$ redis-server redis-cluster.conf

添加 Salve 节点

方式一:
1)将新的节点添加到集群中

 $ ./redis-trib.rb add-node 192.168.174.3:7006 192.168.174.3:7000
 >>> Adding node 192.168.174.3:7006 to cluster 192.168.174.3:7000
>>> Performing Cluster Check (using node 192.168.174.3:7000)
    ... ...
[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.174.3:7006 to make it join the cluster.
[OK] New node added correctly.

2) 进入 redis 命令行, 并查看集群状态

$ redis-cli -c -h 192.168.174.3 -p 7006
192.168.174.3:7006> cluster nodes   
... ... 
fca935760ac28db5cbdc5396b5a326a85e4f8760 192.168.174.3:7006 myself,master - 0 0 0 connected
7f12512f46ce8e0bac2fffcb7ca05c9941d2864c 192.168.174.3:7000 master - 0 1472046744344 7 connected 0-5460 10923-11922
... ...

可以看到默认将新添加的节点作为 master

3)将新节点修改为 7000 节点的 slave,并查看修改后的集群状态

192.168.174.3:7006> cluster replicate 7f12512f46ce8e0bac2fffcb7ca05c9941d2864c
OK
192.168.174.3:7006> cluster nodes
... ...
fca935760ac28db5cbdc5396b5a326a85e4f8760 192.168.174.3:7006 myself,slave 7f12512f46ce8e0bac2fffcb7ca05c9941d2864c 0 0 0 connected
7f12512f46ce8e0bac2fffcb7ca05c9941d2864c 192.168.174.3:7000 master - 0 1472047082185 7 connected 0-5460 10923-11922
... ...

方式二:

1) 将新节点直接作为 7000 节点的 slave 添加到集群中

$ ./redis-trib.rb add-node --slave --master-id 7f12512f46ce8e0bac2fffcb7ca05c9941d2864c 192.168.174.3:7006 192.168.174.3:7000
>>> Adding node 192.168.174.3:7006 to cluster 192.168.174.3:7000
>>> Performing Cluster Check (using node 192.168.174.3:7000)
... ...
[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.174.3:7006 to make it join the cluster.
Waiting for the cluster to join.
>>> Configure node as replica of 192.168.174.3:7000.
[OK] New node added correctly.

2) 查看集群状态

$ ./redis-trib.rb check 192.168.174.3:7001
>>> Performing Cluster Check (using node 192.168.174.3:7001)
... ...
M: 7f12512f46ce8e0bac2fffcb7ca05c9941d2864c 192.168.174.3:7000
   slots:0-5460,10923-11922 (6461 slots) master
   2 additional replica(s)
S: 1a0d5c686108182ab2ea7ca136c8e726d077171e 192.168.174.3:7006
   slots: (0 slots) slave
   replicates 7f12512f46ce8e0bac2fffcb7ca05c9941d2864c
... ...
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

删除节点

删除 7000 节点,并将 7000 端口节点上的 slots 分配到 7006 上

1) 将 7006 节点作为 master 节点添加到集群中,并察看集群状态:

[zxm@node1 src]$ ./redis-trib.rb check 192.168.174.3:7001
>>> Performing Cluster Check (using node 192.168.174.3:7001)
... ... 
M: d7a7e6e57827d94803a139f6f36425276c9e1019 192.168.174.3:7006
   slots: (0 slots) master
   0 additional replica(s)
M: 7f12512f46ce8e0bac2fffcb7ca05c9941d2864c 192.168.174.3:7000
   slots:0-5460,10923-11922 (6461 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.

2) 对集群进行 reshard 操作,将 7000 节点上的所有 slots 转移到 7006 节点上

[zxm@node1 src]$ ./redis-trib.rb reshard 192.168.174.3:7000
>>> Performing Cluster Check (using node 192.168.174.3:7000)
M: 7f12512f46ce8e0bac2fffcb7ca05c9941d2864c 192.168.174.3:7000
   slots:0-5460,10923-11922 (6461 slots) master
   1 additional replica(s)
... ...
M: d7a7e6e57827d94803a139f6f36425276c9e1019 192.168.174.3:7006
   slots: (0 slots) master
   0 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)? 6461
What is the receiving node ID? d7a7e6e57827d94803a139f6f36425276c9e1019
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:7f12512f46ce8e0bac2fffcb7ca05c9941d2864c
Source node #2:done

3) 查看集群状态

$ ./redis-trib.rb check 192.168.174.3:7001
>>> Performing Cluster Check (using node 192.168.174.3:7001)
... ...
M: d7a7e6e57827d94803a139f6f36425276c9e1019 192.168.174.3:7006
   slots:0-5460,10923-11922 (6461 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.

4) 删除 7000 节点

$ ./redis-trib.rb del-node 192.168.174.3:7000 7f12512f46ce8e0bac2fffcb7ca05c9941d2864c
>>> Removing node 7f12512f46ce8e0bac2fffcb7ca05c9941d2864c from cluster 192.168.174.3:7000
>>> Sending CLUSTER FORGET messages to the cluster...
>>> SHUTDOWN the node.

⚠️删除 master 节点时,该节点上 slots 必须为零

下面关于 Redis 的文章您也可能喜欢,不妨参考下:

Ubuntu 14.04 下 Redis 安装及简单测试 http://www.linuxidc.com/Linux/2014-05/101544.htm

Redis 主从复制基本配置 http://www.linuxidc.com/Linux/2015-03/115610.htm

CentOS 7 下 Redis 的安装与配置 http://www.linuxidc.com/Linux/2017-02/140363.htm

Ubuntu 14.04 安装 Redis 与简单配置 http://www.linuxidc.com/Linux/2017-01/139075.htm

Ubuntu 16.04 环境中安装 PHP7.0 Redis 扩展 http://www.linuxidc.com/Linux/2016-09/135631.htm

Redis 单机 & 集群离线安装部署 http://www.linuxidc.com/Linux/2017-03/141403.htm

CentOS 7.0 安装 Redis 3.2.1 详细过程和使用常见问题 http://www.linuxidc.com/Linux/2016-09/135071.htm

Ubuntu 16.04 环境中安装 PHP7.0 Redis 扩展 http://www.linuxidc.com/Linux/2016-09/135631.htm

Ubuntu 15.10 下 Redis 集群部署文档 http://www.linuxidc.com/Linux/2016-06/132340.htm

Redis 实战 中文 PDF http://www.linuxidc.com/Linux/2016-04/129932.htm

Redis 热迁移实战总结  http://www.linuxidc.com/Linux/2017-02/141083.htm

Redis3.0 配置文件详解  http://www.linuxidc.com/Linux/2017-03/141369.htm

Redis 的详细介绍:请点这里
Redis 的下载地址:请点这里

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-03/141404.htm

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计9855字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中