redis集群配置(Mac)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xianglingchuan/article/details/86662275

主要解决在Mac进行redis的集群安装及配置
包括对集群、节点、槽(slot)、键的基本命令使用,以及常见错误
版本: redis 5.3
系统: mac 10

前期准备

目录结构:
mkdir cluster-test
cd cluster-test
mkdir 7000 7001 7002 7003 7004 7005

最基本的Redis集群配置文件:
port 7000
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes

cd 7000
touch redis.conf
cp 7000/redis.conf 7001/
cp 7000/redis.conf 7002/
cp 7000/redis.conf 7003/
cp 7000/redis.conf 7004/
cp 7000/redis.conf 7005/
依次修改端口号为7001、7002、7003、7004、7005。

cd 7000
./redis-server 7000/redis.conf
cd 7001
./redis-server 7001/redis.conf
cd 7002
./redis-server 7002/redis.conf
cd 7003
./redis-server 7003/redis.conf
cd 7004
./redis-server 7004/redis.conf
cd 7005
./redis-server 7004/redis.conf

集群

创建集群命令

root-2:src home$ ./redis-cli --cluster create 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 --cluster-replicas 1
>>> Performing hash slots allocation on 6 nodes...
Master[0] -> Slots 0 - 5460
Master[1] -> Slots 5461 - 10922
Master[2] -> Slots 10923 - 16383
Adding replica 127.0.0.1:7003 to 127.0.0.1:7000
Adding replica 127.0.0.1:7004 to 127.0.0.1:7001
Adding replica 127.0.0.1:7005 to 127.0.0.1:7002
..............................................................................

集群的信息

命令 cluster info
例如:

127.0.0.1:7001> cluster info
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:3
cluster_current_epoch:6
cluster_my_epoch:2
cluster_stats_messages_ping_sent:1632
cluster_stats_messages_pong_sent:1315
cluster_stats_messages_fail_sent:6
cluster_stats_messages_sent:2953
cluster_stats_messages_ping_received:1315
cluster_stats_messages_pong_received:1296
cluster_stats_messages_fail_received:3
cluster_stats_messages_received:2614

集群节点列表

列出集群当前已知的所有节点(node): 命令 cluster nodes
例如:

127.0.0.1:7001> cluster nodes
cee178498a9de723c483368c7686236784243b10 127.0.0.1:7005@17005 slave 5ee5cf6f5a52df9cc64511d241b53f86ccb3139e 0 1546420742000 6 connected
1218d1389216da13e5d6660a2b5a41801a17fe79 127.0.0.1:7003@17003 slave 865b050e705c01567512bcf403e98453e1c9e35c 0 1546420741830 3 connected
389b50f18acaf34aec94a9a093953ad54181bea3 127.0.0.1:7004@17004 slave 8b84a5d03b9970e316c39c903ee69b21b6b8e925 0 1546420741628 1 connected
5ee5cf6f5a52df9cc64511d241b53f86ccb3139e 127.0.0.1:7001@17001 myself,master - 0 1546420740000 2 connected 5461-10922
865b050e705c01567512bcf403e98453e1c9e35c 127.0.0.1:7002@17002 master - 0 1546420741000 3 connected 10923-16383
8b84a5d03b9970e316c39c903ee69b21b6b8e925 127.0.0.1:7000@17000 master - 0 1546420742536 1 connected 0-5460

节点

添加节点

重新启动两个单独redis节点 127.0.0.1:7006、127.0.0.1:7007
cluster meet :将 ip 和 port 所指定的节点添加到集群当中,让它成为集群的一份子。

127.0.0.1:7000> cluster meet 127.0.0.1 7006
OK
127.0.0.1:7000> cluster meet 127.0.0.1 7007
OK
127.0.0.1:7000> cluster nodes
11bf0c34dd4281560f6904634a3a96c199e54096 127.0.0.1:7007@17007 master - 0 1546421193273 0 connected
8b84a5d03b9970e316c39c903ee69b21b6b8e925 127.0.0.1:7000@17000 myself,master - 0 1546421192000 1 connected 0-5459
10fb93330fb3e6e1bad3b121e8b29a845f1a5268 127.0.0.1:7006@17006 master - 0 1546421191251 0 connected
389b50f18acaf34aec94a9a093953ad54181bea3 127.0.0.1:7004@17004 slave 8b84a5d03b9970e316c39c903ee69b21b6b8e925 0 1546421193273 5 connected
cee178498a9de723c483368c7686236784243b10 127.0.0.1:7005@17005 slave 5ee5cf6f5a52df9cc64511d241b53f86ccb3139e 0 1546421191000 6 connected
5ee5cf6f5a52df9cc64511d241b53f86ccb3139e 127.0.0.1:7001@17001 master - 0 1546421192059 2 connected 5461-10922
1218d1389216da13e5d6660a2b5a41801a17fe79 127.0.0.1:7003@17003 slave 865b050e705c01567512bcf403e98453e1c9e35c 0 1546421191000 4 connected
865b050e705c01567512bcf403e98453e1c9e35c 127.0.0.1:7002@17002 master - 0 1546421192261 3 connected 10923-16383

移除节点

cluster forget <node_id> :从集群中移除 node_id 指定的节点。

127.0.0.1:7000> cluster forget 11bf0c34dd4281560f6904634a3a96c199e54096
OK
127.0.0.1:7000> cluster forget 10fb93330fb3e6e1bad3b121e8b29a845f1a5268
OK
127.0.0.1:7000> 
127.0.0.1:7000> 
127.0.0.1:7000> cluster nodes
8b84a5d03b9970e316c39c903ee69b21b6b8e925 127.0.0.1:7000@17000 myself,master - 0 1546421261000 1 connected 0-5459
389b50f18acaf34aec94a9a093953ad54181bea3 127.0.0.1:7004@17004 slave 8b84a5d03b9970e316c39c903ee69b21b6b8e925 0 1546421264941 5 connected
cee178498a9de723c483368c7686236784243b10 127.0.0.1:7005@17005 slave 5ee5cf6f5a52df9cc64511d241b53f86ccb3139e 0 1546421263931 6 connected
5ee5cf6f5a52df9cc64511d241b53f86ccb3139e 127.0.0.1:7001@17001 master - 0 1546421264538 2 connected 5461-10922
1218d1389216da13e5d6660a2b5a41801a17fe79 127.0.0.1:7003@17003 slave 865b050e705c01567512bcf403e98453e1c9e35c 0 1546421264640 4 connected
865b050e705c01567512bcf403e98453e1c9e35c 127.0.0.1:7002@17002 master - 0 1546421263526 3 connected 10923-16383

设备节点为slave节点

cluster replicate <master_node_id> :将当前从节点设置为 node_id 指定的master节点的slave节点。只能针对slave节点操作。

bogon:7007 xianglingchuan$ redis-cli -p 7007
127.0.0.1:7007> cluster replicate 10fb93330fb3e6e1bad3b121e8b29a845f1a5268
OK
127.0.0.1:7007> cluster nodes
10fb93330fb3e6e1bad3b121e8b29a845f1a5268 127.0.0.1:7006@17006 master - 0 1546421611000 7 connected
1218d1389216da13e5d6660a2b5a41801a17fe79 127.0.0.1:7003@17003 slave 865b050e705c01567512bcf403e98453e1c9e35c 0 1546421611244 3 connected
5ee5cf6f5a52df9cc64511d241b53f86ccb3139e 127.0.0.1:7001@17001 master - 0 1546421612258 2 connected 5461-10922
8b84a5d03b9970e316c39c903ee69b21b6b8e925 127.0.0.1:7000@17000 master - 0 1546421612000 1 connected 0-5459
389b50f18acaf34aec94a9a093953ad54181bea3 127.0.0.1:7004@17004 slave 8b84a5d03b9970e316c39c903ee69b21b6b8e925 0 1546421612561 1 connected
cee178498a9de723c483368c7686236784243b10 127.0.0.1:7005@17005 slave 5ee5cf6f5a52df9cc64511d241b53f86ccb3139e 0 1546421612763 2 connected
11bf0c34dd4281560f6904634a3a96c199e54096 127.0.0.1:7007@17007 myself,slave 10fb93330fb3e6e1bad3b121e8b29a845f1a5268 0 1546421610000 0 connected
865b050e705c01567512bcf403e98453e1c9e35c 127.0.0.1:7002@17002 master - 0 1546421611000 3 connected 10923-16383
127.0.0.1:7007> cluster saveconfig

cluster saveconfig :将节点的配置文件保存到硬盘里面。

槽(slot)

平衡各节点槽数量

bogon:7007 home$ redis-cli --cluster rebalance --cluster-threshold 1 127.0.0.1:7000
>>> Performing Cluster Check (using node 127.0.0.1:7000)
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
>>> Rebalancing across 4 nodes. Total weight = 4.00
Moving 1200 slots from 127.0.0.1:7001 to 127.0.0.1:7006

在线迁移槽

将7006节点多增加500个slot

bogon:7007 home$ redis-cli --cluster reshard 127.0.0.1:7000
>>> Performing Cluster Check (using node 127.0.0.1:7000)
M: 8b84a5d03b9970e316c39c903ee69b21b6b8e925 127.0.0.1:7000
   slots:[1364-5459] (4096 slots) master
   1 additional replica(s)
S: 11bf0c34dd4281560f6904634a3a96c199e54096 127.0.0.1:7007
   slots: (0 slots) slave
   replicates 10fb93330fb3e6e1bad3b121e8b29a845f1a5268
M: 10fb93330fb3e6e1bad3b121e8b29a845f1a5268 127.0.0.1:7006
   slots:[0-1363],[5460-6826],[10923-12287] (4096 slots) master
   1 additional replica(s)
M: 5ee5cf6f5a52df9cc64511d241b53f86ccb3139e 127.0.0.1:7001
   slots:[6827-10922] (4096 slots) master
   1 additional replica(s)
S: cee178498a9de723c483368c7686236784243b10 127.0.0.1:7005
   slots: (0 slots) slave
   replicates 5ee5cf6f5a52df9cc64511d241b53f86ccb3139e
S: 389b50f18acaf34aec94a9a093953ad54181bea3 127.0.0.1:7004
   slots: (0 slots) slave
   replicates 8b84a5d03b9970e316c39c903ee69b21b6b8e925
S: 1218d1389216da13e5d6660a2b5a41801a17fe79 127.0.0.1:7003
   slots: (0 slots) slave
   replicates 865b050e705c01567512bcf403e98453e1c9e35c
M: 865b050e705c01567512bcf403e98453e1c9e35c 127.0.0.1:7002
   slots:[12288-16383] (4096 slots) master
   1 additional replica(s)
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
How many slots do you want to move (from 1 to 16384)? 500
What is the receiving node ID? 10fb93330fb3e6e1bad3b121e8b29a845f1a5268
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 500 slots.
  Source nodes:
    M: 8b84a5d03b9970e316c39c903ee69b21b6b8e925 127.0.0.1:7000
       slots:[1364-5459] (4096 slots) master
       1 additional replica(s)
    M: 5ee5cf6f5a52df9cc64511d241b53f86ccb3139e 127.0.0.1:7001
       slots:[6827-10922] (4096 slots) master
       1 additional replica(s)
    M: 865b050e705c01567512bcf403e98453e1c9e35c 127.0.0.1:7002
       slots:[12288-16383] (4096 slots) master
       1 additional replica(s)
  Destination node:
    M: 10fb93330fb3e6e1bad3b121e8b29a845f1a5268 127.0.0.1:7006
       slots:[0-1363],[5460-6826],[10923-12287] (4096 slots) master
       1 additional replica(s)
  Resharding plan:
    Moving slot 1364 from 8b84a5d03b9970e316c39c903ee69b21b6b8e925

完成后:

bogon:7007 home$ redis-cli --cluster info 127.0.0.1:7006
127.0.0.1:7006 (10fb9333...) -> 0 keys | 4595 slots | 1 slaves.
127.0.0.1:7002 (865b050e...) -> 0 keys | 3930 slots | 1 slaves.
127.0.0.1:7001 (5ee5cf6f...) -> 0 keys | 3930 slots | 1 slaves.
127.0.0.1:7000 (8b84a5d0...) -> 0 keys | 3929 slots | 1 slaves.
[OK] 0 keys in 4 masters.

异常错误处理

错误一

报错信息:

home:src root$ ./redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005
WARNING: redis-trib.rb is not longer available!
You should use redis-cli instead.

解决方法:

redis5.0后用redis-cli作为集群命令了。
例如: ./redis-cli create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003

错误二

[ERR] Nodes don't agree about configuration!
>>> Check for open slots...
>>> Check slots coverage...
[ERR] Not all 16384 slots are covered by nodes.

*** Please fix your cluster problems before resharding

解决方法:
redis-cli --cluster fix <IP地址>:<端口号>

例如:
bogon:7007 root$ redis-cli --cluster fix 127.0.0.1:7006
127.0.0.1:7006 (10fb9333...) -> 0 keys | 0 slots | 1 slaves.
127.0.0.1:7002 (865b050e...) -> 0 keys | 5462 slots | 1 slaves.
127.0.0.1:7001 (5ee5cf6f...) -> 0 keys | 5462 slots | 1 slaves.
127.0.0.1:7000 (8b84a5d0...) -> 0 keys | 5460 slots | 1 slaves.

猜你喜欢

转载自blog.csdn.net/xianglingchuan/article/details/86662275