目录
2.2.7 挂载外部数据盘(如果磁盘需求不大的可以跳过该步骤)
一、gfs简介
Gluster File System 是一款自由软件,主要由ZRESEARCH 公司负责开发,十几名开发者,最近非常活跃。 文档也比较齐全,不难上手。
参考资料:
官方安装资料:
gfs的安装标准及要求说明
Common Criteria - Gluster Docshttps://docs.gluster.org/en/latest/Install-Guide/Common-criteria/
版本选择,gfs的版本信息,目前最新10.1版本,那么我们选型上一个版本的最后一个更新v9.5,参考资料如下:
Release Schedule | Glusterhttps://www.gluster.org/release-schedule/
二、安装部署gfs server
注释:本次创建的卷名称为gfs,glusterfs的版本为9.5版本,本次部署时间为2022年5月,上海疫情封控在家办公期间
本次部署的操作系统为centos7.6
本次部署server服务器列表,分别用gfserver1、2、3来代表服务器:
- 192.168.100.2 gfserver1
- 192.168.100.3 gfserver2
- 192.168.100.4 gfserver3
2.1 通过命令查询gfs可安装的版本
yum search centos-release-gluster
通过查看目前可直接安装的版本如上
2.2 安装指定gfs版本
首先进入gfserver1服务器,执行2.2.1 至2.2.5 的操作,再分别进入gfserver2和3服务器重复操作
2.2.1 下载所要安装版本的yum源
yum -y install centos-release-gluster9
安装完后在/etc/yum.repos.d/目录中下载了CentOS-Gluster-9.repo文件
可以通过cat /etc/yum.repos.d/CentOS-Gluster-9.repo 查看yum文件相关信息
# CentOS-Gluster-9.repo
#
# Please see http://wiki.centos.org/SpecialInterestGroup/Storage for more
# information
[centos-gluster9]
name=CentOS-$releasever - Gluster 9
mirrorlist=http://mirrorlist.centos.org?arch=$basearch&release=$releasever&repo=storage-gluster-9
#baseurl=http://mirror.centos.org/$contentdir/$releasever/storage/$basearch/gluster-9/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-Storage
[centos-gluster9-test]
name=CentOS-$releasever - Gluster 9 Testing
baseurl=http://buildlogs.centos.org/centos/$releasever/storage/$basearch/gluster-9/
gpgcheck=0
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-Storage
2.2.2 安装gfs-server服务
yum -y install glusterfs-server
如果需要可以修改/etc/glusterfs/glusterd.vol进行选择性设置,这里不作过多介绍
2.2.3 加入系统启动项及开启和查看gfs服务
systemctl enable glusterd
systemctl start glusterd
systemctl status glusterd
2.2.4 安装后检查服务状况
glusterfs -V
配置文件检查
md5sum /etc/glusterfs/glusterd.vol
2.2.5 配置服务器dns
vi /etc/hosts
#把下面内容加入hosts文件中
192.168.100.2 gfserver1
192.168.100.3 gfserver2
192.168.100.4 gfserver3
2.2.6 配置信任池
在gfsserver1服务器上配置信任主机池,其他服务器不用操作,集群配置自动同步,注意不用加gfserver1的节点,执行以下命令:
gluster peer probe gfserver2
gluster peer probe gfserver3
分别在三台服务器上执行一下命令
# 查询集群节点状态
gluster peer status
至此,gfs集群服务算建立成功了,后续需要对集群进行相关配置
ok,后续挂载外接数据盘
2.2.7 挂载外部数据盘(如果磁盘需求不大的可以跳过该步骤)
我是在公有云上面操作的,先购买300G的磁盘6个,每个服务器挂载2个
a.然后登录服务器输入命令查看 fdisk -l,多出来 /dev/vdd和/dev/vde
b.创建主机brick存储节点
先进入gfserver1服务器操作
#节点主机gfserver1
c.格式化磁盘
mkfs.ext4 /dev/vdd
mkfs.ext4 /dev/vde
d.创建外接磁盘挂载目录
mkdir /gfs/data1 /gfs/data2 -p
e.挂载外接磁盘
mount /dev/vdd /gfs/data1
mount /dev/vde /gfs/data2
f.查看外接挂载结果
df -h |grep data
g.获取blkid写入系统启动配置文件/etc/fstab
注意:该文件系统启动时候要加载而且对字符特别敏感,建议直接修改文件,不要通过word进行复制黏贴
blkid /dev/vdd
blkid /dev/vde
vi /etc/fstab
#把下面内容加入fstab文件中
UUID=fbe73f6d-bdbd-4600-aad1-4125ac09e4bb /gfs/data1 ext4 defaults 0 0
UUID=3a524638-801e-488a-97b0-270d6dfd55a9 /gfs/data2 ext4 defaults 0 0
h.最后,执行mount -a命令检验该fstab配置文件是否有问题
i.gfserver2和3 节点服务器也如上操作
2.2.8 创建分布式存储目录
a.分别在三个节点服务器上执行以下操作
mkdir /gfs/mydata -p
b.创建一个名字为gfsvolume的分布式复制卷(在任意节点上执行)
gluster volume create gfsvolume replica 3 gfserver1:/gfs/data1 gfserver1:/gfs/data2 gfserver2:/gfs/data1 gfserver2:/gfs/data2 gfserver3:/gfs/data1 gfserver3:/gfs/data2 force
注意,replica 3 代表一个文件会变成三份保存
# 启动这个卷
gluster volume start gfsvolume
# 查询卷的信息
gluster volume info
# 挂载卷到/gfs/mydata目录,不同主机可以挂成不同存储池名字
c.创建一个负载均衡ip,用来映射到三台服务器的24007端口,用来做vip,我这边使用了公有云提供的负责均衡功能,如果使用nginx也能实现,这里就不罗列了,可以去查看我以前写的nginx相关资料
d.分别在三台服务器上执行以下命令,挂载分布式复制卷至mydata目录,注意,如上图,我这个vip的ip为192.168.0.251:
mount -t glusterfs 192.168.0.251:/gfsvolume /gfs/mydata
echo "192.168.0.251:/gfsvolume /gfs/mydata glusterfs defaults 0 0" >> /etc/fstab
注意,涉及到磁盘挂载一定要执行 mount -a 进行检验,如果报错需要检查配置
查看挂载好的磁盘情况:6个磁盘一共1800G空间,因为设置为复制卷,模式为3,所以显示可用存储600G
2.2.9 验证副本集群是否起作用
[root@node1 gfs]# cd mydata/
[root@node1 mydata]# ls
lost+found
#批量创建10个文件
[root@node1 mydata]# touch file{001..010}
[root@node1 mydata]# ls
file001 file002 file003 file004 file005 file006 file007 file008 file009 file010 lost+found
分别在三台集群server服务器上查看文件,文件随机分布在三台服务器上,并且每个文件复制成三份存储,保证可靠性
如果要卸载存储,使用umount命令,比如umount gfserver1:/gfsvolume
三、部署gfs客户端
3.1 配置如下:
客户端操作系统:centos7.6
ip:192.168.0.69
3.2 安装须知
注意:客户端安装 Gluster Native Client ,版本最好和服务端一致,没有具体查过如果不一致会出什么问题
说明 Gluster Native Client是基于FUSE的,所以需要保证客户端安装了FUSE。这个是官方推荐的客户端,支持高并发和高效的写性能。
客户端安装前, 确保客户机器能够访问 服务器的 TCP、UDP的24007~24008 端口、还要确保 49152 ~49156 端口可以访问
官网文档说明
————————————————
Ensure that TCP and UDP ports 24007 and 24008 are open on all Gluster servers. Apart from these ports,
you need to open one port for each brick starting from port 49152 (instead of 24009 onwards as with previous releases).
The brick ports assignment scheme is now compliant with IANA guidelines. For example: if you have five bricks, you need to have ports 49152 to 49156 open.
From Gluster-10 onwards, the brick ports will be randomized. A port is randomly selected within the range of
base_port to max_port as defined in glusterd.vol file and then assigned to the brick. For example: if you have
five bricks, you need to have at least 5 ports open within the given range of base_port and max_port.
To reduce the number of open ports (for best security practices), one can lower the max_port value
in the glusterd.vol file and restart glusterd to get it into effect.
3.3 安装客户端
vim /etc/hosts ,添加以下内容
192.168.100.2 gfserver1
192.168.100.3 gfserver2
192.168.100.4 gfserver3
# 将FUSE可加载内核模块(LKM)添加到Linux内核
modprobe fuse
# 验证是否已加载FUSE模块
dmesg | grep -i fuse
#下载所要安装版本的yum源
yum -y install centos-release-gluster9
#安装客户端
yum -y install glusterfs-client
#查看版本
glusterfs -V
# 创建挂载目录
mkdir -p /data/gfsdata
# 挂载/gv0
[root@i-8uoxabkv ~]# mount -t glusterfs 192.168.0.251:/gfsvolume /data/gfsdata
3.4 问题排查(无问题可跳过)
注意,挂载的时候报错了,Mount failed. Check the log file for more details.
报错了,查看gfs日志
tail -f /var/log/glusterfs/data-gfsdata.log 查询发现是dns解析问题
vim /etc/hosts ,添加以下内容
192.168.100.2 gfserver1
192.168.100.3 gfserver2
192.168.100.4 gfserver3
重新挂载成功
启动自动挂载
vim /etc/fstab
192.168.0.251:/gfsvolume /data/gfsdata glusterfs defaults 0 0
注意,我测试如果gfs server集群关闭,如果不能挂载,会不会客户端服务器重启后会无法正常进入系统
已验证通过,可以在server集群无法连接的情况系统还能正常加载