GlusterFS部署实操

2021-05-28 分类:nfs和GlusterFS 阅读(621) 评论(0)

孙富阳, 江湖人称没人称。多年互联网运维工作经验,曾负责过孙布斯大规模集群架构自动化运维管理工作。擅长Web集群架构与自动化运维,曾负责国内某大型博客网站运维工作。

1.环境准备

1.1虚拟机准备

五台虚拟机:一台作为客户机,另外四台作为节点,每个虚拟机新增4块磁盘(每块磁盘20G)

角色大小
node1:10.0.0.10120*4
node2:10.0.0.10220*4
node3:10.0.0.10320*4
node4:10.0.0.10420*4
客户端:10.0.0.100100

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
注意:不用忘记关闭所有节点防火墙跟防护功能啊!!!。
注意:做好时间同步啊!!!

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配置文件

4台节点服务器格式化新添加的4块磁盘,然后创建4个目录挂载/data/{sdb,sd...}, 这里不在赘述了
修改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缓存
自己生吧,不赘述了。
#安装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
#查看状态
启动后一定要看状态。

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)

2. 创建各种卷

1:分布式卷

文件分布在不同的服务器,不具备冗余性,单点故障会造成数据丢失,似乎类似于read0

1.1服务端配置

注意:不用忘记关闭所有节点防火墙跟防护功能啊!!!。
注意:做好时间同步啊!!!
随便找一台机器创建即可这里我用node4操作
#创建卷
在node4创建利用node1和node2上的两块磁盘创建;dis-vol为磁盘名;force表示强制'
[root@node4 ~]# gluster volume create dis-vol node1:/data/sdb1 node2:/data/sdb1 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
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/sdb1
[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/sdb1
[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/sdb1 noode4:/data/sdb1 force
#查看卷
[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/sdb1
[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/sdb1
[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

3.分布式复制卷

兼顾分布式卷和复制卷的功能;用于需要冗余的情况下,有点类似read10

3.1服务端配置

注意:不用忘记关闭所有节点防火墙跟防护功能啊!!!。
注意:做好时间同步啊!!!
#创建卷
[root@node4 ~]# gluster volume create dis-rep replica 2 node1:/data/sde1 node2:/data/sde1 node3:/data/sde1 node4:/data/sde1 force
##开启
gluster volume start dis-stripe
gluster volume info dis-stripe

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/sde1
[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

4. 故障测试

随便关闭一个节点观察结果,这里以关闭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   #查看分布式复制卷  也是完整的

5. 访问控制

##仅拒绝
[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

6.故障后数据恢复

这里以node3的分布式复制卷故障为例
#卸载node3的分布式复制卷挂载点
[root@node03 /data/sde]# umount -lf /data/sde
#检查
[root@node03 /data/sde]# tree /data/
/data/
├── sdb
├── sdb1
│   ├── demo1.log
│   ├── demo2.log
│   ├── demo3.log
│   ├── demo4.log
│   └── demo5.log
├── sdc
├── sdd
└── sde
#客户端创建文件
[root@cline /test/dis-rep]# touch {1..9}
#node3挂载新磁盘
[root@node03 /data/sde]# mount /dev/sde /data/sde
#tree一下,发现数据没有同步
[root@node03 /data/sde]# tree /data/
/data/
├── sdb
├── sdb1
│   ├── demo1.log
│   ├── demo2.log
│   ├── demo3.log
│   ├── demo4.log
│   └── demo5.log
├── sdc
├── sdd
└── sde
#启动服务
[root@node03 /]# systemctl start glusterd.service
再次检查发现数据已经自动同步了

评论已关闭

登录

忘记密码 ?

切换登录

注册

鲁ICP备2021019243号-1