欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

redis cluster集群架构详解(二十)- redis cluster实验:master水平扩容-支撑海量数据处理

程序员文章站 2024-03-21 11:27:22
...

5.12. redis cluster实验:master水平扩容-支撑海量数据处理

redis cluster通过master水平扩容来支撑更高的读写吞吐+海量数据。

​ redis cluster模式下,不建议做物理的读写分离,我们建议通过master的水平扩容,来横向扩展读写吞吐量,并支撑更多的海量数据。

​ 6G内存的redis,在fork类操作的时候很耗时,会导致请求延时的问题,如果扩容到5台master,能支撑总缓存数据量可达到30G,如果继续扩展到100台,能支撑缓存就达到600G,继续扩展,就能达到1T+,这样就能真正支撑海量数据的处理。

5.12.1. 加入新master

加入新master

​ 以上实验,我们都是使用同一台机器,上面分别启动了端口号为7001、7002、7003、7004、7005、7006的redis,并将这6个redis 创建redis 集群。

接下来还是在这台机器上,创建端口号为7007的redis。
  • 将原先的redis配置文件7006.conf文件拷贝一份,修改文件名为7007.conf,并将之前配置的slaveof注释掉(如果之前配置了slaveof,就注释掉)
  • 将 7007.conf 放到/etc/redis/redis-cluster-7007目录下。
  • 将7007.conf文件按照以下进行配置,端口port和绑定(bind)的IP修改为对应的端口和ip,详见配置请参考《redis集群安装》

手动启动此新的redis实例,在7007端口上

[aaa@qq.com redis]# redis-server ./redis-cluster-7007/7007.conf 

将新增master节点添加到redis cluster中

[aaa@qq.com redis]# redis-cli --cluster add-node 192.168.75.187:7007 192.168.75.187:7003

运行日志如下:

redis cluster集群架构详解(二十)- redis cluster实验:master水平扩容-支撑海量数据处理

通过日志,我们看到,新的master节点已经添加进集群。

检测redis cluster集群:

[aaa@qq.com redis]# redis-cli --cluster check 192.168.75.187:7001

运行日志如下:

redis cluster集群架构详解(二十)- redis cluster实验:master水平扩容-支撑海量数据处理

通过检测,发现了新的master节点 192.168.75.187:7007 ,但是此节点slot为0 。

连接到新的redis实例上,cluster nodes,确认自己是否加入了集群,作为了一个新的master。

redis cluster集群架构详解(二十)- redis cluster实验:master水平扩容-支撑海量数据处理

5.12.2. reshard数据到新节点

reshard一些数据到新节点

resharding的意思就是把一部分hash slot从一些node上迁移到另外一些node上

redis-cli --cluster reshard 192.168.75.187:7001 --cluster-from all --cluster-to 62cb7cf009d812b0854ce6fe54ea863805f3028d --cluster-slots 1000

要把之前3个master上的slot,拿出1000个slot放到新节点192.168.75.187:7007上。

执行后再一次检查:

[aaa@qq.com redis]# redis-cli --cluster check 192.168.75.187:7001

redis cluster集群架构详解(二十)- redis cluster实验:master水平扩容-支撑海量数据处理

7007上的slot槽:(332-0) + 1 +(5794-5461) + 1 + (11255-10923) + 1 = 1000;

slot已经从7002、7003、7004三个节点共迁移了1000个slot到7007上。

5.12.3.添加新的node作为slave

添加node作为slave

在此服务器上再添加一个节点7008,作为7007的一个slave,添加节点方法请见《redis集群安装》

执行以下命令:

[aaa@qq.com redis]# redis-cli --cluster add-node 192.168.75.187:7008 192.168.75.187:7001 --cluster-slave --cluster-master-id 62cb7cf009d812b0854ce6fe54ea863805f3028d

redis cluster集群架构详解(二十)- redis cluster实验:master水平扩容-支撑海量数据处理

查看集群

redis cluster集群架构详解(二十)- redis cluster实验:master水平扩容-支撑海量数据处理

7008已经成功的作为7007的slave添加。

5.12.4.删除node

删除node

先用resharding将数据都移除到其他节点,确保node为空之后,才能执行remove操作,我们删除7007为例。

(1)移除7007的slot到7003上

[aaa@qq.com redis]# redis-cli --cluster reshard 192.168.75.187:7001 --cluster-from 62cb7cf009d812b0854ce6fe54ea863805f3028d --cluster-to bf579d975d99f9be5f8e01c2aab6b7930fea8e52 --cluster-slots 1000

再次查看集群,发现7007的slot已经为0,如下:

redis cluster集群架构详解(二十)- redis cluster实验:master水平扩容-支撑海量数据处理

(2)移除7007这个master节点。

[aaa@qq.com redis]# redis-cli --cluster del-node 192.168.75.187:7001 62cb7cf009d812b0854ce6fe54ea863805f3028d

执行效果如下:

redis cluster集群架构详解(二十)- redis cluster实验:master水平扩容-支撑海量数据处理

当清空了一个master的hash slot时,redis cluster就会自动将其slave挂载到其他master上去,这个时候就只要删除掉master就可以了,如下:

redis cluster集群架构详解(二十)- redis cluster实验:master水平扩容-支撑海量数据处理

相关标签: redis缓存架构