GlusterFS部署实操
孙富阳, 江湖人称没人称。多年互联网运维工作经验,曾负责过孙布斯大规模集群架构自动化运维管理工作。擅长Web集群架构与自动化运维,曾负责国内某大型博客网站运维工作。
1.环境准备
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
注意:不用忘记关闭所有节点防火墙跟防护功能啊!!!。
注意:做好时间同步啊!!!
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
再次检查发现数据已经自动同步了
未经允许不得转载:孙某某的运维之路 » GlusterFS部署实操
评论已关闭