飞不高 发表于 2024-8-7 22:45:59

【云存储】Go项目实践(Fedora、GlusterFS、ownCloud)

实验目标与要求



[*]在 Vmware 中,用 Fedora-Server-dvd-x86_64-31-1.9.iso 安装 2 至 4 个 Fedora 假造机
[*]分别在每个节点上部署 Fedora
[*]在 Linux 系统上实现 Native 挂载;实验验证 GlusterFS 集群
[*]在此中一台服务器上搭建 ownCloud,创建自己的私人云盘系统
实验1:搭建GlusterFS

实验步骤

第一步:下载镜像并安装假造机

下载Fedora-server镜像,并在VMWare中利用该镜像安装2个Fedora假造机。
此步骤应留意:创建Fedora假造机后,要为每个Fedora假造机额外增长一块磁盘,结果如图1.1所示。
https://tva1.sinaimg.cn/large/e6c9d24egy1h1njja5hzfj208z04uwem.jpg 图 1.1 通过cat /proc/partitions指令查看新增的磁盘sdb(只展示一个假造机的结果)
第二步:固定假造机IP地址

利用ifconfig命令查看当前网卡名称:ens33以及假造机当前IP地址192.168.253.130和192.168.253.131;
利用如下指令,修改ens33的设置,包括添加IPADDR、NETMASK、GATEWAY和DNS1以及修改BOOTPROTO和ONBOOT等信息,来固定IP,
cd /etc/sysconfig/network-scripts
ls
vi ifcfg-ens33
随后重启假造机。
第三步:格式化、挂载分区(bricks)

从第一步我们知道分区位于/dev/sdb目次下,因此在每个节点(即Fedora假造机)上执行以下命令,
mkfs.xfs -i size=512 /dev/sdb
mkdir -p /data/brick1
echo '/dev/sdb /data/brick1 xfs defaults 1 2'>>/etc/fstab
mount -a && mount
从图1.2中可以看出已经挂载乐成。
https://tva1.sinaimg.cn/large/e6c9d24egy1h1o86qesdlj20h20cf76j.jpg 图 1.2 通过df -l指令查看是否挂载乐成(只展示一个假造机的结果)
第四步:安装GlusterFS

在每个节点上执行以下指令安装GlusterFS,
yum install glusterfs-server
安装竣过后利用以下指令启动GlusterFS管理保卫进程,
service glusterd start
然后利用以下指令查看结果,如图1.3所示,
service glusterd status
https://tva1.sinaimg.cn/large/e6c9d24egy1h1o93vjep5j20gw06yjs8.jpg 图 1.3 通过service glusterd status
指令查看结果(只展示一个假造机的结果)
第五步:设置可信任池

首先利用iptables -F命令关闭每个假造机的防火墙,
然后在此中一个节点(192.168.253.130)上,利用如下命令探测其他所有呆板,
gluster peer probe 192.168.253.131
设置结果如图1.4所示。
https://tva1.sinaimg.cn/large/e6c9d24egy1h1o9xfco96j209400sjr7.jpg 图 1.4 可信任池设置结果
第六步:创建GlusterFS卷

首先在所有节点上利用以下指令创建相应目次,
mkdir /data/brick1/gv0
其次在任意一个节点上运行以下指令,
gluster volume create gv0 replica 2 192.168.253.130:/data/brick1/gv0 192.168.253.131:/data/brick1/gv0

gluster volume start gv0
然后利用以下指令确认卷的信息,结果如图1.5所示
gluster volume info
https://tva1.sinaimg.cn/large/e6c9d24egy1h1oa2j0blkj20h3091q3q.jpg 图 1.5 创建、运行并确认卷gv0的信息
最后在每个节点上利用以下指令来开启rpcbind服务并重启glusterd服务
service glusterd stop
service rpcbind start
service glusterd start

第七步:测试GlusterFS卷

在服务节点1上利用以下指令挂载创建出来的gv0卷,
mount -t glusterfs 192.168.253.130:gv0 /mnt
随后利用以下指令创建100个文件,
for i in `seq -w 1 100`; do cp -rp /var/log/messages /mnt/copy-test-$i; done
此时,利用以下指令检查挂载点,可以看到返回了100个文件加上一个.glusterfs目次,如图1.6所示。
https://tva1.sinaimg.cn/large/e6c9d24egy1h1oavwpyz9j20gt01ha9z.jpg 图 1.6 检查挂载点返回的文件数目
最后,在每个服务节点上执行以下指令,来检查GlusterFS挂载点的内容,
ls -A /data/brcik1/gv0
结果如图1.7所示,可以看到得到的内容是一致的。
https://tva1.sinaimg.cn/large/e6c9d24egy1h1ob19b2pdj21400kbdik.jpg https://tva1.sinaimg.cn/large/e6c9d24egy1h1ob2ccwhyj213y0k90v8.jpg 图 1.7 检查每个服务节点上的GlusterFS挂载点
题目及办理方案


[*] 题目形貌:修改ifcfg-ens33文件时提示“Can’t open file for writing”。
办理方案:出现该题目标原因是权限不够。因此,将当前用户参加到sudo设置文件中,然后在命令前添加sudo即可办理该题目。
[*] 题目形貌:格式化分区时提示“Permission denied.”。
办理方案:切换成root再执行命令。
[*] 题目形貌:挂载分区时提示“mount: wrong fs type, bad option, bad superblock on /dev/sdb”。
办理方案:利用dmesg | tail指令查看系统日志后发现是因为挂载分区的指令中的defaults少打了一个s,修正后即可以正常挂载分区。
实验小结

在该部分实验中,我顺利地在两台装有Fedora Server的VMware假造机上安装并部署了GlusterFS,并实现了Native挂载,最后通过验证证明了我搭建的GlusterFS集群的准确性。
通过该部分实验,对GlusterFS这个分布式文件系统有了更深入的了解,通过动手实践体会到了我们可以很简朴地通过传统的NFS、SMB/CIFS、FUSE等协议在Linux系统中访问GlusterFS集群。
实验2:搭建ownCloud

实验步骤

预备工作


[*]利用以下指令关闭防火墙,
systemctl stop firewalld
systemctl disable firewalld

[*]将/etc/sysconfig/selinux中的SELINUX设置为disabled以关闭selinux;
[*]利用yum update指令更新yum源。
第一步:安装ownCloud


[*]利用以下指令安装samba和httpd,
yum install -y samba
yum install -y hpptd

[*] 安装php7.1
a) 利用以下指令安装remi源
yum -y install http://mirrors.tuna.tsinghua.edu.cn/remi/fedora/remi-release-31.rpm
b) 按照指南修改/etc/yum.repos.d/remi.repo
c) 利用以下指令安装php7.1
yum -y install --enablerepo=remi php71 php71-php php71-php-opcache php71-php-xml php71- php-mcrypt php71-php-gd php71-php-devel php71-php-mysql php71-php-intl php71-php-mbstring php71-php-zip
最后利用php71 -v指令查看php版本,结果如图2.1所示。
https://tva1.sinaimg.cn/large/e6c9d24egy1h1oc9oivunj20cv028wej.jpg 图 2.1 查看php版本
[*] 利用以下指令安装mariadb
yum install -y mariadb mariadb-server

[*]利用以下指令设置samba开机启动
systemctl start smb.service
systemctl enable smb.service

[*]利用以下指令设置mariadb开机启动
systemctl start mariadb.service
systemctl enable mariadb.service

[*]利用以下指令修改/var/www/html权限
chown apache.apache /var/www/html/
至此,在假造机外部打开浏览器,输入假造机的 IP 地址,可以看到apache测试页,如图2.2所示。
https://tva1.sinaimg.cn/large/e6c9d24egy1h1odha1ejkj20v90h0wis.jpg 图 2.2 apache测试页面

[*] 安装ownCloud
切换到/var/www/html目次下,利用以下指令下载ownCloud并解压,
wget https://download.owncloud.org/community/owncloud-10.2.0.tar.bz2
tar -xjvf owncloud-10.2.0.tar.bz2
利用以下指令拷贝index.php到html目次下,
cp /var/www/html/owncloud/index.php /var/www/html/
然后利用以下指令修改权限
chmod 777 /var/www/html/owncloud

[*] 利用以下指令重启httpd
systemctl restart httpd.service
至此,利用 ps -aux | grep httpd指令查看结果如图2.3所示
https://tva1.sinaimg.cn/large/e6c9d24egy1h1odt07h4zj20ei02imxf.jpg 图 2.3ps -aux | grep httpd指令结果
第二步:注册测试

在假造机外部打开浏览器,输入192.168.253.130/owncloud:
首先设置管理员密码,如图2.4所示;
然后登岸管理员账号,进入主页面,并创建一个名为“学号加姓名”的文件夹,如图2.5所示
https://tva1.sinaimg.cn/large/e6c9d24egy1h1ofwt3rgsj213x0lnn34.jpg 图 2.4 设置ownCloud管理员密码
https://tva1.sinaimg.cn/large/e6c9d24egy1h1ofxzx9t1j21400lmgmy.jpg 图 2.5 ownCloud主页面
题目及办理方案


[*] 题目:打开ownCloud页面时提示"Service Unavailable - The server is temporarily unable to service your request due to maintenance downtime or capacity problems.。
办理方案:yum -y install --enablerepo=remi php71-php-fpm
实验小结

在该部分的实验中,我完成了ownCloud的下载、安装以及设置,乐成地搭建起了属于自己的私人云盘。
思考与拓展实践

完成GLuster的其余6种卷的创建和利用

1. 分布式卷(Distribute Volume)

简介:
该模式下,并没有对文件举行分块处理,而是通过hash算法分布到所有brick server上,只是扩大了磁盘空间,类似window中的跨区卷。具有以下特点:文件分布在不同的服务器,不具备冗余性;更容易且便宜地扩展卷的巨细;单点故障会造成数据丢失,不具备容错性;依靠底层的数据保护。其实分布式卷就是GlusterFS的默认模式。
创建和利用:
利用以下指令来创建、查看和测试条带卷:
# 创建mkdir /data/brick1/gv1        # 所有服务节点均要执行gluster volume create gv1 192.168.253.130:/data/brick1/gv1 192.168.253.131:/data/brick1/gv1gluster volume start gv1# 查看gluster volume info
gv1# 利用mount -t glusterfs 192.168.253.130:gv1 /mntfor i in `seq -w 1 100`; do cp -rp /var/log/messages /mnt/name-copy-test-$i; done# 检查ls -A /data/brcik1/gv1 从图3.1中可以看出,我们已经乐成创建了Type为Distribute的卷;
从图3.2中可以看出,我们可以看到服务节点1存储的是编号为奇数的文件,而服务节点2存储的是编号为偶数的文件。
https://tva1.sinaimg.cn/large/e6c9d24egy1h1oj960u2mj208q05yaab.jpg 图 3.1 创建并查看分布式卷
https://tva1.sinaimg.cn/large/e6c9d24egy1h1ojjvqb8cj21400kb41e.jpg https://tva1.sinaimg.cn/large/e6c9d24egy1h1ojjoacdcj213z0jv77d.jpg 图 3.2 创建并查看分布式卷
2. 条带卷(Stripe Volume)

简介:
在该模式下,根据偏移量将文件分成                                    N                              N                  N 块(                                 N                              N                  N个条带节点),轮询地存储在每个Brick Server节点。节点把每个数据块都作为普通文件存入当地文件系统,通过扩展属性记录总块数和每块的序号。在设置时指定条带数必须等于卷中Brick所包含的存储服务器数,在存储大文件时,性能尤为突出,但是不具备冗余性。
创建和利用:
在执行创建和利用条带卷的指令时,发现gluster报错“stripe option not supported”,如图3.3所示。在网上查阅资料后发现,由于条带卷的缺点太过于严重,现在已经不支持了。
https://tva1.sinaimg.cn/large/e6c9d24egy1h1ojyace1pj20gv0310sy.jpg 图 3.3 创建条带卷时报错
3. 复制卷(Replica Volume)

简介:
在该模式下,同一文件保存一份或多份副本,每个节点上保存相同的内容和目次布局。因为要保存副本,以是磁盘利用率较低,如果多个节点上的存储空间不一致,那么将按照木桶效应取最低节点的容量作为该卷的总容量。复制卷具有冗余性,即使一个节点损坏,也不影响数据的正常利用。
创建和利用:
我们在实验1中所创建的卷即为复制卷,从图1.7中可以看到两个服务节点中存储的都是相同的内容。
4. 纠错卷(Dispersed Volume)

简介:
纠错卷是基于纠错码的一种新范例卷(3.6版本正式发布该特性),类似于RAID5/6。通过设置冗余级别提高可靠性,在包管较高的可靠性同时,可以提升物理存储空间的利用率。
创建和利用:
在执行创建和利用条带卷的指令时,发现gluster报错“disperse count must be greater than 2”,如图3.4所示,也就是集群必须有凌驾2个节点,因此本次实验就不测试了,希望在以后有机会的时间能够举行测试。
https://tva1.sinaimg.cn/large/e6c9d24egy1h1oka0g50lj20gr037mxf.jpg 图 3.3 创建纠错卷时报错
5. 复合卷(Dispersed Volume)

简介:
包括分布式条带卷、分布式复制卷、条带复制卷、分布式条带复制卷等,都肴杂了上述各种基础卷的优点。
创建和利用:
因为符合卷要求集群节点数目必须凌驾4个、甚至8个,因此本次实验就不测试了,希望在以后有机会的时间能够举行测试
如何联合 GlusterFS 七种卷的特性,为 ownCloud 用户存储的文档提供高可靠和高可用的服务?

GlusterFS 支持七种卷,即分布式卷、条带卷、复制卷、分布式条带卷、分布式复制卷、 条带复制卷和分布式条带复制卷。


[*]分布式卷:文件通过HASH算法分布到所有Brick Server上,扩大了磁盘空间,更容易且便宜地扩展卷的巨细,但不具备容错能力;
[*]条带卷:数据被分割成更小块分布到块服务器群中的不同条带区,分布减少了负载且更小的文件加速了存取的速度,但没有数据冗余性;
[*]复制卷:卷中所有的服务器均保存一个完备的副本,卷的副本数目可由客户创建的时间决定,具备冗余性;
[*]分布式条带卷:兼顾分布式卷和条带卷的功能,主要用于大文件访问处理;
[*]分布式复制卷:兼顾分布式卷和复制卷的功能,主要用于需要冗余的环境下;
我们可以看到,这七种卷可以满意不同应用对高性能、高可用的需求。因此,要为 ownCloud 用户存储的文档提供高可靠和高可用的服务,我们必须要确定用户的需求,公道地为用户创建符合需求的卷。
总结

通过本次GlusterFS & ownCloud项目实践,我对云存储关键技能有了更深入的认识。特殊是通过自己亲主动手搭建,我对GlusterFS这样的分布式文件系统的工作原理、操作步骤有了很清晰的认识。
我以为本次GlusterFS & ownCloud项目实践黑白常有意义的。在一样平常的学习生活中,我们不免需要借助百度网盘等公共云盘服务,深受下载速度迟钝的困扰。而通过本次实践,我才发现其实创建自己的私人云盘只需要些许闲置的硬件和时间精力就可以完成了,极大地拓展了我的视野,相信在本次实践中学到的知识一定能在未来派上用场!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 【云存储】Go项目实践(Fedora、GlusterFS、ownCloud)