上一篇博客主要聊了下redis.trib.rb这个工具来管理redis3/4 cluster 中的节点,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13456915.html;今天我们主要来说一下redis5上cluster相关配置命令说明;

  创建集群

[root@node1 redis]# redis-cli -a admin --cluster create 192.168.0.41:6379 192.168.0.42:6379 192.168.0.43:6379 192.168.0.41:6380 192.168.0.42:6380 192.168.0.43:6380 --cluster-replicas 1
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
>>> Performing hash slots allocation on 6 nodes...
Master[0] -> Slots 0 - 5460
Master[1] -> Slots 5461 - 10922
Master[2] -> Slots 10923 - 16383
Adding replica 192.168.0.42:6380 to 192.168.0.41:6379
Adding replica 192.168.0.43:6380 to 192.168.0.42:6379
Adding replica 192.168.0.41:6380 to 192.168.0.43:6379
M: 91e34830f16e45110e37618540628587d5ecc7e2 192.168.0.41:6379
slots:[0-5460] (5461 slots) master
M: 506776f910a52e45987785199e4fd293956ac1c5 192.168.0.42:6379
slots:[5461-10922] (5462 slots) master
M: 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617 192.168.0.43:6379
slots:[10923-16383] (5461 slots) master
S: 646b85ae18a63f36866c64edfba374559252dd1b 192.168.0.41:6380
replicates 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617
S: eb23a3ff659ee22d03661cf312d5bf38b32686b5 192.168.0.42:6380
replicates 91e34830f16e45110e37618540628587d5ecc7e2
S: 6274aa87409a801311e580cb19d185c1d53bfa1f 192.168.0.43:6380
replicates 506776f910a52e45987785199e4fd293956ac1c5
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 192.168.0.41:6379)
M: 91e34830f16e45110e37618540628587d5ecc7e2 192.168.0.41:6379
slots:[0-5460] (5461 slots) master
1 additional replica(s)
M: 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617 192.168.0.43:6379
slots:[10923-16383] (5461 slots) master
1 additional replica(s)
S: eb23a3ff659ee22d03661cf312d5bf38b32686b5 192.168.0.42:6380
slots: (0 slots) slave
replicates 91e34830f16e45110e37618540628587d5ecc7e2
S: 6274aa87409a801311e580cb19d185c1d53bfa1f 192.168.0.43:6380
slots: (0 slots) slave
replicates 506776f910a52e45987785199e4fd293956ac1c5
M: 506776f910a52e45987785199e4fd293956ac1c5 192.168.0.42:6379
slots:[5461-10922] (5462 slots) master
1 additional replica(s)
S: 646b85ae18a63f36866c64edfba374559252dd1b 192.168.0.41:6380
slots: (0 slots) slave
replicates 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
[root@node1 redis]#

  提示:-a表示指定连接集群的密码,--cluster create 表示创建集群,后面跟要加入集群的各几点ip地址和端口(包括master和slave);--cluster replicas 用来指定集群master对应的副本(slave)数量;它会根据我们指定的数量,去创建master和slave,并把16384个槽位平均分配给对应的master节点,并且会自动关联master和slave的关系;

  查看集群信息

[root@node1 redis]# cd
[root@node1 ~]# redis-cli --cluster info 192.168.0.41:6379
[ERR] Node 192.168.0.41:6379 NOAUTH Authentication required.
[root@node1 ~]# redis-cli -a admin --cluster info 192.168.0.41:6379
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
192.168.0.41:6379 (91e34830...) -> 0 keys | 5461 slots | 1 slaves.
192.168.0.43:6379 (0479a31d...) -> 0 keys | 5461 slots | 1 slaves.
192.168.0.42:6379 (506776f9...) -> 0 keys | 5462 slots | 1 slaves.
[OK] 0 keys in 3 masters.
0.00 keys per slot on average.
[root@node1 ~]# redis-cli -a admin --cluster check 192.168.0.41:6379
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
192.168.0.41:6379 (91e34830...) -> 0 keys | 5461 slots | 1 slaves.
192.168.0.43:6379 (0479a31d...) -> 0 keys | 5461 slots | 1 slaves.
192.168.0.42:6379 (506776f9...) -> 0 keys | 5462 slots | 1 slaves.
[OK] 0 keys in 3 masters.
0.00 keys per slot on average.
>>> Performing Cluster Check (using node 192.168.0.41:6379)
M: 91e34830f16e45110e37618540628587d5ecc7e2 192.168.0.41:6379
slots:[0-5460] (5461 slots) master
1 additional replica(s)
M: 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617 192.168.0.43:6379
slots:[10923-16383] (5461 slots) master
1 additional replica(s)
S: eb23a3ff659ee22d03661cf312d5bf38b32686b5 192.168.0.42:6380
slots: (0 slots) slave
replicates 91e34830f16e45110e37618540628587d5ecc7e2
S: 6274aa87409a801311e580cb19d185c1d53bfa1f 192.168.0.43:6380
slots: (0 slots) slave
replicates 506776f910a52e45987785199e4fd293956ac1c5
M: 506776f910a52e45987785199e4fd293956ac1c5 192.168.0.42:6379
slots:[5461-10922] (5462 slots) master
1 additional replica(s)
S: 646b85ae18a63f36866c64edfba374559252dd1b 192.168.0.41:6380
slots: (0 slots) slave
replicates 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
[root@node1 ~]#

  查看集群 node 对应关系

[root@node1 ~]# redis-cli -a admin -c cluster nodes
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617 192.168.0.43:6379@16379 master - 0 1592495162494 3 connected 10923-16383
eb23a3ff659ee22d03661cf312d5bf38b32686b5 192.168.0.42:6380@16380 slave 91e34830f16e45110e37618540628587d5ecc7e2 0 1592495164579 5 connected
91e34830f16e45110e37618540628587d5ecc7e2 192.168.0.41:6379@16379 myself,master - 0 1592495158000 1 connected 0-5460
6274aa87409a801311e580cb19d185c1d53bfa1f 192.168.0.43:6380@16380 slave 506776f910a52e45987785199e4fd293956ac1c5 0 1592495159344 6 connected
506776f910a52e45987785199e4fd293956ac1c5 192.168.0.42:6379@16379 master - 0 1592495163529 2 connected 5461-10922
646b85ae18a63f36866c64edfba374559252dd1b 192.168.0.41:6380@16380 slave 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617 0 1592495161445 4 connected
[root@node1 ~]#

  查看集群状态

[root@node1 ~]# redis-cli -a admin -c cluster info
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:3
cluster_current_epoch:6
cluster_my_epoch:1
cluster_stats_messages_ping_sent:159
cluster_stats_messages_pong_sent:158
cluster_stats_messages_sent:317
cluster_stats_messages_ping_received:153
cluster_stats_messages_pong_received:159
cluster_stats_messages_meet_received:5
cluster_stats_messages_received:317
[root@node1 ~]#

  提示:其实以上命令就是使用非交互式命令和redis交互,有点类似mysql中的-e选项,连接到对应redisserver上执行命令后返回,在mysql中用-e指定要执行的命令,在redis中用-c指定要执行的命令;

  添加一个新节点到现有集群

  实验环境说明

  环境目录结构

[root@node03 redis]# tree
.
├── 6379
│   └── etc
│   └── redis.conf
├── 6380
│   └── etc
│   └── redis.conf
├── 6381
│   └── etc
│   └── redis.conf
├── 6382
│   └── etc
│   └── redis.conf
├── bin
│   ├── redis-benchmark
│   ├── redis-check-aof
│   ├── redis-check-rdb
│   ├── redis-cli
│   ├── redis-sentinel -> redis-server
│   └── redis-server
├── dump_6379.rdb
├── dump_6380.rdb
├── logs
│   ├── redis_6379.log
│   └── redis_6380.log
├── redis-cluster-6379.conf
├── redis-cluster-6380.conf
└── run 11 directories, 16 files
[root@node03 redis]#

  确认配置文件信息

  提示:需要注意bind的地址必须能够和集群其他节点通信,端口不能和本机其他端口冲突,密码要和集群中的节点其他密码相同;

  启动192.168.0.43:6081/6082

  把192.168.0.43:6381/6382添加到现有集群

[root@node1 ~]# redis-cli -a admin --cluster add-node 192.168.0.43:6381 192.168.0.41:6379
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
>>> Adding node 192.168.0.43:6381 to cluster 192.168.0.41:6379
>>> Performing Cluster Check (using node 192.168.0.41:6379)
M: 91e34830f16e45110e37618540628587d5ecc7e2 192.168.0.41:6379
slots:[0-5460] (5461 slots) master
1 additional replica(s)
M: 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617 192.168.0.43:6379
slots:[10923-16383] (5461 slots) master
1 additional replica(s)
S: eb23a3ff659ee22d03661cf312d5bf38b32686b5 192.168.0.42:6380
slots: (0 slots) slave
replicates 91e34830f16e45110e37618540628587d5ecc7e2
S: 6274aa87409a801311e580cb19d185c1d53bfa1f 192.168.0.43:6380
slots: (0 slots) slave
replicates 506776f910a52e45987785199e4fd293956ac1c5
M: 506776f910a52e45987785199e4fd293956ac1c5 192.168.0.42:6379
slots:[5461-10922] (5462 slots) master
1 additional replica(s)
S: 646b85ae18a63f36866c64edfba374559252dd1b 192.168.0.41:6380
slots: (0 slots) slave
replicates 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
>>> Send CLUSTER MEET to node 192.168.0.43:6381 to make it join the cluster.
[OK] New node added correctly.
[root@node1 ~]# redis-cli -a admin --cluster add-node 192.168.0.43:6382 192.168.0.41:6379
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
>>> Adding node 192.168.0.43:6382 to cluster 192.168.0.41:6379
>>> Performing Cluster Check (using node 192.168.0.41:6379)
M: 91e34830f16e45110e37618540628587d5ecc7e2 192.168.0.41:6379
slots:[0-5460] (5461 slots) master
1 additional replica(s)
M: 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617 192.168.0.43:6379
slots:[10923-16383] (5461 slots) master
1 additional replica(s)
S: eb23a3ff659ee22d03661cf312d5bf38b32686b5 192.168.0.42:6380
slots: (0 slots) slave
replicates 91e34830f16e45110e37618540628587d5ecc7e2
S: 6274aa87409a801311e580cb19d185c1d53bfa1f 192.168.0.43:6380
slots: (0 slots) slave
replicates 506776f910a52e45987785199e4fd293956ac1c5
M: 95fa21156efabc1e07b07b0bdbe52bf8fe004b86 192.168.0.43:6381
slots: (0 slots) master
M: 506776f910a52e45987785199e4fd293956ac1c5 192.168.0.42:6379
slots:[5461-10922] (5462 slots) master
1 additional replica(s)
S: 646b85ae18a63f36866c64edfba374559252dd1b 192.168.0.41:6380
slots: (0 slots) slave
replicates 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
>>> Send CLUSTER MEET to node 192.168.0.43:6382 to make it join the cluster.
[OK] New node added correctly.
[root@node1 ~]#

  查看现有集群信息

[root@node1 ~]# redis-cli -a admin --cluster check 192.168.0.41:6379
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
192.168.0.41:6379 (91e34830...) -> 0 keys | 5461 slots | 1 slaves.
192.168.0.43:6379 (0479a31d...) -> 0 keys | 5461 slots | 1 slaves.
192.168.0.43:6382 (43d6e13d...) -> 0 keys | 0 slots | 0 slaves.
192.168.0.43:6381 (95fa2115...) -> 0 keys | 0 slots | 0 slaves.
192.168.0.42:6379 (506776f9...) -> 0 keys | 5462 slots | 1 slaves.
[OK] 0 keys in 5 masters.
0.00 keys per slot on average.
>>> Performing Cluster Check (using node 192.168.0.41:6379)
M: 91e34830f16e45110e37618540628587d5ecc7e2 192.168.0.41:6379
slots:[0-5460] (5461 slots) master
1 additional replica(s)
M: 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617 192.168.0.43:6379
slots:[10923-16383] (5461 slots) master
1 additional replica(s)
S: eb23a3ff659ee22d03661cf312d5bf38b32686b5 192.168.0.42:6380
slots: (0 slots) slave
replicates 91e34830f16e45110e37618540628587d5ecc7e2
S: 6274aa87409a801311e580cb19d185c1d53bfa1f 192.168.0.43:6380
slots: (0 slots) slave
replicates 506776f910a52e45987785199e4fd293956ac1c5
M: 43d6e13d06019af045e378ddc3e82b15b41ebdcd 192.168.0.43:6382
slots: (0 slots) master
M: 95fa21156efabc1e07b07b0bdbe52bf8fe004b86 192.168.0.43:6381
slots: (0 slots) master
M: 506776f910a52e45987785199e4fd293956ac1c5 192.168.0.42:6379
slots:[5461-10922] (5462 slots) master
1 additional replica(s)
S: 646b85ae18a63f36866c64edfba374559252dd1b 192.168.0.41:6380
slots: (0 slots) slave
replicates 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
[root@node1 ~]# redis-cli -a admin -c cluster nodes
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617 192.168.0.43:6379@16379 master - 0 1592498237487 3 connected 10923-16383
eb23a3ff659ee22d03661cf312d5bf38b32686b5 192.168.0.42:6380@16380 slave 91e34830f16e45110e37618540628587d5ecc7e2 0 1592498238525 5 connected
91e34830f16e45110e37618540628587d5ecc7e2 192.168.0.41:6379@16379 myself,master - 0 1592498215000 1 connected 0-5460
6274aa87409a801311e580cb19d185c1d53bfa1f 192.168.0.43:6380@16380 slave 506776f910a52e45987785199e4fd293956ac1c5 0 1592498234346 6 connected
43d6e13d06019af045e378ddc3e82b15b41ebdcd 192.168.0.43:6382@16382 master - 0 1592498236438 7 connected
95fa21156efabc1e07b07b0bdbe52bf8fe004b86 192.168.0.43:6381@16381 master - 0 1592498235388 0 connected
506776f910a52e45987785199e4fd293956ac1c5 192.168.0.42:6379@16379 master - 0 1592498239566 2 connected 5461-10922
646b85ae18a63f36866c64edfba374559252dd1b 192.168.0.41:6380@16380 slave 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617 0 1592498233609 4 connected
[root@node1 ~]#

  提示:可以看到对应集群上新加了两个节点,都是master角色,并且新加的两个节点都没有slave和slot;

  分配槽位给192.168.0.43:6381

[root@node1 ~]# redis-cli -a admin --cluster check 192.168.0.41:6379
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
192.168.0.41:6379 (91e34830...) -> 0 keys | 5461 slots | 1 slaves.
192.168.0.43:6379 (0479a31d...) -> 0 keys | 5461 slots | 1 slaves.
192.168.0.43:6382 (43d6e13d...) -> 0 keys | 0 slots | 0 slaves.
192.168.0.43:6381 (95fa2115...) -> 0 keys | 0 slots | 0 slaves.
192.168.0.42:6379 (506776f9...) -> 0 keys | 5462 slots | 1 slaves.
[OK] 0 keys in 5 masters.
0.00 keys per slot on average.
>>> Performing Cluster Check (using node 192.168.0.41:6379)
M: 91e34830f16e45110e37618540628587d5ecc7e2 192.168.0.41:6379
slots:[0-5460] (5461 slots) master
1 additional replica(s)
M: 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617 192.168.0.43:6379
slots:[10923-16383] (5461 slots) master
1 additional replica(s)
S: eb23a3ff659ee22d03661cf312d5bf38b32686b5 192.168.0.42:6380
slots: (0 slots) slave
replicates 91e34830f16e45110e37618540628587d5ecc7e2
S: 6274aa87409a801311e580cb19d185c1d53bfa1f 192.168.0.43:6380
slots: (0 slots) slave
replicates 506776f910a52e45987785199e4fd293956ac1c5
M: 43d6e13d06019af045e378ddc3e82b15b41ebdcd 192.168.0.43:6382
slots: (0 slots) master
M: 95fa21156efabc1e07b07b0bdbe52bf8fe004b86 192.168.0.43:6381
slots: (0 slots) master
M: 506776f910a52e45987785199e4fd293956ac1c5 192.168.0.42:6379
slots:[5461-10922] (5462 slots) master
1 additional replica(s)
S: 646b85ae18a63f36866c64edfba374559252dd1b 192.168.0.41:6380
slots: (0 slots) slave
replicates 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
[root@node1 ~]# redis-cli -a admin --cluster reshard 192.168.0.41:6379
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
>>> Performing Cluster Check (using node 192.168.0.41:6379)
M: 91e34830f16e45110e37618540628587d5ecc7e2 192.168.0.41:6379
slots:[0-5460] (5461 slots) master
1 additional replica(s)
M: 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617 192.168.0.43:6379
slots:[10923-16383] (5461 slots) master
1 additional replica(s)
S: eb23a3ff659ee22d03661cf312d5bf38b32686b5 192.168.0.42:6380
slots: (0 slots) slave
replicates 91e34830f16e45110e37618540628587d5ecc7e2
S: 6274aa87409a801311e580cb19d185c1d53bfa1f 192.168.0.43:6380
slots: (0 slots) slave
replicates 506776f910a52e45987785199e4fd293956ac1c5
M: 43d6e13d06019af045e378ddc3e82b15b41ebdcd 192.168.0.43:6382
slots: (0 slots) master
M: 95fa21156efabc1e07b07b0bdbe52bf8fe004b86 192.168.0.43:6381
slots: (0 slots) master
M: 506776f910a52e45987785199e4fd293956ac1c5 192.168.0.42:6379
slots:[5461-10922] (5462 slots) master
1 additional replica(s)
S: 646b85ae18a63f36866c64edfba374559252dd1b 192.168.0.41:6380
slots: (0 slots) slave
replicates 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617
[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? 95fa21156efabc1e07b07b0bdbe52bf8fe004b86
Please enter all the source node IDs.
Type 'all' to use all the nodes as source nodes for the hash slots.
Type 'done' once you entered all the source nodes IDs.
Source node #1: all Ready to move 4096 slots.
Source nodes:
M: 91e34830f16e45110e37618540628587d5ecc7e2 192.168.0.41:6379
slots:[0-5460] (5461 slots) master
1 additional replica(s)
M: 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617 192.168.0.43:6379
slots:[10923-16383] (5461 slots) master
1 additional replica(s)
M: 43d6e13d06019af045e378ddc3e82b15b41ebdcd 192.168.0.43:6382
slots: (0 slots) master
M: 506776f910a52e45987785199e4fd293956ac1c5 192.168.0.42:6379
slots:[5461-10922] (5462 slots) master
1 additional replica(s)
Destination node:
M: 95fa21156efabc1e07b07b0bdbe52bf8fe004b86 192.168.0.43:6381
slots: (0 slots) master
Resharding plan:
Moving slot 5461 from 506776f910a52e45987785199e4fd293956ac1c5
Moving slot 5462 from 506776f910a52e45987785199e4fd293956ac1c5
Moving slot 5463 from 506776f910a52e45987785199e4fd293956ac1c5
Moving slot 5464 from 506776f910a52e45987785199e4fd293956ac1c5
Moving slot 5465 from 506776f910a52e45987785199e4fd293956ac1c5
Moving slot 5466 from 506776f910a52e45987785199e4fd293956ac1c5
Moving slot 5467 from 506776f910a52e45987785199e4fd293956ac1c5
Moving slot 5468 from 506776f910a52e45987785199e4fd293956ac1c5
Moving slot 5469 from 506776f910a52e45987785199e4fd293956ac1c5
……省略部分内容……
Moving slot 12284 from 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617
Moving slot 12285 from 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617
Moving slot 12286 from 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617
Moving slot 12287 from 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617
Do you want to proceed with the proposed reshard plan (yes/no)? yes
Moving slot 5461 from 192.168.0.42:6379 to 192.168.0.43:6381:
Moving slot 5462 from 192.168.0.42:6379 to 192.168.0.43:6381:
Moving slot 5463 from 192.168.0.42:6379 to 192.168.0.43:6381:
Moving slot 5464 from 192.168.0.42:6379 to 192.168.0.43:6381:
……省略部分内容……
Moving slot 12285 from 192.168.0.43:6379 to 192.168.0.43:6381:
Moving slot 12286 from 192.168.0.43:6379 to 192.168.0.43:6381:
Moving slot 12287 from 192.168.0.43:6379 to 192.168.0.43:6381:
[root@node1 ~]#

  提示:这个和redis-trib.rb命令使用没有什么区别;

  查看新分配的槽位信息

[root@node1 ~]# redis-cli -a admin --cluster check 192.168.0.41:6379
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
192.168.0.41:6379 (91e34830...) -> 0 keys | 4096 slots | 1 slaves.
192.168.0.43:6379 (0479a31d...) -> 0 keys | 4096 slots | 1 slaves.
192.168.0.43:6382 (43d6e13d...) -> 0 keys | 0 slots | 0 slaves.
192.168.0.43:6381 (95fa2115...) -> 0 keys | 4096 slots | 0 slaves.
192.168.0.42:6379 (506776f9...) -> 0 keys | 4096 slots | 1 slaves.
[OK] 0 keys in 5 masters.
0.00 keys per slot on average.
>>> Performing Cluster Check (using node 192.168.0.41:6379)
M: 91e34830f16e45110e37618540628587d5ecc7e2 192.168.0.41:6379
slots:[1365-5460] (4096 slots) master
1 additional replica(s)
M: 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617 192.168.0.43:6379
slots:[12288-16383] (4096 slots) master
1 additional replica(s)
S: eb23a3ff659ee22d03661cf312d5bf38b32686b5 192.168.0.42:6380
slots: (0 slots) slave
replicates 91e34830f16e45110e37618540628587d5ecc7e2
S: 6274aa87409a801311e580cb19d185c1d53bfa1f 192.168.0.43:6380
slots: (0 slots) slave
replicates 506776f910a52e45987785199e4fd293956ac1c5
M: 43d6e13d06019af045e378ddc3e82b15b41ebdcd 192.168.0.43:6382
slots: (0 slots) master
M: 95fa21156efabc1e07b07b0bdbe52bf8fe004b86 192.168.0.43:6381
slots:[0-1364],[5461-6826],[10923-12287] (4096 slots) master
M: 506776f910a52e45987785199e4fd293956ac1c5 192.168.0.42:6379
slots:[6827-10922] (4096 slots) master
1 additional replica(s)
S: 646b85ae18a63f36866c64edfba374559252dd1b 192.168.0.41:6380
slots: (0 slots) slave
replicates 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
[root@node1 ~]#

  提示:可以看到现在集群有4个节点都分配了4096个slot,还有一个没有slot;

  更改节点(192.168.0.43:6382)为新节点(192.168.0.43:6381)的slave

[root@node1 ~]# redis-cli -a admin --cluster check 192.168.0.41:6379
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
192.168.0.41:6379 (91e34830...) -> 0 keys | 4096 slots | 1 slaves.
192.168.0.43:6379 (0479a31d...) -> 0 keys | 4096 slots | 1 slaves.
192.168.0.43:6382 (43d6e13d...) -> 0 keys | 0 slots | 0 slaves.
192.168.0.43:6381 (95fa2115...) -> 0 keys | 4096 slots | 0 slaves.
192.168.0.42:6379 (506776f9...) -> 0 keys | 4096 slots | 1 slaves.
[OK] 0 keys in 5 masters.
0.00 keys per slot on average.
>>> Performing Cluster Check (using node 192.168.0.41:6379)
M: 91e34830f16e45110e37618540628587d5ecc7e2 192.168.0.41:6379
slots:[1365-5460] (4096 slots) master
1 additional replica(s)
M: 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617 192.168.0.43:6379
slots:[12288-16383] (4096 slots) master
1 additional replica(s)
S: eb23a3ff659ee22d03661cf312d5bf38b32686b5 192.168.0.42:6380
slots: (0 slots) slave
replicates 91e34830f16e45110e37618540628587d5ecc7e2
S: 6274aa87409a801311e580cb19d185c1d53bfa1f 192.168.0.43:6380
slots: (0 slots) slave
replicates 506776f910a52e45987785199e4fd293956ac1c5
M: 43d6e13d06019af045e378ddc3e82b15b41ebdcd 192.168.0.43:6382
slots: (0 slots) master
M: 95fa21156efabc1e07b07b0bdbe52bf8fe004b86 192.168.0.43:6381
slots:[0-1364],[5461-6826],[10923-12287] (4096 slots) master
M: 506776f910a52e45987785199e4fd293956ac1c5 192.168.0.42:6379
slots:[6827-10922] (4096 slots) master
1 additional replica(s)
S: 646b85ae18a63f36866c64edfba374559252dd1b 192.168.0.41:6380
slots: (0 slots) slave
replicates 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
[root@node1 ~]# redis-cli -h 192.168.0.43 -p 6382 -a admin -c cluster replicate 95fa21156efabc1e07b07b0bdbe52bf8fe004b86
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
OK
[root@node1 ~]# redis-cli -a admin --cluster check 192.168.0.41:6379
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
192.168.0.41:6379 (91e34830...) -> 0 keys | 4096 slots | 1 slaves.
192.168.0.43:6379 (0479a31d...) -> 0 keys | 4096 slots | 1 slaves.
192.168.0.43:6381 (95fa2115...) -> 0 keys | 4096 slots | 1 slaves.
192.168.0.42:6379 (506776f9...) -> 0 keys | 4096 slots | 1 slaves.
[OK] 0 keys in 4 masters.
0.00 keys per slot on average.
>>> Performing Cluster Check (using node 192.168.0.41:6379)
M: 91e34830f16e45110e37618540628587d5ecc7e2 192.168.0.41:6379
slots:[1365-5460] (4096 slots) master
1 additional replica(s)
M: 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617 192.168.0.43:6379
slots:[12288-16383] (4096 slots) master
1 additional replica(s)
S: eb23a3ff659ee22d03661cf312d5bf38b32686b5 192.168.0.42:6380
slots: (0 slots) slave
replicates 91e34830f16e45110e37618540628587d5ecc7e2
S: 6274aa87409a801311e580cb19d185c1d53bfa1f 192.168.0.43:6380
slots: (0 slots) slave
replicates 506776f910a52e45987785199e4fd293956ac1c5
S: 43d6e13d06019af045e378ddc3e82b15b41ebdcd 192.168.0.43:6382
slots: (0 slots) slave
replicates 95fa21156efabc1e07b07b0bdbe52bf8fe004b86
M: 95fa21156efabc1e07b07b0bdbe52bf8fe004b86 192.168.0.43:6381
slots:[0-1364],[5461-6826],[10923-12287] (4096 slots) master
1 additional replica(s)
M: 506776f910a52e45987785199e4fd293956ac1c5 192.168.0.42:6379
slots:[6827-10922] (4096 slots) master
1 additional replica(s)
S: 646b85ae18a63f36866c64edfba374559252dd1b 192.168.0.41:6380
slots: (0 slots) slave
replicates 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
[root@node1 ~]#

  提示:我上面使用-c在shell上连接redis执行命令,这个和交互式执行命令一样的效果;从上面的信息可以看到192.168.0.43:6381已经有一个slave了,对应192.168.0.43:6382也没有出现到master列表中了;

  验证:向集群中读写数据

[root@node1 ~]# redis-cli -a admin
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
127.0.0.1:6379> KEYS *
(empty list or set)
127.0.0.1:6379> set aa bb
(error) MOVED 1180 192.168.0.43:6381
127.0.0.1:6379> set cc dd
(error) MOVED 700 192.168.0.43:6381
127.0.0.1:6379> set k v
(error) MOVED 7629 192.168.0.42:6379
127.0.0.1:6379> set kk vv
OK
127.0.0.1:6379> get kk
"vv"
127.0.0.1:6379>

  提示:从上面的结果看,读写都可以正常执行,也能够正常的把对应的key进行计算,并告诉我们该到那个节点上执行对应的key读写操作;

  验证:停掉集群中任意一台master,看看对应slave是否提升为master?

[root@node2 redis]# redis-cli -a admin --cluster info 192.168.0.42
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
[ERR] Invalid arguments: you need to pass either a valid address (ie. 120.0.0.1:7000) or space separated IP and port (ie. 120.0.0.1 7000)
[root@node2 redis]#
[root@node2 redis]# redis-cli -a admin --cluster info 192.168.0.42:6379
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
192.168.0.42:6379 (506776f9...) -> 0 keys | 4096 slots | 1 slaves.
192.168.0.43:6379 (0479a31d...) -> 0 keys | 4096 slots | 1 slaves.
192.168.0.41:6379 (91e34830...) -> 1 keys | 4096 slots | 1 slaves.
192.168.0.43:6381 (95fa2115...) -> 0 keys | 4096 slots | 1 slaves.
[OK] 1 keys in 4 masters.
0.00 keys per slot on average.
[root@node2 redis]# ps -ef |grep redis
root 20256 1 0 11:40 ? 00:00:15 redis-server 0.0.0.0:6379 [cluster]
root 20258 1 0 11:40 ? 00:00:13 redis-server 0.0.0.0:6380 [cluster]
root 20318 1926 0 13:04 pts/1 00:00:00 grep --color=auto redis
[root@node2 redis]# kill -9 20256
[root@node2 redis]# redis-cli -a admin --cluster info 192.168.0.41:6379
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
Could not connect to Redis at 192.168.0.42:6379: Connection refused
*** WARNING: 192.168.0.43:6380 claims to be slave of unknown node ID 506776f910a52e45987785199e4fd293956ac1c5.
192.168.0.41:6379 (91e34830...) -> 1 keys | 4096 slots | 1 slaves.
192.168.0.43:6379 (0479a31d...) -> 0 keys | 4096 slots | 1 slaves.
192.168.0.43:6381 (95fa2115...) -> 0 keys | 4096 slots | 1 slaves.
[OK] 1 keys in 3 masters.
0.00 keys per slot on average.
[root@node2 redis]# redis-cli -a admin --cluster info 192.168.0.41:6379
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
Could not connect to Redis at 192.168.0.42:6379: Connection refused
192.168.0.41:6379 (91e34830...) -> 1 keys | 4096 slots | 1 slaves.
192.168.0.43:6379 (0479a31d...) -> 0 keys | 4096 slots | 1 slaves.
192.168.0.43:6380 (6274aa87...) -> 0 keys | 4096 slots | 0 slaves.
192.168.0.43:6381 (95fa2115...) -> 0 keys | 4096 slots | 1 slaves.
[OK] 1 keys in 4 masters.
0.00 keys per slot on average.
[root@node2 redis]#

  提示:可以看到对应slave是能够被提升为master的;

  验证:把对应宕机的节点启动起来,看看是否自动降级为slave呢?

[root@node2 redis]# redis-cli -a admin --cluster info 192.168.0.41:6379
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
Could not connect to Redis at 192.168.0.42:6379: Connection refused
192.168.0.41:6379 (91e34830...) -> 1 keys | 4096 slots | 1 slaves.
192.168.0.43:6379 (0479a31d...) -> 0 keys | 4096 slots | 1 slaves.
192.168.0.43:6380 (6274aa87...) -> 0 keys | 4096 slots | 0 slaves.
192.168.0.43:6381 (95fa2115...) -> 0 keys | 4096 slots | 1 slaves.
[OK] 1 keys in 4 masters.
0.00 keys per slot on average.
[root@node2 redis]# redis-server /usr/local/redis/6379/etc/redis.conf
[root@node2 redis]# redis-cli -a admin --cluster info 192.168.0.41:6379
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
192.168.0.41:6379 (91e34830...) -> 1 keys | 4096 slots | 1 slaves.
192.168.0.43:6379 (0479a31d...) -> 0 keys | 4096 slots | 1 slaves.
192.168.0.43:6380 (6274aa87...) -> 0 keys | 4096 slots | 1 slaves.
192.168.0.43:6381 (95fa2115...) -> 0 keys | 4096 slots | 1 slaves.
[OK] 1 keys in 4 masters.
0.00 keys per slot on average.
[root@node2 redis]# redis-cli -a admin -h 192.168.0.42 -p 6379 -c info replication
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
# Replication
role:slave
master_host:192.168.0.43
master_port:6380
master_link_status:up
master_last_io_seconds_ago:3
master_sync_in_progress:0
slave_repl_offset:6594
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:7b45a2b847aba7e40e3a6b7f39d4511fa2a62b6a
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:6594
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:6497
repl_backlog_histlen:98
[root@node2 redis]#

  提示:当192.168.0.42:6379启动后,自动降级为slave,并从属192.168.0.43:6380;

  动态删除集群中的节点

  把192.168.0.41:6379上的slot移动到192.168.0.43:6381

[root@node1 ~]# redis-cli -a admin --cluster reshard 192.168.0.41:6379
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
>>> Performing Cluster Check (using node 192.168.0.41:6379)
M: 91e34830f16e45110e37618540628587d5ecc7e2 192.168.0.41:6379
slots:[1365-5460] (4096 slots) master
1 additional replica(s)
M: 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617 192.168.0.43:6379
slots:[12288-16383] (4096 slots) master
1 additional replica(s)
S: eb23a3ff659ee22d03661cf312d5bf38b32686b5 192.168.0.42:6380
slots: (0 slots) slave
replicates 91e34830f16e45110e37618540628587d5ecc7e2
M: 6274aa87409a801311e580cb19d185c1d53bfa1f 192.168.0.43:6380
slots:[6827-10922] (4096 slots) master
1 additional replica(s)
S: 43d6e13d06019af045e378ddc3e82b15b41ebdcd 192.168.0.43:6382
slots: (0 slots) slave
replicates 95fa21156efabc1e07b07b0bdbe52bf8fe004b86
M: 95fa21156efabc1e07b07b0bdbe52bf8fe004b86 192.168.0.43:6381
slots:[0-1364],[5461-6826],[10923-12287] (4096 slots) master
1 additional replica(s)
S: 506776f910a52e45987785199e4fd293956ac1c5 192.168.0.42:6379
slots: (0 slots) slave
replicates 6274aa87409a801311e580cb19d185c1d53bfa1f
S: 646b85ae18a63f36866c64edfba374559252dd1b 192.168.0.41:6380
slots: (0 slots) slave
replicates 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617
[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? 95fa21156efabc1e07b07b0bdbe52bf8fe004b86
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: 91e34830f16e45110e37618540628587d5ecc7e2
Source node #2: done
Moving slot 5457 from 91e34830f16e45110e37618540628587d5ecc7e2
Moving slot 5458 from 91e34830f16e45110e37618540628587d5ecc7e2
Moving slot 5459 from 91e34830f16e45110e37618540628587d5ecc7e2
Moving slot 5460 from 91e34830f16e45110e37618540628587d5ecc7e2
Do you want to proceed with the proposed reshard plan (yes/no)? yes
Moving slot 1365 from 192.168.0.41:6379 to 192.168.0.43:6381:
Moving slot 1366 from 192.168.0.41:6379 to 192.168.0.43:6381:
Moving slot 1367 from 192.168.0.41:6379 to 192.168.0.43:6381:
……省略部分内容……
Moving slot 5457 from 192.168.0.41:6379 to 192.168.0.43:6381:
Moving slot 5458 from 192.168.0.41:6379 to 192.168.0.43:6381:
Moving slot 5459 from 192.168.0.41:6379 to 192.168.0.43:6381:
Moving slot 5460 from 192.168.0.41:6379 to 192.168.0.43:6381:
[root@node1 ~]#

  提示:在redis5上迁移是,即便对应节点上有数据,也可以直接迁移,并且把对应应数据以便迁移到指定的节点上去了;

  查看迁移后的集群信息

[root@node1 ~]# redis-cli -a admin --cluster check 192.168.0.41:6379
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
192.168.0.41:6379 (91e34830...) -> 0 keys | 0 slots | 0 slaves.
192.168.0.43:6379 (0479a31d...) -> 0 keys | 4096 slots | 1 slaves.
192.168.0.43:6380 (6274aa87...) -> 0 keys | 4096 slots | 1 slaves.
192.168.0.43:6381 (95fa2115...) -> 1 keys | 8192 slots | 2 slaves.
[OK] 1 keys in 4 masters.
0.00 keys per slot on average.
>>> Performing Cluster Check (using node 192.168.0.41:6379)
M: 91e34830f16e45110e37618540628587d5ecc7e2 192.168.0.41:6379
slots: (0 slots) master
M: 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617 192.168.0.43:6379
slots:[12288-16383] (4096 slots) master
1 additional replica(s)
S: eb23a3ff659ee22d03661cf312d5bf38b32686b5 192.168.0.42:6380
slots: (0 slots) slave
replicates 95fa21156efabc1e07b07b0bdbe52bf8fe004b86
M: 6274aa87409a801311e580cb19d185c1d53bfa1f 192.168.0.43:6380
slots:[6827-10922] (4096 slots) master
1 additional replica(s)
S: 43d6e13d06019af045e378ddc3e82b15b41ebdcd 192.168.0.43:6382
slots: (0 slots) slave
replicates 95fa21156efabc1e07b07b0bdbe52bf8fe004b86
M: 95fa21156efabc1e07b07b0bdbe52bf8fe004b86 192.168.0.43:6381
slots:[0-6826],[10923-12287] (8192 slots) master
2 additional replica(s)
S: 506776f910a52e45987785199e4fd293956ac1c5 192.168.0.42:6379
slots: (0 slots) slave
replicates 6274aa87409a801311e580cb19d185c1d53bfa1f
S: 646b85ae18a63f36866c64edfba374559252dd1b 192.168.0.41:6380
slots: (0 slots) slave
replicates 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
[root@node1 ~]#

  提示:可以看到对应节点上的key和slave随着slot的清空迁移而迁移;

  验证:登录对应的节点上查看192.168.0.41:6379上的key是否迁移到192.168.0.43:6381上了?

[root@node1 ~]# redis-cli -h 192.168.0.43 -p 6381
192.168.0.43:6381> AUTH admin
OK
192.168.0.43:6381> KEYS *
1) "kk"
192.168.0.43:6381> get kk
"vv"
192.168.0.43:6381>

  提示:可以看到我们之前在192.168.0.41:6379上写入的key已经迁移到192.168.0.43:6381上了;

  把192.168.0.41:6379从集群中删除

[root@node1 ~]# redis-cli -a admin --cluster check 192.168.0.42:6379
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
192.168.0.41:6379 (91e34830...) -> 0 keys | 0 slots | 0 slaves.
192.168.0.43:6379 (0479a31d...) -> 0 keys | 4096 slots | 1 slaves.
192.168.0.43:6380 (6274aa87...) -> 0 keys | 4096 slots | 1 slaves.
192.168.0.43:6381 (95fa2115...) -> 1 keys | 8192 slots | 2 slaves.
[OK] 1 keys in 4 masters.
0.00 keys per slot on average.
>>> Performing Cluster Check (using node 192.168.0.42:6379)
S: 506776f910a52e45987785199e4fd293956ac1c5 192.168.0.42:6379
slots: (0 slots) slave
replicates 6274aa87409a801311e580cb19d185c1d53bfa1f
S: eb23a3ff659ee22d03661cf312d5bf38b32686b5 192.168.0.42:6380
slots: (0 slots) slave
replicates 95fa21156efabc1e07b07b0bdbe52bf8fe004b86
M: 91e34830f16e45110e37618540628587d5ecc7e2 192.168.0.41:6379
slots: (0 slots) master
S: 43d6e13d06019af045e378ddc3e82b15b41ebdcd 192.168.0.43:6382
slots: (0 slots) slave
replicates 95fa21156efabc1e07b07b0bdbe52bf8fe004b86
M: 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617 192.168.0.43:6379
slots:[12288-16383] (4096 slots) master
1 additional replica(s)
M: 6274aa87409a801311e580cb19d185c1d53bfa1f 192.168.0.43:6380
slots:[6827-10922] (4096 slots) master
1 additional replica(s)
S: 646b85ae18a63f36866c64edfba374559252dd1b 192.168.0.41:6380
slots: (0 slots) slave
replicates 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617
M: 95fa21156efabc1e07b07b0bdbe52bf8fe004b86 192.168.0.43:6381
slots:[0-6826],[10923-12287] (8192 slots) master
2 additional replica(s)
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
[root@node1 ~]# redis-cli -a admin --cluster del-node 192.168.0.42:6379 91e34830f16e45110e37618540628587d5ecc7e2
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
>>> Removing node 91e34830f16e45110e37618540628587d5ecc7e2 from cluster 192.168.0.42:6379
>>> Sending CLUSTER FORGET messages to the cluster...
>>> SHUTDOWN the node.
[root@node1 ~]# redis-cli -a admin --cluster info 192.168.0.42:6379
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
192.168.0.43:6379 (0479a31d...) -> 0 keys | 4096 slots | 1 slaves.
192.168.0.43:6380 (6274aa87...) -> 0 keys | 4096 slots | 1 slaves.
192.168.0.43:6381 (95fa2115...) -> 1 keys | 8192 slots | 2 slaves.
[OK] 1 keys in 3 masters.
0.00 keys per slot on average.
[root@node1 ~]#

  提示:从上面的信息可以看到对应节点从集群中删除了;对应节点的slave被迁移到新的master上去了;

  删除slave

[root@node1 ~]# redis-cli -a admin --cluster check 192.168.0.42:6379
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
192.168.0.43:6379 (0479a31d...) -> 0 keys | 4096 slots | 1 slaves.
192.168.0.43:6380 (6274aa87...) -> 0 keys | 4096 slots | 1 slaves.
192.168.0.43:6381 (95fa2115...) -> 1 keys | 8192 slots | 2 slaves.
[OK] 1 keys in 3 masters.
0.00 keys per slot on average.
>>> Performing Cluster Check (using node 192.168.0.42:6379)
S: 506776f910a52e45987785199e4fd293956ac1c5 192.168.0.42:6379
slots: (0 slots) slave
replicates 6274aa87409a801311e580cb19d185c1d53bfa1f
S: eb23a3ff659ee22d03661cf312d5bf38b32686b5 192.168.0.42:6380
slots: (0 slots) slave
replicates 95fa21156efabc1e07b07b0bdbe52bf8fe004b86
S: 43d6e13d06019af045e378ddc3e82b15b41ebdcd 192.168.0.43:6382
slots: (0 slots) slave
replicates 95fa21156efabc1e07b07b0bdbe52bf8fe004b86
M: 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617 192.168.0.43:6379
slots:[12288-16383] (4096 slots) master
1 additional replica(s)
M: 6274aa87409a801311e580cb19d185c1d53bfa1f 192.168.0.43:6380
slots:[6827-10922] (4096 slots) master
1 additional replica(s)
S: 646b85ae18a63f36866c64edfba374559252dd1b 192.168.0.41:6380
slots: (0 slots) slave
replicates 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617
M: 95fa21156efabc1e07b07b0bdbe52bf8fe004b86 192.168.0.43:6381
slots:[0-6826],[10923-12287] (8192 slots) master
2 additional replica(s)
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
[root@node1 ~]# redis-cli -a admin --cluster del-node 192.168.0.42:6379 43d6e13d06019af045e378ddc3e82b15b41ebdcd
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
>>> Removing node 43d6e13d06019af045e378ddc3e82b15b41ebdcd from cluster 192.168.0.42:6379
>>> Sending CLUSTER FORGET messages to the cluster...
>>> SHUTDOWN the node.
[root@node1 ~]# redis-cli -a admin --cluster info 192.168.0.42:6379
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
192.168.0.43:6379 (0479a31d...) -> 0 keys | 4096 slots | 1 slaves.
192.168.0.43:6380 (6274aa87...) -> 0 keys | 4096 slots | 1 slaves.
192.168.0.43:6381 (95fa2115...) -> 1 keys | 8192 slots | 1 slaves.
[OK] 1 keys in 3 masters.
0.00 keys per slot on average.
[root@node1 ~]#

  提示:对应slave可以直接删除,因为slave通常是没有slot槽位的;

  验证:把192.168.0.41:6379启动起来,看看是否还会回到集群?

[root@node1 ~]# ss -tnl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:6380 *:*
LISTEN 0 128 *:22 *:*
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 128 *:16380 *:*
LISTEN 0 128 :::22 :::*
LISTEN 0 100 ::1:25 :::*
[root@node1 ~]# redis-server /usr/local/redis/6379/etc/redis.conf
[root@node1 ~]# ss -tnl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:6379 *:*
LISTEN 0 128 *:6380 *:*
LISTEN 0 128 *:22 *:*
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 128 *:16379 *:*
LISTEN 0 128 *:16380 *:*
LISTEN 0 128 :::22 :::*
LISTEN 0 100 ::1:25 :::*
[root@node1 ~]# redis-cli -a admin --cluster info 192.168.0.42:6379
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
192.168.0.43:6379 (0479a31d...) -> 0 keys | 4096 slots | 1 slaves.
192.168.0.43:6380 (6274aa87...) -> 0 keys | 4096 slots | 1 slaves.
192.168.0.43:6381 (95fa2115...) -> 1 keys | 8192 slots | 1 slaves.
[OK] 1 keys in 3 masters.
0.00 keys per slot on average.
[root@node1 ~]# redis-cli -a admin --cluster check 192.168.0.42:6379
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
192.168.0.43:6379 (0479a31d...) -> 0 keys | 4096 slots | 1 slaves.
192.168.0.43:6380 (6274aa87...) -> 0 keys | 4096 slots | 1 slaves.
192.168.0.43:6381 (95fa2115...) -> 1 keys | 8192 slots | 1 slaves.
[OK] 1 keys in 3 masters.
0.00 keys per slot on average.
>>> Performing Cluster Check (using node 192.168.0.42:6379)
S: 506776f910a52e45987785199e4fd293956ac1c5 192.168.0.42:6379
slots: (0 slots) slave
replicates 6274aa87409a801311e580cb19d185c1d53bfa1f
S: eb23a3ff659ee22d03661cf312d5bf38b32686b5 192.168.0.42:6380
slots: (0 slots) slave
replicates 95fa21156efabc1e07b07b0bdbe52bf8fe004b86
M: 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617 192.168.0.43:6379
slots:[12288-16383] (4096 slots) master
1 additional replica(s)
M: 6274aa87409a801311e580cb19d185c1d53bfa1f 192.168.0.43:6380
slots:[6827-10922] (4096 slots) master
1 additional replica(s)
S: 646b85ae18a63f36866c64edfba374559252dd1b 192.168.0.41:6380
slots: (0 slots) slave
replicates 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617
M: 95fa21156efabc1e07b07b0bdbe52bf8fe004b86 192.168.0.43:6381
slots:[0-6826],[10923-12287] (8192 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@node1 ~]#

  提示:可以看到这里和redis3/4不同,这里启动宕机后的server,它并不会重新回到集群中来;

  验证:启动删除的slave节点,看看是否回到集群?

[root@node03 redis]# ss -tnl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:6379 *:*
LISTEN 0 128 *:6380 *:*
LISTEN 0 128 *:6381 *:*
LISTEN 0 128 *:22 *:*
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 128 *:16379 *:*
LISTEN 0 128 *:16380 *:*
LISTEN 0 128 *:16381 *:*
LISTEN 0 128 :::22 :::*
LISTEN 0 100 ::1:25 :::*
[root@node03 redis]# redis-server /usr/local/redis/6382/etc/redis.conf
[root@node03 redis]# ss -tnl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:6379 *:*
LISTEN 0 128 *:6380 *:*
LISTEN 0 128 *:6381 *:*
LISTEN 0 128 *:6382 *:*
LISTEN 0 128 *:22 *:*
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 128 *:16379 *:*
LISTEN 0 128 *:16380 *:*
LISTEN 0 128 *:16381 *:*
LISTEN 0 128 *:16382 *:*
LISTEN 0 128 :::22 :::*
LISTEN 0 100 ::1:25 :::*
[root@node03 redis]# redis-cli -a admin --cluster check 192.168.0.42:6379
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
192.168.0.43:6379 (0479a31d...) -> 0 keys | 4096 slots | 1 slaves.
192.168.0.43:6380 (6274aa87...) -> 0 keys | 4096 slots | 1 slaves.
192.168.0.43:6381 (95fa2115...) -> 1 keys | 8192 slots | 1 slaves.
[OK] 1 keys in 3 masters.
0.00 keys per slot on average.
>>> Performing Cluster Check (using node 192.168.0.42:6379)
S: 506776f910a52e45987785199e4fd293956ac1c5 192.168.0.42:6379
slots: (0 slots) slave
replicates 6274aa87409a801311e580cb19d185c1d53bfa1f
S: eb23a3ff659ee22d03661cf312d5bf38b32686b5 192.168.0.42:6380
slots: (0 slots) slave
replicates 95fa21156efabc1e07b07b0bdbe52bf8fe004b86
M: 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617 192.168.0.43:6379
slots:[12288-16383] (4096 slots) master
1 additional replica(s)
M: 6274aa87409a801311e580cb19d185c1d53bfa1f 192.168.0.43:6380
slots:[6827-10922] (4096 slots) master
1 additional replica(s)
S: 646b85ae18a63f36866c64edfba374559252dd1b 192.168.0.41:6380
slots: (0 slots) slave
replicates 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617
M: 95fa21156efabc1e07b07b0bdbe52bf8fe004b86 192.168.0.43:6381
slots:[0-6826],[10923-12287] (8192 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@node03 redis]#

  提示:可以看到启动被删除的slave以后,也不会重新回到集群;

  从外部redis server 导入数据到集群

  在192.168.0.41:6379上创建一些key,来模拟外部redisserver

[root@node1 ~]# redis-cli -a admin -h 192.168.0.41 -p 6379
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
192.168.0.41:6379> KEYS *
(empty list or set)
192.168.0.41:6379> set aa bb
(error) MOVED 1180 192.168.0.43:6381
192.168.0.41:6379>

  提示:往192.168.0.41:6379插入不了数据,我们把集群功能给关掉试试?

  关掉192.168.0.41:6379的集群功能,再次启动redis

[root@node1 ~]# grep ^#cluster /usr/local/redis/6379/etc/redis.conf
#cluster-enabled yes
#cluster-config-file redis-cluster-6379.conf
[root@node1 ~]# ps -ef |grep redis
root 19893 1 0 11:40 ? 00:00:21 redis-server 0.0.0.0:6380 [cluster]
root 20002 1 0 13:35 ? 00:00:02 redis-server 0.0.0.0:6379 [cluster]
root 20028 1491 0 13:49 pts/1 00:00:00 grep --color=auto redis
[root@node1 ~]# kill -9 20002
[root@node1 ~]# redis-server /usr/local/redis/6379/etc/redis.conf
[root@node1 ~]# ps -ef|grep redis
root 19893 1 0 11:40 ? 00:00:21 redis-server 0.0.0.0:6380 [cluster]
root 20030 1 0 13:49 ? 00:00:00 redis-server 0.0.0.0:6379
root 20035 1491 0 13:49 pts/1 00:00:00 grep --color=auto redis
[root@node1 ~]#

  提示:可以看到对应redis进程就不是一cluster方式运行了,接下来我们再来插入数据试试

[root@node1 ~]# redis-cli -a admin -h 192.168.0.41 -p 6379
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
192.168.0.41:6379> KEYS *
(empty list or set)
192.168.0.41:6379> MSET k1 v1 k2 v2 k3 v3 k4 v4
OK
192.168.0.41:6379> KEYS *
1) "k3"
2) "k2"
3) "k4"
4) "k1"
192.168.0.41:6379>

  提示:可以看到现在再插入数据就没有问题了;

  将192.168.0.41:6379上的数据导入集群

  提示:导入数据时,提示我们没有认证;这里需要注意一点,导入数据之前需要关闭各 redis 服务器的密码,包括集群中的各 node 和源 Redis server,避免认证带来的环境不一致从而无法导入,可以加参数--cluster-replace 强制替换 Redis cluster 已有的 key。

  关闭集群各节点认证密码和外部redisserver

  再次将192.168.0.41:6379上的数据导入到集群

[root@node1 ~]# redis-cli --cluster import 192.168.0.43:6379 --cluster-from 192.168.0.41:6379 --cluster-copy
>>> Importing data from 192.168.0.41:6379 to cluster 192.168.0.43:6379
>>> Performing Cluster Check (using node 192.168.0.43:6379)
M: 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617 192.168.0.43:6379
slots:[12288-16383] (4096 slots) master
1 additional replica(s)
M: 95fa21156efabc1e07b07b0bdbe52bf8fe004b86 192.168.0.43:6381
slots:[0-6826],[10923-12287] (8192 slots) master
1 additional replica(s)
M: 6274aa87409a801311e580cb19d185c1d53bfa1f 192.168.0.43:6380
slots:[6827-10922] (4096 slots) master
1 additional replica(s)
S: eb23a3ff659ee22d03661cf312d5bf38b32686b5 192.168.0.42:6380
slots: (0 slots) slave
replicates 95fa21156efabc1e07b07b0bdbe52bf8fe004b86
S: 506776f910a52e45987785199e4fd293956ac1c5 192.168.0.42:6379
slots: (0 slots) slave
replicates 6274aa87409a801311e580cb19d185c1d53bfa1f
S: 646b85ae18a63f36866c64edfba374559252dd1b 192.168.0.41:6380
slots: (0 slots) slave
replicates 0479a31d9a7bcb88a9fc1c4227f0f3e06ea3b617
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
*** Importing 4 keys from DB 0
Migrating k3 to 192.168.0.43:6381: OK
Migrating k2 to 192.168.0.43:6381: OK
Migrating k4 to 192.168.0.43:6380: OK
Migrating k1 to 192.168.0.43:6379: OK
[root@node1 ~]#

  提示:可以看到导入数据成功;

  验证:在集群各节点查看导入到数据

[root@node1 ~]# redis-cli -h 192.168.0.43 -p 6381
192.168.0.43:6381> KEYS *
1) "k2"
2) "k3"
3) "kk"
192.168.0.43:6381> get k2
"v2"
192.168.0.43:6381> get k3
"v3"
192.168.0.43:6381> quit
[root@node1 ~]# redis-cli -h 192.168.0.43 -p 6380
192.168.0.43:6380> KEYS *
1) "k4"
192.168.0.43:6380> get k4
"v4"
192.168.0.43:6380> quit
[root@node1 ~]# redis-cli -h 192.168.0.43 -p 6379
192.168.0.43:6379> KEYS *
1) "k1"
192.168.0.43:6379> get k1
"v1"
192.168.0.43:6379> quit
[root@node1 ~]#

  提示:可以看到外部redisserver上的数据被分别倒入到集群中的各节点上存储;在redis3/4上使用redis.trib.rb工具导入数据始终提示错误,不知道什么原因,所以建议在身材使用redis5以上做集群比较好;

Redis服务之Redis5集群相关命令说明的更多相关文章

  1. Elasticsearch(5)--- 基本命令(集群相关命令、索引CRUD命令、文档CRUD命令)

    Elasticsearch(5)--- 基本命令 这篇博客的命令分为ES集群相关命令,索引CRUD命令,文档CRUD命令.这里不包括Query查询命令,它单独写一篇博客. 一.ES集群相关命令 ES集 ...

  2. Redis 3.0.5 集群的命令、使用、维护

    cluster命令 CLUSTER INFO 打印集群的信息 CLUSTER NODES 列出集群当前已知的所有节点(node),以及这些节点的相关信息. //节点 CLUSTER MEET < ...

  3. redis 3.0的集群部署

    转载请注明出处:http://hot66hot.iteye.com/admin/blogs/2050676 最近研究redis-cluster,正好搭建了一个环境,遇到了很多坑,系统的总结下,等到re ...

  4. (转)redis 3.0的集群部署

    一:关于redis cluster 1:redis cluster的现状 reids-cluster计划在redis3.0中推出,可以看作者antirez的声明:http://antirez.com/ ...

  5. Redis简单梳理及集群配置

    **REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统. Redis是一个开源的使用ANSI C语言编写.遵 ...

  6. Redis原理及集群相关知识

    读书笔记 <Redis开发与运维 > Redis使用场景 作为缓存层 减少对Mysql的压力 计数功能 比如使用原子命令incr 共享Session 设置过期时间 可以限制短信接口等调用 ...

  7. Redis 3.0.2集群搭建以及相关问题汇总

    Redis3 正式支持了 cluster,是为了解决构建redis集群时的诸多不便 (1)像操作单个redis一样操作key,不用操心key在哪个节点上(2)在线动态添加.删除redis节点,不用停止 ...

  8. redis在Windows下以后台服务一键搭建集群(多机器)

    redis在Windows下以后台服务一键搭建集群(多机器) 一.概述 此教程介绍如何在windows系统中多台机器之间布置redis集群,同时要以后台服务的模式运行.布置以脚本的形式,一键完成.多台 ...

  9. redis在Windows下以后台服务一键搭建集群(单机--伪集群)

    redis在Windows下以后台服务一键搭建集群(单机--伪集群) 一.概述 此教程介绍如何在windows系统中同一台机器上布置redis伪集群,同时要以后台服务的模式运行.布置以脚本的形式,一键 ...

随机推荐

  1. 移除hmtl5 input type=“number”的step验证

    设置 step="any"例如:<input type="number" step="any" value=""& ...

  2. C++算法 链式前向星存图

    这个东西恶心了我一阵子,那个什么是什么的上一个一直是背下来的,上次比赛忘了,回来有个题也要用,只能再学一遍,之前也是,不会为什么不学呢.我觉得是因为他们讲的不太容易理解,所以我自己给那些不会的人们讲一 ...

  3. 想进大厂?字节跳动等独角兽公司都在招募Python工程师!(Python就是第一语言)

    在本文章中,作者通过自身经历,力求客观的谈谈个人选择学习Python的动机,以及独角兽公司对Python工程师的要求及薪资. 从目前各种迹象(企业招聘,语言排名等)看来Python相对Java应该是暂 ...

  4. 10个Vue开发技巧助力成为更好的工程师·二

    优雅更新props 更新 prop 在业务中是很常见的需求,但在子组件中不允许直接修改 prop,因为这种做法不符合单向数据流的原则,在开发模式下还会报出警告.因此大多数人会通过 $emit 触发自定 ...

  5. MongoDB 事务,复制和分片的关系

    摘要:本文尝试对Mongo的复制和分布式事务的原理进行描述,在必要的地方,对实现的正确性进行论证,希望能为MongoDB内核爱好者提供一些参考. 1.前言 MongoDB基于wiredTiger提供的 ...

  6. SpringBoot + Spring Cloud Consul 服务注册和发现

    什么是Consul Consul 是 HashiCorp 公司推出的开源工具,用于实现分布式系统的服务发现与配置.与其它分布式服务注册与发现的方案,Consul 的方案更"一站式" ...

  7. java基础(七)--基本类型转换

    一.转换规则 1.类型转换的原则是: 小容量可以自动转成大容量,大容量转成小容量,需要强制转换,有些类型之前不能转换 判断以下语句是否符合要求 2.默认的识别数字 整数默认->int 浮点数默认 ...

  8. Android:沉浸式状态栏(一)工具类

    参考自Android 沉浸式状态栏完美解决方案 基本功能 状态栏深色或浅色图标切换 自定义状态栏背景 设置沉浸式状态栏 先准备几个工具类 1.SystemBarTintManager package ...

  9. 《精通Python网络爬虫》|百度网盘免费下载|Python爬虫实战

    <精通Python网络爬虫>|百度网盘免费下载|Python爬虫实战 提取码:7wr5 内容简介 为什么写这本书 网络爬虫其实很早就出现了,最开始网络爬虫主要应用在各种搜索引擎中.在搜索引 ...

  10. Python元组运算符

    Python元组运算符: len(元组名): 返回元组对象的长度 # len(元组名): # 返回元组对象的长度 tuple_1 = (1,4,5,2,3,6) print(len(tuple_1)) ...