Code前端首页关于Code前端联系我们

民工兄的Redis教程(十二):使用官方的redis-trib.rb工具自动部署Cluster集群实践

terry 2年前 (2023-09-26) 阅读数 91 #后端开发

手动搭建集群很容易理解创建集群的流程和细节,但是手动创建一个集群需要很多步骤。当集群节点较多时,构建集群的复杂度和运维成本必然会增加。所以官方提供的工具是redis-Yaoming.rb,方便我们快速创建集群。

redis-Yaoming.rb是Ruby实现的redis集群管理工具。在内部,它使用集群相关的命令来帮助我们简化集群创建、检查、槽位迁移、平衡等常用和维护操作。使用前必须安装ruby依赖环境。

redis-trib.rb无法实现所有节点的交叉复制。总会有一个节点不交叉。因此,安装完集群后,需要手动调整交叉复制。 ? Redis学习的文章请参见:NoSQL数据库系列中的Redis。该系列不断更新。

使用redis-trib部署cluster集群

语法格式:./redis-trib.rb create --replicas slaves主副本数量(每个master集群节点地址的副本数量)

create //创建
–replicas //指定主库的副本数量,也就是从库数量

在使用redis-trib安装的cluster集群时,总会有一个节点没有交叉复制,需要手动调整,因为trib也是根据节点地址交叉匹配的。当最后机器到达最后一台机器,没有其他机器了,可能超过了只能自己复制了

[root@redis-1 ~]# cd /data/redis_cluster/redis-3.2.9/src
[root@redis-1 /data/redis_cluster/redis-3.2.9/src]# ./redis-trib.rb create --replicas 1 192.168.81.210:6380 192.168.81.220:6380 192.168.81.230:6380 192.168.81.210:6381 192.168.81.220:6381 192.168.81.230:6381

#安装完查看集群准备已经是可用的
[root@redis-1 ~]# redis-cli -h 192.168.81.210 -p 6380 
192.168.81.210:6380> 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:1
cluster_stats_messages_sent:1618
cluster_stats_messages_received:1618
民工哥死磕Redis教程(十二): 使用官方工具redis-trib.rb自动部署 Cluster 集群实践

手动调整三主三从的交叉复制

因为只有redis-3复制不交叉复制,如果直接让redis-3交叉复制某个节点,那么就没有节点可以复制了,redis-3的6380,所以我们要手动调整所有节点之间的交叉记录

例如:redis -3的6381想要成为redis-1的6380的主库,需要去redis-3的6381redis交互 操作类型

#获取主节点的信息
[root@redis-1 ~]# redis-cli -h 192.168.81.210 -p 6381 cluster nodes | grep 6380 | awk '{print $1.$2}'
812ae8ccf55d8994f1f9d30a20f6cff42fb24b4a192.168.81.230:6380
ce75dacf45d3ad4f852b7fb4d359a295b8a2bcdd192.168.81.220:6380
b61b8d0421b94b9de7267dda6c6f401a42622047192.168.81.210:6380

#配置三主三从交叉复制
[root@redis-1 ~]# redis-cli -h 192.168.81.210 -p 6381
192.168.81.210:6381> CLUSTER REPLICATE ce75dacf45d3ad4f852b7fb4d359a295b8a2bcdd
OK
[root@redis-2 ~]# redis-cli -h 192.168.81.220 -p 6381
192.168.81.220:6381> CLUSTER REPLICATE 812ae8ccf55d8994f1f9d30a20f6cff42fb24b4a
OK
[root@redis-3 ~]# redis-cli -h 192.168.81.230 -p 6381
192.168.81.230:6381> CLUSTER REPLICATE b61b8d0421b94b9de7267dda6c6f401a42622047
OK

#查看集群信息已经交叉复制
[root@redis-1 ~]# redis-cli -h 192.168.81.210 -p 6381 cluster nodes 
812ae8ccf55d8994f1f9d30a20f6cff42fb24b4a 192.168.81.230:6380 master - 0 1612342768677 3 connected 10923-16383
bdd20b03b573b2def6a9ee5053a75867709fc908 192.168.81.210:6381 myself,slave ce75dacf45d3ad4f852b7fb4d359a295b8a2bcdd 0 0 4 connected
9b7641253ea66073d865accdd4460d2877f9ff5d 192.168.81.220:6381 slave 812ae8ccf55d8994f1f9d30a20f6cff42fb24b4a 0 1612342767669 5 connected
ce75dacf45d3ad4f852b7fb4d359a295b8a2bcdd 192.168.81.220:6380 master - 0 1612342766658 2 connected 5461-10922
904a0109976cae38e5a3059fd70ce2727a0ed8fb 192.168.81.230:6381 slave b61b8d0421b94b9de7267dda6c6f401a42622047 0 1612342769686 3 connected
b61b8d0421b94b9de7267dda6c6f401a42622047 192.168.81.210:6380 master - 0 1612342770189 1 connected 0-5460
民工哥死磕Redis教程(十二): 使用官方工具redis-trib.rb自动部署 Cluster 集群实践

检查集群的完整性

如果集群没有问题,就会show ok

[root@redis-1 ~]# cd /data/redis_cluster/redis-3.2.9/src
[root@redis-1 /data/redis_cluster/redis-3.2.9/src]# ./redis-trib.rb check 192.168.81.210:6380
民工哥死磕Redis教程(十二): 使用官方工具redis-trib.rb自动部署 Cluster 集群实践

验证哈希分布是否均匀

#首先插入1000条数据
[root@redis-1 ~]# for i in {1..1000}
do
redis-cli -c -h 192.168.81.210 -p 6380 set key_${i} value_${i}
done

#查看每个节点的数据量
[root@redis-1 ~]# redis-cli -c -h 192.168.81.210 -p 6380 dbsize
(integer) 334
[root@redis-1 ~]# redis-cli -c -h 192.168.81.220 -p 6380 dbsize
(integer) 336
[root@redis-1 ~]# redis-cli -c -h 192.168.81.230 -p 6380 dbsize
(integer) 330

查看集群分布的误差值

[root@redis-1 /data/redis_cluster/redis-3.2.9/src]# ./redis-trib.rb rebalance 192.168.81.210:6380
>>> Performing Cluster Check (using node 192.168.81.210:6380)
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
*** No rebalancing needed! All nodes are within the 2.0% threshold.
民工哥死磕Redis教程(十二): 使用官方工具redis-trib.rb自动部署 Cluster 集群实践 链接:https://blog.csdn.net/weixin_44953658/article/details/121265752

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门