Redis Cluster集群安装配置详解+集群扩容与缩容操作

简介

Redis Cluster是一个高性能高可用的分布式系统。由多个Redis实例组成的整体。
Redis Cluster集群功能在3.0版本后推出,Redis具有了真正的分布式能力,某个结点挂了的话,因为数据在其他结点上有备份,所以其他结点顶上来就可以继续提供服务,保证了Availability。集群中nodes负责存储数据,保持集群的状态,包括keys与nodes的对应关系(内部其实为slots与nodes对应关系)。nodes也能够自动发现其他的nodes,检测失效的节点,当某个master失效时还应该能将合适的slave提升为master。

Redis Cluster的安装

1)环境准备

机器1     centos7                 192.168.0.217
机器2     centos7                 192.168.0.111
机器3    centos7                  192.168.0.112
这里采用三台机器,一台机器两个节点一主一从,通过6个不同的端口启动六个redis,3主3从的模式
也可使用两台机器,一台机器3个节点,创建出3 master、3 salve 环境

2)下载 Redis 并编译安装源码包

首先在机器1上部署两个不同端口的 Redis:192.168.0.217
步骤:下载-->解压-->进入目录-->编译

#  wget http://download.redis.io/releases/redis-4.0.10.tar.gz    
#  tar -xzvf redis-4.0.10.tar.gz -C /usr/local/                              
#  cd /usr/local/redis-4.0.10/                                                     
#  make &&make install                                         

报错问题解决:

问题一:
make[3]: gcc: Command not found
make[3]: *** [net.o] Error 127
make[3]: Leaving directory `/usr/local/tmp/redis-4.0.10/deps/hiredis'
make[2]: *** [hiredis] Error 2
make[2]: Leaving directory `/usr/local/tmp/redis-4.0.10/deps'
make[1]: [persist-settings] Error 2 (ignored)
    CC adlist.o
/bin/sh: cc: command not found
make[1]: *** [adlist.o] Error 127
make[1]: Leaving directory `/usr/local/tmp/redis-4.0.10/src'
make: *** [install] Error 2
———————————————
解决:make 编译 Redis 源码包时,需要用到 gcc 插件,我们安装上 gcc 插件即可
#yum -y install gcc gcc-c++
问题二:
In file included from adlist.c:34:0:
zmalloc.h:50:31: fatal error: jemalloc/jemalloc.h: No such file or directory
 #include 
                               ^
compilation terminated.
make[1]: *** [adlist.o] Error 1
make[1]: Leaving directory `/usr/local/tmp/redis-4.0.10/src'
make: *** [install] Error 2
————————————————
解决:原因是 jemalloc 重载了Linux下的 ANSIC 的 malloc 和 free 函数。解决办法:make 时添加参数。
#make MALLOC=libc  install

3)创建 Redis 节点

mkdir  /usr/local/redis-4.0.10/redis_cluster    #创建集群目录 
cd /usr/local/redis-4.0.10/redis_cluster        #进入目录       
cp ../redis.conf redis-7000.conf                #复制配置文件  
cp ../redis.conf redis-7000.conf                #复制配置文件  

4)分别修改配置文件,修改如下内容

port  7000                                        //端口7000,7001    
bind 本机ip                                       //默认ip为127.0.0.1 需要改为其他节点机器可访问的ip 否则创建集群时无法访问对应的端口,无法创建集群
daemonize    yes                               //redis后台运行
pidfile  /var/run/redis_7000.pid          //pidfile文件对应7000,7001
cluster-enabled  yes                           //开启集群  把注释#去掉
cluster-config-file  nodes_7000.conf   //集群的配置  配置文件首次启动自动生成 7000,7001
cluster-node-timeout  15000                //请求超时  默认15秒,可自行设置
appendonly  yes                           //aof日志开启  有需要就开启,它会每次写操作都记录一条日志 

接着在另外两台机器上(192.168.0.111)(192.168.0.112),的操作重复以上三步,只是把目录改为7002、7003、7004、7005,对应的配置文件也按照这个规则修改即可

5)启动各个节点

第一台机器上执行
redis-server /usr/local/redis-4.0.10/redis_cluster/redis-7000.conf
redis-server /usr/local/redis-4.0.10/redis_cluster/redis-7001.conf

第二台机器上执行
redis-server /usr/local/redis-4.0.10/redis_cluster/redis-7002.conf
 redis-server /usr/local/redis-4.0.10/redis_cluster/redis-7003.conf

第三台机器上执行
redis-server /usr/local/redis-4.0.10/redis_cluster/redis-7004.conf
redis-server /usr/local/redis-4.0.10/redis_cluster/redis-7005.conf 

6)检查 redis 启动情况

机器1:
[root@localhost src]# ps -ef | grep redis
root      79518      1  0 09:36 ?        00:00:00 ./redis-server 192.168.0.217:7000 [cluster]
root      79529      1  0 09:36 ?        00:00:00 ./redis-server 192.168.0.217:7001 [cluster]
root      79871   3174  0 09:42 pts/0    00:00:00 grep --color=auto redis
机器2:
[root@dev01 src]# ps -ef | grep redis
root       3499      1  0 09:41 ?        00:00:00 ./redis-server 192.168.0.111:7002 [cluster]
root       3504      1  0 09:41 ?        00:00:00 ./redis-server 192.168.0.111:7003 [cluster]
root       3509   1330  0 09:42 pts/1    00:00:00 grep --color=auto redis
机器3:
[root@dev02 src]# ps -ef | grep redis
root       8426      1  0 09:41 ?        00:00:00 ./redis-server 192.168.0.112:7004 [cluster]
root       8431      1  0 09:41 ?        00:00:00 ./redis-server 192.168.0.112:7005 [cluster]
root       8436   7790  0 09:42 pts/4    00:00:00 grep --color=auto redis

创建集群

Redis 官方提供了 redis-trib.rb 这个工具,使用下面这个命令即可完成安装。

redis-trib.rb  create  --replicas  1  192.168.0.217:7000 192.168.0.217:7001  192.168.0.111:7002 192.168.0.111:7003  192.168.0.112:7004  192.168.0.112:7005

--replicas参数指定集群中每个主节点配备几个从节点,这里设置为1。
其中,前两个 ip:port 为第一台机器的节点,中间为第二台机器的ip:port,最后为第三台机器的ip:port。
这个工具是用 ruby 实现的,所以需要安装 ruby。安装命令如下:

方法一: yum安装

yum -y install ruby ruby-devel rubygems rpm-build
gem install redis
发现报错:
[root@dev01 profile.d]# gem install redis
Fetching: redis-4.1.3.gem (100%)
ERROR:  Error installing redis:
        redis requires Ruby version >= 2.3.0.
因为CentOS7 yum库中ruby的版本支持到 2.0.0,但是gem安装redis需要最低是2.3.0,采用rvm来更新ruby (建议采用方法二)
解决方法:
1.安装curl
yum -y install curl
2.安装rvm(注意,过程可能有点久)
gpg2 --keyserver hkp://keys.gnupg.net --recv-keys D39DC0E3  
curl -L get.rvm.io | bash -s stable   
如果遇到以下报错:
gpg: 无法检查签名:没有公钥
执行:
gpg2 --keyserver hkp://pool.sks-keyservers.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
然后进行第二步安装rvm
3.修改 rvm下载 ruby的源,到 Ruby China 的镜像
gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/
4.查看rvm库中已知的ruby版本
rvm list known
5.安装一个ruby版本
rvm install 2.3.3
6. 使用一个ruby版本
rvm use 2.3.3
7.设置默认版本
rvm use 2.3.3 --default
8.卸载一个已知版本
rvm remove 2.0.0
9.查看ruby版本
ruby --version
10.继续安装Redis的
gem install redis

之后再运行 redis-trib.rb 命令,启动集群:
[root@dev01 profile.d]# cd /usr/local/redis-4.0.10/src/
[root@dev01 src]# ./redis-trib.rb  create  --replicas  1  192.168.0.217:7000 192.168.0.217:7001  192.168.0.111:7002 192.168.0.111:7003  192.168.0.112:7004  192.168.0.112:7005                    

如图所示,这样就代表集群创建成功:


Redis Cluster集群安装配置详解+集群扩容与缩容操作_第1张图片
image.png

方法二: 编译安装

1)安装ruby前置库,安装依赖
yum install zlib-devel -y
yum install  openssl-devel  zlib-devel  -y
2)安装ruby
下载:wget https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.7.tar.gz
解压到特定目录:tar -zxvf ruby-2.3.7.tar.gz -C /usr/local
进入目录:cd /usr/local/ruby-2.3.7
创建目录:mkdir /usr/local/ruby
配置:./configure --prefix=/usr/local/ruby(把解压的源文件放在/usr/local/ruby)
编译:make
安装:make install
进入目录:cd /usr/local/ruby
把ruby、gem添加到环境变量中:
cd /etc/profile.d/
vim ruby.sh
export RUBY_HOME=/usr/local/ruby
export PATH=$RUBY_HOME/bin:$PATH
保存退出
source /etc/profile
如出现以下信息,说明安装成功:
[root@dev02 profile.d]# ruby -v
ruby 2.3.7p456 (2018-03-28 revision 63024) [x86_64-linux]
[root@dev02 profile.d]# gem -v
2.5.2.3
3)安装ruby的redis的客户端
下载:wget https://rubygems.org/downloads/redis-4.0.1.gem
安装:gem install -l redis-4.0.1.gem,看到如下,成功

[root@dev02 soft]# gem install -l redis-4.0.1.gem
Successfully installed redis-4.0.1
Parsing documentation for redis-4.0.1
Installing ri documentation for redis-4.0.1
Done installing documentation for redis after 1 seconds
1 gem installed
4)校验安装

gem list -- check redis gem


Redis Cluster集群安装配置详解+集群扩容与缩容操作_第2张图片
image.png

之后再运行 redis-trib.rb 命令,启动集群:

[root@dev01 profile.d]# cd /usr/local/redis-4.0.10/src/
[root@dev01 src]# ./redis-trib.rb  create  --replicas  1  192.168.0.217:7000 192.168.0.217:7001  192.168.0.111:7002 192.168.0.111:7003  192.168.0.112:7004  192.168.0.112:7005   

查看集群状态:

[root@dev02 src]# ./redis-cli -p 7000 -h 192.168.0.217 cluster info  
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:3
cluster_current_epoch:7
cluster_my_epoch:1
cluster_stats_messages_ping_sent:13772
cluster_stats_messages_pong_sent:12088
cluster_stats_messages_fail_sent:20
cluster_stats_messages_auth-ack_sent:1
cluster_stats_messages_sent:25881
cluster_stats_messages_ping_received:12083
cluster_stats_messages_pong_received:13314
cluster_stats_messages_meet_received:5
cluster_stats_messages_fail_received:4
cluster_stats_messages_auth-req_received:1
cluster_stats_messages_received:25407

集群验证

在第一台机器上连接集群的7000端口的节点,在另外一台连接7005节点,
连接方式为 redis-cli -h 192.168.0.217 -c -p 7000 ,加参数 -C 可连接到集群,因为上面 redis.conf 将 bind 改为了ip地址,所以 -h 参数不可以省略。

在7005节点执行命令  set hello world ,执行结果如下:
[root@dev02 src]#  ./redis-cli  -h 192.168.0.112 -c -p 7005
192.168.0.112:7005> set hello world
-> Redirected to slot [866] located at 192.168.0.217:7000
OK
192.168.0.217:7000> get hello
"world"
192.168.0.217:7000> 

然后在另外一台7001端口,查看 key 为 hello 的内容, get hello  ,执行结果如下:
[root@localhost src]# ./redis-cli  -h 192.168.0.217 -c -p 7001
192.168.0.217:7001> get hello
-> Redirected to slot [866] located at 192.168.0.217:7000
"world"
192.168.0.217:7000> 

说明集群运作正常。

简单说一下原理

redis cluster在设计的时候,就考虑到了去中心化,去中间件,也就是说,集群中的每个节点都是平等的关系,都是对等的,每个节点都保存各自的数据和整个集群的状态。每个节点都和其他所有节点连接,而且这些连接保持活跃,这样就保证了我们只需要连接集群中的任意一个节点,就可以获取到其他节点的数据。

Redis 集群没有并使用传统的一致性哈希来分配数据,而是采用另外一种叫做哈希槽 (hash slot)的方式来分配的。redis cluster 默认分配了 16384 个slot,当我们set一个key 时,会用CRC16算法来取模得到所属的slot,然后将这个key 分到哈希槽区间的节点上,具体算法就是:CRC16(key) % 16384。所以我们在测试的时候看到set 和 get 的时候,直接跳转到了7000端口的节点。

Redis 集群会把数据存在一个 master 节点,然后在这个 master 和其对应的salve 之间进行数据同步。当读取数据时,也根据一致性哈希算法到对应的 master 节点获取数据。只有当一个master 挂掉之后,才会启动一个对应的 salve 节点,充当 master 。

需要注意的是:必须要3个或以上的主节点,否则在创建集群时会失败,并且当存活的主节点数小于总节点数的一半时,整个集群就无法提供服务了。

redis集群伸缩实践redis-cluster伸缩(槽和数据在节点之间的移动)

场景:redis集群由于各种原因,可能需要下线机器,例如某台机器经常故障,需要换掉;例如某些时间段不需要那么多机器,都可以下线机器。某些时刻又需要增加机器。

槽的概念

Redis Cluster中有一个16384长度的槽的概念,他们的编号为0、1、2、3……16382、16383。这个槽是一个虚拟的槽,并不是真正存在的。正常工作的时候,Redis Cluster中的每个Master节点都会负责一部分的槽,当有某个key被映射到某个Master负责的槽,那么这个Master负责为这个key提供服务,至于哪个Master节点负责哪个槽,这是可以由用户指定的,也可以在初始化的时候自动生成(redis-trib.rb脚本)。这里值得一提的是,在Redis Cluster中,只有Master才拥有槽的所有权,如果是某个Master的slave,这个slave只负责槽的使用,但是没有所有权。

增加节点,集群扩容操作:

需要提前准备好新节点并运行在集群模式下,新节点建议跟集群内的节点配置保持一致,便于管理统一

前面已经配置好了三主三从的redis集群

准备新机器,增加新节点:
redis-7006.conf
redis-7007.conf
启动节点
[root@localhost src]# ./redis-server /usr/local/redis-4.0.10/redis_cluster/redis-7006.conf 
[root@localhost src]# ./redis-server /usr/local/redis-4.0.10/redis_cluster/redis-7007.conf
1)加入集群
方法一:登录任意一个集群节点,进行cluster meet操作
[root@dev02 src]#  ./redis-cli  -h 192.168.0.217 -c -p 7001
192.168.0.217:7001> cluster meet 192.168.0.187 7006 
OK
192.168.0.217:7001> cluster meet 192.168.0.187 7007   
OK
在任意节点执行cluster nodes可以看到
192.168.0.217:7001> cluster nodes
c22a455b53b210c251b67cad3218f6a0f23fd5e5 192.168.0.112:7004@17004 slave be724f368494ffbc995f939cff1c51c3800d2f2b 0 1570759904482 7 connected
575e3baaed21ad00dd9b2ddfb2035ece84c14acd 192.168.0.111:7002@17002 master - 0 1570759905000 3 connected 5461-10922
be724f368494ffbc995f939cff1c51c3800d2f2b 192.168.0.217:7001@17001 myself,master - 0 1570759898000 7 connected 10923-16383
413581dd1dff319b3a676deae031e26abb61780d 192.168.0.217:7000@17000 master - 0 1570759904000 1 connected 0-5460
652332f6e1708c3f15384dea3299b7f529677ff0 192.168.0.111:7003@17003 slave 413581dd1dff319b3a676deae031e26abb61780d 0 1570759907511 4 connected
387996ff427a05c74c6cb923725014052a8f605e 192.168.0.187:7006@17006 slave 413581dd1dff319b3a676deae031e26abb61780d 0 1570759905491 1 connected
0bd91df52d5308f420d08b54dedf4815d3831859 192.168.0.187:7007@17007 slave 413581dd1dff319b3a676deae031e26abb61780d 0 1570759906500 1 connected
baefc39247a5af15ac3093bc54d81175df4a785d 192.168.0.112:7005@17005 slave 575e3baaed21ad00dd9b2ddfb2035ece84c14acd 0 1570759905000 6 connected
然后可以做一个主从的分配:
登录要分配的从节点,用cluster replicate +masterID
[root@dev01 src]# ./redis-cli  -h 192.168.0.217 -c -p 7007
192.168.0.217:7007> cluster replicate 16a79c90c81679046159abdd34aff878d7112d38
OK
方法二:可以检测节点是否存在于其他集群。(建议使用)
添加主节点: redis-trib.rb add-node 192.168.0.187:7006 192.168.0.187:7007      
使用 add-node 命令来添加节点,第一个参数是新节点的地址,第二个参数是任意一个已经存在的节点的IP和端口,这样,新节点就会添加到集群中。 (相当于一个meet的过程)

添加从节点: redis-trib.rb add-node –slave 192.168.0.187:7006 192.168.0.187:7007 
这种情况下系统会在其他的集群中的主节点中随机选取一个作为这个从节点的主节点。

选择做谁的从节点:redis-trib.rb add-node 192.168.0.187:7006 192.168.0.187:7007  --slave  --master-id     
 (如果新加的节点是从节点,可以通过这样的参数,选择做谁的从)

问题解决:

1.如果节点一直加不上,检查防火墙等是否关闭
2.[ERR] Node 192.168.0.217:7006 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.
解决:删除相关节点中的appendonly.aof、dump.rdb、node_xxx.conf文件

命令记录:

 ./redis-cli  -h 192.168.0.217  -p 7000 cluster nodes  (查看集群状态)
 ./redis-trib.rb del-node 192.168.0.217:7007 0bd91df52d5308f420d08b54dedf4815d3831859  (删除一个slave节点)
 ./redis-cli  -h 192.168.0.217  -p 7000 cluster slots (查看槽的分配情况)
 ./redis-trib.rb fix 192.168.0.217:7000              (修复槽异常情况)
2)迁移槽和数据
[root@dev01 src]# ./redis-trib.rb   reshard 192.168.0.217:7000
>>> Performing Cluster Check (using node 192.168.0.217:7000)
M: 413581dd1dff319b3a676deae031e26abb61780d 192.168.0.217:7000
   slots:0-5460 (5461 slots) master
   1 additional replica(s)
M: be724f368494ffbc995f939cff1c51c3800d2f2b 192.168.0.217:7001
   slots:10923-16383 (5461 slots) master
   1 additional replica(s)
S: 652332f6e1708c3f15384dea3299b7f529677ff0 192.168.0.111:7003
   slots: (0 slots) slave
   replicates 413581dd1dff319b3a676deae031e26abb61780d
S: e58d7d1705eaed5e48f35d4bad1f226f4b03b2bf 192.168.0.217:7007
   slots: (0 slots) slave
   replicates 16a79c90c81679046159abdd34aff878d7112d38
M: 575e3baaed21ad00dd9b2ddfb2035ece84c14acd 192.168.0.111:7002
   slots:5461-10922 (5462 slots) master
   1 additional replica(s)
S: c22a455b53b210c251b67cad3218f6a0f23fd5e5 192.168.0.112:7004
   slots: (0 slots) slave
   replicates be724f368494ffbc995f939cff1c51c3800d2f2b
M: 16a79c90c81679046159abdd34aff878d7112d38 192.168.0.217:7006
   slots: (0 slots) master
   1 additional replica(s)
S: baefc39247a5af15ac3093bc54d81175df4a785d 192.168.0.112:7005
   slots: (0 slots) slave
   replicates 575e3baaed21ad00dd9b2ddfb2035ece84c14acd
[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?
你需要哪个ID接收?-------->输入新扩容的master的端口的ID

Please enter all the source node IDs.
  Type 'all' to use all the nodes as source nodes for the hash slots.
  Type 'done' once you entered all the source nodes IDs.
输入   all表示使用所有的其他节点作为source ID  ---->输入all

Do you want to proceed with the proposed reshard plan (yes/no)?
是否想要继续这个过程 ----->yes

结束,查看到分片的情况


image.png
问题:
redis 集群重新(reshard)分片故障
[ERR] Calling MIGRATE ERR Syntax error, try CLIENT (LIST | KILL | GETNAME | SETNAME | PAUSE | REPLY)
ruby gem安装的redis库,版本不能使用最新的4.0,否则redis-trib.rb reshard 192.168.0.217:7000 重新分片时会报错误

解决方案
a. 卸载最新redis库,gem uninstall redis
b. 安装3.x版本,gem install redis -v 3.3.5 测试3.2.1到3.3.5都可以,4.x以上的分片报错

 ./redis-trib.rb fix 192.168.0.217:7000  (修复reshard 出错)

集群缩容

1)下线迁移槽
首先查看集群状态
[root@dev01 src]# ./redis-cli  -h 192.168.0.217  -p 7000 cluster nodes 
be724f368494ffbc995f939cff1c51c3800d2f2b 192.168.0.217:7001@17001 master - 0 1570777972000 7 connected 12504-16383
652332f6e1708c3f15384dea3299b7f529677ff0 192.168.0.111:7003@17003 slave 413581dd1dff319b3a676deae031e26abb61780d 0 1570777974325 4 connected
e58d7d1705eaed5e48f35d4bad1f226f4b03b2bf 192.168.0.217:7007@17007 slave 16a79c90c81679046159abdd34aff878d7112d38 0 1570777969000 8 connected
575e3baaed21ad00dd9b2ddfb2035ece84c14acd 192.168.0.111:7002@17002 master - 0 1570777973000 3 connected 8012-10922
c22a455b53b210c251b67cad3218f6a0f23fd5e5 192.168.0.112:7004@17004 slave be724f368494ffbc995f939cff1c51c3800d2f2b 0 1570777973316 7 connected
413581dd1dff319b3a676deae031e26abb61780d 192.168.0.217:7000@17000 myself,master - 0 1570777968000 1 connected 2196-5460
16a79c90c81679046159abdd34aff878d7112d38 192.168.0.217:7006@17006 master - 0 1570777973000 8 connected 0-2195 5461-8011 10923-12503
baefc39247a5af15ac3093bc54d81175df4a785d 192.168.0.112:7005@17005 slave 575e3baaed21ad00dd9b2ddfb2035ece84c14acd 0 1570777972306 6 connected

这里演示把刚刚加给7006的槽分出去,可以看到7006的槽数量范围分别是 0-2195 5461-8011 10923-12503:
./redis-trib.rb reshard --from 16a79c90c81679046159abdd34aff878d7112d38 --to be724f368494ffbc995f939cff1c51c3800d2f2b --slots 2196 192.168.0.217:7000
解释:./redis-trib.rb reshard --from   要分配的槽的ID   --to    槽分配给谁的ID     --slots    槽的数量     任意一个集群的节点ip:端口
依次把另外的槽的数量都分配给别的master
./redis-trib.rb reshard --from 16a79c90c81679046159abdd34aff878d7112d38 --to 575e3baaed21ad00dd9b2ddfb2035ece84c14acd --slots 3264 192.168.0.217:7000
./redis-trib.rb reshard --from 16a79c90c81679046159abdd34aff878d7112d38 --to be724f368494ffbc995f939cff1c51c3800d2f2b --slots 2550 192.168.0.217:7000
迁移完毕,查看到7006的已经没有槽了
[root@dev01 src]# ./redis-cli  -h 192.168.0.217  -p 7000 cluster nodes
16a79c90c81679046159abdd34aff878d7112d38 192.168.0.217:7006@17006 master - 0 1570779335000 8 connected
2)忘记节点

先下从节点,再下主节点,如果先下主节点会出现故障自动转移

./redis-trib.rb del-node 192.168.0.217:7000 0bd91df52d5308f420d08b54dedf4815d3831859
 解释:./redis-trib.rb del-node 任意一个集群的节点ip:端口    要忘记的节点的ID
然后可以验证一下,发现没有7006、7007的集群端口:
[root@dev01 src]# ./redis-cli  -h 192.168.0.217  -p 7000 cluster nodes                                
be724f368494ffbc995f939cff1c51c3800d2f2b 192.168.0.217:7001@17001 master - 0 1570780017687 9 connected 0-2195 5461-8011 12504-16383
652332f6e1708c3f15384dea3299b7f529677ff0 192.168.0.111:7003@17003 slave 413581dd1dff319b3a676deae031e26abb61780d 0 1570780014000 4 connected
575e3baaed21ad00dd9b2ddfb2035ece84c14acd 192.168.0.111:7002@17002 master - 0 1570780016000 10 connected 8012-12503
c22a455b53b210c251b67cad3218f6a0f23fd5e5 192.168.0.112:7004@17004 slave be724f368494ffbc995f939cff1c51c3800d2f2b 0 1570780015000 9 connected
413581dd1dff319b3a676deae031e26abb61780d 192.168.0.217:7000@17000 myself,master - 0 1570780015000 1 connected 2196-5460
baefc39247a5af15ac3093bc54d81175df4a785d 192.168.0.112:7005@17005 slave 575e3baaed21ad00dd9b2ddfb2035ece84c14acd 0 1570780017000 10 connected

无法连接节点,命令redis-trib.rb del-node host:port node_id无能为力了,只能使用CLUSTER FORGET node-id。

你可能感兴趣的:(Redis Cluster集群安装配置详解+集群扩容与缩容操作)