前言
本文参考了,如下文章,根据自己需要完善了一些细节步骤,实为一篇读书笔记:
- https://www.cnblogs.com/jicki/p/5801712.html
- https://jingyan.baidu.com/article/cbcede077f90bf02f40b4d94.html
规划集群
节点IP | 主机名字 | 作用 |
---|---|---|
192.168.5.138 | swarm-manager | 控制节点 |
192.168.5.140 | swarm-node-1 | 节点1 |
192.168.5.141 | swarm-node-2 | 节点2 |
192.168.5.142 | client | client节点 |
后续用集群节点,代表前三个节点
安装前在所有节点上修改HOSTS文件,添加如下几行
192.168.5.138 swarm-manager
192.168.5.140 swarm-node-1
192.168.5.141 swarm-node-2
安装集群
- 集群节点上安装glusterfs,设置开机启动,并关闭防火墙
# 安装软件
yum install -y centos-release-gluster
yum install -y glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma
# 设置开机启动
systemctl start glusterd.service
systemctl enable glusterd.service
# 关闭防火墙
systemctl stop firewalld.service
systemctl disable firewalld.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 data]# gluster peer status
Number of Peers: 2
Hostname: swarm-node-1
Uuid: 489859c1-60a7-4f9f-b950-f7d1be76b71e
State: Peer in Cluster (Connected)
Hostname: swarm-node-2
Uuid: 9f203314-16ec-4b0e-919a-daf341df8458
State: Peer in Cluster (Connected)
[root@swarm-manager data]#
- 集群的三个节点,分别创建目录
[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
- 创建一个名为models 的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
再查看 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文件系统
[root@client ~]# yum install -y glusterfs glusterfs-fuse
[root@client ~]# mkdir -p /opt/gfsmnt
[root@client ~]# mount -t glusterfs swarm-manager:models /opt/gfsmnt/
[root@client ~]# 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
测试
可以client 上的/opt/gfsmnt 目录下,新建、修改、删除文件,查看集群节点上是否有对应操作;
常用命令
- 启动/关闭/查看glusterd服务
# /etc/init.d/glusterd start
# /etc/init.d/glusterd stop
# /etc/init.d/glusterd status
- 开机自动启动glusterd服务
# chkconfig glusterd on # Red Hat
# update-rc.d glusterd defaults # Debian
# echo "glusterd" >>/etc/rc.local # Others
- 查看配置信息
# cat /etc/rc.local
4.为存储池添加/移除服务器节点
在其中一个节点上操作即可:
# gluster peer probe
# gluster peer detach
注意,移除节点时,需要提前将该节点上的Brick移除。
查看所有节点的基本状态(显示的时候不包括本节点):
# gluster peer status
- 挂载分区
# mount -t ext4 /dev/sdd1 /mnt/brick1
- 创建/启动/停止/删除卷
# gluster volume create [stripe | replica ] [transport [tcp | rdma | tcp,rdma]] ...
# gluster volume start
# gluster volume stop
gluster volume delete
注意,删除卷的前提是先停止卷。
- 客户端以glusterfs方式挂载
# mount -t glusterfs :/
对于OpenStack,计算和控制节点都要挂载/var/lib/nova/instances,控制节点还要挂载/var/lib/glance/images。
- 查看卷信息
列出集群中的所有卷:
# gluster volume list
查看集群中的卷信息:
# gluster volume info [all]
查看集群中的卷状态:
# gluster volume status [all]
# gluster volume status [detail| clients | mem | inode | fd]
查看本节点的文件系统信息:
# df -h []
查看本节点的磁盘信息:
# fdisk -l
- 配置卷
# gluster volume set
- 扩展卷
# gluster volume add-brick
注意,如果是复制卷或者条带卷,则每次添加的Brick数必须是replica或者stripe的整数倍。
- 收缩卷
先将数据迁移到其它可用的Brick,迁移结束后才将该Brick移除:
# gluster volume remove-brick start
在执行了start之后,可以使用status命令查看移除进度:
# gluster volume remove-brick status
不进行数据迁移,直接删除该Brick:
# gluster volume remove-brick commit
注意,如果是复制卷或者条带卷,则每次移除的Brick数必须是replica或者stripe的整数倍。
/var/lib/glusterd/peers/ 下文件决定了host name