Redis 集群

时间:2021-10-07
本文章向大家介绍Redis 集群,主要包括Redis 集群使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
10.0.0.101,10.0.0.102,10.0.0.103 - 集群master
10.0.0.104,10.0.0.105,10.0.0.106 - 集群slave

# 修改集群配置
sed -i.bak -e '/masterauth/a masterauth 123456' -e '/# cluster-enabled yes/a cluster-enabled yes' -e '/# cluster-config-file nodes-6379.conf/a cluster-config-file nodes-6379.conf' -e '/cluster-requirefull-coverage yes/c cluster-require-full-coverage no' /apps/redis/etc/redis.conf

# 配置集群
redis-cli -a 123456 --cluster create 10.0.0.101:6379 10.0.0.102:6379 10.0.0.103:6379 10.0.0.104:6379 10.0.0.105:6379 10.0.0.106:6379 --cluster-replicas 1

故障自愈之前,105是101的从
[20:33:22 root@localhost ~]#redis-cli -a 123456 cluster nodes
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
2be4bfee4bbcff66ed4678b364e1acc0a0de689b 10.0.0.102:6379@16379 master - 0 1633610227401 2 connected 5461-10922
9f222d9116edd65a1850aac65c1cdceb15159bfa 10.0.0.105:6379@16379 slave 8216763e1d73c191f6ec1e7e4f6fae090a72abbc 0 1633610227000 1 connected
0ea52b759530416a9d3a05c9bf3e7445c298eda6 10.0.0.106:6379@16379 slave 2be4bfee4bbcff66ed4678b364e1acc0a0de689b 0 1633610226371 2 connected
fe7ea30427e3a02b838958a27f415dba7dd72da3 10.0.0.104:6379@16379 slave 98c0b7a483cddb733f40df7fdb02cee30766b52c 0 1633610227000 3 connected
98c0b7a483cddb733f40df7fdb02cee30766b52c 10.0.0.103:6379@16379 myself,master - 0 1633610226000 3 connected 10923-16383
8216763e1d73c191f6ec1e7e4f6fae090a72abbc 10.0.0.101:6379@16379 master - 0 1633610228408 1 connected 0-5460


故障自愈以后,105变主,101变成105的从
[20:57:48 root@localhost ~]#redis-cli -a 123456 cluster nodes
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
9f222d9116edd65a1850aac65c1cdceb15159bfa 10.0.0.105:6379@16379 master - 0 1633611468000 7 connected 0-5460
2be4bfee4bbcff66ed4678b364e1acc0a0de689b 10.0.0.102:6379@16379 master - 0 1633611466000 2 connected 5461-10922
0ea52b759530416a9d3a05c9bf3e7445c298eda6 10.0.0.106:6379@16379 myself,slave 2be4bfee4bbcff66ed4678b364e1acc0a0de689b 0 1633611467000 2 connected
8216763e1d73c191f6ec1e7e4f6fae090a72abbc 10.0.0.101:6379@16379 slave 9f222d9116edd65a1850aac65c1cdceb15159bfa 0 1633611468521 7 connected
98c0b7a483cddb733f40df7fdb02cee30766b52c 10.0.0.103:6379@16379 master - 0 1633611469533 3 connected 10923-16383
fe7ea30427e3a02b838958a27f415dba7dd72da3 10.0.0.104:6379@16379 slave 98c0b7a483cddb733f40df7fdb02cee30766b52c 0 1633611467511 3 connected

[20:37:48 root@localhost ~]#redis-cli -a 123456 --cluster check 10.0.0.103:6379
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
10.0.0.103:6379 (98c0b7a4...) -> 0 keys | 5461 slots | 1 slaves.
10.0.0.102:6379 (2be4bfee...) -> 1 keys | 5462 slots | 1 slaves.
10.0.0.105:6379 (9f222d91...) -> 0 keys | 5461 slots | 1 slaves.
[OK] 1 keys in 3 masters.
0.00 keys per slot on average.
>>> Performing Cluster Check (using node 10.0.0.103:6379)
M: 98c0b7a483cddb733f40df7fdb02cee30766b52c 10.0.0.103:6379
   slots:[10923-16383] (5461 slots) master
   1 additional replica(s)
M: 2be4bfee4bbcff66ed4678b364e1acc0a0de689b 10.0.0.102:6379
   slots:[5461-10922] (5462 slots) master
   1 additional replica(s)
M: 9f222d9116edd65a1850aac65c1cdceb15159bfa 10.0.0.105:6379
   slots:[0-5460] (5461 slots) master
   1 additional replica(s)
S: 0ea52b759530416a9d3a05c9bf3e7445c298eda6 10.0.0.106:6379
   slots: (0 slots) slave
   replicates 2be4bfee4bbcff66ed4678b364e1acc0a0de689b
S: fe7ea30427e3a02b838958a27f415dba7dd72da3 10.0.0.104:6379
   slots: (0 slots) slave
   replicates 98c0b7a483cddb733f40df7fdb02cee30766b52c
S: 8216763e1d73c191f6ec1e7e4f6fae090a72abbc 10.0.0.101:6379
   slots: (0 slots) slave
   replicates 9f222d9116edd65a1850aac65c1cdceb15159bfa

### 缩容
# 把103的slot分配给其他主节点机器
[21:18:34 root@localhost ~]#redis-cli -a 123456 --cluster reshard 10.0.0.103:6379

# 分配所有的slot以后,删除当前集群的103节点
[21:18:34 root@localhost ~]#redis-cli -a 123456 --cluster del-node 10.0.0.102:6379 98c0b7a483cddb733f40df7fdb02cee30766b52c

# 删除一行,它的slave变成其他主的从节点
[21:12:27 root@localhost ~]#redis-cli -a 123456 --cluster check 10.0.0.102:6379
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
10.0.0.102:6379 (2be4bfee...) -> 1 keys | 7282 slots | 1 slaves.
10.0.0.105:6379 (9f222d91...) -> 0 keys | 9102 slots | 2 slaves.
[OK] 1 keys in 2 masters.
0.00 keys per slot on average.
>>> Performing Cluster Check (using node 10.0.0.102:6379)
M: 2be4bfee4bbcff66ed4678b364e1acc0a0de689b 10.0.0.102:6379
   slots:[5461-12742] (7282 slots) master
   1 additional replica(s)
S: 0ea52b759530416a9d3a05c9bf3e7445c298eda6 10.0.0.106:6379
   slots: (0 slots) slave
   replicates 2be4bfee4bbcff66ed4678b364e1acc0a0de689b
M: 9f222d9116edd65a1850aac65c1cdceb15159bfa 10.0.0.105:6379
   slots:[0-5460],[12743-16383] (9102 slots) master
   2 additional replica(s)
S: 8216763e1d73c191f6ec1e7e4f6fae090a72abbc 10.0.0.101:6379
   slots: (0 slots) slave
   replicates 9f222d9116edd65a1850aac65c1cdceb15159bfa
S: fe7ea30427e3a02b838958a27f415dba7dd72da3 10.0.0.104:6379
   slots: (0 slots) slave
   replicates 9f222d9116edd65a1850aac65c1cdceb15159bfa

# 删除从节点
[20:37:48 root@localhost ~]#redis-cli -a 123456 --cluster del-node 10.0.0.102:6379 fe7ea30427e3a02b838958a27f415dba7dd72da3

# 删除主节点和从节点的node.conf文件
[21:18:34 root@localhost ~]#rm -f /apps/redis/data/nodes-6379.conf

# 到这里,所有缩容完成
[21:12:38 root@localhost ~]#redis-cli -a 123456 --cluster check 10.0.0.102:6379
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
10.0.0.102:6379 (2be4bfee...) -> 1 keys | 7282 slots | 1 slaves.
10.0.0.105:6379 (9f222d91...) -> 0 keys | 9102 slots | 1 slaves.
[OK] 1 keys in 2 masters.
0.00 keys per slot on average.
>>> Performing Cluster Check (using node 10.0.0.102:6379)
M: 2be4bfee4bbcff66ed4678b364e1acc0a0de689b 10.0.0.102:6379
   slots:[5461-12742] (7282 slots) master
   1 additional replica(s)
S: 0ea52b759530416a9d3a05c9bf3e7445c298eda6 10.0.0.106:6379
   slots: (0 slots) slave
   replicates 2be4bfee4bbcff66ed4678b364e1acc0a0de689b
M: 9f222d9116edd65a1850aac65c1cdceb15159bfa 10.0.0.105:6379
   slots:[0-5460],[12743-16383] (9102 slots) master
   1 additional replica(s)
S: 8216763e1d73c191f6ec1e7e4f6fae090a72abbc 10.0.0.101:6379
   slots: (0 slots) slave
   replicates 9f222d9116edd65a1850aac65c1cdceb15159bfa


## 扩容

[21:23:40 root@localhost ~]#redis-cli -a 123456 --cluster add-node 10.0.0.103:6379 10.0.0.102:6379
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
>>> Adding node 10.0.0.103:6379 to cluster 10.0.0.102:6379
>>> Performing Cluster Check (using node 10.0.0.102:6379)
M: 2be4bfee4bbcff66ed4678b364e1acc0a0de689b 10.0.0.102:6379
   slots:[5461-12742] (7282 slots) master
   1 additional replica(s)
S: 0ea52b759530416a9d3a05c9bf3e7445c298eda6 10.0.0.106:6379
   slots: (0 slots) slave
   replicates 2be4bfee4bbcff66ed4678b364e1acc0a0de689b
M: 9f222d9116edd65a1850aac65c1cdceb15159bfa 10.0.0.105:6379
   slots:[0-5460],[12743-16383] (9102 slots) master
   1 additional replica(s)
S: 8216763e1d73c191f6ec1e7e4f6fae090a72abbc 10.0.0.101:6379
   slots: (0 slots) slave
   replicates 9f222d9116edd65a1850aac65c1cdceb15159bfa
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
>>> Send CLUSTER MEET to node 10.0.0.103:6379 to make it join the cluster.
[OK] New node added correctly.

# 此时已经加入到集群,但是无slave和slots,仅仅是一个master
[21:25:34 root@localhost ~]#redis-cli -a 123456 --cluster info 10.0.0.103:6379
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
10.0.0.103:6379 (98c0b7a4...) -> 0 keys | 0 slots | 0 slaves.
10.0.0.102:6379 (2be4bfee...) -> 1 keys | 7282 slots | 1 slaves.
10.0.0.105:6379 (9f222d91...) -> 0 keys | 9102 slots | 1 slaves.

# 分配slot

[21:31:01 root@localhost ~]#redis-cli -a 123456 --cluster reshard 10.0.0.103:6379

[21:30:58 root@localhost ~]#redis-cli -a 123456 --cluster check 10.0.0.103:6379
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
10.0.0.103:6379 (98c0b7a4...) -> 0 keys | 5462 slots | 0 slaves.
10.0.0.102:6379 (2be4bfee...) -> 1 keys | 5462 slots | 1 slaves.
10.0.0.105:6379 (9f222d91...) -> 0 keys | 5460 slots | 1 slaves.
[OK] 1 keys in 3 masters.
0.00 keys per slot on average.
>>> Performing Cluster Check (using node 10.0.0.103:6379)
M: 98c0b7a483cddb733f40df7fdb02cee30766b52c 10.0.0.103:6379
   slots:[0-3641],[5461-7280] (5462 slots) master
M: 2be4bfee4bbcff66ed4678b364e1acc0a0de689b 10.0.0.102:6379
   slots:[7281-12742] (5462 slots) master
   1 additional replica(s)
M: 9f222d9116edd65a1850aac65c1cdceb15159bfa 10.0.0.105:6379
   slots:[3642-5460],[12743-16383] (5460 slots) master
   1 additional replica(s)
S: 0ea52b759530416a9d3a05c9bf3e7445c298eda6 10.0.0.106:6379
   slots: (0 slots) slave
   replicates 2be4bfee4bbcff66ed4678b364e1acc0a0de689b
S: 8216763e1d73c191f6ec1e7e4f6fae090a72abbc 10.0.0.101:6379
   slots: (0 slots) slave
   replicates 9f222d9116edd65a1850aac65c1cdceb15159bfa
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.


# 加入从节点
[21:31:42 root@localhost ~]#redis-cli -a 123456 --cluster add-node 10.0.0.104:6379 10.0.0.102:6379 --cluster-slave --cluster-master-id 98c0b7a483cddb733f40df7fdb02cee30766b52c
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
>>> Adding node 10.0.0.104:6379 to cluster 10.0.0.102:6379
>>> Performing Cluster Check (using node 10.0.0.102:6379)
M: 2be4bfee4bbcff66ed4678b364e1acc0a0de689b 10.0.0.102:6379
   slots:[7281-12742] (5462 slots) master
   1 additional replica(s)
S: 0ea52b759530416a9d3a05c9bf3e7445c298eda6 10.0.0.106:6379
   slots: (0 slots) slave
   replicates 2be4bfee4bbcff66ed4678b364e1acc0a0de689b
M: 98c0b7a483cddb733f40df7fdb02cee30766b52c 10.0.0.103:6379
   slots:[0-3641],[5461-7280] (5462 slots) master
M: 9f222d9116edd65a1850aac65c1cdceb15159bfa 10.0.0.105:6379
   slots:[3642-5460],[12743-16383] (5460 slots) master
   1 additional replica(s)
S: 8216763e1d73c191f6ec1e7e4f6fae090a72abbc 10.0.0.101:6379
   slots: (0 slots) slave
   replicates 9f222d9116edd65a1850aac65c1cdceb15159bfa
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
>>> Send CLUSTER MEET to node 10.0.0.104:6379 to make it join the cluster.
Waiting for the cluster to join

>>> Configure node as replica of 10.0.0.103:6379.
[OK] New node added correctly.


# 查看集群
[21:34:10 root@localhost ~]#redis-cli -a 123456 --cluster check 10.0.0.103:6379
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
10.0.0.103:6379 (98c0b7a4...) -> 0 keys | 5462 slots | 1 slaves.
10.0.0.102:6379 (2be4bfee...) -> 1 keys | 5462 slots | 1 slaves.
10.0.0.105:6379 (9f222d91...) -> 0 keys | 5460 slots | 1 slaves.
[OK] 1 keys in 3 masters.
0.00 keys per slot on average.
>>> Performing Cluster Check (using node 10.0.0.103:6379)
M: 98c0b7a483cddb733f40df7fdb02cee30766b52c 10.0.0.103:6379
   slots:[0-3641],[5461-7280] (5462 slots) master
   1 additional replica(s)
M: 2be4bfee4bbcff66ed4678b364e1acc0a0de689b 10.0.0.102:6379
   slots:[7281-12742] (5462 slots) master
   1 additional replica(s)
M: 9f222d9116edd65a1850aac65c1cdceb15159bfa 10.0.0.105:6379
   slots:[3642-5460],[12743-16383] (5460 slots) master
   1 additional replica(s)
S: 0ea52b759530416a9d3a05c9bf3e7445c298eda6 10.0.0.106:6379
   slots: (0 slots) slave
   replicates 2be4bfee4bbcff66ed4678b364e1acc0a0de689b
S: fe7ea30427e3a02b838958a27f415dba7dd72da3 10.0.0.104:6379
   slots: (0 slots) slave
   replicates 98c0b7a483cddb733f40df7fdb02cee30766b52c
S: 8216763e1d73c191f6ec1e7e4f6fae090a72abbc 10.0.0.101:6379
   slots: (0 slots) slave
   replicates 9f222d9116edd65a1850aac65c1cdceb15159bfa
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
[21:34:13 root@localhost ~]#redis-cli -a 123456 --no-auth-warning 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:10
cluster_my_epoch:10
cluster_stats_messages_ping_sent:2969
cluster_stats_messages_pong_sent:24699
cluster_stats_messages_meet_sent:2
cluster_stats_messages_auth-ack_sent:1
cluster_stats_messages_update_sent:9
cluster_stats_messages_sent:27680
cluster_stats_messages_ping_received:2851
cluster_stats_messages_pong_received:8432
cluster_stats_messages_fail_received:1
cluster_stats_messages_auth-req_received:1
cluster_stats_messages_received:11285

  

原文地址:https://www.cnblogs.com/noise/p/15377202.html