KVM+GFS分布式文件系统高可用群集
GlusterFS概述
GFS是一个可扩展的分布式文件系统,用于大型的、分布式的、对大量数据进行访问的应用。它运行于廉价的普通硬件上,并提供容错功能。它可以给大量的用户提供总体性能较高的服务。
开源的分布式文件系统;
由存储服务器、客户端以及 NFS/Samba 存储网关组成;站在用户的角度思考问题,与客户深入沟通,找到扶绥网站设计与扶绥网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:网站建设、成都网站制作、企业官网、英文网站、手机端网站、网站推广、空间域名、网络空间、企业邮箱。业务覆盖扶绥地区。
GlusterFS 特点:
扩展性和高性能;
高可用性;
全局统一命名空间;
弹性卷管理;
基于标准协议
模块化堆栈架构
模块化,堆栈式的结构
通过对模块的组合,实现复杂的功能
GlusterFS工作原理(流程)
弹性 HASH 算法:
通过 HASH 算法得到一个32位的整数;
划分为 N 个连接的子空间,每个空间对应一个 Brick;
弹性 HASH 算法的优点:
保证数据平均分布在每一个 Brick 中;
解决了对元数据服务器的依赖,进而解决了单点故障以及访问瓶颈。
GlusterFS 的卷类型:
(1)分布式卷:
没有对文件进行分块处理;
通过扩展文件属性保存 HASH值;
支持的底层文件系统有 ext3 、ext4 、ZFS 、XFS等
特点:
文件分布在不同的服务器,不具备冗余性;
更容易和廉价地扩展卷的大小;
单点故障会造成数据丢失;
依赖底层的数据保护。
(2)条带卷:
根据偏移量将文件分为 N 块(N个条带节点),轮询的存储在每个 Brick Server 节点;
存储大文件时,性能尤为突出;
不具备冗余性,类似 raid0
特点:
数据被分割成更小块分布到块服务器群中的不同条带区;
分布减少了负载且更小的文件加速了存取的速度;
没有数据冗余
(3)复制卷:
同一个文件保存一份或多分副本;
复制模式因为要保存副本,所以磁盘利用率较低;
多个节点上的存储空间不一致,那么将安装木桶效应取最低节点的容量作为该卷的总容量
特点:
卷中所有的服务器均保存一个完整的副本;
卷的副本数量可由客户创建的时候决定;
至少由两个块服务器或更多服务器;
具备容灾性。
(4)分布式条带卷:
兼顾分布式和条带卷的功能;
主要用于大文件访问处理;
至少最少需要 4 台服务器。
(5)分布式复制卷:
兼顾分布式卷和复制卷的功能;
用于需要冗余的情况下
原理:
实验环境
node1 192.168.13.128
node2 192.168.13.129
node3 192.168.13.130
node4 192.168.13.131
kvm 192.168.13.133
node节点服务器添加一块硬盘
kvm虚拟机上开启虚拟化功能
1,分别在node节点服务器和kvm服务器上配置本地hosts文件,安装必要的gluster软件
[root@localhost ~]# hostnamectl set-hostname node1
[root@localhost ~]# su
[root@localhost ~]# hostnamectl set-hostname kvm
[root@node1 ~]# vim /etc/hosts ##修改本地解析文件
192.168.13.128 node1
192.168.13.129 node2
192.168.13.130 node3
192.168.13.131 node4
192.168.13.133 kvm
##所有服务器上关闭防火墙
[root@node1 ~]# systemctl stop firewalld.service ##关闭防火墙
[root@node1 ~]# setenforce 0
##分别复制配置文件到所有服务器上
[root@node1 ~]# scp /etc/hosts root@192.168.13.129:/etc/hosts
[root@node1 ~]# scp /etc/hosts root@192.168.13.130:/etc/hosts
[root@node1 ~]# scp /etc/hosts root@192.168.13.131:/etc/hosts
[root@node1 ~]# scp /etc/hosts root@192.168.13.133:/etc/hosts
##在所有node节点服务器上挂载,修改yum配置文件
[root@node1 ~]# mkdir /gfs
[root@node1 ~]# mount.cifs //192.168.100.3/LNMP-C7 /gfs/ ##挂载
[root@node1 ~]# cd /etc/yum.repo.d/
[root@node1 yum.repos.d]# mkdir bak ##创建备份目录
[root@node1 yum.repos.d]# mv CentOS-* bak/
[root@node1 yum.repos.d]# vim abc.repo ##所有node节点都需要配置yum源
[abc]
name=abc
baseurl=file:///gfs/gfsrepo ##挂载目录下的gfsrepo路径
gpgcheck=0
enabled=1
[root@node1 yum.repos.d]# yum clean all && yum makecache ##建立元数据缓存
[root@node1 yum.repos.d]# yum install -y glusterfs glusterfs-server gluster-fuse glusterfs-rdma
##安装必要的软件
[root@node1 yum.repos.d]# systemctl start glusterd ##开启gluster服务
[root@node1 yum.repos.d]# systemctl enable glusterd ##开机自启动
[root@node1 yum.repos.d]# ntpdate ntp1.aliyun.com ##同步时间
2,利用磁盘分区脚本进行分区挂载(所有node节点服务器)
[root@node1 yum.repos.d]# cd /opt/
[root@node1 opt]# vim disk.sh //挂载磁盘脚本,一键操作
#! /bin/bash
echo "the disks exist list:"
fdisk -l |grep '磁盘 /dev/sd[a-z]'
echo "=================================================="
PS3="chose which disk you want to create:"
select VAR in `ls /dev/sd*|grep -o 'sd[b-z]'|uniq` quit
do
case $VAR in
sda)
fdisk -l /dev/sda
break ;;
sd[b-z])
#create partitions
echo "n
p
w" | fdisk /dev/$VAR
#make filesystem
mkfs.xfs -i size=512 /dev/${VAR}"1" &> /dev/null
#mount the system
mkdir -p /data/${VAR}"1" &> /dev/null
echo -e "/dev/${VAR}"1" /data/${VAR}"1" xfs defaults 0 0\n" >> /etc/fstab
mount -a &> /dev/null
break ;;
quit)
break;;
*)
echo "wrong disk,please check again";;
esac
done
[root@node1 opt]# chmod +x fdisk.sh ##添加执行权限
[root@node1 opt]# ./fdisk.sh ##执行脚本
[root@node1 opt]# df -hT ##查看挂载信息
3,创建分布式复制卷
##添加存储信任池,只要在一台主机上添加其他三台节点即可
[root@node1 opt]# gluster peer probe node2
[root@node1 opt]# gluster peer probe node3
[root@node1 opt]# gluster peer probe node4
[root@node1 opt]# gluster volume create models replica 2 node1:/data/sdb1 node2:/data/sdb1 node3:/data/sdb1 node4:/data/sdb1 force
##创建分布式复制卷
gluster volume create dis-vol node1:/data/sdb1 node2:/data/sdb1 force
//创建分布式卷
gluster volume create stripe-vol stripe 2 node1:/data/sdc1 node2:/data/sdc1 force
//创建条带卷
gluster volume create rep-vol replica 2 node3:/data/sdb1 node4:/data/sdb1 force
//创建复制卷
gluster volume create dis-stripe stripe 2 node1:/data/sdd1 node2:/data/sdd1 node3:/data/sdd1 node4:/data/sdd1 force
//创建分布式条带卷
[root@node1 opt]# gluster volume start models ##启动分布式复制卷
4,在kvm服务器上挂载创建好的分布式复制卷
[root@kvm ~]# mkdir /abc
[root@kvm ~]# mount.cifs //192.168.100.3/iOS /abc/
[root@kvm ~]# cp /abc/CentOS-7-x86_64-DVD-1708.iso /opt/ &
##将centos7镜像复制到/opt/进行后台运行
[root@kvm ~]# cd /etc/yum.repo.d/
[root@kvm yum.repos.d]# mkdir bak ##创建备份目录
[root@kvm yum.repos.d]# mv CentOS-* bak/
[root@kvm yum.repos.d]# scp -r root@192.168.13.128:/gfs/gfsrepo /
##复制gfs源到根目录下
[root@kvm yum.repos.d]# vim abc.repo ##所有node节点都需要配置yum源
[abc]
name=abc
baseurl=file:///gfsrepo ##源文件的路径
gpgcheck=0
enabled=1
[root@kvm yum.repos.d]# umount /abc/ ##centos镜像复制完成后解挂载
[root@kvm yum.repos.d]# yum install -y glusterfs glusterfs-fuse ##安装必要的软件
[root@kvm yum.repos.d]# mv bak/* ./ ##释放原有的yum源
[root@kvm yum.repos.d]# rm -rf bak/
[root@kvm yum.repos.d]# yum list ##yum列表更新
[root@kvm yum.repos.d]# mkdir /kvmdata ##创建挂载点
[root@kvm yum.repos.d]# mount.glusterfs node1:models /kvmdata
##将分布式复制卷挂载到挂载点中
[root@kvm yum.repos.d]# df -hT ##可以看出原来一共是160G现在是80G
5,在kvm服务器上部署虚拟化平台
[root@kvm ~]# yum groupinstall "GNOME Desktop" -y ##桌面环境
yum install qemu-kvm -y ##kvm内核
yum install qemu-kvm-tools -y ##调试工具
yum install virt-install -y ##命令行工具
yum install qemu-img -y ##组件,创建磁盘,启动虚拟机
yum install bridge-utils -y ##网络支持工具
yum install libvirt -y ##虚拟机管理工具
yum install virt-manager -y ##图形化管理虚拟机
[root@kvm ~]# egrep '(vmx|svm)' /proc/cpuinfo ##看cpu是否支持
[root@kvm ~]# lsmod | grep kvm ##检查kvm是否安装
[root@kvm ~]# systemctl start libvirtd ##开启服务
[root@kvm ~]# systemctl status libvirtd
[root@kvm ~]# systemctl enable libvirtd ##开启自启
[root@kvm ~]# cd /etc/sysconfig/network-scripts/
[root@kvm network-scripts]# vim ifcfg-ens33
##末行添加
BRIDGE=br0
[root@kvm network-scripts]# cp -p ifcfg-ens33 ifcfg-br0 ##复制配置文件为桥接
[root@kvm network-scripts]# vim ifcfg-br0
TYPE=Bridge ##桥接模式
BOOTPROTO=static ##静态
NAME=br0 ##名字为br0
DEVICE=br0
IPADDR=192.168.13.133 ##ip地址
NETMASKE=255.255.255.0 ##子网掩码
GATEWAY=192.168.13.1 ##网关
[root@kvm network-scripts]# service network restart ##重启网卡
[root@kvm network-scripts]# cd /kvmdata/ ##切换到GFS挂载点
[root@kvm kvmdata]# mkdir kgc_disk kgc_iso ##创建文件系统目录及镜像目录
[root@kvm kvmdata]# cp /opt/CentOS-7-x86_64-DVD-1708.iso kgc_iso/ &
##将镜像文件复制到镜像目录中
6,用kvm的图形化界面进行操作
[root@kvm ~]# virt-manager
7,查看node节点服务器磁盘上的信息
[root@node1 ~]# cd /data/sdb1/ ##分布在各个node节点服务器上
[root@node1 sdb1]# ls
kgc_disk kgc_iso
谢谢阅读!
标题名称:KVM+GFS分布式文件系统高可用群集
网页网址:http://scpingwu.com/article/iejcgg.html