GlusterFS作为分布式共享文件系统也用了很多年了,简单好用,但是一直没有系统化记录下来,很是零散。这次趁着Kubernets集成GlusterFS作为共享存储,尽量记录些东西。
GlusterFS操作记录(1) GlusterFS简述
GlusterFS操作记录(2) GlusterFS存储卷类型介绍
GlusterFS操作记录(3) GlusterFS架构介绍
GlusterFS操作记录(4) GlusterFS快速安装部署配置
GlusterFS操作记录(5) GlusterFS+Heketi配置(独立部署)
GlusterFS操作记录(6) GlusterFS+Heketi在Kubernets上的集成配置
GlusterFS简单配置
部署一个可用的GlusterFS集群很简单,产线使用可以根据应用场景进行调优。这里记录简单的安装过程进行体验。之后可以阅读研究Gluster的admin Guide文档学习研究如果管理GlusterFS以及选择适合应用场景的卷类型。
部署可以手动命令行一步一步的部署也可以使用其他集成工具或者脚本,例如ansible,可以参考文档。这里记录逐步安装的方式。 实验根据官方文档进行,文档
1. 准备3个节点,并初始化
主机 | ip地址 | 角色 | 备注 |
---|---|---|---|
gluster-server-1 | 10.99.7.11 | gluster-server | |
gluster-server-2 | 10.99.7.12 | gluster-server | |
gluster-server-2 | 10.99.7.12 | gluster-server | |
gluster-client-1 | 10.99.7.10 | gluster-server | 挂载共享卷 |
初始化包括设置主机名称,网络,DNS等等,这里直接省略了。
配置/etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
10.99.7.10 gluster-client-1
10.99.7.11 gluster-server-1
10.99.7.12 gluster-server-2
10.99.7.13 gluster-server-3
2. 格式化并挂载磁盘
每个虚拟机主备一块或者多块磁盘,并分别格式化,这里举例/sdb
parted /dev/sdb -s 'mkpart primary xfs 0% 100%'
mkfs.xfs -i size=512 /dev/sdb1
mkdir -p /data/brick1
# 产线挂载可以使用uuid,或者label,防止磁盘损坏导致磁盘挂载顺序混乱
echo '/dev/sdb1 /data/brick1 xfs defaults 1 2' >> /etc/fstab
mount -a && mount
我测试服务器上没有挂载额外的数据磁盘,直接创建一个目录使用。
# 每个服务端主机上执行
mkdir -p /data/brick1 #可以创建多个,用于scale测试
3. 安装glusterFS
gluster根据用户有很多个组件,这里简单安装有些组件就不配置了。
# 每个服务端主机上执行
yum install centos-release-gluster -y
# 我们选择5.2版本
yum list glusterfs --showduplicates|sort -r
glusterfs.x86_64 5.2-1.el7 centos-gluster5
glusterfs.x86_64 5.1-1.el7 centos-gluster5
glusterfs.x86_64 5.0-1.el7 centos-gluster5
glusterfs.x86_64 3.12.2-18.el7 base
yum -y install glusterfs-server glusterfs-fuse
systemctl enable glusterd.service
systemctl start glusterd.service
systemctl status glusterd.service
4. 配置防火墙
这里是简单安装测试,没有深入配置防火墙。可以全部放行,或者直接关闭防火墙
# 直接关闭防火墙
systemctl stop firewalld.service
systemctl disable irewalld.service
5. 配置授信池(将节点加入到集群)
# 在gluster-server-1上将 2,3加入进来
gluster peer probe gluster-server-2
gluster peer probe gluster-server-3
# 在gluster-server-2或者3上(新版本没有必要了,之前版本需要时因为主机名称解析的问题)
gluster peer probe gluster-server-1
#任意节点
[root@gluster-server-1 ~]# gluster peer status
Number of Peers: 2
Hostname: gluster-server-2
Uuid: 6f32f6d4-9cd7-4b40-b7b6-100054b187f7
State: Peer in Cluster (Connected)
Hostname: gluster-server-3
Uuid: 5669dbef-3f71-4e3c-8fb1-9c6e11c0c434
State: Peer in Cluster (Connected)
以上使用的是主机名称方式,需要配置hosts文件,也可以使用IP地址方式.后期可以修改文件/var/lib/glusterd/peers/{uuid},添加hostname2或者调换hostname1和2,重启glusterd生效。
# cat /var/lib/glusterd/peers/5669dbef-3f71-4e3c-8fb1-9c6e11c0c434
uuid=5669dbef-3f71-4e3c-8fb1-9c6e11c0c434
state=3
hostname1=gluster-serever-3
hostname2=10.99.7.13
6. 创建一个存储卷
gluster volume create volume0 replica 3 gluster-server-1:/data/brick1/volume0 gluster-server-2:/data/brick1/volume0 gluster-server-3:/data//brick1/volume0 force
#备注 这里使用force参数是因为我没有使用挂载磁盘,而是使用的root分区下的一个目录,不然会报错
#volume create: volume0: failed: The brick gluster-server-1:/data/brick1/volume0 is being created in the root partition. It is recommended that you don't use the system's root partition for storage backend. Or use 'force' at the end of the command if you want t
gluster volume start volume0
#volume start: volume0: success
gluster volume info
Volume Name: volume0
Type: Replicate
Volume ID: 8936cef1-125b-4689-963c-b558725925bc
Status: Started
Snapshot Count: 0
Number of Bricks: 1 x 3 = 3
Transport-type: tcp
Bricks:
Brick1: gluster-server-1:/data/brick1/volume0
Brick2: gluster-server-2:/data/brick1/volume0
Brick3: gluster-server-3:/data/brick1/volume0
Options Reconfigured:
transport.address-family: inet
nfs.disable: on
performance.client-io-threads: off
7. 配置客户端,测试存储卷
yum install centos-release-gluster -y
yum -y install glusterfs glusterfs-fuse
mkdir /volume0
mount -t glusterfs gluster-server-1:/volume0 /volume0
[root@gluster-client-1 glusterfs]# df -h
...
gluster-server-1:/volume0 100G 2.1G 98G 3% /volume0
[test]
for i in `seq -w 1 100`; do cp -rp /var/log/messages /volume0/copy-test-$i; done
ls -lA /volume0/copy* | wc -l
100
[任意server节点]
备注:因为我们是3副本模式,只有3个brick,所有每个节点上都能看到全部100个文案
ls -lA /data/brick1/volume0/copy*
到这里,glusterfs的服务端集群安装配置以及客户端测试已经完成,默认配置的安装还是很简单的。