文章目录
前言
一:理论概述
1.1:Glusterfs 简介
- Glusterfs 文件系统是由 Gluster 公司的创始人兼首席技术官 Anand Babu Periasamy编写。 一个可扩展的分布式文件系统, 用于大型的、 分布式的、 对大量数据进行访问的应用。
- 它运行于廉价的普通硬件上, 并提供容错功能。 它可以给大量的用户提供总体性能较高的服务。
- Glusterfs 可以根据存储需求快速调配存储, 内含丰富的自动故障转移功能, 且摒弃集中元数据服务器的思想。
- 适用于数据密集型任务的可扩展网络文件系统, 免费开源。
- Gluster于 2011 年 10 月 7 日被 red hat 收购。
1.2:Glusterfs 特点
- Glusterfs 体系结构, 将计算、 存储和 I/O 资源聚合到全局名称空间中, 每台服务器都被视为节点, 通过添加附加节点或向每个节点添加额外存储来扩展容量。 通过在更多节点之间部署存储来提高性能。
- Glusterfs 支持基于文件的镜像和复制、 分条、 负载平衡、 故障转移、 调度、 磁盘缓存、存储配额、 卷快照等。
- Glusterfs 各客户端之间无连接, 本身依赖于弹性哈希算法, 而不是使用集中式或分布式元数据模型。
- Glusterfs 通过各种复制选项提供数据可靠性和可用性: 复制卷、 分布卷。
二:KVM高可用构建实操
2.1:环境
-
VMware软件
-
操作系统 主机名/IP地址 主要软件及版本 Centos7.6 node1/192.168.233.131 Glusterfs5 Centos7.6 node2/192.168.233.132 Glusterfs5 Centos7.6 node3192.168.233.133 Glusterfs5 Centos7.6 node4/192.168.233.128 Glusterfs5 Centos7.6 kvm(宿主机)/192.168.233.136 kvm\gluster-client() Centos7.6 kvm(虚拟机)/192.168.233.100
2.2:实验目的
- 使用 KVM 及 Glusterfs 技术, 结合起来从而达到 kvm 高可用。
- 利用 Glusterfs 的分布式复制卷, 对 kvm 虚拟机文件进行分布存储和冗余功能。 分布式复制卷主要用于需要冗余的情况下把一个文件存放在两个或以上的节点上,当其中一个节点数据丢失或者损坏之后, kvm 仍然能够通过卷组找到另一节点上的虚拟机文件, 保证虚拟机正常运行。 当节点修复之后, Glusterfs 会自动同步同一组里面有数据的节点数据。
2.3:实验过程
2.3.1:构建GFS集群
- 之前已经搭建过,参考之前的博客
- https://blog.csdn.net/CN_TangZheng/article/details/104367363
2.3.2:安装KVM虚拟机
- 之前已经搭建过,参考之前的博客
- https://blog.csdn.net/CN_TangZheng/article/details/104349282
2.3.3:GFS集群节点服务器添加磁盘
-
四个node节点都添加磁盘,大小为20G,
-
格式化磁盘并挂载到/data目录
'//因为是继承上一个试验环境,所以新添加的磁盘,node1和node2为/dev/sdf,node3和node4为/dev/sde,我们需要分别进行格式化,在此仅展示/dev/sdf的格式化操作' [root@node1 ~]# fdisk /dev/sdf '//创建分区' n '//创建分区' p '//创建主分区' 回车 '//默认主分区1' 回车 '//默认块大小' 回车 '//默认主分区大小' w '//保存分区信息' [root@node1 ~]# mkfs -t ext4 /dev/sdf1 '//格式化分区' [root@node1 ~]# mkdir /data '//创建挂载点' [root@node1 ~]# vim /etc/fstab '//设置自动挂载' '//尾行插入' /dev/sdf1 /data ext4 defaults 0 0 [root@node1 ~]# reboot [root@node1 ~]# df -hT '//查看是否挂载成功'
-
创建分布式复制卷
[root@node1 ~]# gluster volume create kvmdata replica 2 node1:/data node2:/data node3:/data node4:/data force '//创建名为kvmdata的分布式复制卷' [root@node1 ~]# gluster volume start kvmdata '//启动kvmdata卷' [root@node1 ~]# gluster volume info kvmdata '//查看kvmdata卷'
2.3.4:KVM宿主机部署成GFS客户端
-
修改主机名,并安装GFS软件
[root@localhost ~]# hostnamectl set-hostname kvm '//修改主机名' [root@localhost ~]# su [root@kvm ~]# cd /opt [root@kvm opt]#
将gfsrepo 软件上传到/opt目下
[root@kvm opt]# vim /etc/yum.repos.d/abc.repo '//编辑本地yum源仓库' [abc] name=test baseurl=file:///mnt enabled=1 gpgcheck=0 [GLFS] name=glfs baseurl=file:///opt/gfsrepo gpgcheck=0 enabled=1 [root@kvm opt]# yum clean all [root@kvm opt]# yum makecache [root@kvm opt]# yum -y install glusterfs glusterfs-fuse '//安装gfs软件'
-
修改本地域名解析文件
[root@kvm opt]# vim /etc/hosts '//尾行添加' 192.168.233.131 node1 192.168.233.132 node2 192.168.233.133 node3 192.168.233.128 node4
-
永久挂载GFS文件系统
[root@kvm opt]# mkdir /kvmdata [root@kvm opt]# vim /etc/fstab '//尾行添加' node1:kvmdata /kvmdata glusterfs defaults,_netdev 0 0
-
重启并查看是否挂载成功
[root@kvm opt]# reboot [root@kvm ~]# df -hT 。。。省略内容 node1:kvmdata fuse.glusterfs 40G 489M 38G 2% /kvmdata '//挂载成功,因为是分布式复制卷,所以原本的20G大小变为了40G' 。。。省略内容
2.4:重新安装一个KVM虚拟机
-
查看之前的博客,里面有详细操作步骤
-
其中有如下几个步骤变化
-
创建kvm虚拟机要用的文件夹的变化
[root@kvm ~]# mkdir /kvmdata/iso '//上传镜像用' [root@kvm ~]# mkdir /kvmdata/store '//kvm虚拟机存储用' [root@kvm ~]# cd /data_kvm/iso [root@kvm iso]# cp CentOS-7-x86_64-DVD-1810.iso /kvmdata/iso/ '//复制镜像到/kvmdata/iso中'
-
创建存储池的时候选择上方的 /kvmdata/iso 和 /kvmdata/store ,如下图
-
接下来的步骤相同,直接创建虚拟机即可
三:高可用测试
3.1:验证存储
-
在四台节点上查看目录里是否存在虚拟机文件。可以看出虚拟机文件已经存放在第二组node3,node4里
-
[root@node1 ~]# ll /data/store/ 总用量 0 [root@node2 ~]# ll /data/store/ 总用量 0 [root@node3 ~]# ll /data/store/ 总用量 10487624 -rw------- 2 qemu qemu 10739318784 2月 18 20:41 kvmdata-store.qcow2 [root@node4 ~]# ll /data/store/ 总用量 10487624 -rw------- 2 qemu qemu 10739318784 2月 18 20:41 kvmdata-store.qcow2 '//镜像文件存放在第一组' [root@node1 ~]# ll /data/iso/ 总用量 4481032 -rwxr-xr-x 2 qemu qemu 4588568576 2月 18 20:19 CentOS-7-x86_64-DVD-1810.iso [root@node2 ~]# ll /data/iso/ 总用量 4481032 -rwxr-xr-x 2 qemu qemu 4588568576 2月 18 20:19 CentOS-7-x86_64-DVD-1810.iso [root@node3 ~]# ll /data/iso/ 总用量 0 [root@node4 ~]# ll /data/iso/ 总用量 0 '//分布式复制卷存储成功'
3.2:破坏实验
- 关闭node3,我们重启发现kvm虚拟机工作正常
- 关闭node4,我们重启kvm虚拟机,发现无法进行操作,所有命令都识别不了