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
posted @ 2022-04-12 20:52  kirin(麒麟)  阅读(1070)  评论(0编辑  收藏  举报
Δ