一、前言
当我们使用Glusterfs作为服务器中的数据文件共享时,当搭建好了glusterfs server端后,这时需要进行gfs server与client的关联,然后通过数据挂载 实现服务器中数据文件的资源共享。
这个是需要在Glusterfs server以及client上做相关的配置。
二、实现配置关联步骤
1、实现配置关联的前提:server端与client端机器要保持相互通信,即就是可以互相ping通。
要实现机器之间可以互通,可参考我的该篇文章:
https://blog.csdn.net/xu710263124/article/details/120058098?spm=1001.2014.3001.5502
注意:这里所有节点保持一致的host即可, 以node1 节点为例。
#绑定hosts不是必须的,后续组件受信任池也可以使用ip形式
192.168.122.1 node1【server】
192.168.122.2 node2【client】
假设:gfs server:192.168.122.1
gfs client:192.122.122.2 【client端可以有多个】
2、首先需要在glusterfs client上进行client端的安装
可选择源码安装或者yum安装、以及rpm包进行安装
我这里是采用的rpm包的安装方式
环境:Centos7
gfs client版本:3.8.10
3、搭建gfs client端需要的rpm包
如下:
glusterfs-api-3.8-10.el7.x86_64.rpm
glusterfs-cli-3.8-10.el7.x86_64.rpm
glusterfs-client-xlators-3.8-10.el7.x86_64.rpm
glusterfs-fuse-3.8-10.el7.x86_64.rpm
glusterfs-libs-3.8-10.el7.x86_64.rpm
分别上传包到所需要安装gfs client端的主机:这里的client端机器为192.122.122.2
4、检查每台机器中的防火墙状态
systemctl status firewalld
如果防火墙是开启的话,需要为其开放对应的端口
如果没有其他特别要求,关闭即可。
5、开启时间同步 【这个可装可不装~】
如果没有安装chrony的话,可进行如下安装
yum install -y chrony
安装完成后,启动服务并设置开机自启动
systemctl start chronyd
systemctl start chronyd
node1开启chrony服务功能
node1可添加以下操作:
sudo vim /etc/chrony.conf
allow 0.0.0.0/0 #添加允许网段
# Listen for commands only on localhost.
bindcmdaddress 127.0.0.1
bindcmdaddress ::1
# Serve time even if not synchronized to any NTP server.
local stratum 10 #取消注释
6、然后在client端机器上进行如下配置
sudo vim /etc/chrony.conf
#server 1.rhel.pool.ntp.org iburst
#server 2.rhel.pool.ntp.org iburst
#server 3.rhel.pool.ntp.org iburst
server 192.168.105.71 iburst
然后重启chrony服务
sudo systemctl restart chronyd.service
sudo systemctl enable chronyd.service
查看时间同步情况
sudo chronyc sources -v
7、client端安装配置集群【rpm包安装】
sudo rpm -ivh glusterfs-*.rpm --force --nodeps
安装完成后,可通过 rpm -qa | grep glusterfs 进行查询
rpm -qa | grep glusterfs
如下所示,表示包已经安装完成
8、创建client端 挂载的gfs 目录
mkdir -p /mnt/glusterfs # 挂载的gfs 目录
9、然后在gfs server端进行client端信息的配置添加并允许client端机器的权限
这里为:192.168.122.1 node1
配置文件为:/opt/gltfs/etc/glusterfs/glusterd.vol
在其对应的配置文件/opt/gltfs/etc/glusterfs/glusterd.vol下:
volume management
type mgmt/glusterd
option working-directory /etc/glusterd
option transport-type socket,rdma
option transport.socket.keepalive-time 10
option transport.socket.keepalive-interval 2
end-volume
volume brick
type storage/posix
option directory /mnt/glusterfs/ 【server端数据块】
end-volume
#client1
volume remote1
type protocol/client 【client端配置】
option transport-type tcp
option remote-host 192.168.122.2
option remote-subvolume brick
end-volume
允许client端机器的权限问题
gluster volume set vol01 auth.allow 192.168.122.2
10、启动服务
sudo systemctl start glusterd
sudo systemctl status glusterd
sudo systemctl enable glusterd
**或者可以通过编写执行脚本 client-ctl.sh
vim client-ctl.sh
#!/bin/bash
umount /mnt/glusterfs
echo "Start client process..."
mount -t glusterfs -o log-level=ERROR,log-file=./client.log,transport=tcp wdtest02:/vol01 /mnt/glusterfs
#chmod 777 /mnt/glusterfs/taeblob/cloudapi-instwall -R
echo "done."
注:要实现gfs的互通,必须确保server端和client端的机器能够互通。
这里的互通不单指 ping通,在server端的
mount -t glusterfs -o log-level=ERROR,log-file=./client.log【配置log信息】,transport=tcp【以TCP的形式实现文件共享】 abtest02:/vol01 【abtest02为gfs server端的主机名 】/mnt/glusterfs 【为将server端的挂载的共享数据文件】
**解释:**
这里,如果要执行该命令,需要先创建对应的目录,即:/mnt/glusterfs
1、log-level=ERROR,log-file=./client.log #配置log信息
2、transport=tcp【以TCP的形式实现文件共享】
3、abtest02:/vol01 【abtest02为gfs server端的主机名 ,其中 vol01 为gfs server中的数据卷
4、/mnt/glusterfs 【为将gfs server端的文件挂载到gfs client端的对应的目录下】
11、执行完成后,可通过查询分布卷状态
sudo gluster volume status
注:
1、TCP Port为对应gfs开放端口
2、volume:为对应的卷:vol01
12、注意,这里如果挂载不成功,一般都是因为防火墙规则问题。
因为要实现机器之间的互相通信,这时需要进行防火墙规则允许。
即:在server的机器的防火墙规则上加上client机器。
这里的话,如果报错,会出现如下信息:
12.1 报错信息:
socket_connect_finish 0-vol01-client-1:connection to xxx.xxx.xxx.xxx failed (Connection timed out)
12.2 报错原因:socket链接不成功,说明机器之间并没有实现通信。
12.3 解决方案:一般出现这类问题,基本都是防火墙规则未设置。
1、检查:server端的机器是否开启了对client端机器的防火墙规则
查看防火墙规则配置文件:/etc/sysconfig/iptables
如图所示:
2、如果没有添加防火墙规则的话,添加规则
-A INPUT -s IP地址 -j ACCEPT
3、添加完成后,重启防火墙服务
service iptables restart
重启完成之后,然后执行挂载指令,即可完成。
4、添加完成之后,可以通过如下指令来检查:
# 查看现有防火墙过滤规则:
iptables -nvL --line-number
5、挂载完成后,可通过df -h 进行查询
df -h
如下:
6、查看进程 ps -ef | grep glusterfs
ps -ef | grep glusterfs
如此,则说明 gfs 挂载成功~~