Redis服務之Redis5集羣相關命令說明

  上一篇博客主要聊了下redis.trib.rb這個工具來管理redis3/4 cluster 中的節點,回顧請參考http://www.javashuo.com/article/p-slbbpqem-my.html;今天咱們主要來講一下redis5上cluster相關配置命令說明;html

  建立集羣node

[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的關係;mysql

  查看集羣信息redis

[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 對應關係sql

[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 ~]#

  查看集羣狀態shell

[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指定要執行的命令;bash

  添加一個新節點到現有集羣服務器

  實驗環境說明工具

  環境目錄結構ui

[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以上作集羣比較好;

相關文章
相關標籤/搜索