KVM+GFS分佈式文件系統高可用羣集

GlusterFS概述

GFS是一個可擴展的分佈式文件系統,用於大型的、分佈式的、對大量數據進行訪問的應用。它運行於廉價的普通硬件上,並提供容錯功能。它能夠給大量的用戶提供整體性能較高的服務。
開源的分佈式文件系統;
由存儲服務器、客戶端以及 NFS/Samba 存儲網關組成;node

GlusterFS 特色:

擴展性和高性能;
高可用性;
全局統一命名空間;
彈性卷管理;
基於標準協議

模塊化堆棧架構

模塊化,堆棧式的結構
經過對模塊的組合,實現複雜的功能

KVM+GFS分佈式文件系統高可用羣集

GlusterFS工做原理(流程)

KVM+GFS分佈式文件系統高可用羣集

彈性 HASH 算法:

經過 HASH 算法獲得一個32位的整數;
劃分爲 N 個鏈接的子空間,每一個空間對應一個 Brick;

彈性 HASH 算法的優勢:

保證數據平均分佈在每個 Brick 中;
解決了對元數據服務器的依賴,進而解決了單點故障以及訪問瓶頸。

GlusterFS 的卷類型:

(1)分佈式卷:

沒有對文件進行分塊處理;
經過擴展文件屬性保存 HASH值;
支持的底層文件系統有 ext3 、ext4 、ZFS 、XFS等

特色:

文件分佈在不一樣的服務器,不具有冗餘性;
更容易和廉價地擴展卷的大小;
單點故障會形成數據丟失;
依賴底層的數據保護。

(2)條帶卷:

根據偏移量將文件分爲 N 塊(N個條帶節點),輪詢的存儲在每一個 Brick Server 節點;
存儲大文件時,性能尤其突出;
不具有冗餘性,相似 raid0

特色:

數據被分割成更小塊分佈到塊服務器羣中的不一樣條帶區;
分佈減小了負載且更小的文件加速了存取的速度;
沒有數據冗餘

(3)複製卷:

同一個文件保存一份或多分副本;
複製模式由於要保存副本,因此磁盤利用率較低;
多個節點上的存儲空間不一致,那麼將安裝木桶效應取最低節點的容量做爲該卷的總容量

特色:

卷中全部的服務器均保存一個完整的副本;
卷的副本數量可由客戶建立的時候決定;
至少由兩個塊服務器或更多服務器;
具有容災性。

(4)分佈式條帶卷:

兼顧分佈式和條帶卷的功能;
主要用於大文件訪問處理;
至少最少須要 4 臺服務器。

(5)分佈式複製卷:

兼顧分佈式卷和複製卷的功能;
用於須要冗餘的狀況下

原理:

KVM+GFS分佈式文件系統高可用羣集

實驗環境

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+GFS分佈式文件系統高可用羣集

kvm虛擬機上開啓虛擬化功能

KVM+GFS分佈式文件系統高可用羣集

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

KVM+GFS分佈式文件系統高可用羣集
KVM+GFS分佈式文件系統高可用羣集
KVM+GFS分佈式文件系統高可用羣集
KVM+GFS分佈式文件系統高可用羣集
KVM+GFS分佈式文件系統高可用羣集
KVM+GFS分佈式文件系統高可用羣集
KVM+GFS分佈式文件系統高可用羣集
KVM+GFS分佈式文件系統高可用羣集

7,查看node節點服務器磁盤上的信息

[root@node1 ~]# cd /data/sdb1/  ##分佈在各個node節點服務器上
[root@node1 sdb1]# ls
kgc_disk  kgc_iso

謝謝閱讀!

相關文章
相關標籤/搜索