一步步教你部署 GFS 分布式存储平台(图文详解!)


一、GFS 平台部署

1.环境准备

mark
Node1节点:node1/192.168.126.11		磁盘:/dev/sdb1		挂载点:/data/sdb1
										   /dev/sdc1			   /data/sdc1
										   /dev/sdd1			   /data/sdd1
										   /dev/sde1			   /data/sde1

Node2节点:node2/192.168.126.12		磁盘:/dev/sdb1		挂载点:/data/sdb1
											/dev/sdc1			   /data/sdc1
											/dev/sdd1			   /data/sdd1
											/dev/sde1			   /data/sde1

Node3节点:node3/192.168.126.13		  磁盘: /dev/sdb1		挂载点:/data/sdb1
											/dev/sdc1			   /data/sdc1
											/dev/sdd1			   /data/sdd1
											/dev/sde1			   /data/sde1

Node4节点:node4/192.168.126.14		磁盘: /dev/sdb1		挂载点:/data/sdb1
											/dev/sdc1			   /data/sdc1
											/dev/sdd1			   /data/sdd1
											/dev/sde1			   /data/sde1

Client节点:192.168.126.15
  • Linux 均为 CentOS7(VMware)

  • 实验中的四台节点均需要添加四块磁盘,不需要太大(关机状态下添加)

    mark

2.更改节点名称

node1(192.168.126.11):
hostnamectl set-hostname node1
su -

node2(192.168.126.12):
hostnamectl set-hostname node2
su -

node3(192.168.126.13):
hostnamectl set-hostname node3
su -

node4(192.168.126.14):
hostnamectl set-hostname node4
su -

client(192.168.126.15):
hostnamectl set-hostname client
su -

3.将新添加的磁盘进行格式化并挂载

四个节点配置相同,以下为node1的示范

systemctl stop firewalld
systemctl disable firewalld
setenforce 0
#关闭防火墙及安全机制

vim /opt/fdisk.sh
#!/bin/bash
NEWDEV=`ls /dev/sd* | grep -o 'sd[b-z]' | uniq`
for VAR in $NEWDEV
do
   echo -e "n\np\n\n\n\nw\n" | fdisk /dev/$VAR &> /dev/null
   mkfs.xfs /dev/${VAR}"1" &> /dev/null
   mkdir -p /data/${VAR}"1" &> /dev/null
   echo "/dev/${VAR}"1" /data/${VAR}"1" xfs defaults 0 0" >> /etc/fstab
done
mount -a &> /dev/null


chmod +x /opt/fdisk.sh
cd /opt/
./fdisk.sh
#赋权脚本并执行

df -hT
#确认磁盘空间

scp /opt/fdisk.sh [email protected]:/opt/fdisk.sh
scp /opt/fdisk.sh [email protected]:/opt/fdisk.sh
scp /opt/fdisk.sh [email protected]:/opt/fdisk.sh
#将脚本文件SCP传至其他三个节点,省事

echo "192.168.126.11 node1" >> /etc/hosts
echo "192.168.126.12 node2" >> /etc/hosts
echo "192.168.126.13 node3" >> /etc/hosts
echo "192.168.126.14 node4" >> /etc/hosts
#添加四个节点的域名解析

4.安装本地源

四个节点配置相同,以下为node1的示范

cd /opt
#将gfsrepo.zip软件包传至本目录下
unzip gfsrepo.zip

cd /etc/yum.repos.d/
mv local.repo repos.bak/

vim glfs.repo
[glfs]
name=glfs
baseurl=file:///opt/gfsrepo
gpgcheck=0
enabled=1


yum clean all && yum makecache

yum install -y glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma
#建议多yum安装几次,在安装过程中可能会出现纰漏的情况

systemctl start glusterd.service
systemctl enable glusterd.service
systemctl status glusterd.service

df -hT
mark

5.添加节点并创建集群

仅需在一台节点上操作,以下依旧是node1

gluster peer probe node1
gluster peer probe node2
gluster peer probe node3
gluster peer probe node4

gluster peer status
mark

6.根据规划创建卷

卷名称 卷类型 Brick
dis-volume 分布式卷 node1(/data/sdb1)、node2(/data/sdb1)
stripe-volume 条带卷 node1(/data/sdc1)、node2(/data/sdc1)
rep-volume 复制卷 node3(/data/sdb1)、node4(/data/sdb1)
dis-stripe 分布式条带卷 node1(/data/sdd1)、node2(/data/sdd1)、node3(/data/sdd1)、node4(/data/sdd1)
dis-rep 分布式复制卷 node1(/data/sde1)、node2(/data/sde1)、node3(/data/sde1)、node4(/data/sde1)

6.1 创建分布式卷

gluster volume create dis-volume node1:/data/sdb1 node2:/data/sdb1 force
#创建分布式卷,没有指定类型,默认创建的是分布式卷

gluster volume list
#查看类型

gluster volume start dis-volume
#开启

gluster volume info dis-volume
#查看卷信息
mark

6.2 创建条带卷

gluster volume create stripe-volume stripe 2 node1:/data/sdc1 node2:/data/sdc1 force
#指定类型为 stripe,数值为2,且后面跟了2个Brick Server,所以创建的是条带卷

gluster volume start stripe-volume
gluster volume info stripe-volume
mark

6.3 创建复制卷

gluster volume create rep-volume replica 2 node3:/data/sdb1 node4:/data/sdb1 force
#指定类型为replica,数值为2,且后面跟了2个Brick Server,所以创建的是复制卷

gluster volume start rep-volume
gluster volume info rep-volume
mark mark

6.4 创建分布式条带卷

gluster volume create dis-stripe stripe 2 node1:/data/sdd1 node2:/data/sdd1 node3:/data/sdd1 node4:/data/sdd1 force
#指定类型为stripe,数值为2,而且后面跟了4个Brick Server,是2的两倍,所以创建的是分布式条带卷

gluster volume start dis-stripe
gluster volume info dis-stripe

mark

6.5 创建分布式复制卷

gluster volume create dis-rep replica 2 node1:/data/sde1 node2:/data/sde1 node3:/data/sde1 node4:/data/sde1 force
#指定类型为 replica,数值为 2,而且后面跟了 4 个 Brick Server,是 2 的两倍,所以创建的是分布式复制卷

gluster volume start dis-rep
gluster volume info dis-rep
gluster volume list
mark

二、Client 客户端部署与测试

1.部署 Gluster 客户端

systemctl stop firewalld
systemctl disable firewalld
setenforce 0
#关闭防火墙及安全机制

cd /opt
#将软件包gfsrepo.zip传至该目录下
unzip gfsrepo.zip

cd /etc/yum.repos.d/
mv local.repo repos.bak/

vim glfs.repo
[glfs]
name=glfs
baseurl=file:///opt/gfsrepo
gpgcheck=0
enabled=1


yum clean all && yum makecache

yum install -y glusterfs glusterfs-fuse

mkdir -p /test/{
    
    dis,stripe,rep,dis_stripe,dis_rep}
ls /test

echo "192.168.126.11 node1" >> /etc/hosts
echo "192.168.126.12 node2" >> /etc/hosts
echo "192.168.126.13 node3" >> /etc/hosts
echo "192.168.126.14 node4" >> /etc/hosts

mount.glusterfs node1:dis-volume /test/dis
mount.glusterfs node1:stripe-volume /test/stripe
mount.glusterfs node1:rep-volume /test/rep
mount.glusterfs node1:dis-stripe /test/dis_stripe
mount.glusterfs node1:dis-rep /test/dis_rep

df -hT
----
sdb1:3.0G//sdc1:4.0G//sdd1:5.0G//sde1:6.0G
dis-volume(分布式卷):		(node1/2)sdb1×2=3×2=6.0G
stripe-volume(条带卷):	 	 (node1/2)sdc1×2=4×2=8.0G
rep-volume(复制卷):	 	 (node3/4)sdb1×2=3×2=6.0G,实则/2,为3.0G
dis-stripe(分布式条带卷):	   (node1/2/3/4)sdd1×4=5×4=20G
dis-rep(分布式复制卷):   	   (node1/2/3/4)sde1×4=6×4=24,实则/2,得12G
mark
cd /opt
dd if=/dev/zero of=/opt/demo1.log bs=1M count=40
dd if=/dev/zero of=/opt/demo2.log bs=1M count=40
dd if=/dev/zero of=/opt/demo3.log bs=1M count=40
dd if=/dev/zero of=/opt/demo4.log bs=1M count=40
dd if=/dev/zero of=/opt/demo5.log bs=1M count=40
#生成一个特定大小的文件给与/opt/demo*.log下,大小为1M,共处理40次

ls -lh /opt

cp demo* /test/dis
cp demo* /test/stripe/
cp demo* /test/rep/
cp demo* /test/dis_stripe/
cp demo* /test/dis_rep/

tree /test/
#查看/test/的文件夹/文件的目录树
mark mark mark

2.查看文件分布

1.查看分布式文件分布(node1:/dev/sdb1、node2:/dev/sdb1)
[root@node1 ~]# ls -lh /data/sdb1/
总用量 160M
-rw-r--r-- 2 root root 40M 3月   4 09:37 demo1.log
-rw-r--r-- 2 root root 40M 3月   4 09:37 demo2.log
-rw-r--r-- 2 root root 40M 3月   4 09:37 demo3.log
-rw-r--r-- 2 root root 40M 3月   4 09:37 demo4.log
[root@node2 ~]# ll -h /data/sdb1
总用量 40M
-rw-r--r-- 2 root root 40M 3月   4 09:37 demo5.log

----

2.查看条带卷文件分布(node1:/dev/sdc1、node2:/dev/sdc1)
[root@node1 ~]# ls -lh /data/sdc1
总用量 100M
-rw-r--r-- 2 root root 20M 3月   4 09:37 demo1.log
-rw-r--r-- 2 root root 20M 3月   4 09:37 demo2.log
-rw-r--r-- 2 root root 20M 3月   4 09:37 demo3.log
-rw-r--r-- 2 root root 20M 3月   4 09:37 demo4.log
-rw-r--r-- 2 root root 20M 3月   4 09:37 demo5.log
[root@node2 ~]# ll -h /data/sdc1
总用量 100M
-rw-r--r-- 2 root root 20M 3月   4 09:37 demo1.log
-rw-r--r-- 2 root root 20M 3月   4 09:37 demo2.log
-rw-r--r-- 2 root root 20M 3月   4 09:37 demo3.log
-rw-r--r-- 2 root root 20M 3月   4 09:37 demo4.log
-rw-r--r-- 2 root root 20M 3月   4 09:37 demo5.log

----

3.查看复制卷文件分布(node3:/dev/sdb1、node4:/dev/sdb1)
[root@node3 ~]# ll -h /data/sdb1
总用量 200M
-rw-r--r-- 2 root root 40M 3月   4 10:31 demo1.log
-rw-r--r-- 2 root root 40M 3月   4 10:31 demo2.log
-rw-r--r-- 2 root root 40M 3月   4 10:31 demo3.log
-rw-r--r-- 2 root root 40M 3月   4 10:31 demo4.log
-rw-r--r-- 2 root root 40M 3月   4 10:31 demo5.log
[root@node4 ~]# ll -h /data/sdb1
总用量 200M
-rw-r--r-- 2 root root 40M 3月   4 10:31 demo1.log
-rw-r--r-- 2 root root 40M 3月   4 10:31 demo2.log
-rw-r--r-- 2 root root 40M 3月   4 10:31 demo3.log
-rw-r--r-- 2 root root 40M 3月   4 10:31 demo4.log
-rw-r--r-- 2 root root 40M 3月   4 10:31 demo5.log

----

4.查看分布式条带卷分布(node1:/dev/sdd1、node2:/dev/sdd1、node3:/dev/sdd1、node4:/dev/sdd1)
[root@node1 ~]# ll -h /data/sdd1
总用量 80M
-rw-r--r-- 2 root root 20M 3月   4 09:37 demo1.log
-rw-r--r-- 2 root root 20M 3月   4 09:37 demo2.log
-rw-r--r-- 2 root root 20M 3月   4 09:37 demo3.log
-rw-r--r-- 2 root root 20M 3月   4 09:37 demo4.log
[root@node2 ~]# ll -h /data/sdd1
总用量 80M
-rw-r--r-- 2 root root 20M 3月   4 09:37 demo1.log
-rw-r--r-- 2 root root 20M 3月   4 09:37 demo2.log
-rw-r--r-- 2 root root 20M 3月   4 09:37 demo3.log
-rw-r--r-- 2 root root 20M 3月   4 09:37 demo4.log
[root@node3 ~]# ll -h /data/sdd1
总用量 20M
-rw-r--r-- 2 root root 20M 3月   4 09:37 demo5.log
[root@node4 ~]# ll -h /data/sdd1
总用量 20M
-rw-r--r-- 2 root root 20M 3月   4 09:37 demo5.log

----

5.查看分布式复制卷分布(node1:/dev/sde1、node2:/dev/sde1、node3:/dev/sde1、node4:/dev/sde1)
[root@node1 ~]# ll -h /data/sde1
总用量 160M
-rw-r--r-- 2 root root 40M 3月   4 09:37 demo1.log
-rw-r--r-- 2 root root 40M 3月   4 09:37 demo2.log
-rw-r--r-- 2 root root 40M 3月   4 09:37 demo3.log
-rw-r--r-- 2 root root 40M 3月   4 09:37 demo4.log
[root@node2 ~]# ll -h /data/sde1
总用量 160M
-rw-r--r-- 2 root root 40M 3月   4 09:37 demo1.log
-rw-r--r-- 2 root root 40M 3月   4 09:37 demo2.log
-rw-r--r-- 2 root root 40M 3月   4 09:37 demo3.log
-rw-r--r-- 2 root root 40M 3月   4 09:37 demo4.log
[root@node3 ~]# ll -h /data/sde1
总用量 40M
-rw-r--r-- 2 root root 40M 3月   4 09:37 demo5.log
[root@node4 ~]# ll -h /data/sde1
总用量 40M
-rw-r--r-- 2 root root 40M 3月   4 09:37 demo5.log

3.冗余(破坏)测试

1.在客户端查看文件
[root@client ~]# cd /test/
[root@client test]# ls
dis  dis_rep  dis_stripe  rep  stripe
[root@client test]# ll -h dis
总用量 200M
-rw-r--r-- 1 root root 40M 3月   4 09:37 demo1.log
-rw-r--r-- 1 root root 40M 3月   4 09:37 demo2.log
-rw-r--r-- 1 root root 40M 3月   4 09:37 demo3.log
-rw-r--r-- 1 root root 40M 3月   4 09:37 demo4.log
-rw-r--r-- 1 root root 40M 3月   4 09:37 demo5.log

----

2.把node2节点关闭(模拟宕机),再回到客户端检查,可以看到demo5没了,所以可以得出分布式卷(node1/2)不具备冗余的特性
[root@node2 ~]# init 0

[root@client test]# ll -h dis
总用量 160M
-rw-r--r-- 1 root root 40M 3月   4 09:37 demo1.log
-rw-r--r-- 1 root root 40M 3月   4 09:37 demo2.log
-rw-r--r-- 1 root root 40M 3月   4 09:37 demo3.log
-rw-r--r-- 1 root root 40M 3月   4 09:37 demo4.log

----

3.且发现条带卷(node1/2)数据为0,不具备冗余
[root@client test]# ll -h stripe/
总用量 0

----

4.关闭node3,测试复制卷(node3/node4)的冗余性
[root@node4 ~]# init 0

[root@client test]# ll -h rep/
总用量 200M
-rw-r--r-- 1 root root 40M 3月   4 10:31 demo1.log
-rw-r--r-- 1 root root 40M 3月   4 10:31 demo2.log
-rw-r--r-- 1 root root 40M 3月   4 10:31 demo3.log
-rw-r--r-- 1 root root 40M 3月   4 10:31 demo4.log
-rw-r--r-- 1 root root 40M 3月   4 10:31 demo5.log
#可以看到数据仍然存在,不受影响

----

5.查看分布式条带卷(node1/2/3/4)
[root@client test]# ll -h dis_stripe/
总用量 0
#也并不具备冗余性

----

6.查看分布式复制卷(node1/2/3/4)
[root@client test]# ll -h dis_rep/
总用量 200M
-rw-r--r-- 1 root root 40M 3月   4 09:37 demo1.log
-rw-r--r-- 1 root root 40M 3月   4 09:37 demo2.log
-rw-r--r-- 1 root root 40M 3月   4 09:37 demo3.log
-rw-r--r-- 1 root root 40M 3月   4 09:37 demo4.log
-rw-r--r-- 1 root root 40M 3月   4 09:37 demo5.log

小结:有复制数据功能的卷数据比较安全,容灾性较强

4.GFS 的常用命令

1.查看GlusterFS卷
gluster volume list

2.查看所有卷的信息
gluster volume info

3.查看所有卷的状态
gluster volume status

4.停止一个卷
gluster volume stop dis-stripe

5.删除一个卷
gluster volume delete dis-stripe
#注意:删除卷时,需要先停止卷,且信任池中不能有主机处于宕机状态,否则不能成功删除

6.设置卷的访问控制
gluster volume set dis-rep auth.allow 192.168.126.100
#仅拒绝,设置为IP地址为192.168.126.100的主机禁止访问dis-rep(分布式复制卷)

gluster volume set dis-rep auth.allow 192.168.126.*
#仅允许,设置为192.168.184.0网段的所有IP地址都能访问dis-rep(分布式复制卷)

小结:有复制数据功能的卷数据比较安全,容灾性较强

猜你喜欢

转载自blog.csdn.net/weixin_51486343/article/details/114363140