glusterfs集群的搭建和使用这里就不再赘述了,可以看以前的教程文档。本文主要聊的是随着服务使用量的增加,那么存储集群势必要扩充空间。服务器迁移,需要先扩容后缩容等等。所以本文的主旨是聊glusterfs集群的横向优化:扩容和缩容。
现状
集群搭建这里忽略
查看glusterfs的节点和客户端挂载情况得知,目前是三个节点的分布式卷。
1 | #查看节点数量 |
创建20个文件
查看文件的分布情况如下:
1 | # 第1台 |
分布式卷优化
添加节点扩容
现要对集群进行扩容,增加一个节点 gluster004-hf-aiui.
1 | # 添加一个节点 |
再创建30个文件,如下所示:
1 | root@wyl01:/gsclient# touch {101..130}.txt |
结论:可以看出当扩容后,原先的数据不会均衡到第四台glusterfs上,但是新增加的文件是可以的。
分布式卷数据rebalance
1 | root@wyl01:/gsclient# gluster volume rebalance gv1 start |
可以看到,数据rebalance,第 4 台上的数据明显增加了。
这里有一个需要注意的地方,当数据量太大的时候,对数据进行rebalance必须要考虑的一个问题就是性能,不能因为数据rebalance而影响我们的存储的正常使用。Glusterfs也考虑到了这个问题,在进行数据rebalance时,根据实际场景不同设计了三种不同的“级别”:
lazy:每次仅可以迁移一个文件
normal:默认设置,每次迁移2个文件或者是(CPU逻辑个数-4)/2,哪个大,选哪个
aggressive:每次迁移4个文件或者是(CPU逻辑个数-4)/2
通过以下命令进行配置:
1 | gluster volume set VOLUME-NAME cluster.rebal-throttle [lazy|normal|aggressive] |
如将volume repvol设置为lazy
1 | [root@nwyl01 ~]# gluster volume set gv1 cluster.rebal-throttle lazy |
分布式卷缩容
缩容之前我们先需要将数据迁移到其他的brick上,假设我们移除gluster004-hf-aiui节点
1 | root@wyl01:/gsclient# gluster volume remove-brick gv1 gluster004-hf-aiui:/data help |
移除后,我们看数据的分布情况
1 | # 第 1 台 |
可以看到文件被迁移到其他的brick上了。
复制卷的扩容rebalance缩容
1 | root@wyl01:/gsclient# gluster volume info # 卷的基本信息 |
添加gluster003 节点
1 | root@wyl01:/gsclient# gluster peer probe 192.168.52.124 |
添加gluster04 节点
1 | root@wyl01:/gsclient# gluster peer probe 192.168.52.125 |
查看peer信息
1 | root@wyl01:/gsclient# gluster peer status |
发现现在变成2*2了模式了。重新写入20个txt文件,扩容后这里需要注意的是必须先rebalance。然后重新写入文件才会hash到新的节点上。之前的旧数据也会被rebalance。
1 | root@wyl01:/gsclient# gluster volume rebalance gv1 start |
节点的缩容,这里是分布式复制,所以缩容也是成对节点的一起缩容,操作如下:
1 | # 开始移除节点 |