Docker 搭建 Redis 集群以及哈希槽动态扩容

一、创建网络

docker network create --subnet=172.10.1.0/24 redis

二、创建 Redis 容器

创建6个redis实例

docker create --name redis1 --net host --privileged=true -v /data/redis/share/redis1:/data redis:5.0.7 --cluster-enabled yes --appendonly yes --port 6381
docker create --name redis2 --net host --privileged=true -v /data/redis/share/redis2:/data redis:5.0.7 --cluster-enabled yes --appendonly yes --port 6382
docker create --name redis3 --net host --privileged=true -v /data/redis/share/redis3:/data redis:5.0.7 --cluster-enabled yes --appendonly yes --port 6383
docker create --name redis4 --net host --privileged=true -v /data/redis/share/redis4:/data redis:5.0.7 --cluster-enabled yes --appendonly yes --port 6384
docker create --name redis5 --net host --privileged=true -v /data/redis/share/redis5:/data redis:5.0.7 --cluster-enabled yes --appendonly yes --port 6385
docker create --name redis6 --net host --privileged=true -v /data/redis/share/redis6:/data redis:5.0.7 --cluster-enabled yes --appendonly yes --port 6386

命令说明:

docker create // 创建容器

–name redis1 // 容器名

–net host // docker网络,使用宿主机的ip和端口

–privileged=true // docker容器,获取宿主机root权限

-v /data/redis/share/redis1:/data // 容器的/data 挂载到宿主机 /data/redis/share/redis-node-1

redis:5.0.7 // redis 镜像名称和版本号

–cluster-enabled yes // redis.conf的配置:开启redis集群

–appendonly yes // redis.conf的配置:开启数据持久化

–port 6381 // redis.conf的配置:redis端口号

三、启动容器

docker start redis1 redis2 redis3 redis4 redis5 redis6

四、创建集群

1.进入redis1容器中

docker exec -it redis1 /bin/bash

2.配置一主一从

redis-cli --cluster create 192.168.20.10:6381 192.168.20.10:6382 192.168.20.10:6383 192.168.20.10:6384 192.168.20.10:6385 192.168.20.10:6386 --cluster-replicas 1

3.查看集群信息

(1)进入redis客户端
redis-cli -h 192.168.20.10 -p 6381 -c
(2)查看集群信息
cluster info
(3)查看节点信息
cluster nodes
(4)查看集群槽位信息

退出redis客户端执行命令

redis-cli --cluster check 192.168.20.10:6381

五、redis集群哈希槽扩容

1.新增两台redis

docker create --name redis-node-7 --net host --privileged=true -v /data/redis/share/redis-node-7:/data redis:5.0.7 --cluster-enabled yes --appendonly yes --port 6387
docker create --name redis-node-8 --net host --privileged=true -v /data/redis/share/redis-node-8:/data redis:5.0.7 --cluster-enabled yes --appendonly yes --port 6388

2.启动容器

docker start redis-node-7 redis-node-8

3.添加6387为master节点

(1)进入容器内
docker exec -it redis-node-7 /bin/bash
(2)添加节点
redis-cli --cluster add-node 192.168.20.10:6387 192.168.20.10:6381

说明:

192.168.20.10:6387:被添加节点

192.168.20.10:6381:集群内任意节点

执行结果:

root@dev:/data# redis-cli --cluster add-node 192.168.20.10:6387 192.168.20.10:6381
>>> Adding node 192.168.20.10:6387 to cluster 192.168.20.10:6381
>>> Performing Cluster Check (using node 192.168.20.10:6381)
M: e3b687667d24189134183edac32bf9a4f69c6033 192.168.20.10:6381
   slots:[0-5460] (5461 slots) master
   1 additional replica(s)
M: 981842c6e96abe8abc34326400565e0b2c44dd0f 192.168.20.10:6382
   slots:[5461-10922] (5462 slots) master
   1 additional replica(s)
S: 4f65496819a0490760d4e1375fb7a371732a1ba8 192.168.20.10:6386
   slots: (0 slots) slave
   replicates 1b826b5348a69af7054e04c3908ee066e9649ae0
S: c450e9af3b9d84c4e8cee6e70e7317628c4a9960 192.168.20.10:6384
   slots: (0 slots) slave
   replicates e3b687667d24189134183edac32bf9a4f69c6033
M: 1b826b5348a69af7054e04c3908ee066e9649ae0 192.168.20.10:6383
   slots:[10923-16383] (5461 slots) master
   1 additional replica(s)
S: 88be3f5ac4cd4c468004e829f3857666e9ff9bc5 192.168.20.10:6385
   slots: (0 slots) slave
   replicates 981842c6e96abe8abc34326400565e0b2c44dd0f
[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.20.10:6387 to make it join the cluster.
[OK] New node added correctly.
123456789101112131415161718192021222324252627
(3)查看节点信息
redis-cli --cluster check 192.168.20.10:6381

执行结果:

root@dev:/data# redis-cli --cluster check 192.168.20.10:6381
192.168.20.10:6381 (e3b68766...) -> 0 keys | 5461 slots | 1 slaves.
192.168.20.10:6382 (981842c6...) -> 1 keys | 5462 slots | 1 slaves.
192.168.20.10:6383 (1b826b53...) -> 0 keys | 5461 slots | 1 slaves.
192.168.20.10:6387 (c4629e20...) -> 0 keys | 0 slots | 0 slaves.
[OK] 1 keys in 4 masters.
0.00 keys per slot on average.
>>> Performing Cluster Check (using node 192.168.20.10:6381)
M: e3b687667d24189134183edac32bf9a4f69c6033 192.168.20.10:6381
   slots:[0-5460] (5461 slots) master
   1 additional replica(s)
M: 981842c6e96abe8abc34326400565e0b2c44dd0f 192.168.20.10:6382
   slots:[5461-10922] (5462 slots) master
   1 additional replica(s)
S: 4f65496819a0490760d4e1375fb7a371732a1ba8 192.168.20.10:6386
   slots: (0 slots) slave
   replicates 1b826b5348a69af7054e04c3908ee066e9649ae0
S: c450e9af3b9d84c4e8cee6e70e7317628c4a9960 192.168.20.10:6384
   slots: (0 slots) slave
   replicates e3b687667d24189134183edac32bf9a4f69c6033
M: 1b826b5348a69af7054e04c3908ee066e9649ae0 192.168.20.10:6383
   slots:[10923-16383] (5461 slots) master
   1 additional replica(s)
S: 88be3f5ac4cd4c468004e829f3857666e9ff9bc5 192.168.20.10:6385
   slots: (0 slots) slave
   replicates 981842c6e96abe8abc34326400565e0b2c44dd0f
M: c4629e200d17cfa3625d5769e279e02948a1386b 192.168.20.10:6387
   slots: (0 slots) master
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

通过信息可以发现,6387 节点虽然已成功加入到集群,但并未分配槽号。

(4)分配槽号
redis-cli --cluster reshard 192.168.20.10:6381

说明:

192.168.20.10:6381:集群中任意节点 ip:port

执行结果

root@dev:/data# redis-cli --cluster reshard 192.168.20.10:6381
>>> Performing Cluster Check (using node 192.168.20.10:6381)
M: e3b687667d24189134183edac32bf9a4f69c6033 192.168.20.10:6381
   slots:[0-5460] (5461 slots) master
   1 additional replica(s)
M: 981842c6e96abe8abc34326400565e0b2c44dd0f 192.168.20.10:6382
   slots:[5461-10922] (5462 slots) master
   1 additional replica(s)
S: 4f65496819a0490760d4e1375fb7a371732a1ba8 192.168.20.10:6386
   slots: (0 slots) slave
   replicates 1b826b5348a69af7054e04c3908ee066e9649ae0
S: c450e9af3b9d84c4e8cee6e70e7317628c4a9960 192.168.20.10:6384
   slots: (0 slots) slave
   replicates e3b687667d24189134183edac32bf9a4f69c6033
M: 1b826b5348a69af7054e04c3908ee066e9649ae0 192.168.20.10:6383
   slots:[10923-16383] (5461 slots) master
   1 additional replica(s)
S: 88be3f5ac4cd4c468004e829f3857666e9ff9bc5 192.168.20.10:6385
   slots: (0 slots) slave
   replicates 981842c6e96abe8abc34326400565e0b2c44dd0f
M: c4629e200d17cfa3625d5769e279e02948a1386b 192.168.20.10:6387
   slots: (0 slots) master
[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)? 4096        # 设置槽数据 16384/master 台数
What is the receiving node ID? c4629e200d17cfa3625d5769e279e02948a1386b    # 输入新节点 node id
Please enter all the source node IDs.
    Type 'all' to user all the nodes as source nodes for the hash slots.
    Type 'done' once you entered all the source nodes IDs.
Source node #1: all                  # 表示全部节点重新分配槽号
(5)再次查看节点信息
redis-cli --cluster check 192.168.20.10:6381

执行结果:

root@dev:/data# redis-cli --cluster check 192.168.20.10:6381 
192.168.20.10:6381 (e3b68766...) -> 0 keys | 4096 slots | 1 slaves.
192.168.20.10:6382 (981842c6...) -> 1 keys | 4096 slots | 1 slaves.
192.168.20.10:6383 (1b826b53...) -> 0 keys | 4096 slots | 1 slaves.
192.168.20.10:6387 (c4629e20...) -> 0 keys | 4096 slots | 0 slaves.
[OK] 1 keys in 4 masters.
0.00 keys per slot on average.
>>> Performing Cluster Check (using node 192.168.20.10:6381)
M: e3b687667d24189134183edac32bf9a4f69c6033 192.168.20.10:6381
   slots:[1365-5460] (4096 slots) master
   1 additional replica(s)
M: 981842c6e96abe8abc34326400565e0b2c44dd0f 192.168.20.10:6382
   slots:[6827-10922] (4096 slots) master
   1 additional replica(s)
S: 4f65496819a0490760d4e1375fb7a371732a1ba8 192.168.20.10:6386
   slots: (0 slots) slave
   replicates 1b826b5348a69af7054e04c3908ee066e9649ae0
S: c450e9af3b9d84c4e8cee6e70e7317628c4a9960 192.168.20.10:6384
   slots: (0 slots) slave
   replicates e3b687667d24189134183edac32bf9a4f69c6033
M: 1b826b5348a69af7054e04c3908ee066e9649ae0 192.168.20.10:6383
   slots:[12288-16383] (4096 slots) master
   1 additional replica(s)
S: 88be3f5ac4cd4c468004e829f3857666e9ff9bc5 192.168.20.10:6385
   slots: (0 slots) slave
   replicates 981842c6e96abe8abc34326400565e0b2c44dd0f
M: c4629e200d17cfa3625d5769e279e02948a1386b 192.168.20.10:6387
   slots:[0-1364],[5461-6826],[10923-12287] (4096 slots) master
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

可以看出每个节点都分配了 4096 个槽号,但是 新加入的节点所分配的槽号并不是连续的

因为对于新加入的节点,要重新分配槽号成本较大,故从三个旧节点移动部分槽号给新节点。

4.为新加入的master节点分配从节点

(1)将 6388 设置为 6387 从节点
redis-cli --cluster add-node 192.168.20.10:6388 192.168.20.10:6387 --cluster-slave --cluster-master-id c4629e200d17cfa3625d5769e279e02948a1386b

说明:

add-node:后边分别为新加入的节点和节点对应的master
cluster-slave:表示新加入的节点是slave节点
–cluster-master-id:表示slave对应的master的node ID

执行结果:

root@dev:/data# redis-cli --cluster add-node 192.168.20.10:6388 192.168.20.10:6387 --cluster-slave --cluster-master-id c4629e200d17cfa3625d5769e279e02948a1386b
>>> Adding node 192.168.20.10:6388 to cluster 192.168.20.10:6387
>>> Performing Cluster Check (using node 192.168.20.10:6387)
M: c4629e200d17cfa3625d5769e279e02948a1386b 192.168.20.10:6387
   slots:[0-1364],[5461-6826],[10923-12287] (4096 slots) master
M: 1b826b5348a69af7054e04c3908ee066e9649ae0 192.168.20.10:6383
   slots:[12288-16383] (4096 slots) master
   1 additional replica(s)
S: c450e9af3b9d84c4e8cee6e70e7317628c4a9960 192.168.20.10:6384
   slots: (0 slots) slave
   replicates e3b687667d24189134183edac32bf9a4f69c6033
S: 88be3f5ac4cd4c468004e829f3857666e9ff9bc5 192.168.20.10:6385
   slots: (0 slots) slave
   replicates 981842c6e96abe8abc34326400565e0b2c44dd0f
M: e3b687667d24189134183edac32bf9a4f69c6033 192.168.20.10:6381
   slots:[1365-5460] (4096 slots) master
   1 additional replica(s)
M: 981842c6e96abe8abc34326400565e0b2c44dd0f 192.168.20.10:6382
   slots:[6827-10922] (4096 slots) master
   1 additional replica(s)
S: 4f65496819a0490760d4e1375fb7a371732a1ba8 192.168.20.10:6386
   slots: (0 slots) slave
   replicates 1b826b5348a69af7054e04c3908ee066e9649ae0
[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.20.10:6388 to make it join the cluster.
Waiting for the cluster to join

>>> Configure node as replica of 192.168.20.10:6387.
[OK] New node added correctly.
(2)查看节点信息
redis-cli --cluster check 192.168.20.10:6381

执行结果:

root@dev:/data# redis-cli --cluster check 192.168.20.10:6381
192.168.20.10:6381 (e3b68766...) -> 0 keys | 4096 slots | 1 slaves.
192.168.20.10:6382 (981842c6...) -> 1 keys | 4096 slots | 1 slaves.
192.168.20.10:6383 (1b826b53...) -> 0 keys | 4096 slots | 1 slaves.
192.168.20.10:6387 (c4629e20...) -> 0 keys | 4096 slots | 1 slaves.
[OK] 1 keys in 4 masters.
0.00 keys per slot on average.
>>> Performing Cluster Check (using node 192.168.20.10:6381)
M: e3b687667d24189134183edac32bf9a4f69c6033 192.168.20.10:6381
   slots:[1365-5460] (4096 slots) master
   1 additional replica(s)
S: 7f81ef37a7ae89311f0c58542a3b92b87879e8a5 192.168.20.10:6388
   slots: (0 slots) slave
   replicates c4629e200d17cfa3625d5769e279e02948a1386b
M: 981842c6e96abe8abc34326400565e0b2c44dd0f 192.168.20.10:6382
   slots:[6827-10922] (4096 slots) master
   1 additional replica(s)
S: 4f65496819a0490760d4e1375fb7a371732a1ba8 192.168.20.10:6386
   slots: (0 slots) slave
   replicates 1b826b5348a69af7054e04c3908ee066e9649ae0
S: c450e9af3b9d84c4e8cee6e70e7317628c4a9960 192.168.20.10:6384
   slots: (0 slots) slave
   replicates e3b687667d24189134183edac32bf9a4f69c6033
M: 1b826b5348a69af7054e04c3908ee066e9649ae0 192.168.20.10:6383
   slots:[12288-16383] (4096 slots) master
   1 additional replica(s)
S: 88be3f5ac4cd4c468004e829f3857666e9ff9bc5 192.168.20.10:6385
   slots: (0 slots) slave
   replicates 981842c6e96abe8abc34326400565e0b2c44dd0f
M: c4629e200d17cfa3625d5769e279e02948a1386b 192.168.20.10:6387
   slots:[0-1364],[5461-6826],[10923-12287] (4096 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.

可以看出从节点已加入成功。

六、redis集群哈希槽收缩

(1)删除master对应slave节点

redis-cli --cluster del-node 192.168.20.10:6388 7f81ef37a7ae89311f0c58542a3b92b87879e8a5

说明:

192.168.20.10:6388:对应被删除节点
7f81ef37a7ae89311f0c58542a3b92b87879e8a5:对应被删除节点 node id

执行结果:

root@dev:/data# redis-cli --cluster del-node 192.168.20.10:6388 7f81ef37a7ae89311f0c58542a3b92b87879e8a5
>>> Removing node 7f81ef37a7ae89311f0c58542a3b92b87879e8a5 from cluster 192.168.20.10:6388
>>> Sending CLUSTER FORGET messages to the cluster...
>>> SHUTDOWN the node.
(2)查看节点信息
redis-cli --cluster check 192.168.20.10:6381

执行结果:

root@dev:/data# redis-cli --cluster check 192.168.20.10:6381
192.168.20.10:6381 (e3b68766...) -> 0 keys | 4096 slots | 1 slaves.
192.168.20.10:6382 (981842c6...) -> 1 keys | 4096 slots | 1 slaves.
192.168.20.10:6383 (1b826b53...) -> 0 keys | 4096 slots | 1 slaves.
192.168.20.10:6387 (c4629e20...) -> 0 keys | 4096 slots | 0 slaves.
[OK] 1 keys in 4 masters.
0.00 keys per slot on average.
>>> Performing Cluster Check (using node 192.168.20.10:6381)
M: e3b687667d24189134183edac32bf9a4f69c6033 192.168.20.10:6381
   slots:[1365-5460] (4096 slots) master
   1 additional replica(s)
M: 981842c6e96abe8abc34326400565e0b2c44dd0f 192.168.20.10:6382
   slots:[6827-10922] (4096 slots) master
   1 additional replica(s)
S: 4f65496819a0490760d4e1375fb7a371732a1ba8 192.168.20.10:6386
   slots: (0 slots) slave
   replicates 1b826b5348a69af7054e04c3908ee066e9649ae0
S: c450e9af3b9d84c4e8cee6e70e7317628c4a9960 192.168.20.10:6384
   slots: (0 slots) slave
   replicates e3b687667d24189134183edac32bf9a4f69c6033
M: 1b826b5348a69af7054e04c3908ee066e9649ae0 192.168.20.10:6383
   slots:[12288-16383] (4096 slots) master
   1 additional replica(s)
S: 88be3f5ac4cd4c468004e829f3857666e9ff9bc5 192.168.20.10:6385
   slots: (0 slots) slave
   replicates 981842c6e96abe8abc34326400565e0b2c44dd0f
M: c4629e200d17cfa3625d5769e279e02948a1386b 192.168.20.10:6387
   slots:[0-1364],[5461-6826],[10923-12287] (4096 slots) master
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

可以看出集群中已无 6388 节点。

(3)查看容器

退出容器,查看容器状态,可以看到 redis-node-8 容器已被停用

root@dev:~# docker ps 
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
c9827168c61d        redis:5.0.7         "docker-entrypoint.s…"   2 hours ago         Up 2 hours                              redis-node-7
d1ad96f4a4ee        redis:5.0.7         "docker-entrypoint.s…"   9 days ago          Up 3 hours                              redis6
db82428f5225        redis:5.0.7         "docker-entrypoint.s…"   9 days ago          Up 3 hours                              redis5
5a0c7a3516f5        redis:5.0.7         "docker-entrypoint.s…"   9 days ago          Up 2 hours                              redis4
cf9863611d0b        redis:5.0.7         "docker-entrypoint.s…"   9 days ago          Up 3 hours                              redis3
7fa64b2a8071        redis:5.0.7         "docker-entrypoint.s…"   9 days ago          Up 3 hours                              redis2
eae771794f0c        redis:5.0.7         "docker-entrypoint.s…"   9 days ago          Up 2 hours                              redis1
(4)重新分配 6387 的槽号

需先进入任意一台redis容器

执行命令

redis-cli --cluster reshard 192.168.20.10:6381

执行结果:

root@dev:/data# redis-cli --cluster reshard 192.168.20.10:6381
>>> Performing Cluster Check (using node 192.168.20.10:6381)
M: e3b687667d24189134183edac32bf9a4f69c6033 192.168.20.10:6381
   slots:[1365-5460] (4096 slots) master
   1 additional replica(s)
M: 981842c6e96abe8abc34326400565e0b2c44dd0f 192.168.20.10:6382
   slots:[6827-10922] (4096 slots) master
   1 additional replica(s)
S: 4f65496819a0490760d4e1375fb7a371732a1ba8 192.168.20.10:6386
   slots: (0 slots) slave
   replicates 1b826b5348a69af7054e04c3908ee066e9649ae0
S: c450e9af3b9d84c4e8cee6e70e7317628c4a9960 192.168.20.10:6384
   slots: (0 slots) slave
   replicates e3b687667d24189134183edac32bf9a4f69c6033
M: 1b826b5348a69af7054e04c3908ee066e9649ae0 192.168.20.10:6383
   slots:[12288-16383] (4096 slots) master
   1 additional replica(s)
S: 88be3f5ac4cd4c468004e829f3857666e9ff9bc5 192.168.20.10:6385
   slots: (0 slots) slave
   replicates 981842c6e96abe8abc34326400565e0b2c44dd0f
M: c4629e200d17cfa3625d5769e279e02948a1386b 192.168.20.10:6387
   slots:[0-1364],[5461-6826],[10923-12287] (4096 slots) master
[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)? 4096      # 被删除的槽的数量
What is the receiving node ID? e3b687667d24189134183edac32bf9a4f69c6033   # 接手被删除槽号的 node id,这里指定给 6381。这里只能输入一个node id,若想将槽号分配给多个 node 需要多次执行该命令
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: c4629e200d17cfa3625d5769e279e02948a1386b     # 删除槽号的node id
Source node #2: done          # done 表示输入node id 结束(这里可以输入多个node id)
Do you want to proceed with the proposed reshard plan (yes/no)? yes
(5)再次查看节点信息
redis-cli --cluster check 192.168.20.10:6381

执行结果:

root@dev:/data# redis-cli --cluster check 192.168.20.10:6381
192.168.20.10:6381 (e3b68766...) -> 0 keys | 8192 slots | 1 slaves.
192.168.20.10:6382 (981842c6...) -> 1 keys | 4096 slots | 1 slaves.
192.168.20.10:6383 (1b826b53...) -> 0 keys | 4096 slots | 1 slaves.
192.168.20.10:6387 (c4629e20...) -> 0 keys | 0 slots | 0 slaves.
[OK] 1 keys in 4 masters.
0.00 keys per slot on average.
>>> Performing Cluster Check (using node 192.168.20.10:6381)
M: e3b687667d24189134183edac32bf9a4f69c6033 192.168.20.10:6381
   slots:[0-6826],[10923-12287] (8192 slots) master
   1 additional replica(s)
M: 981842c6e96abe8abc34326400565e0b2c44dd0f 192.168.20.10:6382
   slots:[6827-10922] (4096 slots) master
   1 additional replica(s)
S: 4f65496819a0490760d4e1375fb7a371732a1ba8 192.168.20.10:6386
   slots: (0 slots) slave
   replicates 1b826b5348a69af7054e04c3908ee066e9649ae0
S: c450e9af3b9d84c4e8cee6e70e7317628c4a9960 192.168.20.10:6384
   slots: (0 slots) slave
   replicates e3b687667d24189134183edac32bf9a4f69c6033
M: 1b826b5348a69af7054e04c3908ee066e9649ae0 192.168.20.10:6383
   slots:[12288-16383] (4096 slots) master
   1 additional replica(s)
S: 88be3f5ac4cd4c468004e829f3857666e9ff9bc5 192.168.20.10:6385
   slots: (0 slots) slave
   replicates 981842c6e96abe8abc34326400565e0b2c44dd0f
M: c4629e200d17cfa3625d5769e279e02948a1386b 192.168.20.10:6387
   slots: (0 slots) master
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

这里可以看到 6387 已不包含任何槽号。

(6)删除节点 6387
redis-cli --cluster del-node 192.168.20.10:6387 c4629e200d17cfa3625d5769e279e02948a1386b

执行结果:

root@dev:/data# redis-cli --cluster del-node 192.168.20.10:6387 c4629e200d17cfa3625d5769e279e02948a1386b
>>> Removing node c4629e200d17cfa3625d5769e279e02948a1386b from cluster 192.168.20.10:6387
>>> Sending CLUSTER FORGET messages to the cluster...
>>> SHUTDOWN the node.
(7)再次查看节点信息
redis-cli --cluster check 192.168.20.10:6381

执行结果:

root@dev:/data# redis-cli --cluster check 192.168.20.10:6381
192.168.20.10:6381 (e3b68766...) -> 0 keys | 8192 slots | 1 slaves.
192.168.20.10:6382 (981842c6...) -> 1 keys | 4096 slots | 1 slaves.
192.168.20.10:6383 (1b826b53...) -> 0 keys | 4096 slots | 1 slaves.
[OK] 1 keys in 3 masters.
0.00 keys per slot on average.
>>> Performing Cluster Check (using node 192.168.20.10:6381)
M: e3b687667d24189134183edac32bf9a4f69c6033 192.168.20.10:6381
   slots:[0-6826],[10923-12287] (8192 slots) master
   1 additional replica(s)
M: 981842c6e96abe8abc34326400565e0b2c44dd0f 192.168.20.10:6382
   slots:[6827-10922] (4096 slots) master
   1 additional replica(s)
S: 4f65496819a0490760d4e1375fb7a371732a1ba8 192.168.20.10:6386
   slots: (0 slots) slave
   replicates 1b826b5348a69af7054e04c3908ee066e9649ae0
S: c450e9af3b9d84c4e8cee6e70e7317628c4a9960 192.168.20.10:6384
   slots: (0 slots) slave
   replicates e3b687667d24189134183edac32bf9a4f69c6033
M: 1b826b5348a69af7054e04c3908ee066e9649ae0 192.168.20.10:6383
   slots:[12288-16383] (4096 slots) master
   1 additional replica(s)
S: 88be3f5ac4cd4c468004e829f3857666e9ff9bc5 192.168.20.10:6385
   slots: (0 slots) slave
   replicates 981842c6e96abe8abc34326400565e0b2c44dd0f
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

可以看出 6387 节点已被删除。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值