GlusterFS部署实操
版权声明:原创作品,谢绝转载!否则将追究法律责任。 ————— 作者:kirin
01、简介
GFS(glusterfs),是一个开源的分布式文件系统,可以将数据存储在不同的节点服务器上,达到硬件磁盘阵列的效果,从而保证数据的高可用高
02、GlusterFS特点
★扩展性和高性能
★高可用
★全局统一命令空间
★弹性卷管理
★基于标准协议
03、GlusterFS术语
★Brick:GFS中的存储单元,通过是一个受信存储池中的服务器的一个导出目录。可以通过主机名和目录名来标识,如’SERVER:EXPORT’
★Volume:卷
★FUSE:内核文件系统,Filesystem Userspace是一个可加载的内核模块,其支持非特权用户创建自己的文件系统而不需要修改内核代码。通过在用户空间运行文件系统的代码通过FUSE代码与内核进行桥接。
★VFS:虚拟文件系统
★Glusterd:Gluster management daemon,要在trusted storage pool中所有的服务器上运行
04、卷分类:
# 分布式卷
将数据分开放在不同的节点,并没有对文件进行分块。比如一共有100个文件,分布式卷是将这100个通过hash算法文件分开放在不同的节点上,每个文件都是完整的可以打开的
# 条带卷
将数据分开放在不同的节点,对每个文件进行分块,类似raid0
# 复制卷
对每个数据进行备份,两份数据分别放在两个节点,类似raid1
# 分布式条带卷
兼顾分布式和条带卷的功能,主要用于大文件访问处理,至少最少需要 4 台服务器。
# 分布式复制卷
兼顾分布式卷和复制卷的功能,用于需要冗余的情况下
一、环境准备
1.1虚拟机准备
五台虚拟机:一台作为客户机,另外四台作为节点,每个虚拟机新增4块磁盘(每块磁盘20G)
角色 | 大小 |
---|---|
node1:10.0.0.101 | 20*4 |
node2:10.0.0.102 | 20*4 |
node3:10.0.0.103 | 20*4 |
node4:10.0.0.104 | 20*4 |
客户端:10.0.0.100 | 100 |
1.2配置四台节点服务器
[root@localhost ~]# hostnamectl set-hostname node1
[root@localhost ~]# hostnamectl set-hostname node2
[root@localhost ~]# hostnamectl set-hostname node3
[root@localhost ~]# hostnamectl set-hostname node4
注意:不用忘记关闭所有节点防火墙跟防护功能啊!!!。
注意:做好时间同步啊!!!
yum install -y ntpdate.x86_64
ntpdate 0.asia.pool.ntp.org
写入定时任务
1.3修改hosts文件
vim /etc/hosts
10.0.0.101 node1
10.0.0.102 node2
10.0.0.103 node3
10.0.0.104 node4
10.0.0.100 clinet
注意:5台机器都要修改
如果不做解析的话会出现如下报错
1.4挂载Gluster文件系统跟修改fstab配置文件
1.4.1--4台节点服务器格式化新添加的4块磁盘,这里不在赘述了
1.4.2.格式化4块新添加的数据盘
]# mkfs.xfs /dev/sdb
1.4.3.然后创建4个目录挂载/data/{sdb,sd...},
]# mkdir -p /data/sd{b..e}
1.4.4.挂载格式化后的数据盘
1.4.5.修改fstab配置文件也不在赘述。
]# vim /etc/fstab
1.5安装GlusterFS
注意四台节点操作一致
###修改yum源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
#清理yum源
[root@node1 ~]# yum clean all
生成yum缓存
[root@node1 ~]# yum makecache
#安装gluster
[root@node1 ~]# yum -y install centos-release-gluster ###这是安装yum源
[root@node1 ~]# yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma ##安装依赖包
#启动glusterfs
systemctl start glusterd.service
#查看状态
启动后一定要看状态。
systemctl status glusterd.service
1.6添加加入存储信息池
只要一台主机上添加其他节点即可,这里我在node1节点上操作
[root@node1 ~]# gluster peer probe node2 ###把node2加入存储池
peer probe: success.
[root@node1 ~]# gluster peer probe node3 ###把node3加入存储池
peer probe: success.
[root@node1 ~]# gluster peer probe node4 ###把node4加入存储池
peer probe: success.
#查看所有节点
[root@node1 ~]# gluster peer status ####这是命令
Number of Peers: 3
Hostname: node2
Uuid: 61ea3244-2d19-48dc-ab1c-e30bd4e7d01d
State: Peer in Cluster (Connected)
Hostname: node3
Uuid: 134437ba-1bce-4d4a-ab62-689f99796dba
State: Peer in Cluster (Connected)
Hostname: node4
Uuid: 72b81ad1-0428-4488-a146-c8a0d5b466f3
State: Peer in Cluster (Connected)
二、创建各种卷
1:分布式卷
文件分布在不同的服务器,不具备冗余性,单点故障会造成数据丢失,似乎类似于read0
1.1服务端配置
注意:不用忘记关闭所有节点防火墙跟防护功能啊!!!。
注意:做好时间同步啊!!!
随便找一台机器创建即可这里我用node4操作
#创建卷
在node4创建利用node1和node2上的两块磁盘创建;dis-vol为磁盘名;force表示强制'
[root@node4 ~]# gluster volume create dis-vol node1:/data/sdb node2:/data/sdb force
#查看卷
[root@node4 ~]# gluster volume list ###这才是命令
dis-vol
#启动
[root@node4 ~]# gluster volume start dis-vol ###这才是命令
volume start: dis-vol: success
#查看状态
[root@node4 ~]# gluster volume info dis-vol ###这才是命令
Volume Name: dis-vol
Type: Distribute
Volume ID: 351d5534-d3d1-450b-93c5-beac0a39e757
Status: Started
Snapshot Count: 0
Number of Bricks: 2
Transport-type: tcp
Bricks:
Brick1: node1:/data/sdb1
Brick2: node2:/data/sdb1
Options Reconfigured:
transport.address-family: inet
storage.fips-mode-rchecksum: on
nfs.disable: on
#如果不想用可以关闭
[root@node4 ~]# gluster volume stop dis-vol
#甚至可以删除它
[root@node4 ~]# gluster volume delete dis-vol
1.2客户端配置
注意:不用忘记关闭所有节点防火墙跟防护功能啊!!!。
注意:做好时间同步啊!!!
#配置安装GFS源
1.下载阿里云yum源:
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
2.清理yum源&生成缓存:
yum clean all && yum makecache
3.安装源:
yum -y install centos-release-gluster
4.安装软件包:
yum -y install glusterfs glusterfs-fuse
####host文件修改了吗?
#创建临时挂载点:
root@client ~]# mkdir -p /test/dis #递归创建挂载点
[root@client ~]# mount.glusterfs node2:dis-vol /test/dis #挂载分布式node2是随意写的只要是地地址池里面的节点都行
[root@node4 ~]# df – h#检查是否挂载
#测试卷:创建5个40M的文件
dd if=/dev/zero of=/demo1.log bs=1M count=40
dd if=/dev/zero of=/demo2.log bs=1M count=40
dd if=/dev/zero of=/demo3.log bs=1M count=40
dd if=/dev/zero of=/demo4.log bs=1M count=40
dd if=/dev/zero of=/demo5.log bs=1M count=40
#创建的5个文件复制到挂载点上
[root@client ~]# cp /demo* /test/dis
#查看一下吧
[root@client dis]# cd /test/dis
[root@client dis]# ll -h
总用量 200M
-rw-r--r--. 1 root root 40M 5月 13 22:45 demo1.log
-rw-r--r--. 1 root root 40M 5月 13 22:45 demo2.log
-rw-r--r--. 1 root root 40M 5月 13 22:45 demo3.log
-rw-r--r--. 1 root root 40M 5月 13 22:45 demo4.log
-rw-r--r--. 1 root root 40M 5月 13 22:45 demo5.log
#自行前往node1与node2查看发生了什么变化
#node1查看一下
[root@node1 ~]# cd /data/sdb
[root@node1 sdb1]# ll -h
总用量 160M
-rw-r--r--. 2 root root 40M 5月 13 22:45 demo1.log
-rw-r--r--. 2 root root 40M 5月 13 22:45 demo2.log
-rw-r--r--. 2 root root 40M 5月 13 22:45 demo3.log
-rw-r--r--. 2 root root 40M 5月 13 22:45 demo4.log
#node2查看一下
[root@node2 opt]# cd /data/sdb
[root@node2 sdb1]# ll -h
总用量 40M
-rw-r--r--. 2 root root 40M 5月 13 22:45 demo5.log
2.复制卷
同一个文件保存一份或多分副本,复制模式因为要保存副本,所以磁盘利用率较低。
多个节点上的存储空间不一致,那么将安装木桶效应取最低节点的容量作为该卷的总容量
似乎类似于read1
2.1服务端配置
注意:不用忘记关闭所有节点防火墙跟防护功能啊!!!。
注意:做好时间同步啊!!!
本次在node03上操作
#创建卷
[root@node3 ~]# gluster volume create rep-vol replica 2 node3:/data/sdb node4:/data/sdb force
写错节点名字或者没做hosts解析会报一下错误
#查看卷
[root@node3 ~]# gluster volume list #命令在这
dis-vol
rep-vol
#启动
[root@node3 ~]# gluster volume start rep-vol
2.2客户端配置
#创建挂载点
[root@client dis]# mkdir /test/rep-vol
#挂载
[root@client dis]# mount.glusterfs node2:rep-vol /test/rep-vol/
#复制到挂载点
[root@client /]# cp demo* /test/rep-vol/
#node3节点查看
[root@node3 sdc1]# cd /data/sdb
[root@node3 sdb1]# ll -h
总用量 200M
-rw-r--r--. 2 root root 40M 5月 13 23:23 demo1.log
-rw-r--r--. 2 root root 40M 5月 13 23:23 demo2.log
-rw-r--r--. 2 root root 40M 5月 13 23:23 demo3.log
-rw-r--r--. 2 root root 40M 5月 13 23:23 demo4.log
-rw-r--r--. 2 root root 40M 5月 13 23:23 demo5.log
#node4节点查看
[root@node4 ~]# cd /data/sdb
[root@node4 sdb1]# ll -h
总用量 200M
-rw-r--r--. 2 root root 40M 5月 13 23:23 demo1.log
-rw-r--r--. 2 root root 40M 5月 13 23:23 demo2.log
-rw-r--r--. 2 root root 40M 5月 13 23:23 demo3.log
-rw-r--r--. 2 root root 40M 5月 13 23:23 demo4.log
-rw-r--r--. 2 root root 40M 5月 13 23:23 demo5.log
三、分布式复制卷
兼顾分布式卷和复制卷的功能;用于需要冗余的情况下,有点类似read10
3.1服务端配置
注意:不用忘记关闭所有节点防火墙跟防护功能啊!!!。
注意:做好时间同步啊!!!
#创建卷
[root@node4 ~]# gluster volume create dis-rep replica 2 node1:/data/sde node2:/data/sde node3:/data/sde node4:/data/sde force
##开启
gluster volume start dis-rep
gluster volume info dis-rep
3.2客户端挂载
#创建挂载点、挂载并查看挂载情况
[root@client ~]# mkdir /test/dis-rep
[root@client ~]# mount.glusterfs node1:dis-rep /test/dis-rep/
[root@client ~]# df -h
#复制卷到挂载卷
[root@client /]# cp demo* /test/dis-rep/
#去node1节点查看
[root@node1 ~]# cd /data/sde
[root@node1 sde1]# ll -h
总用量 160M
-rw-r--r--. 2 root root 40M 5月 14 09:04 demo1.log
-rw-r--r--. 2 root root 40M 5月 14 09:04 demo2.log
-rw-r--r--. 2 root root 40M 5月 14 09:04 demo3.log
-rw-r--r--. 2 root root 40M 5月 14 09:04 demo4.log
#node2节点查看
[root@node2 ~]# cd /data/sde1
[root@node2 sde1]# ll -h
总用量 160M
-rw-r--r--. 2 root root 40M 5月 14 09:04 demo1.log
-rw-r--r--. 2 root root 40M 5月 14 09:04 demo2.log
-rw-r--r--. 2 root root 40M 5月 14 09:04 demo3.log
-rw-r--r--. 2 root root 40M 5月 14 09:04 demo4.log
#node3查看
[root@node3 ~]# cd /data/sde1
[root@node3 sde1]# ll -h
总用量 40M
-rw-r--r--. 2 root root 40M 9月 14 09:04 demo5.log
#node4查看
[root@node4 ~]# cd /data/sde1
[root@node4 sde1]# ll -h
总用量 40M
-rw-r--r--.: 2 root root 40M 9月 14 09:04 demo5.log
四、故障测试
随便关闭一个节点观察结果,这里以关闭node2服务器为例观察
[root@client /]# cd /test/
[root@client test]# ls
dis dis-rep rep-vol
[root@client test]# ls dis #查看分布卷
demo1.log demo2.log demo3.log demo4.log //这边缺少deme05.log
[root@client test]# ls dis-rep/ #查看复制卷
demo1.log demo2.log demo3.log demo4.log demo5.log #这边是完整的
[root@client test]# ls rep-vol/
demo1.log demo2.log demo3.log demo4.log demo5.log #查看分布式复制卷 也是完整的
五、访问控制
##仅拒绝
[root@node1~]# gluster volume set dis-vol auth.reject 10.0.0.100
volume set: success
##仅允许
[root@node1 ~] gluster volume set dis-vol auth.allow 10.0.0.100
volume set: success
本文来自博客园,作者:kirin(麒麟),转载请注明原文链接:https://www.cnblogs.com/kirin365/articles/16137192.html