[root@server1 redis-6.2.1]# cd utils/
[root@server1 utils]# cd create-cluster/
[root@server1 create-cluster]# ls
create-cluster README
[root@server1 create-cluster]# pwd
/test/redis-6.2.1/utils/create-cluster
[root@server1 create-cluster]# ./create-cluster start
Starting 30001
Starting 30002
Starting 30003
Starting 30004
Starting 30005
Starting 30006
[root@server1 create-cluster]# ps ax | grep cluster
3862 ? Ssl 0:00 …/…/src//redis-server *:30001 [cluster]
3864 ? Ssl 0:00 …/…/src//redis-server *:30002 [cluster]
3866 ? Ssl 0:00 …/…/src//redis-server *:30003 [cluster]
3868 ? Ssl 0:00 …/…/src//redis-server *:30004 [cluster]
3870 ? Ssl 0:00 …/…/src//redis-server *:30005 [cluster]
3872 ? Ssl 0:00 …/…/src//redis-server *:30006 [cluster]
3926 pts/0 R+ 0:00 grep --color=auto cluster
[root@server1 create-cluster]# ls
30001.log 30005.log appendonly-30003.aof create-cluster nodes-30004.conf
30002.log 30006.log appendonly-30004.aof nodes-30001.conf nodes-30005.conf
30003.log appendonly-30001.aof appendonly-30005.aof nodes-30002.conf nodes-30006.conf
30004.log appendonly-30002.aof appendonly-30006.aof nodes-30003.conf README
[root@server1 create-cluster]# vim create-cluster
[root@server1 create-cluster]# ./create-cluster create
[root@server1 create-cluster]# redis-cli --cluster check 127.0.0.1:30001
127.0.0.1:30001 (ffabd2dd…) -> 0 keys | 5461 slots | 1 slaves.
127.0.0.1:30003 (b838bbb6…) -> 0 keys | 5461 slots | 1 slaves.
127.0.0.1:30002 (549a6c9d…) -> 0 keys | 5462 slots | 1 slaves.
[OK] 0 keys in 3 masters.
0.00 keys per slot on average.
Performing Cluster Check (using node 127.0.0.1:30001)
M: ffabd2dd9182675bae56cc0c4cb52a23d1bcd9c2 127.0.0.1:30001
slots:[0-5460] (5461 slots) master
1 additional replica(s)
S: 4991a5b6eaf23eaec5ea257744af46a6768961b8 127.0.0.1:30005
slots: (0 slots) slave
replicates ffabd2dd9182675bae56cc0c4cb52a23d1bcd9c2
M: b838bbb6a29ec5d009b3b28f3f0748338218382c 127.0.0.1:30003
slots:[10923-16383] (5461 slots) master
1 additional replica(s)
S: a9d5c9887d9b1ad262bed505bec279db6d61e2c9 127.0.0.1:30006
slots: (0 slots) slave
replicates 549a6c9d545d26162c6ee6df5486fad4ca035771
S: 4761672b82ea0510f0cda91a8659cc65bbcc889a 127.0.0.1:30004
slots: (0 slots) slave
replicates b838bbb6a29ec5d009b3b28f3f0748338218382c
M: 549a6c9d545d26162c6ee6df5486fad4ca035771 127.0.0.1:30002
slots:[5461-10922] (5462 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@server1 create-cluster]# redis-cli -c -p 30001
127.0.0.1:30001> get name
-> Redirected to slot [5798] located at 127.0.0.1:30002
(nil)
127.0.0.1:30002> set name westos
OK
127.0.0.1:30002> get name
“westos”
[root@server1 create-cluster]# redis-cli -c -p 30006
127.0.0.1:30006> get name
-> Redirected to slot [5798] located at 127.0.0.1:30002
“westos”
127.0.0.1:30002>
模拟故障
127.0.0.1:30002> SHUTDOWN
not connected>
[root@server1 create-cluster]# redis-cli -c -p 30001
127.0.0.1:30001> get name
-> Redirected to slot [5798] located at 127.0.0.1:30006
“westos”
127.0.0.1:30006>
[root@server1 create-cluster]# redis-cli --cluster check 127.0.0.1:30001
Could not connect to Redis at 127.0.0.1:30002: Connection refused
127.0.0.1:30001 (ffabd2dd…) -> 0 keys | 5461 slots | 1 slaves.
127.0.0.1:30003 (b838bbb6…) -> 0 keys | 5461 slots | 1 slaves.
127.0.0.1:30006 (a9d5c988…) -> 1 keys | 5462 slots | 0 slaves.
[OK] 1 keys in 3 masters.
0.00 keys per slot on average.
Performing Cluster Check (using node 127.0.0.1:30001)
M: ffabd2dd9182675bae56cc0c4cb52a23d1bcd9c2 127.0.0.1:30001
slots:[0-5460] (5461 slots) master
1 additional replica(s)
S: 4991a5b6eaf23eaec5ea257744af46a6768961b8 127.0.0.1:30005
slots: (0 slots) slave
replicates ffabd2dd9182675bae56cc0c4cb52a23d1bcd9c2
M: b838bbb6a29ec5d009b3b28f3f0748338218382c 127.0.0.1:30003
slots:[10923-16383] (5461 slots) master
1 additional replica(s)
M: a9d5c9887d9b1ad262bed505bec279db6d61e2c9 127.0.0.1:30006
slots:[5461-10922] (5462 slots) master
S: 4761672b82ea0510f0cda91a8659cc65bbcc889a 127.0.0.1:30004
slots: (0 slots) slave
replicates b838bbb6a29ec5d009b3b28f3f0748338218382c
[OK] All nodes agree about slots configuration.Check for open slots…
Check slots coverage…
[OK] All 16384 slots covered.
[root@server1 create-cluster]# redis-cli -c -p 30001
127.0.0.1:30001> get name
-> Redirected to slot [5798] located at 127.0.0.1:30006
“westos”
127.0.0.1:30006> SHUTDOWN
not connected>
集群不可用
[root@server1 create-cluster]# redis-cli -c -p 30001
127.0.0.1:30001> get name
(error) CLUSTERDOWN The cluster is down
[root@server1 create-cluster]# redis-cli --cluster check 127.0.0.1:30001
Could not connect to Redis at 127.0.0.1:30006: Connection refused
Could not connect to Redis at 127.0.0.1:30002: Connection refused
127.0.0.1:30001 (ffabd2dd…) -> 0 keys | 5461 slots | 1 slaves.
127.0.0.1:30003 (b838bbb6…) -> 0 keys | 5461 slots | 1 slaves.
[OK] 0 keys in 2 masters.
0.00 keys per slot on average.
Performing Cluster Check (using node 127.0.0.1:30001)
M: ffabd2dd9182675bae56cc0c4cb52a23d1bcd9c2 127.0.0.1:30001
slots:[0-5460] (5461 slots) master
1 additional replica(s)
S: 4991a5b6eaf23eaec5ea257744af46a6768961b8 127.0.0.1:30005
slots: (0 slots) slave
replicates ffabd2dd9182675bae56cc0c4cb52a23d1bcd9c2
M: b838bbb6a29ec5d009b3b28f3f0748338218382c 127.0.0.1:30003
slots:[10923-16383] (5461 slots) master
1 additional replica(s)
S: 4761672b82ea0510f0cda91a8659cc65bbcc889a 127.0.0.1:30004
slots: (0 slots) slave
replicates b838bbb6a29ec5d009b3b28f3f0748338218382c
[OK] All nodes agree about slots configuration.Check for open slots…
Check slots coverage…
[ERR] Not all 16384 slots are covered by nodes.
恢复
[root@server1 create-cluster]# ./create-cluster start
Starting 30001
Starting 30002
Starting 30003
Starting 30004
Starting 30005
Starting 30006
[root@server1 create-cluster]# ps ax | grep cluster
3862 ? Ssl 0:03 …/…/src//redis-server *:30001 [cluster]
3866 ? Ssl 0:02 …/…/src//redis-server *:30003 [cluster]
3868 ? Ssl 0:03 …/…/src//redis-server *:30004 [cluster]
3870 ? Ssl 0:03 …/…/src//redis-server *:30005 [cluster]
4611 ? Ssl 0:00 …/…/src//redis-server *:30002 [cluster]
4623 ? Ssl 0:00 …/…/src//redis-server *:30006 [cluster]
4641 pts/0 R+ 0:00 grep --color=auto cluster
[root@server1 create-cluster]# redis-cli --cluster check 127.0.0.1:30001
127.0.0.1:30001 (ffabd2dd…) -> 0 keys | 5461 slots | 1 slaves.
127.0.0.1:30003 (b838bbb6…) -> 0 keys | 5461 slots | 1 slaves.
127.0.0.1:30006 (a9d5c988…) -> 1 keys | 5462 slots | 1 slaves.
[OK] 1 keys in 3 masters.
0.00 keys per slot on average.
Performing Cluster Check (using node 127.0.0.1:30001)
M: ffabd2dd9182675bae56cc0c4cb52a23d1bcd9c2 127.0.0.1:30001
slots:[0-5460] (5461 slots) master
1 additional replica(s)
S: 4991a5b6eaf23eaec5ea257744af46a6768961b8 127.0.0.1:30005
slots: (0 slots) slave
replicates ffabd2dd9182675bae56cc0c4cb52a23d1bcd9c2
M: b838bbb6a29ec5d009b3b28f3f0748338218382c 127.0.0.1:30003
slots:[10923-16383] (5461 slots) master
1 additional replica(s)
M: a9d5c9887d9b1ad262bed505bec279db6d61e2c9 127.0.0.1:30006
slots:[5461-10922] (5462 slots) master
1 additional replica(s)
S: 4761672b82ea0510f0cda91a8659cc65bbcc889a 127.0.0.1:30004
slots: (0 slots) slave
replicates b838bbb6a29ec5d009b3b28f3f0748338218382c
S: 549a6c9d545d26162c6ee6df5486fad4ca035771 127.0.0.1:30002
slots: (0 slots) slave
replicates a9d5c9887d9b1ad262bed505bec279db6d61e2c9
[OK] All nodes agree about slots configuration.Check for open slots…
Check slots coverage…
[OK] All 16384 slots covered.
[root@server1 create-cluster]# redis-cli -c -p 30001
127.0.0.1:30001> get name
-> Redirected to slot [5798] located at 127.0.0.1:30006
“westos”
添加节点
[root@server1 create-cluster]# vim create-cluster
[root@server1 create-cluster]# ./create-cluster start
Starting 30001
Starting 30002
Starting 30003
Starting 30004
Starting 30005
Starting 30006
Starting 30007
Starting 30008
[root@server1 create-cluster]# ps ax | grep cluster
3862 ? Ssl 0:03 …/…/src//redis-server *:30001 [cluster]
3866 ? Ssl 0:03 …/…/src//redis-server *:30003 [cluster]
3868 ? Ssl 0:03 …/…/src//redis-server *:30004 [cluster]
3870 ? Ssl 0:03 …/…/src//redis-server *:30005 [cluster]
4611 ? Ssl 0:00 …/…/src//redis-server *:30002 [cluster]
4623 ? Ssl 0:00 …/…/src//redis-server *:30006 [cluster]
4784 ? Ssl 0:00 …/…/src//redis-server *:30007 [cluster]
4786 ? Ssl 0:00 …/…/src//redis-server *:30008 [cluster]
4820 pts/0 S+ 0:00 grep --color=auto cluster
[root@server1 create-cluster]# redis-cli --cluster add-node 127.0.0.1:30007 127.0.0.1:30001
[root@server1 create-cluster]# redis-cli --cluster check 127.0.0.1:30001
127.0.0.1:30001 (ffabd2dd…) -> 0 keys | 5461 slots | 1 slaves.
127.0.0.1:30003 (b838bbb6…) -> 0 keys | 5461 slots | 1 slaves.
127.0.0.1:30006 (a9d5c988…) -> 1 keys | 5462 slots | 1 slaves.
127.0.0.1:30007 (8e39ef73…) -> 0 keys | 0 slots | 0 slaves.
[OK] 1 keys in 4 masters.
0.00 keys per slot on average.
Performing Cluster Check (using node 127.0.0.1:30001)
M: ffabd2dd9182675bae56cc0c4cb52a23d1bcd9c2 127.0.0.1:30001
slots:[0-5460] (5461 slots) master
1 additional replica(s)
S: 4991a5b6eaf23eaec5ea257744af46a6768961b8 127.0.0.1:30005
slots: (0 slots) slave
replicates ffabd2dd9182675bae56cc0c4cb52a23d1bcd9c2
M: b838bbb6a29ec5d009b3b28f3f0748338218382c 127.0.0.1:30003
slots:[10923-16383] (5461 slots) master
1 additional replica(s)
M: a9d5c9887d9b1ad262bed505bec279db6d61e2c9 127.0.0.1:30006
slots:[5461-10922] (5462 slots) master
1 additional replica(s)
M: 8e39ef73d0b5780f796753d1891e53914bce16d7 127.0.0.1:30007
slots: (0 slots) master
S: 4761672b82ea0510f0cda91a8659cc65bbcc889a 127.0.0.1:30004
slots: (0 slots) slave
replicates b838bbb6a29ec5d009b3b28f3f0748338218382c
S: 549a6c9d545d26162c6ee6df5486fad4ca035771 127.0.0.1:30002
slots: (0 slots) slave
replicates a9d5c9887d9b1ad262bed505bec279db6d61e2c9
[OK] All nodes agree about slots configuration.Check for open slots…
Check slots coverage…
[OK] All 16384 slots covered.
给7分配哈希槽
[root@server1 create-cluster]# redis-cli --cluster reshard 127.0.0.1:30001 --cluster-from 127.0.0.1:30001 --cluster-to 127.0.0.1:30007 --cluster-slots 1000 --cluster-yes
Performing Cluster Check (using node 127.0.0.1:30001)
M: ffabd2dd9182675bae56cc0c4cb52a23d1bcd9c2 127.0.0.1:30001
slots:[0-5460] (5461 slots) master
1 additional replica(s)
S: 4991a5b6eaf23eaec5ea257744af46a6768961b8 127.0.0.1:30005
slots: (0 slots) slave
replicates ffabd2dd9182675bae56cc0c4cb52a23d1bcd9c2
M: b838bbb6a29ec5d009b3b28f3f0748338218382c 127.0.0.1:30003
slots:[10923-16383] (5461 slots) master
1 additional replica(s)
M: a9d5c9887d9b1ad262bed505bec279db6d61e2c9 127.0.0.1:30006
slots:[5461-10922] (5462 slots) master
1 additional replica(s)
M: 8e39ef73d0b5780f796753d1891e53914bce16d7 127.0.0.1:30007
slots: (0 slots) master
S: 4761672b82ea0510f0cda91a8659cc65bbcc889a 127.0.0.1:30004
slots: (0 slots) slave
replicates b838bbb6a29ec5d009b3b28f3f0748338218382c
S: 549a6c9d545d26162c6ee6df5486fad4ca035771 127.0.0.1:30002
slots: (0 slots) slave
replicates a9d5c9887d9b1ad262bed505bec279db6d61e2c9
[OK] All nodes agree about slots configuration.Check for open slots…
Check slots coverage…
[OK] All 16384 slots covered.
*** The specified node (127.0.0.1:30007) is not known or not a master, please retry.
报错的解决方法:
[root@server1 create-cluster]# redis-cli --cluster reshard 127.0.0.1:30001
Performing Cluster Check (using node 127.0.0.1:30001)
M: ffabd2dd9182675bae56cc0c4cb52a23d1bcd9c2 127.0.0.1:30001
slots:[0-5460] (5461 slots) master
1 additional replica(s)
S: 4991a5b6eaf23eaec5ea257744af46a6768961b8 127.0.0.1:30005
slots: (0 slots) slave
replicates ffabd2dd9182675bae56cc0c4cb52a23d1bcd9c2
M: b838bbb6a29ec5d009b3b28f3f0748338218382c 127.0.0.1:30003
slots:[10923-16383] (5461 slots) master
1 additional replica(s)
M: a9d5c9887d9b1ad262bed505bec279db6d61e2c9 127.0.0.1:30006
slots:[5461-10922] (5462 slots) master
1 additional replica(s)
M: 8e39ef73d0b5780f796753d1891e53914bce16d7 127.0.0.1:30007
slots: (0 slots) master
S: 4761672b82ea0510f0cda91a8659cc65bbcc889a 127.0.0.1:30004
slots: (0 slots) slave
replicates b838bbb6a29ec5d009b3b28f3f0748338218382c
S: 549a6c9d545d26162c6ee6df5486fad4ca035771 127.0.0.1:30002
slots: (0 slots) slave
replicates a9d5c9887d9b1ad262bed505bec279db6d61e2c9
[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)? 1000
What is the receiving node ID? 8e39ef73d0b5780f796753d1891e53914bce16d7
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
[root@server1 create-cluster]# redis-cli --cluster check 127.0.0.1:30001
127.0.0.1:30001 (ffabd2dd…) -> 0 keys | 5128 slots | 1 slaves.
127.0.0.1:30003 (b838bbb6…) -> 0 keys | 5128 slots | 1 slaves.
127.0.0.1:30006 (a9d5c988…) -> 1 keys | 5128 slots | 1 slaves.
127.0.0.1:30007 (8e39ef73…) -> 0 keys | 1000 slots | 0 slaves.
[OK] 1 keys in 4 masters.
0.00 keys per slot on average.
Performing Cluster Check (using node 127.0.0.1:30001)
M: ffabd2dd9182675bae56cc0c4cb52a23d1bcd9c2 127.0.0.1:30001
slots:[333-5460] (5128 slots) master
1 additional replica(s)
S: 4991a5b6eaf23eaec5ea257744af46a6768961b8 127.0.0.1:30005
slots: (0 slots) slave
replicates ffabd2dd9182675bae56cc0c4cb52a23d1bcd9c2
M: b838bbb6a29ec5d009b3b28f3f0748338218382c 127.0.0.1:30003
slots:[11256-16383] (5128 slots) master
1 additional replica(s)
M: a9d5c9887d9b1ad262bed505bec279db6d61e2c9 127.0.0.1:30006
slots:[5795-10922] (5128 slots) master
1 additional replica(s)
M: 8e39ef73d0b5780f796753d1891e53914bce16d7 127.0.0.1:30007
slots:[0-332],[5461-5794],[10923-11255] (1000 slots) master
S: 4761672b82ea0510f0cda91a8659cc65bbcc889a 127.0.0.1:30004
slots: (0 slots) slave
replicates b838bbb6a29ec5d009b3b28f3f0748338218382c
S: 549a6c9d545d26162c6ee6df5486fad4ca035771 127.0.0.1:30002
slots: (0 slots) slave
replicates a9d5c9887d9b1ad262bed505bec279db6d61e2c9
[OK] All nodes agree about slots configuration.Check for open slots…
Check slots coverage…
[OK] All 16384 slots covered.