2011年10月04日,红帽收购Gluster。
2014年4月30日,红帽公司以1.75亿美元的价格将Ceph的企业级产品提供商Inktank收入囊中,以将Inktank的存储产品集成在其基于GlusterFS(红帽在2011年10月份斥资1.36亿美元收购Gluster)的存储产品中。
2018年10月28日,IBM 将以每股 190 美元的现金收购 Red Hat 所有已发行股份,总价值约为 340 亿美元(2360.45 亿人民币)。
RedHat一直都提供源代码的发行方式,CentOS就是将RedHat发行的源代码重新编译一次,形成一个可使用的二进制版本。由于LINUX的源代码是GNU,所以从获得RedHat的源代码到编译成新的二进制,都是合法。只是RedHat是商标,所以必须在新的发行版里将RedHat的商标去掉。
RedHat对这种发行版的态度是:“我们其实并不反对这种发行版,真正向我们付费的用户,他们重视的并不是系统本身,而是我们所提供的商业服务。”所以,CentOS可以得到RedHat的所有功能,甚至是更好的软件。但CentOS并不向用户提供商业支持,当然也不负上任何商业责任。
如果你要将你的RedHat转到CentOS上,因为你不希望为RedHat升级而付费。当然,你必须有丰富UNIX使用经验,因此,RedHat的商业技术支持对你来说并不重要。但如果你是单纯的业务型企业,那么还是建议你选购RedHat软件并购买相应服务。这样可以节省你的IT管理费用,并可得到专业服务。
一句话,选用CentOS还是RedHat,取决于你所在公司是否拥有相应的技术力量。
操作系统:centos7以上
本文基于:
[root@localhost ~]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
如果使用VMWARE虚拟机,需要将网络设置为NAT模式,并配好响应的网卡。
(1)编辑网卡
如果联网没有限制,可以不进行这一步。
修改全局环境变量:vim /etc/profile
在文件最后加上:
http_proxy=http://ip:port
https_proxy=https://ip:port
ftp_proxy=http://ip:port
export http_proxy https_proxy ftp_proxy
修改yum命令配置文件 vim /etc/yum.conf
在文件最后加上:
proxy=http://ip:port
注:ip和port处填入自己公司提供的代理IP及端口。
如果仅仅使用yum安装,那么不需要配置全局代理,只需配置yum代理即可。
确保yum仓库所在路径(/etc/yum.repos.d/)下包含以下文件:
执行:
yum clean all
yum makecache
yum makecache作用:
yum有很多源,大多是网络上的。makecache建立一个缓存,以后用install时就在缓存中搜索,提高了速度。
关闭防火墙:
systemctl stop firewalld.service
systemctl disable firewalld.service
安装gluster的centos版本:
yum install -y centos-release-gluster
安装glusterfs相关服务:
yum install -y glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma
启动gluster服务:
systemctl start glusterd.service
systemctl enable glusterd.service #开机启动gluster
检查gluster状态:
service glusterd status
启动glusterfsd服务
官网没有这一步
systemctl start glusterfsd
systemctl enable glusterfsd
systemctl status glusterfsd
查看gluster版本:
glusterd --version
通过查看gluster状态和版本,可以看出在当前单机上glusterfs服务已经安装完成。
本集群拥有两台服务器,在分别对两台服务器进行完gluster-server的单机安装后,开始进行集群安装。
对两台服务器分别执行:
vim /etc/hosts
在最后一行加上以下内容:
10.161.131.33 shenzhenfs
10.177.150.7 changzhoufs
其中,第一部分为IP,第二部分为主机名/别名。
对两台服务器分别执行:
gluster peer probe shenzhenfs
gluster peer probe changzhoufs
查看gluster信任池:
gluster pool list
查看gluster集群状态:
gluster peer status
在sz服务器上执行:
mkdir -p /opt/bpmgluster/szserver
mkdir -p /opt/bpmgluster/szclient
在cz服务器上执行:
mkdir -p /opt/bpmgluster/czserver
mkdir -p /opt/bpmgluster/czclient (暂时没用到)
GlusterFS卷共有三种基本类型,分别是Distributed(分布式存储)、Striped(将一个文件分成多个固定长度的数据,分布存放在所有存储块,相当于RAID0)、Replicated(镜像存储,相当于RAID1)。
按照官网教程,创建Replicated类型:
gluster volume create bpmshare replica 2 shenzhenfs:/opt/bpmgluster/szserver changzhoufs:/opt/bpmgluster/czserver force
在两台服务器上分别启动volume:
gluster volume start bpmshare
确认gluster已经启动:
gluster volume info
gluster volume status
按照网上做法:
[root@VLXCNDSZ01BRMFS szserver]# mount -t glusterfs shenzhenfs:/bpmshare /opt/bpmgluster/szserver
ERROR: /opt/bpmgluster/szserver is in use as a brick of a gluster volume
错误原因:已经被设置为共享卷的文件夹是不能再被挂载的,大部分博客里的答案真心不靠谱。
官网解释:
For this step, we will use one of the servers to mount the volume.
Typically, you would do this from an external machine, known as a
“client”. Since using this method would require additional packages to
be installed on the client machine, we will use one of the servers as
a simple place to test first, as if it were that “client”.
上面这句话可以用下图解释:
简而言之,本来是需要另一台服务器当客户端的,但是为了省事,直接在任意一台server上创建文件夹当客户端吧。本文选择用深圳服务器的szclient文件夹模拟客户端:
mount -t glusterfs shenzhenfs:/bpmshare /opt/bpmgluster/szclient/
df -h
经过以上步骤后可总结如下:
文件夹szserver与czserver组成镜像存储共享卷,文件夹szclient为客户端,当在szclient里面存入文件时,szserver和czserver内的文件会与szclient保持同步。
测试一:在szclient文件夹创建文件szclient1.txt,发现该文件同步至szserver和czserver
测试二:在szserver文件夹创建文件szserver1.txt,发现该文件同步至szclient和czserver
测试三:在czserver文件夹创建文件czserver1.txt,该文件没有同步至szserver和szclient。
测试三:在czserver文件夹创建文件czserver1.txt,该文件没有同步至szserver和szclient。
测试四:在szserver文件夹创建文件szserver2.txt,该文件同步至szclient和czserver,然后在szserver(szclient)中删除szserver2.txt,szclient(szserver)中的szserver2.txt也随之消失,czclient中仍保留szserver2.txt。
测试五:在szserver(szclient)中创建文件夹szserver1,同步效果与创建文件同步效果相同。
首先,在每台主机上执行vim /etc/hosts
编辑需要与本机进行文件同步的主机。
实际过程中,只需要在客户端上配置好服务端的IP和主机名(别名)即可。
做完这一步后,执行ping IP/hostname,看一下服务器之间是否连通。
yum install -y glusterfs glusterfs-server
无法安装,提示系统中已经存在GlusterFS服务,但执行以下命令却无法对外提供GlusterFS服务:
[root@wzk]# service glusterfsd start
Redirecting to /bin/systemctl start glusterfsd.service
Failed to start glusterfsd.service: Unit glusterfsd.service failed to load: No such file or directory.
幸运的是,webapp服务器上只需安装Gluster客户端:
yum install -y glusterfs-fuse glusterfs-rdma
RDMA的全称为Remote Direct Memory
Access,字面的意思就是远程直接访问内存,顾名思义,就是让一台计算机能够直接访问另外一台计算机的内存。这种技术无需操作系统参与,能让应用程序直接读写网络收发的数据,从而极大地减少了内存拷贝操作,也避免了不同的软件模块对数据的反复处理,对性能的提升作用是毋庸置疑的。
可以安装成功!
mount -t glusterfs shenzhenfs:/bpmshare /opt/smart
在changzhou webapp服务器上执行以下命令:
mount -t glusterfs changzhoufs:/bpmshare /opt/smart
问题
hostname处命名期望值是简洁的changzhoufs,而不是冗长的域名
解决
以下操作确保有超级用户权限
首先移除节点:
[root@VLXCNDSZ01BRMFS /]# gluster peer detach vlxcndcz01bpmt7.aac.com
peer detach: success
vim /etc/hosts
最后改为如下内容(删掉域名部分):
10.161.131.33 shenzhenfs
10.177.150.7 changzhoufs
重新探测其他节点,与其建立集群(信任池 trusted pool)
[root@VLXCNDSZ01BRMFS /]# gluster peer probe changzhoufs
peer probe: success.
问题
[a-wangam@vlxcndcz01bpmt7 opt]$ cd bpmgluster/
-bash: cd: bpmgluster/: Permission denied
解决
ll命令发现该文件夹没有读的权限
[a-wangam@vlxcndcz01bpmt7 opt]$ ll
total 8
drwxr-x--- 2 root root 6 Dec 20 10:33 bpmgluster
drwxr-xr-x. 5 root root 4096 Jul 5 16:30 ds_agent
drwxr-xr-x. 9 root root 4096 Sep 8 13:54 omni
修改该文件夹的权限
[a-wangam@vlxcndcz01bpmt7 opt]$ sudo chmod 755 bpmgluster/
问题
没法卸载挂载目录
[root@VLXCNDSZ01BRMFS glusterdata]# umount -v /opt/glusterdata/
umount: /opt/glusterdata: target is busy.
(In some cases useful info about processes that use
the device is found by lsof(8) or fuser(1))
解决
fuser + ps命令查看该目录被哪个进程占用
[root@VLXCNDSZ01BRMFS glusterdata]# fuser -a /opt/glusterdata
/opt/glusterdata: 7176c
[root@VLXCNDSZ01BRMFS glusterdata]# ps -ef |grep 7176
root 7176 7171 0 Dec19 pts/0 00:00:00 bash
root 23232 7176 0 10:24 pts/0 00:00:00 ps -ef
root 23233 7176 0 10:24 pts/0 00:00:00 grep --color=auto 7176
杀进程
[root@VLXCNDSZ01BRMFS glusterdata]# kill -9 7176
Killed
卸载
[root@VLXCNDSZ01BRMFS opt]# umount -v /opt/glusterdata/
umount: /opt/glusterdata (shenzhenfs:/sharevol) unmounted
在客户端上挂载需要同步的文件夹:
mount -t glusterfs shenzhenfs:/bpmshare /opt/smart
之前,要在/etc/hosts上配置好对应的Gluster服务器的IP及别名,否则可能会导致挂载占用进程,df -h
命令无法使用,挂载目录也无法进入。
10.161.131.33 shenzhenfs
如果执行:
mount -t glusterfs shenzhenfs:/bpmshare /opt/smart
命令后仍然无法同步文件,那么可以尝试先删除掉挂载目录:
rm -rf /opt/smart/
再创建目录:
mkdir /opt/smart
最后重新执行挂载命令。
#服务后的d表示守护进程,直到系统关闭该进程才会结束
#开启gluster服务
service glusterd start
service glusterd stop
service glusterd status
#或者
systemctl start glusterd
systemctl stop glusterd
systemctl status glusterd
#开启glusterfs服务
service glusterfsd start
service glusterfsd stop
service glusterfsd status
#或者
systemctl start glusterfsd
systemctl stop glusterfsd
systemctl status glusterfsd
#为trusted pool添加/移除服务器
gluster peer probe shenzhenfs
gluster peer detach shenzhenfs
#查看所有节点状态(不包括本节点)
gluster peer status
#volume命令
gluster volume create bpmshare replica 2 shenzhenfs:/opt/bpmgluster/szserver changzhoufs:/opt/bpmgluster/czserver force
gluster volume start bpmshare
gluster volume list
gluster volume info
gluster volume status
gluster volume stop bpmshare
gluster volume delete bpmshare #注意,删除卷的前提是先停止卷。
#客户端以glusterfs形式挂载
mount -t glusterfs shenzhenfs:/bpmshare /opt/bpmgluster/szclient/
df -h #查看挂载情况