CentOS7安装GlusterFS集群以及相关配置


Posted in Servers onApril 12, 2022

CentOS 7 GlusterFS

CentOS7安装GlusterFS集群以及相关配置

环境说明:

3台机器安装 GlusterFS 组成一个集群。

使用 docker volume plugin GlusterFS

服务器:

10.6.0.140
10.6.0.192
10.6.0.196

配置 hosts

10.6.0.140 swarm-manager
10.6.0.192 swarm-node-1
10.6.0.196 swarm-node-2

client:

10.6.0.94 node-94

安装:

CentOS 安装 glusterfs 非常的简单

在三个节点都安装glusterfs

yum install centos-release-gluster
yum install -y glusterfs glusterfs-server glusterfs-fuseglusterfs-rdma

配置 GlusterFS 集群:

启动 glusterFS

systemctl start glusterd.service
systemctl enable glusterd.service

在 swarm-manager 节点上配置,将 节点 加入到 集群中。

[root@swarm-manager ~]#gluster peer probe swarm-manager
peer probe: success. Probe on localhost not needed

[root@swarm-manager ~]#gluster peer probe swarm-node-1
peer probe: success.

[root@swarm-manager ~]#gluster peer probe swarm-node-2
peer probe: success.

查看集群状态:

[root@swarm-manager ~]#gluster peer status
Number of Peers: 2

Hostname: swarm-node-1
Uuid: 41573e8b-eb00-4802-84f0-f923a2c7be79
State: Peer in Cluster (Connected)

Hostname: swarm-node-2
Uuid: da068e0b-eada-4a50-94ff-623f630986d7
State: Peer in Cluster (Connected)

创建数据存储目录:

[root@swarm-manager ~]#mkdir -p /opt/gluster/data
[root@swarm-node-1 ~]# mkdir -p /opt/gluster/data
[root@swarm-node-2 ~]# mkdir -p /opt/gluster/data

查看volume 状态:

[root@swarm-manager ~]#gluster volume info
No volumes present

创建GlusterFS磁盘:

[root@swarm-manager ~]#gluster volume create models replica 3 swarm-manager:/opt/gluster/data swarm-node-1:/opt/gluster/data swarm-node-2:/opt/gluster/data force
volume create: models: success: please start the volume to access data

GlusterFS 几种volume 模式说明:

一、 默认模式,既DHT, 也叫 分布卷: 将文件已hash算法随机分布到 一台服务器节点中存储。

gluster volume create test-volume server1:/exp1 server2:/exp2

CentOS7安装GlusterFS集群以及相关配置

二、 复制模式,既AFR, 创建volume 时带 replica x 数量: 将文件复制到 replica x 个节点中。

gluster volume create test-volume replica 2 transport tcp server1:/exp1 server2:/exp2

CentOS7安装GlusterFS集群以及相关配置

三、 条带模式,既Striped, 创建volume 时带 stripe x 数量: 将文件切割成数据块,分别存储到 stripe x 个节点中 ( 类似raid 0 )。

gluster volume create test-volume stripe 2 transport tcp server1:/exp1 server2:/exp2

CentOS7安装GlusterFS集群以及相关配置

四、 分布式条带模式(组合型),最少需要4台服务器才能创建。 创建volume 时 stripe 2 server = 4 个节点: 是DHT 与 Striped 的组合型。

gluster volume create test-volume stripe 2 transport tcp server1:/exp1 server2:/exp2 server3:/exp3 server4:/exp4

CentOS7安装GlusterFS集群以及相关配置

五、 分布式复制模式(组合型), 最少需要4台服务器才能创建。 创建volume 时 replica 2 server = 4 个节点:是DHT 与 AFR 的组合型。

gluster volume create test-volume replica 2 transport tcp server1:/exp1 server2:/exp2 server3:/exp3 server4:/exp4

CentOS7安装GlusterFS集群以及相关配置

六、 条带复制卷模式(组合型), 最少需要4台服务器才能创建。 创建volume 时 stripe 2 replica 2 server = 4 个节点: 是 Striped 与 AFR 的组合型。

gluster volume create test-volume stripe 2 replica 2 transport tcp server1:/exp1 server2:/exp2 server3:/exp3 server4:/exp4

CentOS7安装GlusterFS集群以及相关配置

七、 三种模式混合, 至少需要8台 服务器才能创建。 stripe 2 replica 2 , 每4个节点 组成一个 组。

gluster volume create test-volume stripe 2 replica 2 transport tcp server1:/exp1 server2:/exp2 server3:/exp3 server4:/exp4 server5:/exp5 server6:/exp6 server7:/exp7 server8:/exp8

CentOS7安装GlusterFS集群以及相关配置

再查看 volume 状态:

[root@swarm-manager ~]#gluster volume info

Volume Name: models
Type: Replicate
Volume ID: e539ff3b-2278-4f3f-a594-1f101eabbf1e
Status: Created
Number of Bricks: 1 x 3 = 3
Transport-type: tcp
Bricks:
Brick1: swarm-manager:/opt/gluster/data
Brick2: swarm-node-1:/opt/gluster/data
Brick3: swarm-node-2:/opt/gluster/data
Options Reconfigured:
performance.readdir-ahead: on

启动 models

[root@swarm-manager ~]#gluster volume start models
volume start: models: success

gluster 性能调优:

开启 指定 volume 的配额: (models 为 volume 名称)

gluster volume quota models enable

限制 models 中 / (既总目录) 最大使用 80GB 空间

gluster volume quota models limit-usage / 80GB

#设置 cache 4GB
gluster volume set models performance.cache-size 4GB

#开启 异步 , 后台操作
gluster volume set models performance.flush-behind on

#设置 io 线程 32
gluster volume set models performance.io-thread-count 32

#设置 回写 (写数据时间,先写入缓存内,再写入硬盘)
gluster volume set models performance.write-behind on

部署GlusterFS客户端并mount GlusterFS文件系统 (客户端必须加入 glusterfs hosts 否则报错。)

[root@node-94 ~]#yum install -y glusterfs glusterfs-fuse
[root@node-94 ~]#mkdir -p /opt/gfsmnt
[root@node-94 ~]#mount -t glusterfs swarm-manager:models /opt/gfsmnt/

[root@node-94 ~]#df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/vg001-root 98G 1.2G 97G 2% /
devtmpfs 32G 0 32G 0% /dev
tmpfs 32G 0 32G 0% /dev/shm
tmpfs 32G 130M 32G 1% /run
tmpfs 32G 0 32G 0% /sys/fs/cgroup
/dev/mapper/vg001-opt 441G 71G 370G 17% /opt
/dev/sda2 497M 153M 344M 31% /boot
tmpfs 6.3G 0 6.3G 0% /run/user/0
swarm-manager:models 441G 18G 424G 4% /opt/gfsmnt

测试:

DHT 模式 客户端 创建一个 1G 的文件

[root@node-94 ~]#time dd if=/dev/zero of=hello bs=1000M count=1
记录了1+0 的读入
记录了1+0 的写出
1048576000字节(1.0 GB)已复制,9.1093 秒,115 MB/秒

real 0m9.120s
user 0m0.000s
sys 0m1.134s

AFR 模式 客户端 创建一个 1G 的文件

[root@node-94 ~]#time dd if=/dev/zero of=hello.txt bs=1024M count=1
录了1+0 的读入
记录了1+0 的写出
1073741824字节(1.1 GB)已复制,27.4566 秒,39.1 MB/秒

real 0m27.469s
user 0m0.000s
sys 0m1.065s

Striped 模式 客户端 创建一个 1G 的文件

[root@node-94 ~]#time dd if=/dev/zero of=hello bs=1000M count=1
记录了1+0 的读入
记录了1+0 的写出
1048576000字节(1.0 GB)已复制,9.10669 秒,115 MB/秒

real 0m9.119s
user 0m0.001s
sys 0m0.953s

条带复制卷模式 (Number of Bricks: 1 x 2 x 2 = 4) 客户端 创建一个 1G 的文件

[root@node-94 ~]#time dd if=/dev/zero of=hello bs=1000M count=1
记录了1+0 的读入
记录了1+0 的写出
1048576000字节(1.0 GB)已复制,17.965 秒,58.4 MB/秒

real 0m17.978s
user 0m0.000s
sys 0m0.970s

分布式复制模式 (Number of Bricks: 2 x 2 = 4) 客户端 创建一个 1G 的文件

[root@node-94 ~]#time dd if=/dev/zero of=haha bs=100M count=10
记录了10+0 的读入
记录了10+0 的写出
1048576000字节(1.0 GB)已复制,17.7697 秒,59.0 MB/秒

real 0m17.778s
user 0m0.001s
sys 0m0.886s

针对 分布式复制模式还做了如下测试:

4K随机写 测试:

安装 fio (yum -y install libaio-devel (否则运行fio 会报错engine libaio not loadable, 已安装需重新编译,否则一样报错))

[root@node-94 ~]#fio -ioengine=libaio -bs=4k -direct=1 -thread -rw=randwrite -size=10G -filename=1.txt -name="EBS 4KB randwrite test" -iodepth=32 -runtime=60

write: io=352204KB, bw=5869.9KB/s, iops=1467, runt= 60002msec
WRITE: io=352204KB, aggrb=5869KB/s, minb=5869KB/s, maxb=5869KB/s, mint=60002msec, maxt=60002msec

4K随机读 测试:

fio -ioengine=libaio -bs=4k -direct=1 -thread -rw=randread -size=10G -filename=1.txt -name="EBS 4KB randread test" -iodepth=8 -runtime=60

read: io=881524KB, bw=14692KB/s, iops=3672, runt= 60001msec
READ: io=881524KB, aggrb=14691KB/s, minb=14691KB/s, maxb=14691KB/s, mint=60001msec, maxt=60001msec

512K 顺序写 测试:

fio -ioengine=libaio -bs=512k -direct=1 -thread -rw=write -size=10G -filename=512.txt -name="EBS 512KB seqwrite test" -iodepth=64 -runtime=60

write: io=3544.0MB, bw=60348KB/s, iops=117, runt= 60135msec
WRITE: io=3544.0MB, aggrb=60348KB/s, minb=60348KB/s, maxb=60348KB/s, mint=60135msec, maxt=60135msec

其他的维护命令:

1. 查看GlusterFS中所有的volume:

[root@swarm-manager ~]#gluster volume list

2. 删除GlusterFS磁盘:

[root@swarm-manager ~]#gluster volume stop models #停止名字为 models 的磁盘
[root@swarm-manager ~]#gluster volume delete models #删除名字为 models 的磁盘

注: 删除 磁盘 以后,必须删除 磁盘( /opt/gluster/data ) 中的 ( .glusterfs/ .trashcan/ )目录。

否则创建新 volume 相同的 磁盘 会出现文件 不分布,或者 类型 错乱 的问题。

3. 卸载某个节点GlusterFS磁盘

[root@swarm-manager ~]#gluster peer detach swarm-node-2

4. 设置访问限制,按照每个volume 来限制

[root@swarm-manager ~]#gluster volume set models auth.allow 10.6.0.*,10.7.0.*

5. 添加GlusterFS节点:

[root@swarm-manager ~]#gluster peer probe swarm-node-3
[root@swarm-manager ~]#gluster volume add-brick models swarm-node-3:/opt/gluster/data

注:如果是复制卷或者条带卷,则每次添加的Brick数必须是replica或者stripe的整数倍

6. 配置卷

[root@swarm-manager ~]# gluster volume set

7. 缩容volume:

先将数据迁移到其它可用的Brick,迁移结束后才将该Brick移除:

[root@swarm-manager ~]#gluster volume remove-brick models swarm-node-2:/opt/gluster/data swarm-node-3:/opt/gluster/data start

在执行了start之后,可以使用status命令查看移除进度:

[root@swarm-manager ~]#gluster volume remove-brick models swarm-node-2:/opt/gluster/data swarm-node-3:/opt/gluster/data status

不进行数据迁移,直接删除该Brick:

[root@swarm-manager ~]#gluster volume remove-brick models swarm-node-2:/opt/gluster/data swarm-node-3:/opt/gluster/data commit

注意,如果是复制卷或者条带卷,则每次移除的Brick数必须是replica或者stripe的整数倍。

扩容:

gluster volume add-brick models swarm-node-2:/opt/gluster/data

8. 修复命令:

[root@swarm-manager ~]#gluster volume replace-brick models swarm-node-2:/opt/gluster/data swarm-node-3:/opt/gluster/data commit -force

9. 迁移volume:

[root@swarm-manager ~]#gluster volume replace-brick models swarm-node-2:/opt/gluster/data swarm-node-3:/opt/gluster/data start
pause 为暂停迁移
[root@swarm-manager ~]#gluster volume replace-brick models swarm-node-2:/opt/gluster/data swarm-node-3:/opt/gluster/data pause
abort 为终止迁移
[root@swarm-manager ~]#gluster volume replace-brick models swarm-node-2:/opt/gluster/data swarm-node-3:/opt/gluster/data abort
status 查看迁移状态
[root@swarm-manager ~]#gluster volume replace-brick models swarm-node-2:/opt/gluster/data swarm-node-3:/opt/gluster/data status
迁移结束后使用commit 来生效
[root@swarm-manager ~]#gluster volume replace-brick models swarm-node-2:/opt/gluster/data swarm-node-3:/opt/gluster/data commit

10. 均衡volume:

[root@swarm-manager ~]#gluster volume models lay-outstart
[root@swarm-manager ~]#gluster volume models start
[root@swarm-manager ~]#gluster volume models startforce
[root@swarm-manager ~]#gluster volume models status
[root@swarm-manager ~]#gluster volume models stop

总结

到此这篇关于CentOS7安装GlusterFS集群的文章就介绍到这了!

Servers 相关文章推荐
nginx实现发布静态资源的方法
Mar 31 Servers
nginx配置ssl实现https的方法示例
Mar 31 Servers
Nginx设置日志打印post请求参数的方法
Mar 31 Servers
Nginx反向代理及负载均衡如何实现(基于linux)
Mar 31 Servers
使用kubeadm命令行工具创建kubernetes集群
Mar 31 Servers
Kubernetes中Deployment的升级与回滚
Apr 01 Servers
使用Docker容器部署rocketmq单机的全过程
Apr 03 Servers
nginx配置限速限流基于内置模块
May 02 Servers
Nginx 配置 HTTPS的详细过程
May 30 Servers
V Rising 服务器搭建图文教程
Jun 16 Servers
详解ZABBIX监控ESXI主机的问题
Jun 21 Servers
nginx之内存池的实现
Jun 28 Servers
Nginx+Tomcat负载均衡多实例详解
Nginx配置根据url参数重定向
Apr 11 #Servers
在Docker容器中部署SQL Server
Apr 11 #Servers
阿里云日志过滤器配置日志服务
阿里云k8s服务升级时502错误 springboot项目应用
Apr 09 #Servers
Consul在linux环境的集群部署
nginx.conf配置文件结构小结
You might like
让你同时上传 1000 个文件 (二)
2006/10/09 PHP
关于UEditor编辑器远程图片上传失败的解决办法
2012/08/31 PHP
php 模拟GMAIL,HOTMAIL(MSN),YAHOO,163,126邮箱登录的详细介绍
2013/06/18 PHP
PHP中怎样保持SESSION不过期 原理及方案介绍
2013/08/08 PHP
php使用sql数据库 获取字段问题介绍
2013/08/12 PHP
Linux编译升级php的详细方法
2013/11/04 PHP
php防止站外远程提交表单的方法
2014/10/20 PHP
Linux系统中设置多版本PHP共存配合Nginx服务器使用
2015/12/21 PHP
Laravel5框架自定义错误页面配置操作示例
2019/04/17 PHP
Jquery cookie操作代码
2010/03/14 Javascript
推荐11款jQuery开发的复选框和单选框美化插件
2011/08/02 Javascript
javascript时间自动刷新实现原理与步骤
2013/01/06 Javascript
解决ExtJS在chrome或火狐中正常显示在ie中不显示的浏览器兼容问题
2013/01/11 Javascript
基于javascript实现样式清新图片轮播特效
2016/03/30 Javascript
在localStorage中存储对象数组并读取的方法
2016/09/24 Javascript
简单谈谈vue的过渡动画(推荐)
2017/10/11 Javascript
结合mint-ui移动端下拉加载实践方法总结
2017/11/08 Javascript
使用mock.js随机数据和使用express输出json接口的实现方法
2018/01/07 Javascript
初学node.js中实现删除用户路由
2019/05/27 Javascript
Vue组件间通信 Vuex的用法解析
2019/08/05 Javascript
基于javascript实现碰撞检测
2020/03/12 Javascript
vue项目中使用bpmn为节点添加颜色的方法
2020/04/30 Javascript
在vue中实现嵌套页面(iframe)
2020/07/30 Javascript
[02:04]完美世界城市挑战赛秋季赛报名开始 谁是solo路人王?
2019/10/10 DOTA
python多进程实现文件下载传输功能
2018/07/28 Python
python消除序列的重复值并保持顺序不变的实例
2018/11/08 Python
python Matplotlib数据可视化(1):简单入门
2020/09/30 Python
ECCO爱步加拿大官网:北欧丹麦鞋履及皮具品牌
2017/07/08 全球购物
Clarria化妆品官方网站:购买天然和有机化妆品系列
2018/04/08 全球购物
zooplus德国:便宜地订购动物用品、动物饲料、动物食品
2020/05/06 全球购物
学校介绍信范文
2014/01/14 职场文书
大学考试作弊检讨书
2015/05/06 职场文书
创业计划书之物流运送
2019/09/17 职场文书
深入理解python多线程编程
2021/04/18 Python
Python Matplotlib绘制条形图的全过程
2021/10/24 Python
JavaScript的function函数详细介绍
2021/11/20 Javascript