Redis Cluster集群的搭建与实践

末蓝、 2022-06-10 08:52 264阅读 0赞

Redis Cluster集群

一、redis-cluster设计

Redis集群搭建的方式有多种,例如使用zookeeper等,但从redis 3.0之后版本支持redis-cluster集群,Redis-Cluster采用无中心结构,每个节点保存数据和整个集群状态,每个节点都和其他所有节点连接。其redis-cluster架构图如下:

Center

其结构特点:

  1. 1、所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽。
  2. 2、节点的fail是通过集群中超过半数的节点检测失效时才生效。
  3. 3、客户端与redis节点直连,不需要中间proxy层.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可。
  4. 4redis-cluster把所有的物理节点映射到\[0-16383\]slot上(不一定是平均分配),cluster 负责维护node<->slot<->value
  5. 5Redis集群预分好16384个桶,当需要在 Redis 集群中放置一个 key-value 时,根据 CRC16(key) mod 16384的值,决定将一个key放到哪个桶中。

1、redis cluster节点分配

现在我们是三个主节点分别是:A, B, C 三个节点,它们可以是一台机器上的三个端口,也可以是三台不同的服务器。那么,采用哈希槽 (hash slot)的方式来分配16384个slot 的话,它们三个节点分别承担的slot 区间是:

  1. 节点A覆盖05460;
  2. 节点B覆盖546110922;
  3. 节点C覆盖1092316383.
  4. 获取数据:
  5. 如果存入一个值,按照redis cluster哈希槽的[算法][Link 2]: CRC16('key')%16384 = 6782 那么就会把这个key 的存储分配到 B 上了。同样,当我连接(A,B,C)任何一个节点想获取'key'这个key时,也会这样的算法,然后内部跳转到B节点上获取数据
  6. 新增一个主节点:
  7. 新增一个节点Dredis cluster的这种做法是从各个节点的前面各拿取一部分slotD上,我会在接下来的实践中实验。大致就会变成这样:
  8. 节点A覆盖1365-5460
  9. 节点B覆盖6827-10922
  10. 节点C覆盖12288-16383
  11. 节点D覆盖0-1364,5461-6826,10923-12287
  12. 同样删除一个节点也是类似,移动完成后就可以删除这个节点了。

2、Redis Cluster主从模式

  1. redis cluster 为了保证数据的高可用性,加入了主从模式,一个主节点对应一个或多个从节点,主节点提供数据存取,从节点则是从主节点拉取数据备份,当这个主节点挂掉后,就会有这个从节点选取一个来充当主节点,从而保证集群不会挂掉。
  2. 上面那个例子里, 集群有ABC三个主节点, 如果这3个节点都没有加入从节点,如果B挂掉了,我们就无法访问整个集群了。ACslot也无法访问。
  3. 所以我们在集群建立的时候,一定要为每个主节点都添加了从节点, 比如像这样, 集群包含主节点ABC, 以及从节点A1B1C1, 那么即使B挂掉系统也可以继续正确工作。
  4. B1节点替代了B节点,所以Redis集群将会选择B1节点作为新的主节点,集群将会继续正确地提供服务。 B重新开启后,它就会变成B1的从节点。
  5. 不过需要注意,如果节点BB1同时挂了,Redis集群就无法继续正确地提供服务了。

二、redis集群的搭建

  1. 集群中至少应该有奇数个节点,所以至少有三个节点,每个节点至少有一个备份节点,所以下面使用6节点(主节点、备份节点由redis-cluster集群确定)。
  2. 下面使用redis-3.2.0安装,[下载地址][Link 3]

1、安装redis节点指定端口

  1. 解压redis压缩包,编译安装

[plain] view plain copy

print ?

  1. [root@localhost redis-3.2.0]# tar xzf redis-3.2.0.tar.gz
  2. [root@localhost redis-3.2.0]# cd redis-3.2.0
  3. [root@localhost redis-3.2.0]# make
  4. [root@localhost redis01]# make install PREFIX=/usr/andy/redis-cluster

    [root@localhost redis-3.2.0]# tar xzf redis-3.2.0.tar.gz
    [root@localhost redis-3.2.0]# cd redis-3.2.0
    [root@localhost redis-3.2.0]# make
    [root@localhost redis01]# make install PREFIX=/usr/andy/redis-cluster

  1. redis-cluster 修改bin文件夹为redis01,复制redis.conf配置文件
  2. 配置redis的配置文件redis.conf
  3. daemonize yes \#后台启动
  4. port 7001 \#修改端口号,从70017006
  5. cluster-enabled yes \#开启cluster,去掉注释
  6. cluster-config-file nodes.conf
  7. cluster-node-timeout 15000
  8. appendonly yes
  9. 复制六份,修改对应的端口号
  10. ![Center 1][]

2、安装redis-trib所需的 ruby脚本

  1. 复制redis解压文件src下的redis-trib.rb文件到redis-cluster目录

[plain] view plain copy

print ?

  1. [root@localhost redis-cluster]# cp /usr/andy/redis/redis-3.2.0/src/redis-trib.rb ./

    [root@localhost redis-cluster]# cp /usr/andy/redis/redis-3.2.0/src/redis-trib.rb ./

  1. 安装ruby环境:

[plain] view plain copy

print ?

  1. [root@localhost redis-cluster]# yum install ruby
  2. [root@localhost redis-cluster]# yum install rubygems

    [root@localhost redis-cluster]# yum install ruby
    [root@localhost redis-cluster]# yum install rubygems

  1. 安装redis-trib.rb运行依赖的ruby的包redis-3.2.2.gem,[下载][Link 4]

[plain] view plain copy

print ?

  1. [root@localhost redis-cluster]# gem install redis-3.2.2.gem

    [root@localhost redis-cluster]# gem install redis-3.2.2.gem

3、启动所有的redis节点

  1. 可以写一个命令脚本start-all.sh

[plain] view plain copy

print ?

  1. cd redis01
  2. ./redis-server redis.conf
  3. cd ..
  4. cd redis02
  5. ./redis-server redis.conf
  6. cd ..
  7. cd redis03
  8. ./redis-server redis.conf
  9. cd ..
  10. cd redis04
  11. ./redis-server redis.conf
  12. cd ..
  13. cd redis05
  14. ./redis-server redis.conf
  15. cd ..
  16. cd redis06
  17. ./redis-server redis.conf
  18. cd ..

    cd redis01
    ./redis-server redis.conf
    cd ..
    cd redis02
    ./redis-server redis.conf
    cd ..
    cd redis03
    ./redis-server redis.conf
    cd ..
    cd redis04
    ./redis-server redis.conf
    cd ..
    cd redis05
    ./redis-server redis.conf
    cd ..
    cd redis06
    ./redis-server redis.conf
    cd ..

  1. 设置权限启动

[plain] view plain copy

print ?

  1. [root@localhost redis-cluster]# chmod 777 start-all.sh
  2. [root@localhost redis-cluster]# ./start-all.sh

    [root@localhost redis-cluster]# chmod 777 start-all.sh
    [root@localhost redis-cluster]# ./start-all.sh

  1. 查看redis进程启动状态

[plain] view plain copy

print ?

  1. [root@localhost redis-cluster]# ps -ef | grep redis
  2. root 4547 1 0 23:12 ? 00:00:00 ./redis-server 127.0.0.1:7001 [cluster]
  3. root 4551 1 0 23:12 ? 00:00:00 ./redis-server 127.0.0.1:7002 [cluster]
  4. root 4555 1 0 23:12 ? 00:00:00 ./redis-server 127.0.0.1:7003 [cluster]
  5. root 4559 1 0 23:12 ? 00:00:00 ./redis-server 127.0.0.1:7004 [cluster]
  6. root 4563 1 0 23:12 ? 00:00:00 ./redis-server 127.0.0.1:7005 [cluster]
  7. root 4567 1 0 23:12 ? 00:00:00 ./redis-server 127.0.0.1:7006 [cluster]
  8. root 4840 4421 0 23:26 pts/1 00:00:00 grep —color=auto redis

    [root@localhost redis-cluster]# ps -ef | grep redis

    root 4547 1 0 23:12 ? 00:00:00 ./redis-server 127.0.0.1:7001 [cluster]
    root 4551 1 0 23:12 ? 00:00:00 ./redis-server 127.0.0.1:7002 [cluster]
    root 4555 1 0 23:12 ? 00:00:00 ./redis-server 127.0.0.1:7003 [cluster]
    root 4559 1 0 23:12 ? 00:00:00 ./redis-server 127.0.0.1:7004 [cluster]
    root 4563 1 0 23:12 ? 00:00:00 ./redis-server 127.0.0.1:7005 [cluster]
    root 4567 1 0 23:12 ? 00:00:00 ./redis-server 127.0.0.1:7006 [cluster]
    root 4840 4421 0 23:26 pts/1 00:00:00 grep —color=auto redis

可以看到redis的6个节点已经启动成功

  1. 杀死全部的几点:

[plain] view plain copy

print ?

  1. [root@localhost redis-cluster]# pkill -9 redis

    [root@localhost redis-cluster]# pkill -9 redis

4、使用redis-trib.rb创建集群

[plain] view plain copy

print ?

  1. ./redis-trib.rb create —replicas 1 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006

    ./redis-trib.rb create —replicas 1 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006

  1. 使用create命令 --replicas 1 参数表示为每个主节点创建一个从节点,其他参数是实例的地址集合。

[plain] view plain copy

print ?

  1. [root@localhost redis-cluster]# ./redis-trib.rb create —replicas 1 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006
  2. Creating cluster

  3. Performing hash slots allocation on 6 nodes…

  4. Using 3 masters:
  5. 127.0.0.1:7001
  6. 127.0.0.1:7002
  7. 127.0.0.1:7003
  8. Adding replica 127.0.0.1:7004 to 127.0.0.1:7001
  9. Adding replica 127.0.0.1:7005 to 127.0.0.1:7002
  10. Adding replica 127.0.0.1:7006 to 127.0.0.1:7003
  11. M: dfd510594da614469a93a0a70767ec9145aefb1a 127.0.0.1:7001
  12. slots:0-5460 (5461 slots) master
  13. M: e02eac35110bbf44c61ff90175e04d55cca097ff 127.0.0.1:7002
  14. slots:5461-10922 (5462 slots) master
  15. M: 4385809e6f4952ecb122dbfedbee29109d6bb234 127.0.0.1:7003
  16. slots:10923-16383 (5461 slots) master
  17. S: ec02c9ef3acee069e8849f143a492db18d4bb06c 127.0.0.1:7004
  18. replicates dfd510594da614469a93a0a70767ec9145aefb1a
  19. S: 83e5a8bb94fb5aaa892cd2f6216604e03e4a6c75 127.0.0.1:7005
  20. replicates e02eac35110bbf44c61ff90175e04d55cca097ff
  21. S: 10c097c429ca24f8720986c6b66f0688bfb901ee 127.0.0.1:7006
  22. replicates 4385809e6f4952ecb122dbfedbee29109d6bb234
  23. Can I set the above configuration? (type ‘yes’ to accept): yes
  24. Nodes configuration updated

  25. Assign a different config epoch to each node

  26. Sending CLUSTER MEET messages to join the cluster

  27. Waiting for the cluster to join……
  28. Performing Cluster Check (using node 127.0.0.1:7001)

  29. M: dfd510594da614469a93a0a70767ec9145aefb1a 127.0.0.1:7001
  30. slots:0-5460 (5461 slots) master
  31. M: e02eac35110bbf44c61ff90175e04d55cca097ff 127.0.0.1:7002
  32. slots:5461-10922 (5462 slots) master
  33. M: 4385809e6f4952ecb122dbfedbee29109d6bb234 127.0.0.1:7003
  34. slots:10923-16383 (5461 slots) master
  35. M: ec02c9ef3acee069e8849f143a492db18d4bb06c 127.0.0.1:7004
  36. slots: (0 slots) master
  37. replicates dfd510594da614469a93a0a70767ec9145aefb1a
  38. M: 83e5a8bb94fb5aaa892cd2f6216604e03e4a6c75 127.0.0.1:7005
  39. slots: (0 slots) master
  40. replicates e02eac35110bbf44c61ff90175e04d55cca097ff
  41. M: 10c097c429ca24f8720986c6b66f0688bfb901ee 127.0.0.1:7006
  42. slots: (0 slots) master
  43. replicates 4385809e6f4952ecb122dbfedbee29109d6bb234
  44. [OK] All nodes agree about slots configuration.
  45. Check for open slots…

  46. Check slots coverage…

  47. [OK] All 16384 slots covered.

    [root@localhost redis-cluster]# ./redis-trib.rb create —replicas 1 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006

    Creating cluster
    Performing hash slots allocation on 6 nodes…
    Using 3 masters:
    127.0.0.1:7001
    127.0.0.1:7002
    127.0.0.1:7003
    Adding replica 127.0.0.1:7004 to 127.0.0.1:7001
    Adding replica 127.0.0.1:7005 to 127.0.0.1:7002
    Adding replica 127.0.0.1:7006 to 127.0.0.1:7003
    M: dfd510594da614469a93a0a70767ec9145aefb1a 127.0.0.1:7001
    slots:0-5460 (5461 slots) master
    M: e02eac35110bbf44c61ff90175e04d55cca097ff 127.0.0.1:7002
    slots:5461-10922 (5462 slots) master
    M: 4385809e6f4952ecb122dbfedbee29109d6bb234 127.0.0.1:7003
    slots:10923-16383 (5461 slots) master
    S: ec02c9ef3acee069e8849f143a492db18d4bb06c 127.0.0.1:7004
    replicates dfd510594da614469a93a0a70767ec9145aefb1a
    S: 83e5a8bb94fb5aaa892cd2f6216604e03e4a6c75 127.0.0.1:7005
    replicates e02eac35110bbf44c61ff90175e04d55cca097ff
    S: 10c097c429ca24f8720986c6b66f0688bfb901ee 127.0.0.1:7006
    replicates 4385809e6f4952ecb122dbfedbee29109d6bb234
    Can I set the above configuration? (type ‘yes’ to accept): yes
    Nodes configuration updated
    Assign a different config epoch to each node
    Sending CLUSTER MEET messages to join the cluster
    Waiting for the cluster to join……
    Performing Cluster Check (using node 127.0.0.1:7001)
    M: dfd510594da614469a93a0a70767ec9145aefb1a 127.0.0.1:7001
    slots:0-5460 (5461 slots) master
    M: e02eac35110bbf44c61ff90175e04d55cca097ff 127.0.0.1:7002
    slots:5461-10922 (5462 slots) master
    M: 4385809e6f4952ecb122dbfedbee29109d6bb234 127.0.0.1:7003
    slots:10923-16383 (5461 slots) master
    M: ec02c9ef3acee069e8849f143a492db18d4bb06c 127.0.0.1:7004
    slots: (0 slots) master
    replicates dfd510594da614469a93a0a70767ec9145aefb1a
    M: 83e5a8bb94fb5aaa892cd2f6216604e03e4a6c75 127.0.0.1:7005
    slots: (0 slots) master
    replicates e02eac35110bbf44c61ff90175e04d55cca097ff
    M: 10c097c429ca24f8720986c6b66f0688bfb901ee 127.0.0.1:7006
    slots: (0 slots) master
    replicates 4385809e6f4952ecb122dbfedbee29109d6bb234
    [OK] All nodes agree about slots configuration.
    Check for open slots…
    Check slots coverage…
    [OK] All 16384 slots covered.

  1. 上面显示创建成功,有3个主节点,3个从节点,每个节点都是成功连接状态。
  2. 3个主节点\[M\]以及分配的哈希卡槽如下:

M: dfd510594da614469a93a0a70767ec9145aefb1a 127.0.0.1:7001
slots:0-5460 (5461 slots) master
M: e02eac35110bbf44c61ff90175e04d55cca097ff 127.0.0.1:7002
slots:5461-10922 (5462 slots) master
M: 4385809e6f4952ecb122dbfedbee29109d6bb234 127.0.0.1:7003
slots:10923-16383 (5461 slots) master

  1. 3个从节点\[S\]以及附属的主节点如下:
  2. S: ec02c9ef3acee069e8849f143a492db18d4bb06c 127.0.0.1:7004
  3. replicates dfd510594da614469a93a0a70767ec9145aefb1a
  4. S: 83e5a8bb94fb5aaa892cd2f6216604e03e4a6c75 127.0.0.1:7005
  5. replicates e02eac35110bbf44c61ff90175e04d55cca097ff
  6. S: 10c097c429ca24f8720986c6b66f0688bfb901ee 127.0.0.1:7006
  7. replicates 4385809e6f4952ecb122dbfedbee29109d6bb234
  8. 以上集群安装成功了,如果安装未成功报如下错误
  9. >>> Creating cluster
  10. \[ERR\] Sorry, can't connect to node ....
  11. 需要安装最新的ruby源码,[下载][Link 5]

[plain] view plain copy

print ?

  1. [root@localhost redis-cluster]# tar -zxvf ruby-2.3.1.tar.gz
  2. [root@localhost redis-cluster]# cd
  3. [root@localhost redis-cluster]# ./configure —prefix=/usr/local/ruby-2.3.1
  4. [root@localhost redis-cluster]# make && make install
  5. [root@localhost redis-cluster]#gem install redis

    [root@localhost redis-cluster]# tar -zxvf ruby-2.3.1.tar.gz
    [root@localhost redis-cluster]# cd
    [root@localhost redis-cluster]# ./configure —prefix=/usr/local/ruby-2.3.1
    [root@localhost redis-cluster]# make && make install
    [root@localhost redis-cluster]#gem install redis

    1. 还有一种情况是,在VMware做[测试][Link 6]的时间(都在一台服务器时),ip应该使用127.0.0.1,如果使用局域网ip,也会报节点创建失败。
    2. ![Center 2][]

#

三、redis集群的测试

1、测试存取值

  1. 客户端连接集群redis-cli需要带上 -c redis-cli -c -p 端口号

[plain] view plain copy

print ?

  1. [root@localhost redis01]# ./redis-cli -c -p 7001
  2. 127.0.0.1:7001> set name andy
  3. -> Redirected to slot [5798] located at 127.0.0.1:7002
  4. OK
  5. 127.0.0.1:7002> get name
  6. “andy”
  7. 127.0.0.1:7002>

    [root@localhost redis01]# ./redis-cli -c -p 7001
    127.0.0.1:7001> set name andy
    -> Redirected to slot [5798] located at 127.0.0.1:7002
    OK
    127.0.0.1:7002> get name
    “andy”
    127.0.0.1:7002>

  1. 根据redis-clusterkey值分配,name应该分配到节点7002\[5461-10922\]上,上面显示redis cluster自动从7001跳转到了7002节点。
  2. 我们可以测试一下7006从节点获取name

[plain] view plain copy

print ?

  1. [root@localhost redis06]# ./redis-cli -c -p 7006
  2. 127.0.0.1:7006> get name
  3. -> Redirected to slot [5798] located at 127.0.0.1:7002
  4. “andy”
  5. 127.0.0.1:7002>

    [root@localhost redis06]# ./redis-cli -c -p 7006
    127.0.0.1:7006> get name
    -> Redirected to slot [5798] located at 127.0.0.1:7002
    “andy”
    127.0.0.1:7002>

  1. 70067003的从节点,从上面也是自动跳转至7002获取值,这也是redis cluster的特点,它是去中心化,每个节点都是对等的,连接哪个节点都可以获取和设置数据。

四、集群节点选举

  1. 现在模拟将7002节点挂掉,按照redis-cluster原理会选举会将 7002的从节点7005选举为主节点。

[plain] view plain copy

print ?

  1. [root@localhost redis-cluster]# ps -ef | grep redis
  2. root 7950 1 0 12:50 ? 00:00:28 ./redis-server 127.0.0.1:7001 [cluster]
  3. root 7952 1 0 12:50 ? 00:00:29 ./redis-server 127.0.0.1:7002 [cluster]
  4. root 7956 1 0 12:50 ? 00:00:29 ./redis-server 127.0.0.1:7003 [cluster]
  5. root 7960 1 0 12:50 ? 00:00:29 ./redis-server 127.0.0.1:7004 [cluster]
  6. root 7964 1 0 12:50 ? 00:00:29 ./redis-server 127.0.0.1:7005 [cluster]
  7. root 7966 1 0 12:50 ? 00:00:29 ./redis-server 127.0.0.1:7006 [cluster]
  8. root 11346 10581 0 14:57 pts/2 00:00:00 grep —color=auto redis
  9. [root@localhost redis-cluster]# kill 7952

    [root@localhost redis-cluster]# ps -ef | grep redis
    root 7950 1 0 12:50 ? 00:00:28 ./redis-server 127.0.0.1:7001 [cluster]
    root 7952 1 0 12:50 ? 00:00:29 ./redis-server 127.0.0.1:7002 [cluster]
    root 7956 1 0 12:50 ? 00:00:29 ./redis-server 127.0.0.1:7003 [cluster]
    root 7960 1 0 12:50 ? 00:00:29 ./redis-server 127.0.0.1:7004 [cluster]
    root 7964 1 0 12:50 ? 00:00:29 ./redis-server 127.0.0.1:7005 [cluster]
    root 7966 1 0 12:50 ? 00:00:29 ./redis-server 127.0.0.1:7006 [cluster]
    root 11346 10581 0 14:57 pts/2 00:00:00 grep —color=auto redis
    [root@localhost redis-cluster]# kill 7952

  1. 在查看集群中的7002节点

[plain] view plain copy

print ?

  1. [root@localhost redis-cluster]#
  2. [root@localhost redis-cluster]# ./redis-trib.rb check 127.0.0.1:7002
  3. [ERR] Sorry, can’t connect to node 127.0.0.1:7002
  4. [root@localhost redis-cluster]# ./redis-trib.rb check 127.0.0.1:7005
  5. Performing Cluster Check (using node 127.0.0.1:7005)

  6. M: a5db243087d8bd423b9285fa8513eddee9bb59a6 127.0.0.1:7005
  7. slots:5461-10922 (5462 slots) master
  8. 0 additional replica(s)
  9. S: 50ce1ea59106b4c2c6bc502593a6a7a7dabf5041 127.0.0.1:7004
  10. slots: (0 slots) slave
  11. replicates dd19221c404fb2fc4da37229de56bab755c76f2b
  12. M: f9886c71e98a53270f7fda961e1c5f730382d48f 127.0.0.1:7003
  13. slots:10923-16383 (5461 slots) master
  14. 1 additional replica(s)
  15. M: dd19221c404fb2fc4da37229de56bab755c76f2b 127.0.0.1:7001
  16. slots:0-5460 (5461 slots) master
  17. 1 additional replica(s)
  18. S: 8bb3ede48319b46d0015440a91ab277da9353c8b 127.0.0.1:7006
  19. slots: (0 slots) slave
  20. replicates f9886c71e98a53270f7fda961e1c5f730382d48f
  21. [OK] All nodes agree about slots configuration.
  22. Check for open slots…

  23. Check slots coverage…

  24. [OK] All 16384 slots covered.
  25. [root@localhost redis-cluster]#

    [root@localhost redis-cluster]#
    [root@localhost redis-cluster]# ./redis-trib.rb check 127.0.0.1:7002
    [ERR] Sorry, can’t connect to node 127.0.0.1:7002
    [root@localhost redis-cluster]# ./redis-trib.rb check 127.0.0.1:7005

    Performing Cluster Check (using node 127.0.0.1:7005)
    M: a5db243087d8bd423b9285fa8513eddee9bb59a6 127.0.0.1:7005
    slots:5461-10922 (5462 slots) master
    0 additional replica(s)
    S: 50ce1ea59106b4c2c6bc502593a6a7a7dabf5041 127.0.0.1:7004
    slots: (0 slots) slave
    replicates dd19221c404fb2fc4da37229de56bab755c76f2b
    M: f9886c71e98a53270f7fda961e1c5f730382d48f 127.0.0.1:7003
    slots:10923-16383 (5461 slots) master
    1 additional replica(s)
    M: dd19221c404fb2fc4da37229de56bab755c76f2b 127.0.0.1:7001
    slots:0-5460 (5461 slots) master
    1 additional replica(s)
    S: 8bb3ede48319b46d0015440a91ab277da9353c8b 127.0.0.1:7006
    slots: (0 slots) slave
    replicates f9886c71e98a53270f7fda961e1c5f730382d48f
    [OK] All nodes agree about slots configuration.
    Check for open slots…
    Check slots coverage…
    [OK] All 16384 slots covered.
    [root@localhost redis-cluster]#

  1. 可以看到集群连接不了7002节点,而7005有原来的S转换为M节点,代替了原来的7002节点。我们可以获取name值:

[plain] view plain copy

print ?

  1. [root@localhost redis01]# ./redis-cli -c -p 7001
  2. 127.0.0.1:7001> get name
  3. -> Redirected to slot [5798] located at 127.0.0.1:7005
  4. “andy”
  5. 127.0.0.1:7005>
  6. 127.0.0.1:7005>

    [root@localhost redis01]# ./redis-cli -c -p 7001
    127.0.0.1:7001> get name
    -> Redirected to slot [5798] located at 127.0.0.1:7005
    “andy”
    127.0.0.1:7005>
    127.0.0.1:7005>

从7001节点连入,自动跳转到7005节点,并且获取name值。

  1. 现在我们将7002节点恢复,看是否会自动加入集群中以及充当的M还是S节点。

[plain] view plain copy

print ?

  1. [root@localhost redis-cluster]# cd redis02
  2. [root@localhost redis02]# ./redis-server redis.conf
  3. [root@localhost redis02]#

    [root@localhost redis-cluster]# cd redis02
    [root@localhost redis02]# ./redis-server redis.conf
    [root@localhost redis02]#

  1. check一下7002节点

[plain] view plain copy

print ?

  1. [root@localhost redis-cluster]# ./redis-trib.rb check 127.0.0.1:7002
  2. Performing Cluster Check (using node 127.0.0.1:7002)

  3. S: 1f07d76585bfab35f91ec711ac53ab4bc00f2d3a 127.0.0.1:7002
  4. slots: (0 slots) slave
  5. replicates a5db243087d8bd423b9285fa8513eddee9bb59a6
  6. M: f9886c71e98a53270f7fda961e1c5f730382d48f 127.0.0.1:7003
  7. slots:10923-16383 (5461 slots) master
  8. 1 additional replica(s)
  9. M: a5db243087d8bd423b9285fa8513eddee9bb59a6 127.0.0.1:7005
  10. slots:5461-10922 (5462 slots) master
  11. 1 additional replica(s)
  12. S: 50ce1ea59106b4c2c6bc502593a6a7a7dabf5041 127.0.0.1:7004
  13. slots: (0 slots) slave
  14. replicates dd19221c404fb2fc4da37229de56bab755c76f2b
  15. S: 8bb3ede48319b46d0015440a91ab277da9353c8b 127.0.0.1:7006
  16. slots: (0 slots) slave
  17. replicates f9886c71e98a53270f7fda961e1c5f730382d48f
  18. M: dd19221c404fb2fc4da37229de56bab755c76f2b 127.0.0.1:7001
  19. slots:0-5460 (5461 slots) master
  20. 1 additional replica(s)
  21. [OK] All nodes agree about slots configuration.
  22. Check for open slots…

  23. Check slots coverage…

  24. [OK] All 16384 slots covered.
  25. [root@localhost redis-cluster]#

    [root@localhost redis-cluster]# ./redis-trib.rb check 127.0.0.1:7002

    Performing Cluster Check (using node 127.0.0.1:7002)
    S: 1f07d76585bfab35f91ec711ac53ab4bc00f2d3a 127.0.0.1:7002
    slots: (0 slots) slave
    replicates a5db243087d8bd423b9285fa8513eddee9bb59a6
    M: f9886c71e98a53270f7fda961e1c5f730382d48f 127.0.0.1:7003
    slots:10923-16383 (5461 slots) master
    1 additional replica(s)
    M: a5db243087d8bd423b9285fa8513eddee9bb59a6 127.0.0.1:7005
    slots:5461-10922 (5462 slots) master
    1 additional replica(s)
    S: 50ce1ea59106b4c2c6bc502593a6a7a7dabf5041 127.0.0.1:7004
    slots: (0 slots) slave
    replicates dd19221c404fb2fc4da37229de56bab755c76f2b
    S: 8bb3ede48319b46d0015440a91ab277da9353c8b 127.0.0.1:7006
    slots: (0 slots) slave
    replicates f9886c71e98a53270f7fda961e1c5f730382d48f
    M: dd19221c404fb2fc4da37229de56bab755c76f2b 127.0.0.1:7001
    slots:0-5460 (5461 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.
    [root@localhost redis-cluster]#

  1. 可以看到7002节点变成了a5db243087d8bd423b9285fa8513eddee9bb59a6 7005的从节点。

五、集群节点添加

节点新增包括新增主节点、从节点两种情况。以下分别做一下测试:

1、新增主节点

  1. 新增一个节点7007作为主节点修改配置文件

[plain] view plain copy

print ?

  1. [root@localhost redis-cluster]# cp -r redis01 redis07
  2. [root@localhost redis-cluster]# cd redis07/
  3. [root@localhost redis07]# sed -i “s/7001/7007/g” ./redis.conf

    [root@localhost redis-cluster]# cp -r redis01 redis07
    [root@localhost redis-cluster]# cd redis07/
    [root@localhost redis07]# sed -i “s/7001/7007/g” ./redis.conf

  1. 启动7007redis服务

[plain] view plain copy

print ?

  1. [root@localhost redis07]# ./redis-server redis.conf
  2. [root@localhost redis07]# netstat -anp | grep 7007
  3. tcp 0 0 127.0.0.1:17007 0.0.0.0:* LISTEN 13441/./redis-serve
  4. tcp 0 0 127.0.0.1:7007 0.0.0.0:* LISTEN 13441/./redis-serve
  5. [root@localhost redis07]#

    [root@localhost redis07]# ./redis-server redis.conf
    [root@localhost redis07]# netstat -anp | grep 7007
    tcp 0 0 127.0.0.1:17007 0.0.0.0: LISTEN 13441/./redis-serve
    tcp 0 0 127.0.0.1:7007 0.0.0.0:
    LISTEN 13441/./redis-serve
    [root@localhost redis07]#

上面可以看到,7007已经启动,现在加入集群中。添加使用redis-trib.rb的add-node命令

[plain] view plain copy

print ?

  1. ./redis-trib.rb add-node 127.0.0.1:7007 127.0.0.1:7002

    ./redis-trib.rb add-node 127.0.0.1:7007 127.0.0.1:7002

  1. add-node是加入集群节点,127.0.0.1:7007为要加入的节点,127.0.0.1:7002 表示加入的集群的一个节点,用来辨识是哪个集群,理论上那个集群的节点都可以。
  2. 执行以下add-node

[plain] view plain copy

print ?

  1. [root@localhost redis-cluster]# ./redis-trib.rb add-node 127.0.0.1:7007 127.0.0.1:7002
  2. Adding node 127.0.0.1:7007 to cluster 127.0.0.1:7002

  3. Performing Cluster Check (using node 127.0.0.1:7002)

  4. S: 1f07d76585bfab35f91ec711ac53ab4bc00f2d3a 127.0.0.1:7002
  5. slots: (0 slots) slave
  6. replicates a5db243087d8bd423b9285fa8513eddee9bb59a6
  7. M: f9886c71e98a53270f7fda961e1c5f730382d48f 127.0.0.1:7003
  8. slots:10923-16383 (5461 slots) master
  9. 1 additional replica(s)
  10. M: a5db243087d8bd423b9285fa8513eddee9bb59a6 127.0.0.1:7005
  11. slots:5461-10922 (5462 slots) master
  12. 1 additional replica(s)
  13. S: 50ce1ea59106b4c2c6bc502593a6a7a7dabf5041 127.0.0.1:7004
  14. slots: (0 slots) slave
  15. replicates dd19221c404fb2fc4da37229de56bab755c76f2b
  16. S: 8bb3ede48319b46d0015440a91ab277da9353c8b 127.0.0.1:7006
  17. slots: (0 slots) slave
  18. replicates f9886c71e98a53270f7fda961e1c5f730382d48f
  19. M: dd19221c404fb2fc4da37229de56bab755c76f2b 127.0.0.1:7001
  20. slots:0-5460 (5461 slots) master
  21. 1 additional replica(s)
  22. [OK] All nodes agree about slots configuration.
  23. Check for open slots…

  24. Check slots coverage…

  25. [OK] All 16384 slots covered.
  26. Send CLUSTER MEET to node 127.0.0.1:7007 to make it join the cluster.

  27. [OK] New node added correctly.
  28. [root@localhost redis-cluster]#

    [root@localhost redis-cluster]# ./redis-trib.rb add-node 127.0.0.1:7007 127.0.0.1:7002

    Adding node 127.0.0.1:7007 to cluster 127.0.0.1:7002
    Performing Cluster Check (using node 127.0.0.1:7002)
    S: 1f07d76585bfab35f91ec711ac53ab4bc00f2d3a 127.0.0.1:7002
    slots: (0 slots) slave
    replicates a5db243087d8bd423b9285fa8513eddee9bb59a6
    M: f9886c71e98a53270f7fda961e1c5f730382d48f 127.0.0.1:7003
    slots:10923-16383 (5461 slots) master
    1 additional replica(s)
    M: a5db243087d8bd423b9285fa8513eddee9bb59a6 127.0.0.1:7005
    slots:5461-10922 (5462 slots) master
    1 additional replica(s)
    S: 50ce1ea59106b4c2c6bc502593a6a7a7dabf5041 127.0.0.1:7004
    slots: (0 slots) slave
    replicates dd19221c404fb2fc4da37229de56bab755c76f2b
    S: 8bb3ede48319b46d0015440a91ab277da9353c8b 127.0.0.1:7006
    slots: (0 slots) slave
    replicates f9886c71e98a53270f7fda961e1c5f730382d48f
    M: dd19221c404fb2fc4da37229de56bab755c76f2b 127.0.0.1:7001
    slots:0-5460 (5461 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.
    Send CLUSTER MEET to node 127.0.0.1:7007 to make it join the cluster.
    [OK] New node added correctly.
    [root@localhost redis-cluster]#

  1. 可以看到7007加入这个Cluster,并成为一个新的节点。
  2. 可以check以下7007节点状态

[plain] view plain copy

print ?

  1. [root@localhost redis-cluster]# ./redis-trib.rb check 127.0.0.1:7007
  2. Performing Cluster Check (using node 127.0.0.1:7007)

  3. M: ee3efb90e5ac0725f15238a64fc60a18a71205d7 127.0.0.1:7007
  4. slots: (0 slots) master
  5. 0 additional replica(s)
  6. S: 8bb3ede48319b46d0015440a91ab277da9353c8b 127.0.0.1:7006
  7. slots: (0 slots) slave
  8. replicates f9886c71e98a53270f7fda961e1c5f730382d48f
  9. M: dd19221c404fb2fc4da37229de56bab755c76f2b 127.0.0.1:7001
  10. slots:0-5460 (5461 slots) master
  11. 1 additional replica(s)
  12. M: f9886c71e98a53270f7fda961e1c5f730382d48f 127.0.0.1:7003
  13. slots:10923-16383 (5461 slots) master
  14. 1 additional replica(s)
  15. S: 1f07d76585bfab35f91ec711ac53ab4bc00f2d3a 127.0.0.1:7002
  16. slots: (0 slots) slave
  17. replicates a5db243087d8bd423b9285fa8513eddee9bb59a6
  18. M: a5db243087d8bd423b9285fa8513eddee9bb59a6 127.0.0.1:7005
  19. slots:5461-10922 (5462 slots) master
  20. 1 additional replica(s)
  21. S: 50ce1ea59106b4c2c6bc502593a6a7a7dabf5041 127.0.0.1:7004
  22. slots: (0 slots) slave
  23. replicates dd19221c404fb2fc4da37229de56bab755c76f2b
  24. [OK] All nodes agree about slots configuration.
  25. Check for open slots…

  26. Check slots coverage…

  27. [OK] All 16384 slots covered.
  28. [root@localhost redis-cluster]#

    [root@localhost redis-cluster]# ./redis-trib.rb check 127.0.0.1:7007

    Performing Cluster Check (using node 127.0.0.1:7007)
    M: ee3efb90e5ac0725f15238a64fc60a18a71205d7 127.0.0.1:7007
    slots: (0 slots) master
    0 additional replica(s)
    S: 8bb3ede48319b46d0015440a91ab277da9353c8b 127.0.0.1:7006
    slots: (0 slots) slave
    replicates f9886c71e98a53270f7fda961e1c5f730382d48f
    M: dd19221c404fb2fc4da37229de56bab755c76f2b 127.0.0.1:7001
    slots:0-5460 (5461 slots) master
    1 additional replica(s)
    M: f9886c71e98a53270f7fda961e1c5f730382d48f 127.0.0.1:7003
    slots:10923-16383 (5461 slots) master
    1 additional replica(s)
    S: 1f07d76585bfab35f91ec711ac53ab4bc00f2d3a 127.0.0.1:7002
    slots: (0 slots) slave
    replicates a5db243087d8bd423b9285fa8513eddee9bb59a6
    M: a5db243087d8bd423b9285fa8513eddee9bb59a6 127.0.0.1:7005
    slots:5461-10922 (5462 slots) master
    1 additional replica(s)
    S: 50ce1ea59106b4c2c6bc502593a6a7a7dabf5041 127.0.0.1:7004
    slots: (0 slots) slave
    replicates dd19221c404fb2fc4da37229de56bab755c76f2b
    [OK] All nodes agree about slots configuration.
    Check for open slots…
    Check slots coverage…
    [OK] All 16384 slots covered.
    [root@localhost redis-cluster]#

M: ee3efb90e5ac0725f15238a64fc60a18a71205d7 127.0.0.1:7007
slots: (0 slots) master
0 additional replica(s)

上面信息可以看到有4个M节点,3个S节点,7007成为了M主节点,它没有附属的从节点,而且Cluster并未给7007分配哈希卡槽(0 slots)。

可以从客户端连接集群查看一下,集群节点的连接情况

[plain] view plain copy

print ?

  1. [root@localhost redis-cluster]# cd redis07/
  2. [root@localhost redis07]# ./redis-cli -c -p 7007
  3. 127.0.0.1:7007> cluster nodes
  4. 8bb3ede48319b46d0015440a91ab277da9353c8b 127.0.0.1:7006 slave f9886c71e98a53270f7fda961e1c5f730382d48f 0 1462955393326 3 connected
  5. dd19221c404fb2fc4da37229de56bab755c76f2b 127.0.0.1:7001 master - 0 1462955388247 1 connected 0-5460
  6. ee3efb90e5ac0725f15238a64fc60a18a71205d7 127.0.0.1:7007 myself,master - 0 0 0 connected
  7. f9886c71e98a53270f7fda961e1c5f730382d48f 127.0.0.1:7003 master - 0 1462955390270 3 connected 10923-16383
  8. 1f07d76585bfab35f91ec711ac53ab4bc00f2d3a 127.0.0.1:7002 slave a5db243087d8bd423b9285fa8513eddee9bb59a6 0 1462955394334 7 connected
  9. a5db243087d8bd423b9285fa8513eddee9bb59a6 127.0.0.1:7005 master - 0 1462955392309 7 connected 5461-10922
  10. 50ce1ea59106b4c2c6bc502593a6a7a7dabf5041 127.0.0.1:7004 slave dd19221c404fb2fc4da37229de56bab755c76f2b 0 1462955389663 1 connected
  11. 127.0.0.1:7007>

    [root@localhost redis-cluster]# cd redis07/
    [root@localhost redis07]# ./redis-cli -c -p 7007
    127.0.0.1:7007> cluster nodes
    8bb3ede48319b46d0015440a91ab277da9353c8b 127.0.0.1:7006 slave f9886c71e98a53270f7fda961e1c5f730382d48f 0 1462955393326 3 connected
    dd19221c404fb2fc4da37229de56bab755c76f2b 127.0.0.1:7001 master - 0 1462955388247 1 connected 0-5460
    ee3efb90e5ac0725f15238a64fc60a18a71205d7 127.0.0.1:7007 myself,master - 0 0 0 connected
    f9886c71e98a53270f7fda961e1c5f730382d48f 127.0.0.1:7003 master - 0 1462955390270 3 connected 10923-16383
    1f07d76585bfab35f91ec711ac53ab4bc00f2d3a 127.0.0.1:7002 slave a5db243087d8bd423b9285fa8513eddee9bb59a6 0 1462955394334 7 connected
    a5db243087d8bd423b9285fa8513eddee9bb59a6 127.0.0.1:7005 master - 0 1462955392309 7 connected 5461-10922
    50ce1ea59106b4c2c6bc502593a6a7a7dabf5041 127.0.0.1:7004 slave dd19221c404fb2fc4da37229de56bab755c76f2b 0 1462955389663 1 connected
    127.0.0.1:7007>

  1. redis-cluster在新增节点时并未分配卡槽,需要我们手动对集群进行重新分片迁移数据,需要重新分片命令 reshard
  2. redis-trib.rb reshard 127.0.0.1:7005
  3. 这个命令是用来迁移slot节点的,后面的127.0.0.1:7005是表示是哪个集群,端口填[7000-7007]都可以,执行结果如下:

[plain] view plain copy

print ?

  1. [root@localhost redis-cluster]# ./redis-trib.rb reshard 127.0.0.1:7005
  2. Performing Cluster Check (using node 127.0.0.1:7005)

  3. M: a5db243087d8bd423b9285fa8513eddee9bb59a6 127.0.0.1:7005
  4. slots:5461-10922 (5462 slots) master
  5. 1 additional replica(s)
  6. S: 50ce1ea59106b4c2c6bc502593a6a7a7dabf5041 127.0.0.1:7004
  7. slots: (0 slots) slave
  8. replicates dd19221c404fb2fc4da37229de56bab755c76f2b
  9. M: f9886c71e98a53270f7fda961e1c5f730382d48f 127.0.0.1:7003
  10. slots:10923-16383 (5461 slots) master
  11. 1 additional replica(s)
  12. S: 1f07d76585bfab35f91ec711ac53ab4bc00f2d3a 127.0.0.1:7002
  13. slots: (0 slots) slave
  14. replicates a5db243087d8bd423b9285fa8513eddee9bb59a6
  15. M: ee3efb90e5ac0725f15238a64fc60a18a71205d7 127.0.0.1:7007
  16. slots: (0 slots) master
  17. 0 additional replica(s)
  18. M: dd19221c404fb2fc4da37229de56bab755c76f2b 127.0.0.1:7001
  19. slots:0-5460 (5461 slots) master
  20. 1 additional replica(s)
  21. S: 8bb3ede48319b46d0015440a91ab277da9353c8b 127.0.0.1:7006
  22. slots: (0 slots) slave
  23. replicates f9886c71e98a53270f7fda961e1c5f730382d48f
  24. [OK] All nodes agree about slots configuration.
  25. Check for open slots…

  26. Check slots coverage…

  27. [OK] All 16384 slots covered.
  28. How many slots do you want to move (from 1 to 16384)?

    [root@localhost redis-cluster]# ./redis-trib.rb reshard 127.0.0.1:7005

    Performing Cluster Check (using node 127.0.0.1:7005)
    M: a5db243087d8bd423b9285fa8513eddee9bb59a6 127.0.0.1:7005
    slots:5461-10922 (5462 slots) master
    1 additional replica(s)
    S: 50ce1ea59106b4c2c6bc502593a6a7a7dabf5041 127.0.0.1:7004
    slots: (0 slots) slave
    replicates dd19221c404fb2fc4da37229de56bab755c76f2b
    M: f9886c71e98a53270f7fda961e1c5f730382d48f 127.0.0.1:7003
    slots:10923-16383 (5461 slots) master
    1 additional replica(s)
    S: 1f07d76585bfab35f91ec711ac53ab4bc00f2d3a 127.0.0.1:7002
    slots: (0 slots) slave
    replicates a5db243087d8bd423b9285fa8513eddee9bb59a6
    M: ee3efb90e5ac0725f15238a64fc60a18a71205d7 127.0.0.1:7007
    slots: (0 slots) master
    0 additional replica(s)
    M: dd19221c404fb2fc4da37229de56bab755c76f2b 127.0.0.1:7001
    slots:0-5460 (5461 slots) master
    1 additional replica(s)
    S: 8bb3ede48319b46d0015440a91ab277da9353c8b 127.0.0.1:7006
    slots: (0 slots) slave
    replicates f9886c71e98a53270f7fda961e1c5f730382d48f
    [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)?

  1. 它提示我们需要迁移多少slot7007上,我们平分16384个哈希槽给4个节点:16384/4 = 4096,我们需要移动4096个槽点到7007上。

[plain] view plain copy

print ?

  1. [OK] All 16384 slots covered.
  2. How many slots do you want to move (from 1 to 16384)? 4096
  3. What is the receiving node ID?

    [OK] All 16384 slots covered.
    How many slots do you want to move (from 1 to 16384)? 4096
    What is the receiving node ID?

  1. 需要输入7007的节点idee3efb90e5ac0725f15238a64fc60a18a71205d7

[plain] view plain copy

print ?

  1. Please enter all the source node IDs.
  2. Type ‘all’ to use all the nodes as source nodes for the hash slots.
  3. Type ‘done’ once you entered all the source nodes IDs.
  4. Source node #1:

    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:

  1. redis-trib 会向你询问重新分片的源节点(source node),即,要从特点的哪个节点中取出 4096 个哈希槽,还是从全部节点提取4096个哈希槽, 并将这些槽移动到7007节点上面。
  2. 如果我们不打算从特定的节点上取出指定数量的哈希槽,那么可以向redis-trib输入 all,这样的话, 集群中的所有主节点都会成为源节点,redis-trib从各个源节点中各取出一部分哈希槽,凑够4096个,然后移动到7007节点上:

[plain] view plain copy

print ?

  1. Source node #1:all

    Source node #1:all

  1. 然后开始从别的主节点迁移哈希槽,并且确认。

[plain] view plain copy

print ?

  1. Moving slot 1343 from dd19221c404fb2fc4da37229de56bab755c76f2b
  2. Moving slot 1344 from dd19221c404fb2fc4da37229de56bab755c76f2b
  3. Moving slot 1345 from dd19221c404fb2fc4da37229de56bab755c76f2b
  4. Moving slot 1346 from dd19221c404fb2fc4da37229de56bab755c76f2b
  5. Moving slot 1347 from dd19221c404fb2fc4da37229de56bab755c76f2b
  6. Moving slot 1348 from dd19221c404fb2fc4da37229de56bab755c76f2b
  7. Moving slot 1349 from dd19221c404fb2fc4da37229de56bab755c76f2b
  8. Moving slot 1350 from dd19221c404fb2fc4da37229de56bab755c76f2b
  9. Moving slot 1351 from dd19221c404fb2fc4da37229de56bab755c76f2b
  10. Moving slot 1352 from dd19221c404fb2fc4da37229de56bab755c76f2b
  11. Moving slot 1353 from dd19221c404fb2fc4da37229de56bab755c76f2b
  12. Moving slot 1354 from dd19221c404fb2fc4da37229de56bab755c76f2b
  13. Moving slot 1355 from dd19221c404fb2fc4da37229de56bab755c76f2b
  14. Moving slot 1356 from dd19221c404fb2fc4da37229de56bab755c76f2b
  15. Moving slot 1357 from dd19221c404fb2fc4da37229de56bab755c76f2b
  16. Moving slot 1358 from dd19221c404fb2fc4da37229de56bab755c76f2b
  17. Moving slot 1359 from dd19221c404fb2fc4da37229de56bab755c76f2b
  18. Moving slot 1360 from dd19221c404fb2fc4da37229de56bab755c76f2b
  19. Moving slot 1361 from dd19221c404fb2fc4da37229de56bab755c76f2b
  20. Moving slot 1362 from dd19221c404fb2fc4da37229de56bab755c76f2b
  21. Moving slot 1363 from dd19221c404fb2fc4da37229de56bab755c76f2b
  22. Moving slot 1364 from dd19221c404fb2fc4da37229de56bab755c76f2b
  23. Do you want to proceed with the proposed reshard plan (yes/no)? yes

    Moving slot 1343 from dd19221c404fb2fc4da37229de56bab755c76f2b

    1. Moving slot 1344 from dd19221c404fb2fc4da37229de56bab755c76f2b
    2. Moving slot 1345 from dd19221c404fb2fc4da37229de56bab755c76f2b
    3. Moving slot 1346 from dd19221c404fb2fc4da37229de56bab755c76f2b
    4. Moving slot 1347 from dd19221c404fb2fc4da37229de56bab755c76f2b
    5. Moving slot 1348 from dd19221c404fb2fc4da37229de56bab755c76f2b
    6. Moving slot 1349 from dd19221c404fb2fc4da37229de56bab755c76f2b
    7. Moving slot 1350 from dd19221c404fb2fc4da37229de56bab755c76f2b
    8. Moving slot 1351 from dd19221c404fb2fc4da37229de56bab755c76f2b
    9. Moving slot 1352 from dd19221c404fb2fc4da37229de56bab755c76f2b
    10. Moving slot 1353 from dd19221c404fb2fc4da37229de56bab755c76f2b
    11. Moving slot 1354 from dd19221c404fb2fc4da37229de56bab755c76f2b
    12. Moving slot 1355 from dd19221c404fb2fc4da37229de56bab755c76f2b
    13. Moving slot 1356 from dd19221c404fb2fc4da37229de56bab755c76f2b
    14. Moving slot 1357 from dd19221c404fb2fc4da37229de56bab755c76f2b
    15. Moving slot 1358 from dd19221c404fb2fc4da37229de56bab755c76f2b
    16. Moving slot 1359 from dd19221c404fb2fc4da37229de56bab755c76f2b
    17. Moving slot 1360 from dd19221c404fb2fc4da37229de56bab755c76f2b
    18. Moving slot 1361 from dd19221c404fb2fc4da37229de56bab755c76f2b
    19. Moving slot 1362 from dd19221c404fb2fc4da37229de56bab755c76f2b
    20. Moving slot 1363 from dd19221c404fb2fc4da37229de56bab755c76f2b
    21. Moving slot 1364 from dd19221c404fb2fc4da37229de56bab755c76f2b

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

  1. 确认之后,redis-trib就开始执行分片操作,将哈希槽一个一个从源主节点移动到7007目标主节点。
  2. 重新分片结束后我们可以check以下节点的分配情况。

[plain] view plain copy

print ?

  1. [root@localhost redis-cluster]# ./redis-trib.rb check 127.0.0.1:7001
  2. Performing Cluster Check (using node 127.0.0.1:7001)

  3. M: dd19221c404fb2fc4da37229de56bab755c76f2b 127.0.0.1:7001
  4. slots:1365-5460 (4096 slots) master
  5. 1 additional replica(s)
  6. M: ee3efb90e5ac0725f15238a64fc60a18a71205d7 127.0.0.1:7007
  7. slots:0-1364,5461-6826,10923-12287 (4096 slots) master
  8. 0 additional replica(s)
  9. M: a5db243087d8bd423b9285fa8513eddee9bb59a6 127.0.0.1:7005
  10. slots:6827-10922 (4096 slots) master
  11. 1 additional replica(s)
  12. S: 8bb3ede48319b46d0015440a91ab277da9353c8b 127.0.0.1:7006
  13. slots: (0 slots) slave
  14. replicates f9886c71e98a53270f7fda961e1c5f730382d48f
  15. M: f9886c71e98a53270f7fda961e1c5f730382d48f 127.0.0.1:7003
  16. slots:12288-16383 (4096 slots) master
  17. 1 additional replica(s)
  18. S: 1f07d76585bfab35f91ec711ac53ab4bc00f2d3a 127.0.0.1:7002
  19. slots: (0 slots) slave
  20. replicates a5db243087d8bd423b9285fa8513eddee9bb59a6
  21. S: 50ce1ea59106b4c2c6bc502593a6a7a7dabf5041 127.0.0.1:7004
  22. slots: (0 slots) slave
  23. replicates dd19221c404fb2fc4da37229de56bab755c76f2b
  24. [OK] All nodes agree about slots configuration.
  25. Check for open slots…

  26. Check slots coverage…

  27. [OK] All 16384 slots covered.
  28. [root@localhost redis-cluster]#

    [root@localhost redis-cluster]# ./redis-trib.rb check 127.0.0.1:7001

    Performing Cluster Check (using node 127.0.0.1:7001)
    M: dd19221c404fb2fc4da37229de56bab755c76f2b 127.0.0.1:7001
    slots:1365-5460 (4096 slots) master
    1 additional replica(s)
    M: ee3efb90e5ac0725f15238a64fc60a18a71205d7 127.0.0.1:7007
    slots:0-1364,5461-6826,10923-12287 (4096 slots) master
    0 additional replica(s)
    M: a5db243087d8bd423b9285fa8513eddee9bb59a6 127.0.0.1:7005
    slots:6827-10922 (4096 slots) master
    1 additional replica(s)
    S: 8bb3ede48319b46d0015440a91ab277da9353c8b 127.0.0.1:7006
    slots: (0 slots) slave
    replicates f9886c71e98a53270f7fda961e1c5f730382d48f
    M: f9886c71e98a53270f7fda961e1c5f730382d48f 127.0.0.1:7003
    slots:12288-16383 (4096 slots) master
    1 additional replica(s)
    S: 1f07d76585bfab35f91ec711ac53ab4bc00f2d3a 127.0.0.1:7002
    slots: (0 slots) slave
    replicates a5db243087d8bd423b9285fa8513eddee9bb59a6
    S: 50ce1ea59106b4c2c6bc502593a6a7a7dabf5041 127.0.0.1:7004
    slots: (0 slots) slave
    replicates dd19221c404fb2fc4da37229de56bab755c76f2b
    [OK] All nodes agree about slots configuration.
    Check for open slots…
    Check slots coverage…
    [OK] All 16384 slots covered.
    [root@localhost redis-cluster]#

slots:0-1364,5461-6826,10923-12287 (4096 slots) master

可以看到7007节点分片的哈希槽片不是连续的,间隔的移动。

[plain] view plain copy

print ?

  1. [root@localhost redis-cluster]# cd redis07/
  2. [root@localhost redis07]# ./redis-cli -c 7007
  3. Could not connect to Redis at 127.0.0.1:6379: Connection refused
  4. [root@localhost redis07]# ./redis-cli -c -p 7007
  5. 127.0.0.1:7007> keys *
  6. 1) “name”
  7. 2) “age”
  8. 127.0.0.1:7007>
  9. 127.0.0.1:7007>

    [root@localhost redis-cluster]# cd redis07/
    [root@localhost redis07]# ./redis-cli -c 7007
    Could not connect to Redis at 127.0.0.1:6379: Connection refused
    [root@localhost redis07]# ./redis-cli -c -p 7007
    127.0.0.1:7007> keys *
    1) “name”
    2) “age”
    127.0.0.1:7007>
    127.0.0.1:7007>

  1. 可以看到将7001age\[741\]name\[5798\]移动到7007节点上,
  2. 主节点7007添加成功。

2、新增从节点

  1. 新增一个节点7008节点,使用add-node --slave命令。

[plain] view plain copy

print ?

  1. [root@localhost redis-cluster]# cp -r redis01/ redis08
  2. [root@localhost redis-cluster]# cd redis08/
  3. [root@localhost redis08]# sed -i “s/7001/7008/g” ./redis.conf
  4. [root@localhost redis08]# ./redis-server redis.conf

    [root@localhost redis-cluster]# cp -r redis01/ redis08
    [root@localhost redis-cluster]# cd redis08/
    [root@localhost redis08]# sed -i “s/7001/7008/g” ./redis.conf
    [root@localhost redis08]# ./redis-server redis.conf

redis-trib增加从节点的命令为:

[plain] view plain copy

print ?

  1. ./redis-trib.rb add-node —slave —master-id $[nodeid] 127.0.0.1:7008 127.0.0.1:7000

    ./redis-trib.rb add-node —slave —master-id $[nodeid] 127.0.0.1:7008 127.0.0.1:7000

  1. nodeid为要加到master主节点的node id127.0.0.1:7008为新增的从节点,127.0.0.1:7000为集群的一个节点(集群的任意节点都行),用来辨识是哪个集群;如果没有给定那个主节点--master-id的话,redis-trib将会将新增的从节点随机到从节点较少的主节点上。
  2. 现在我们添加一下7008,看是否会自动加到没有从节点的7007主节点上。

[plain] view plain copy

print ?

  1. [root@localhost redis-cluster]# ./redis-trib.rb add-node —slave 127.0.0.1:7008 127.0.0.1:7001>>> Adding node 127.0.0.1:7008 to cluster 127.0.0.1:7001
  2. Performing Cluster Check (using node 127.0.0.1:7001)

  3. M: dd19221c404fb2fc4da37229de56bab755c76f2b 127.0.0.1:7001
  4. slots:1365-5460 (4096 slots) master
  5. 1 additional replica(s)
  6. M: ee3efb90e5ac0725f15238a64fc60a18a71205d7 127.0.0.1:7007
  7. slots:0-1364,5461-6826,10923-12287 (4096 slots) master
  8. 0 additional replica(s)
  9. M: a5db243087d8bd423b9285fa8513eddee9bb59a6 127.0.0.1:7005
  10. slots:6827-10922 (4096 slots) master
  11. 1 additional replica(s)
  12. S: 8bb3ede48319b46d0015440a91ab277da9353c8b 127.0.0.1:7006
  13. slots: (0 slots) slave
  14. replicates f9886c71e98a53270f7fda961e1c5f730382d48f
  15. M: f9886c71e98a53270f7fda961e1c5f730382d48f 127.0.0.1:7003
  16. slots:12288-16383 (4096 slots) master
  17. 1 additional replica(s)
  18. S: 1f07d76585bfab35f91ec711ac53ab4bc00f2d3a 127.0.0.1:7002
  19. slots: (0 slots) slave
  20. replicates a5db243087d8bd423b9285fa8513eddee9bb59a6
  21. S: 50ce1ea59106b4c2c6bc502593a6a7a7dabf5041 127.0.0.1:7004
  22. slots: (0 slots) slave
  23. replicates dd19221c404fb2fc4da37229de56bab755c76f2b
  24. [OK] All nodes agree about slots configuration.
  25. Check for open slots…

  26. Check slots coverage…

  27. [OK] All 16384 slots covered.
  28. Automatically selected master 127.0.0.1:7007
  29. Send CLUSTER MEET to node 127.0.0.1:7008 to make it join the cluster.

  30. Waiting for the cluster to join.
  31. Configure node as replica of 127.0.0.1:7007.

  32. [OK] New node added correctly.
  33. [root@localhost redis-cluster]#

    [root@localhost redis-cluster]# ./redis-trib.rb add-node —slave 127.0.0.1:7008 127.0.0.1:7001>>> Adding node 127.0.0.1:7008 to cluster 127.0.0.1:7001

    Performing Cluster Check (using node 127.0.0.1:7001)
    M: dd19221c404fb2fc4da37229de56bab755c76f2b 127.0.0.1:7001
    slots:1365-5460 (4096 slots) master
    1 additional replica(s)
    M: ee3efb90e5ac0725f15238a64fc60a18a71205d7 127.0.0.1:7007
    slots:0-1364,5461-6826,10923-12287 (4096 slots) master
    0 additional replica(s)
    M: a5db243087d8bd423b9285fa8513eddee9bb59a6 127.0.0.1:7005
    slots:6827-10922 (4096 slots) master
    1 additional replica(s)
    S: 8bb3ede48319b46d0015440a91ab277da9353c8b 127.0.0.1:7006
    slots: (0 slots) slave
    replicates f9886c71e98a53270f7fda961e1c5f730382d48f
    M: f9886c71e98a53270f7fda961e1c5f730382d48f 127.0.0.1:7003
    slots:12288-16383 (4096 slots) master
    1 additional replica(s)
    S: 1f07d76585bfab35f91ec711ac53ab4bc00f2d3a 127.0.0.1:7002
    slots: (0 slots) slave
    replicates a5db243087d8bd423b9285fa8513eddee9bb59a6
    S: 50ce1ea59106b4c2c6bc502593a6a7a7dabf5041 127.0.0.1:7004
    slots: (0 slots) slave
    replicates dd19221c404fb2fc4da37229de56bab755c76f2b
    [OK] All nodes agree about slots configuration.
    Check for open slots…
    Check slots coverage…
    [OK] All 16384 slots covered.
    Automatically selected master 127.0.0.1:7007
    Send CLUSTER MEET to node 127.0.0.1:7008 to make it join the cluster.
    Waiting for the cluster to join.
    Configure node as replica of 127.0.0.1:7007.
    [OK] New node added correctly.
    [root@localhost redis-cluster]#

  1. 可以看到自动选择了127.0.0.1:7007master主节点,并且添加成功。
  2. 可以check一下7008

[plain] view plain copy

print ?

  1. [root@localhost redis-cluster]# ./redis-trib.rb check 127.0.0.1:7008
  2. Performing Cluster Check (using node 127.0.0.1:7008)

  3. S: 2ab1b061c36f30ae35604e9a171ae3afdc3c87e5 127.0.0.1:7008
  4. slots: (0 slots) slave
  5. replicates ee3efb90e5ac0725f15238a64fc60a18a71205d7
  6. M: a5db243087d8bd423b9285fa8513eddee9bb59a6 127.0.0.1:7005
  7. slots:6827-10922 (4096 slots) master
  8. 1 additional replica(s)
  9. M: dd19221c404fb2fc4da37229de56bab755c76f2b 127.0.0.1:7001
  10. slots:1365-5460 (4096 slots) master
  11. 1 additional replica(s)
  12. S: 8bb3ede48319b46d0015440a91ab277da9353c8b 127.0.0.1:7006
  13. slots: (0 slots) slave
  14. replicates f9886c71e98a53270f7fda961e1c5f730382d48f
  15. M: ee3efb90e5ac0725f15238a64fc60a18a71205d7 127.0.0.1:7007
  16. slots:0-1364,5461-6826,10923-12287 (4096 slots) master
  17. 1 additional replica(s)
  18. S: 50ce1ea59106b4c2c6bc502593a6a7a7dabf5041 127.0.0.1:7004
  19. slots: (0 slots) slave
  20. replicates dd19221c404fb2fc4da37229de56bab755c76f2b
  21. M: f9886c71e98a53270f7fda961e1c5f730382d48f 127.0.0.1:7003
  22. slots:12288-16383 (4096 slots) master
  23. 1 additional replica(s)
  24. S: 1f07d76585bfab35f91ec711ac53ab4bc00f2d3a 127.0.0.1:7002
  25. slots: (0 slots) slave
  26. replicates a5db243087d8bd423b9285fa8513eddee9bb59a6
  27. [OK] All nodes agree about slots configuration.
  28. Check for open slots…

  29. Check slots coverage…

  30. [OK] All 16384 slots covered.
  31. [root@localhost redis-cluster]#

    [root@localhost redis-cluster]# ./redis-trib.rb check 127.0.0.1:7008

    Performing Cluster Check (using node 127.0.0.1:7008)
    S: 2ab1b061c36f30ae35604e9a171ae3afdc3c87e5 127.0.0.1:7008
    slots: (0 slots) slave
    replicates ee3efb90e5ac0725f15238a64fc60a18a71205d7
    M: a5db243087d8bd423b9285fa8513eddee9bb59a6 127.0.0.1:7005
    slots:6827-10922 (4096 slots) master
    1 additional replica(s)
    M: dd19221c404fb2fc4da37229de56bab755c76f2b 127.0.0.1:7001
    slots:1365-5460 (4096 slots) master
    1 additional replica(s)
    S: 8bb3ede48319b46d0015440a91ab277da9353c8b 127.0.0.1:7006
    slots: (0 slots) slave
    replicates f9886c71e98a53270f7fda961e1c5f730382d48f
    M: ee3efb90e5ac0725f15238a64fc60a18a71205d7 127.0.0.1:7007
    slots:0-1364,5461-6826,10923-12287 (4096 slots) master
    1 additional replica(s)
    S: 50ce1ea59106b4c2c6bc502593a6a7a7dabf5041 127.0.0.1:7004
    slots: (0 slots) slave
    replicates dd19221c404fb2fc4da37229de56bab755c76f2b
    M: f9886c71e98a53270f7fda961e1c5f730382d48f 127.0.0.1:7003
    slots:12288-16383 (4096 slots) master
    1 additional replica(s)
    S: 1f07d76585bfab35f91ec711ac53ab4bc00f2d3a 127.0.0.1:7002
    slots: (0 slots) slave
    replicates a5db243087d8bd423b9285fa8513eddee9bb59a6
    [OK] All nodes agree about slots configuration.
    Check for open slots…
    Check slots coverage…
    [OK] All 16384 slots covered.
    [root@localhost redis-cluster]#

  1. 可以看到7008作为了7007的从节点。
  2. 再测试一下指定主节点添加从节点,给7007增加7009从节点。

[plain] view plain copy

print ?

  1. [root@localhost redis-cluster]# cp -r redis01/ redis09
  2. [root@localhost redis-cluster]# cd redis09
  3. [root@localhost redis09]# sed -i “s/7001/7009/g” ./redis.conf
  4. [root@localhost redis09]# ./redis-server redis.conf

    [root@localhost redis-cluster]# cp -r redis01/ redis09
    [root@localhost redis-cluster]# cd redis09
    [root@localhost redis09]# sed -i “s/7001/7009/g” ./redis.conf
    [root@localhost redis09]# ./redis-server redis.conf

  1. 添加7007主节点上

[plain] view plain copy

print ?

  1. [root@localhost redis-cluster]# ./redis-trib.rb add-node —slave —master-id ee3efb90e5ac0725f15238a64fc60a18a71205d7 127.0.0.1:7009 127.0.0.1:7001
  2. Adding node 127.0.0.1:7009 to cluster 127.0.0.1:7001

  3. Performing Cluster Check (using node 127.0.0.1:7001)

  4. M: dd19221c404fb2fc4da37229de56bab755c76f2b 127.0.0.1:7001
  5. slots:1365-5460 (4096 slots) master
  6. 1 additional replica(s)
  7. S: 2ab1b061c36f30ae35604e9a171ae3afdc3c87e5 127.0.0.1:7008
  8. slots: (0 slots) slave
  9. replicates ee3efb90e5ac0725f15238a64fc60a18a71205d7
  10. M: ee3efb90e5ac0725f15238a64fc60a18a71205d7 127.0.0.1:7007
  11. slots:0-1364,5461-6826,10923-12287 (4096 slots) master
  12. 1 additional replica(s)
  13. M: a5db243087d8bd423b9285fa8513eddee9bb59a6 127.0.0.1:7005
  14. slots:6827-10922 (4096 slots) master
  15. 1 additional replica(s)
  16. S: 8bb3ede48319b46d0015440a91ab277da9353c8b 127.0.0.1:7006
  17. slots: (0 slots) slave
  18. replicates f9886c71e98a53270f7fda961e1c5f730382d48f
  19. M: f9886c71e98a53270f7fda961e1c5f730382d48f 127.0.0.1:7003
  20. slots:12288-16383 (4096 slots) master
  21. 1 additional replica(s)
  22. S: 1f07d76585bfab35f91ec711ac53ab4bc00f2d3a 127.0.0.1:7002
  23. slots: (0 slots) slave
  24. replicates a5db243087d8bd423b9285fa8513eddee9bb59a6
  25. S: 50ce1ea59106b4c2c6bc502593a6a7a7dabf5041 127.0.0.1:7004
  26. slots: (0 slots) slave
  27. replicates dd19221c404fb2fc4da37229de56bab755c76f2b
  28. [OK] All nodes agree about slots configuration.
  29. Check for open slots…

  30. Check slots coverage…

  31. [OK] All 16384 slots covered.
  32. Send CLUSTER MEET to node 127.0.0.1:7009 to make it join the cluster.

  33. Waiting for the cluster to join.
  34. Configure node as replica of 127.0.0.1:7007.

  35. [OK] New node added correctly.
  36. [root@localhost redis-cluster]#

    [root@localhost redis-cluster]# ./redis-trib.rb add-node —slave —master-id ee3efb90e5ac0725f15238a64fc60a18a71205d7 127.0.0.1:7009 127.0.0.1:7001

    Adding node 127.0.0.1:7009 to cluster 127.0.0.1:7001
    Performing Cluster Check (using node 127.0.0.1:7001)
    M: dd19221c404fb2fc4da37229de56bab755c76f2b 127.0.0.1:7001
    slots:1365-5460 (4096 slots) master
    1 additional replica(s)
    S: 2ab1b061c36f30ae35604e9a171ae3afdc3c87e5 127.0.0.1:7008
    slots: (0 slots) slave
    replicates ee3efb90e5ac0725f15238a64fc60a18a71205d7
    M: ee3efb90e5ac0725f15238a64fc60a18a71205d7 127.0.0.1:7007
    slots:0-1364,5461-6826,10923-12287 (4096 slots) master
    1 additional replica(s)
    M: a5db243087d8bd423b9285fa8513eddee9bb59a6 127.0.0.1:7005
    slots:6827-10922 (4096 slots) master
    1 additional replica(s)
    S: 8bb3ede48319b46d0015440a91ab277da9353c8b 127.0.0.1:7006
    slots: (0 slots) slave
    replicates f9886c71e98a53270f7fda961e1c5f730382d48f
    M: f9886c71e98a53270f7fda961e1c5f730382d48f 127.0.0.1:7003
    slots:12288-16383 (4096 slots) master
    1 additional replica(s)
    S: 1f07d76585bfab35f91ec711ac53ab4bc00f2d3a 127.0.0.1:7002
    slots: (0 slots) slave
    replicates a5db243087d8bd423b9285fa8513eddee9bb59a6
    S: 50ce1ea59106b4c2c6bc502593a6a7a7dabf5041 127.0.0.1:7004
    slots: (0 slots) slave
    replicates dd19221c404fb2fc4da37229de56bab755c76f2b
    [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:7009 to make it join the cluster.
    Waiting for the cluster to join.
    Configure node as replica of 127.0.0.1:7007.
    [OK] New node added correctly.
    [root@localhost redis-cluster]#

  1. 显示从节点7009节点添加到7007主节点,可以看一下7007的从节点,如下:

[plain] view plain copy

print ?

  1. [root@localhost redis-cluster]# cd ./redis07
  2. [root@localhost redis07]# ./redis-cli -c -p 7007 cluster nodes | grep ee3efb90e5ac0725f15238a64fc60a18a71205d7
  3. 1f51443ede952b98724fea2a12f61fe710ab6cb1 127.0.0.1:7009 slave ee3efb90e5ac0725f15238a64fc60a18a71205d7 0 1462962710266 8 connected
  4. ee3efb90e5ac0725f15238a64fc60a18a71205d7 127.0.0.1:7007 myself,master - 0 0 8 connected 0-1364 5461-6826 10923-12287
  5. 2ab1b061c36f30ae35604e9a171ae3afdc3c87e5 127.0.0.1:7008 slave ee3efb90e5ac0725f15238a64fc60a18a71205d7 0 1462962711607 8 connected
  6. [root@localhost redis07]#

    [root@localhost redis-cluster]# cd ./redis07
    [root@localhost redis07]# ./redis-cli -c -p 7007 cluster nodes | grep ee3efb90e5ac0725f15238a64fc60a18a71205d7
    1f51443ede952b98724fea2a12f61fe710ab6cb1 127.0.0.1:7009 slave ee3efb90e5ac0725f15238a64fc60a18a71205d7 0 1462962710266 8 connected
    ee3efb90e5ac0725f15238a64fc60a18a71205d7 127.0.0.1:7007 myself,master - 0 0 8 connected 0-1364 5461-6826 10923-12287
    2ab1b061c36f30ae35604e9a171ae3afdc3c87e5 127.0.0.1:7008 slave ee3efb90e5ac0725f15238a64fc60a18a71205d7 0 1462962711607 8 connected
    [root@localhost redis07]#

  1. maser 70072slave 7008,7009
  2. 我们测试一下7007节点挂掉,看70087009那个成为主节点。

[plain] view plain copy

print ?

  1. [root@localhost redis-cluster]# ps -ef | grep redis
  2. root 7950 1 0 12:50 ? 00:02:05 ./redis-server 127.0.0.1:7001 [cluster]
  3. root 7956 1 0 12:50 ? 00:02:11 ./redis-server 127.0.0.1:7003 [cluster]
  4. root 7960 1 0 12:50 ? 00:01:47 ./redis-server 127.0.0.1:7004 [cluster]
  5. root 7964 1 0 12:50 ? 00:02:07 ./redis-server 127.0.0.1:7005 [cluster]
  6. root 7966 1 0 12:50 ? 00:01:46 ./redis-server 127.0.0.1:7006 [cluster]
  7. root 12070 1 0 15:14 ? 00:01:08 ./redis-server 127.0.0.1:7002 [cluster]
  8. root 13441 1 0 16:09 ? 00:01:25 ./redis-server 127.0.0.1:7007 [cluster]
  9. root 15939 1 0 17:41 ? 00:00:20 ./redis-server 127.0.0.1:7008 [cluster]
  10. root 16623 1 0 18:07 ? 00:00:10 ./redis-server 127.0.0.1:7009 [cluster]
  11. root 17295 10581 0 18:37 pts/2 00:00:00 grep —color=auto redis
  12. [root@localhost redis-cluster]# kill -9 13441
  13. [root@localhost redis-cluster]# cd ./redis08
  14. [root@localhost redis08]# ./redis-cli -c -p 7008
  15. 127.0.0.1:7008> get name
  16. -> Redirected to slot [5798] located at 127.0.0.1:7009
  17. “andy”
  18. 127.0.0.1:7009> cluster nodes
  19. ee3efb90e5ac0725f15238a64fc60a18a71205d7 127.0.0.1:7007 master,fail - 1462963082317 1462963080194 8 disconnected
  20. 50ce1ea59106b4c2c6bc502593a6a7a7dabf5041 127.0.0.1:7004 slave dd19221c404fb2fc4da37229de56bab755c76f2b 0 1462963170968 1 connected
  21. f9886c71e98a53270f7fda961e1c5f730382d48f 127.0.0.1:7003 master - 0 1462963168525 3 connected 12288-16383
  22. dd19221c404fb2fc4da37229de56bab755c76f2b 127.0.0.1:7001 master - 0 1462963164466 1 connected 1365-5460
  23. 2ab1b061c36f30ae35604e9a171ae3afdc3c87e5 127.0.0.1:7008 slave 1f51443ede952b98724fea2a12f61fe710ab6cb1 0 1462963167508 9 connected
  24. 1f51443ede952b98724fea2a12f61fe710ab6cb1 127.0.0.1:7009 myself,master - 0 0 9 connected 0-1364 5461-6826 10923-12287
  25. 1f07d76585bfab35f91ec711ac53ab4bc00f2d3a 127.0.0.1:7002 slave a5db243087d8bd423b9285fa8513eddee9bb59a6 0 1462963170564 7 connected
  26. 8bb3ede48319b46d0015440a91ab277da9353c8b 127.0.0.1:7006 slave f9886c71e98a53270f7fda961e1c5f730382d48f 0 1462963167915 3 connected
  27. a5db243087d8bd423b9285fa8513eddee9bb59a6 127.0.0.1:7005 master - 0 1462963169538 7 connected 6827-10922
  28. 127.0.0.1:7009>

    [root@localhost redis-cluster]# ps -ef | grep redis
    root 7950 1 0 12:50 ? 00:02:05 ./redis-server 127.0.0.1:7001 [cluster]
    root 7956 1 0 12:50 ? 00:02:11 ./redis-server 127.0.0.1:7003 [cluster]
    root 7960 1 0 12:50 ? 00:01:47 ./redis-server 127.0.0.1:7004 [cluster]
    root 7964 1 0 12:50 ? 00:02:07 ./redis-server 127.0.0.1:7005 [cluster]
    root 7966 1 0 12:50 ? 00:01:46 ./redis-server 127.0.0.1:7006 [cluster]
    root 12070 1 0 15:14 ? 00:01:08 ./redis-server 127.0.0.1:7002 [cluster]
    root 13441 1 0 16:09 ? 00:01:25 ./redis-server 127.0.0.1:7007 [cluster]
    root 15939 1 0 17:41 ? 00:00:20 ./redis-server 127.0.0.1:7008 [cluster]
    root 16623 1 0 18:07 ? 00:00:10 ./redis-server 127.0.0.1:7009 [cluster]
    root 17295 10581 0 18:37 pts/2 00:00:00 grep —color=auto redis
    [root@localhost redis-cluster]# kill -9 13441
    [root@localhost redis-cluster]# cd ./redis08
    [root@localhost redis08]# ./redis-cli -c -p 7008
    127.0.0.1:7008> get name
    -> Redirected to slot [5798] located at 127.0.0.1:7009
    “andy”
    127.0.0.1:7009> cluster nodes
    ee3efb90e5ac0725f15238a64fc60a18a71205d7 127.0.0.1:7007 master,fail - 1462963082317 1462963080194 8 disconnected
    50ce1ea59106b4c2c6bc502593a6a7a7dabf5041 127.0.0.1:7004 slave dd19221c404fb2fc4da37229de56bab755c76f2b 0 1462963170968 1 connected
    f9886c71e98a53270f7fda961e1c5f730382d48f 127.0.0.1:7003 master - 0 1462963168525 3 connected 12288-16383
    dd19221c404fb2fc4da37229de56bab755c76f2b 127.0.0.1:7001 master - 0 1462963164466 1 connected 1365-5460
    2ab1b061c36f30ae35604e9a171ae3afdc3c87e5 127.0.0.1:7008 slave 1f51443ede952b98724fea2a12f61fe710ab6cb1 0 1462963167508 9 connected
    1f51443ede952b98724fea2a12f61fe710ab6cb1 127.0.0.1:7009 myself,master - 0 0 9 connected 0-1364 5461-6826 10923-12287
    1f07d76585bfab35f91ec711ac53ab4bc00f2d3a 127.0.0.1:7002 slave a5db243087d8bd423b9285fa8513eddee9bb59a6 0 1462963170564 7 connected
    8bb3ede48319b46d0015440a91ab277da9353c8b 127.0.0.1:7006 slave f9886c71e98a53270f7fda961e1c5f730382d48f 0 1462963167915 3 connected
    a5db243087d8bd423b9285fa8513eddee9bb59a6 127.0.0.1:7005 master - 0 1462963169538 7 connected 6827-10922
    127.0.0.1:7009>

  1. 可以看到7009代替7007成了主节点。
  2. 重启7007之后,会自动变成7009的从节点。

[plain] view plain copy

print ?

  1. [root@localhost redis-cluster]# cd redis07
  2. [root@localhost redis07]# ./redis-server redis.conf
  3. [root@localhost redis07]# cd ../
  4. [root@localhost redis-cluster]# ./redis-trib.rb check 127.0.0.1:7007
  5. Performing Cluster Check (using node 127.0.0.1:7007)

  6. S: ee3efb90e5ac0725f15238a64fc60a18a71205d7 127.0.0.1:7007
  7. slots: (0 slots) slave
  8. replicates 1f51443ede952b98724fea2a12f61fe710ab6cb1
  9. S: 50ce1ea59106b4c2c6bc502593a6a7a7dabf5041 127.0.0.1:7004
  10. slots: (0 slots) slave
  11. replicates dd19221c404fb2fc4da37229de56bab755c76f2b
  12. M: 1f51443ede952b98724fea2a12f61fe710ab6cb1 127.0.0.1:7009
  13. slots:0-1364,5461-6826,10923-12287 (4096 slots) master
  14. 2 additional replica(s)
  15. S: 8bb3ede48319b46d0015440a91ab277da9353c8b 127.0.0.1:7006
  16. slots: (0 slots) slave
  17. replicates f9886c71e98a53270f7fda961e1c5f730382d48f
  18. M: dd19221c404fb2fc4da37229de56bab755c76f2b 127.0.0.1:7001
  19. slots:1365-5460 (4096 slots) master
  20. 1 additional replica(s)
  21. M: a5db243087d8bd423b9285fa8513eddee9bb59a6 127.0.0.1:7005
  22. slots:6827-10922 (4096 slots) master
  23. 1 additional replica(s)
  24. S: 1f07d76585bfab35f91ec711ac53ab4bc00f2d3a 127.0.0.1:7002
  25. slots: (0 slots) slave
  26. replicates a5db243087d8bd423b9285fa8513eddee9bb59a6
  27. M: f9886c71e98a53270f7fda961e1c5f730382d48f 127.0.0.1:7003
  28. slots:12288-16383 (4096 slots) master
  29. 1 additional replica(s)
  30. S: 2ab1b061c36f30ae35604e9a171ae3afdc3c87e5 127.0.0.1:7008
  31. slots: (0 slots) slave
  32. replicates 1f51443ede952b98724fea2a12f61fe710ab6cb1
  33. [OK] All nodes agree about slots configuration.
  34. Check for open slots…

  35. Check slots coverage…

  36. [OK] All 16384 slots covered.
  37. [root@localhost redis-cluster]#

    [root@localhost redis-cluster]# cd redis07
    [root@localhost redis07]# ./redis-server redis.conf
    [root@localhost redis07]# cd ../
    [root@localhost redis-cluster]# ./redis-trib.rb check 127.0.0.1:7007

    Performing Cluster Check (using node 127.0.0.1:7007)
    S: ee3efb90e5ac0725f15238a64fc60a18a71205d7 127.0.0.1:7007
    slots: (0 slots) slave
    replicates 1f51443ede952b98724fea2a12f61fe710ab6cb1
    S: 50ce1ea59106b4c2c6bc502593a6a7a7dabf5041 127.0.0.1:7004
    slots: (0 slots) slave
    replicates dd19221c404fb2fc4da37229de56bab755c76f2b
    M: 1f51443ede952b98724fea2a12f61fe710ab6cb1 127.0.0.1:7009
    slots:0-1364,5461-6826,10923-12287 (4096 slots) master
    2 additional replica(s)
    S: 8bb3ede48319b46d0015440a91ab277da9353c8b 127.0.0.1:7006
    slots: (0 slots) slave
    replicates f9886c71e98a53270f7fda961e1c5f730382d48f
    M: dd19221c404fb2fc4da37229de56bab755c76f2b 127.0.0.1:7001
    slots:1365-5460 (4096 slots) master
    1 additional replica(s)
    M: a5db243087d8bd423b9285fa8513eddee9bb59a6 127.0.0.1:7005
    slots:6827-10922 (4096 slots) master
    1 additional replica(s)
    S: 1f07d76585bfab35f91ec711ac53ab4bc00f2d3a 127.0.0.1:7002
    slots: (0 slots) slave
    replicates a5db243087d8bd423b9285fa8513eddee9bb59a6
    M: f9886c71e98a53270f7fda961e1c5f730382d48f 127.0.0.1:7003
    slots:12288-16383 (4096 slots) master
    1 additional replica(s)
    S: 2ab1b061c36f30ae35604e9a171ae3afdc3c87e5 127.0.0.1:7008
    slots: (0 slots) slave
    replicates 1f51443ede952b98724fea2a12f61fe710ab6cb1
    [OK] All nodes agree about slots configuration.
    Check for open slots…
    Check slots coverage…
    [OK] All 16384 slots covered.
    [root@localhost redis-cluster]#

  1. 验证了之前的测试。

六、节点的移除

和节点添加一样,移除节点也有移除主节点,从节点。

1、移除主节点

  1. 移除节点使用redis-tribdel-node命令,

[plain] view plain copy

print ?

  1. redis-trib del-node 127.0.0.1:7002 ${node-id}

    redis-trib del-node 127.0.0.1:7002 ${node-id}

  1. 127.0.0.1:7002位集群节点,node-id为要删除的主节点。 和添加节点不同,移除节点node-id是必需的,测试删除7001主节点:

[plain] view plain copy

print ?

  1. [root@localhost redis-cluster]# ./redis-trib.rb del-node 127.0.0.1:7001 dd19221c404fb2fc4da37229de56bab755c76f2b
  2. Removing node dd19221c404fb2fc4da37229de56bab755c76f2b from cluster 127.0.0.1:7002

  3. [ERR] Node 127.0.0.1:7001 is not empty! Reshard data away and try again.
  4. [root@localhost redis-cluster]#

    [root@localhost redis-cluster]# ./redis-trib.rb del-node 127.0.0.1:7001 dd19221c404fb2fc4da37229de56bab755c76f2b

    Removing node dd19221c404fb2fc4da37229de56bab755c76f2b from cluster 127.0.0.1:7002
    [ERR] Node 127.0.0.1:7001 is not empty! Reshard data away and try again.
    [root@localhost redis-cluster]#

redis cluster提示7001已经有数据了,不能够被删除,需要将他的数据转移出去,也就是和新增主节点一样需重新分片。

[plain] view plain copy

print ?

  1. [root@localhost redis-cluster]# ./redis-trib.rb reshard 127.0.0.1:7002

    [root@localhost redis-cluster]# ./redis-trib.rb reshard 127.0.0.1:7002

执行以后会提示我们移除的大小,因为7001占用了4096个槽点

[plain] view plain copy

print ?

  1. Check for open slots…

  2. Check slots coverage…

  3. [OK] All 16384 slots covered.
  4. How many slots do you want to move (from 1 to 16384)?

    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

提示移动的node id,填写7009的node id。

[plain] view plain copy

print ?

  1. How many slots do you want to move (from 1 to 16384)? 4096
  2. What is the receiving node ID?

    How many slots do you want to move (from 1 to 16384)? 4096
    What is the receiving node ID?

需要移动到全部主节点上还是单个主节点

[plain] view plain copy

print ?

  1. Please enter all the source node IDs.
  2. Type ‘all’ to use all the nodes as source nodes for the hash slots.
  3. Type ‘done’ once you entered all the source nodes IDs.
  4. Source node #1:

    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:

将4096个槽点移动到7009上,填写7001的node id :dd19221c404fb2fc4da37229de56bab755c76f2b

[plain] view plain copy

print ?

  1. Source node #1:dd19221c404fb2fc4da37229de56bab755c76f2b
  2. Source node #2:done
  3. Do you want to proceed with the proposed reshard plan (yes/no)? yes

    Source node #1:dd19221c404fb2fc4da37229de56bab755c76f2b
    Source node #2:done
    Do you want to proceed with the proposed reshard plan (yes/no)? yes

确认之后会一个一个将7001的卡槽移到到7009上。

[plain] view plain copy

print ?

  1. [root@localhost redis-cluster]# ./redis-trib.rb check 127.0.0.1:7009
  2. Performing Cluster Check (using node 127.0.0.1:7009)

  3. M: 1f51443ede952b98724fea2a12f61fe710ab6cb1 127.0.0.1:7009
  4. slots:0-6826,10923-12287 (8192 slots) master
  5. 3 additional replica(s)
  6. S: ee3efb90e5ac0725f15238a64fc60a18a71205d7 127.0.0.1:7007
  7. slots: (0 slots) slave
  8. replicates 1f51443ede952b98724fea2a12f61fe710ab6cb1
  9. S: 50ce1ea59106b4c2c6bc502593a6a7a7dabf5041 127.0.0.1:7004
  10. slots: (0 slots) slave
  11. replicates 1f51443ede952b98724fea2a12f61fe710ab6cb1
  12. M: f9886c71e98a53270f7fda961e1c5f730382d48f 127.0.0.1:7003
  13. slots:12288-16383 (4096 slots) master
  14. 1 additional replica(s)
  15. M: dd19221c404fb2fc4da37229de56bab755c76f2b 127.0.0.1:7001
  16. slots: (0 slots) master
  17. 0 additional replica(s)
  18. S: 2ab1b061c36f30ae35604e9a171ae3afdc3c87e5 127.0.0.1:7008
  19. slots: (0 slots) slave
  20. replicates 1f51443ede952b98724fea2a12f61fe710ab6cb1
  21. S: 1f07d76585bfab35f91ec711ac53ab4bc00f2d3a 127.0.0.1:7002
  22. slots: (0 slots) slave
  23. replicates a5db243087d8bd423b9285fa8513eddee9bb59a6
  24. S: 8bb3ede48319b46d0015440a91ab277da9353c8b 127.0.0.1:7006
  25. slots: (0 slots) slave
  26. replicates f9886c71e98a53270f7fda961e1c5f730382d48f
  27. M: a5db243087d8bd423b9285fa8513eddee9bb59a6 127.0.0.1:7005
  28. slots:6827-10922 (4096 slots) master
  29. 1 additional replica(s)
  30. [OK] All nodes agree about slots configuration.
  31. Check for open slots…

  32. Check slots coverage…

  33. [OK] All 16384 slots covered.
  34. [root@localhost redis-cluster]#

    [root@localhost redis-cluster]# ./redis-trib.rb check 127.0.0.1:7009

    Performing Cluster Check (using node 127.0.0.1:7009)
    M: 1f51443ede952b98724fea2a12f61fe710ab6cb1 127.0.0.1:7009
    slots:0-6826,10923-12287 (8192 slots) master
    3 additional replica(s)
    S: ee3efb90e5ac0725f15238a64fc60a18a71205d7 127.0.0.1:7007
    slots: (0 slots) slave
    replicates 1f51443ede952b98724fea2a12f61fe710ab6cb1
    S: 50ce1ea59106b4c2c6bc502593a6a7a7dabf5041 127.0.0.1:7004
    slots: (0 slots) slave
    replicates 1f51443ede952b98724fea2a12f61fe710ab6cb1
    M: f9886c71e98a53270f7fda961e1c5f730382d48f 127.0.0.1:7003
    slots:12288-16383 (4096 slots) master
    1 additional replica(s)
    M: dd19221c404fb2fc4da37229de56bab755c76f2b 127.0.0.1:7001
    slots: (0 slots) master
    0 additional replica(s)
    S: 2ab1b061c36f30ae35604e9a171ae3afdc3c87e5 127.0.0.1:7008
    slots: (0 slots) slave
    replicates 1f51443ede952b98724fea2a12f61fe710ab6cb1
    S: 1f07d76585bfab35f91ec711ac53ab4bc00f2d3a 127.0.0.1:7002
    slots: (0 slots) slave
    replicates a5db243087d8bd423b9285fa8513eddee9bb59a6
    S: 8bb3ede48319b46d0015440a91ab277da9353c8b 127.0.0.1:7006
    slots: (0 slots) slave
    replicates f9886c71e98a53270f7fda961e1c5f730382d48f
    M: a5db243087d8bd423b9285fa8513eddee9bb59a6 127.0.0.1:7005
    slots:6827-10922 (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.
    [root@localhost redis-cluster]#

  1. 可以看到70010个卡槽,而70098192个卡槽。
  2. 在执行移除操作

[plain] view plain copy

print ?

  1. [root@localhost redis-cluster]# ./redis-trib.rb del-node 127.0.0.1:7002 dd19221c404fb2fc4da37229de56bab755c76f2b
  2. Removing node dd19221c404fb2fc4da37229de56bab755c76f2b from cluster 127.0.0.1:7002

  3. Sending CLUSTER FORGET messages to the cluster…

  4. SHUTDOWN the node.

  5. [root@localhost redis-cluster]#

    [root@localhost redis-cluster]# ./redis-trib.rb del-node 127.0.0.1:7002 dd19221c404fb2fc4da37229de56bab755c76f2b

    Removing node dd19221c404fb2fc4da37229de56bab755c76f2b from cluster 127.0.0.1:7002
    Sending CLUSTER FORGET messages to the cluster…
    SHUTDOWN the node.
    [root@localhost redis-cluster]#

  1. 已经删除了7001节点。

[plain] view plain copy

print ?

  1. [root@localhost redis-cluster]# ./redis-trib.rb check 127.0.0.1:7001
  2. [ERR] Sorry, can’t connect to node 127.0.0.1:7001
  3. [root@localhost redis-cluster]# ./redis-trib.rb check 127.0.0.1:7009
  4. Performing Cluster Check (using node 127.0.0.1:7009)

  5. M: 1f51443ede952b98724fea2a12f61fe710ab6cb1 127.0.0.1:7009
  6. slots:0-6826,10923-12287 (8192 slots) master
  7. 3 additional replica(s)
  8. S: ee3efb90e5ac0725f15238a64fc60a18a71205d7 127.0.0.1:7007
  9. slots: (0 slots) slave
  10. replicates 1f51443ede952b98724fea2a12f61fe710ab6cb1
  11. S: 50ce1ea59106b4c2c6bc502593a6a7a7dabf5041 127.0.0.1:7004
  12. slots: (0 slots) slave
  13. replicates 1f51443ede952b98724fea2a12f61fe710ab6cb1
  14. M: f9886c71e98a53270f7fda961e1c5f730382d48f 127.0.0.1:7003
  15. slots:12288-16383 (4096 slots) master
  16. 1 additional replica(s)
  17. S: 2ab1b061c36f30ae35604e9a171ae3afdc3c87e5 127.0.0.1:7008
  18. slots: (0 slots) slave
  19. replicates 1f51443ede952b98724fea2a12f61fe710ab6cb1
  20. S: 1f07d76585bfab35f91ec711ac53ab4bc00f2d3a 127.0.0.1:7002
  21. slots: (0 slots) slave
  22. replicates a5db243087d8bd423b9285fa8513eddee9bb59a6
  23. S: 8bb3ede48319b46d0015440a91ab277da9353c8b 127.0.0.1:7006
  24. slots: (0 slots) slave
  25. replicates f9886c71e98a53270f7fda961e1c5f730382d48f
  26. M: a5db243087d8bd423b9285fa8513eddee9bb59a6 127.0.0.1:7005
  27. slots:6827-10922 (4096 slots) master
  28. 1 additional replica(s)
  29. [OK] All nodes agree about slots configuration.
  30. Check for open slots…

  31. Check slots coverage…

  32. [OK] All 16384 slots covered.
  33. [root@localhost redis-cluster]#

    [root@localhost redis-cluster]# ./redis-trib.rb check 127.0.0.1:7001
    [ERR] Sorry, can’t connect to node 127.0.0.1:7001
    [root@localhost redis-cluster]# ./redis-trib.rb check 127.0.0.1:7009

    Performing Cluster Check (using node 127.0.0.1:7009)
    M: 1f51443ede952b98724fea2a12f61fe710ab6cb1 127.0.0.1:7009
    slots:0-6826,10923-12287 (8192 slots) master
    3 additional replica(s)
    S: ee3efb90e5ac0725f15238a64fc60a18a71205d7 127.0.0.1:7007
    slots: (0 slots) slave
    replicates 1f51443ede952b98724fea2a12f61fe710ab6cb1
    S: 50ce1ea59106b4c2c6bc502593a6a7a7dabf5041 127.0.0.1:7004
    slots: (0 slots) slave
    replicates 1f51443ede952b98724fea2a12f61fe710ab6cb1
    M: f9886c71e98a53270f7fda961e1c5f730382d48f 127.0.0.1:7003
    slots:12288-16383 (4096 slots) master
    1 additional replica(s)
    S: 2ab1b061c36f30ae35604e9a171ae3afdc3c87e5 127.0.0.1:7008
    slots: (0 slots) slave
    replicates 1f51443ede952b98724fea2a12f61fe710ab6cb1
    S: 1f07d76585bfab35f91ec711ac53ab4bc00f2d3a 127.0.0.1:7002
    slots: (0 slots) slave
    replicates a5db243087d8bd423b9285fa8513eddee9bb59a6
    S: 8bb3ede48319b46d0015440a91ab277da9353c8b 127.0.0.1:7006
    slots: (0 slots) slave
    replicates f9886c71e98a53270f7fda961e1c5f730382d48f
    M: a5db243087d8bd423b9285fa8513eddee9bb59a6 127.0.0.1:7005
    slots:6827-10922 (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.
    [root@localhost redis-cluster]#

可以看到7001已经连接不了;而7001的从节点7004自动分配到了7009主节点中,7009现在3个从节点。

2、移除从节点

  1. 比如删除70097008节点:

[plain] view plain copy

print ?

  1. [root@localhost redis-cluster]# ./redis-trib.rb del-node 127.0.0.1:7009 2ab1b061c36f30ae35604e9a171ae3afdc3c87e5
  2. Removing node 2ab1b061c36f30ae35604e9a171ae3afdc3c87e5 from cluster 127.0.0.1:7009

  3. Sending CLUSTER FORGET messages to the cluster…

  4. SHUTDOWN the node.

  5. [root@localhost redis-cluster]# ./redis-trib.rb check 127.0.0.1:7008
  6. [ERR] Sorry, can’t connect to node 127.0.0.1:7008
  7. [root@localhost redis-cluster]#

    [root@localhost redis-cluster]# ./redis-trib.rb del-node 127.0.0.1:7009 2ab1b061c36f30ae35604e9a171ae3afdc3c87e5

    Removing node 2ab1b061c36f30ae35604e9a171ae3afdc3c87e5 from cluster 127.0.0.1:7009
    Sending CLUSTER FORGET messages to the cluster…
    SHUTDOWN the node.
    [root@localhost redis-cluster]# ./redis-trib.rb check 127.0.0.1:7008
    [ERR] Sorry, can’t connect to node 127.0.0.1:7008
    [root@localhost redis-cluster]#

  1. 删除从节点比较方便,现在redis-cluster中有3个主节点,4个从节点,如下:

[plain] view plain copy

print ?

  1. [root@localhost redis-cluster]# ./redis-trib.rb check 127.0.0.1:7009
  2. Performing Cluster Check (using node 127.0.0.1:7009)

  3. M: 1f51443ede952b98724fea2a12f61fe710ab6cb1 127.0.0.1:7009
  4. slots:0-6826,10923-12287 (8192 slots) master
  5. 2 additional replica(s)
  6. S: ee3efb90e5ac0725f15238a64fc60a18a71205d7 127.0.0.1:7007
  7. slots: (0 slots) slave
  8. replicates 1f51443ede952b98724fea2a12f61fe710ab6cb1
  9. S: 50ce1ea59106b4c2c6bc502593a6a7a7dabf5041 127.0.0.1:7004
  10. slots: (0 slots) slave
  11. replicates 1f51443ede952b98724fea2a12f61fe710ab6cb1
  12. M: f9886c71e98a53270f7fda961e1c5f730382d48f 127.0.0.1:7003
  13. slots:12288-16383 (4096 slots) master
  14. 1 additional replica(s)
  15. S: 1f07d76585bfab35f91ec711ac53ab4bc00f2d3a 127.0.0.1:7002
  16. slots: (0 slots) slave
  17. replicates a5db243087d8bd423b9285fa8513eddee9bb59a6
  18. S: 8bb3ede48319b46d0015440a91ab277da9353c8b 127.0.0.1:7006
  19. slots: (0 slots) slave
  20. replicates f9886c71e98a53270f7fda961e1c5f730382d48f
  21. M: a5db243087d8bd423b9285fa8513eddee9bb59a6 127.0.0.1:7005
  22. slots:6827-10922 (4096 slots) master
  23. 1 additional replica(s)
  24. [OK] All nodes agree about slots configuration.
  25. Check for open slots…

  26. Check slots coverage…

  27. [OK] All 16384 slots covered.
  28. [root@localhost redis-cluster]#

    [root@localhost redis-cluster]# ./redis-trib.rb check 127.0.0.1:7009

    Performing Cluster Check (using node 127.0.0.1:7009)
    M: 1f51443ede952b98724fea2a12f61fe710ab6cb1 127.0.0.1:7009
    slots:0-6826,10923-12287 (8192 slots) master
    2 additional replica(s)
    S: ee3efb90e5ac0725f15238a64fc60a18a71205d7 127.0.0.1:7007
    slots: (0 slots) slave
    replicates 1f51443ede952b98724fea2a12f61fe710ab6cb1
    S: 50ce1ea59106b4c2c6bc502593a6a7a7dabf5041 127.0.0.1:7004
    slots: (0 slots) slave
    replicates 1f51443ede952b98724fea2a12f61fe710ab6cb1
    M: f9886c71e98a53270f7fda961e1c5f730382d48f 127.0.0.1:7003
    slots:12288-16383 (4096 slots) master
    1 additional replica(s)
    S: 1f07d76585bfab35f91ec711ac53ab4bc00f2d3a 127.0.0.1:7002
    slots: (0 slots) slave
    replicates a5db243087d8bd423b9285fa8513eddee9bb59a6
    S: 8bb3ede48319b46d0015440a91ab277da9353c8b 127.0.0.1:7006
    slots: (0 slots) slave
    replicates f9886c71e98a53270f7fda961e1c5f730382d48f
    M: a5db243087d8bd423b9285fa8513eddee9bb59a6 127.0.0.1:7005
    slots:6827-10922 (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.
    [root@localhost redis-cluster]#

ok,测试到这儿吧。

发表评论

表情:
评论列表 (有 0 条评论,264人围观)

还没有评论,来说两句吧...

相关阅读

    相关 redis-cluster

    今天简单介绍一下redis-cluster集群搭建。 redis 最开始的时候,为了实现高可用,使用的主从模式,主从的模式的缺点是,一旦主挂了,没有办法自动的将“从 ”切换为“