1. <th id="orwrz"></th>
        <tbody id="orwrz"><pre id="orwrz"></pre></tbody>
      2. <rp id="orwrz"><object id="orwrz"></object></rp>
        首頁 運維干貨分布式存儲之GlusterFS

        分布式存儲之GlusterFS

        運維派隸屬馬哥教育旗下專業運維社區,是國內成立最早的IT運維技術社區,歡迎關注公眾號:yunweipai
        領取學習更多免費Linux云計算、Python、Docker、K8s教程關注公眾號:馬哥linux運維

        1.glusterfs概述

        GlusterFS系統是一個可擴展的網絡文件系統,相比其他分布式文件系統,GlusterFS具有高擴展性、高可用性、高性能、可橫向擴展等特點,并且其沒有元數據服務器的設計,讓整個服務沒有單點故障的隱患。

        分布式存儲之GlusterFS插圖

        當客戶端訪問GlusterFS存儲時,首先程序通過訪問掛載點的形式讀寫數據,對于用戶和程序而言,集群文件系統是透明的,用戶和程序根本感覺不到文件系統是本地還是在遠程服務器上。讀寫操作將會被交給VFS(Virtual File System)來處理,VFS會將請求交給FUSE內核模塊,而FUSE又會通過設備/dev/fuse將數據交給GlusterFS Client。最后經過GlusterFS Client的計算,并最終經過網絡將請求或數據發送到GlusterFS Server上。

        2.glusterfs常用分布式簡介

        分布式存儲之GlusterFS插圖1

        分布式卷也成為哈希卷,多個文件以文件為單位在多個brick上,使用哈希算法隨機存儲。

        應用場景:大量小文件

        優點:讀/寫性能好

        缺點:如果存儲或服務器故障,該brick上的數據將丟失

        不指定卷類型,默認是分布式卷

        brick數量沒有限制

        創建分布式卷命令:

        gluster volume create volume_name node1:/data/br1 node2:/data/br1

        分布式存儲之GlusterFS插圖2

        復制卷是將多個文件在多個brick上復制多份,brick的數目要與需要復制的份數相等,建議brick分布在不同的服務器上。

        應用場景:對可靠性高和讀寫性能要求高的場景

        優點:讀寫性能好

        缺點:寫性能差

        replica = brick

        創建復制卷:

        gluster volume create volume_name replica 2 node1:/data/br1 node2:/data/br1

        replica:文件保存的份數

        分布式存儲之GlusterFS插圖3

        條帶卷是將文件分成條帶,存放在多個brick上,默認條帶大小128k

        應用場景:大文件

        優點:適用于大文件存儲

        缺點:可靠性低,brick故障會導致數據全部丟失

        stripe = birck

        創建條帶卷:

        gluster volume create volume_name stripe 2 node1:/data/br1 node2:/data/br1

        stripe:條帶個數

        分布式條帶卷是將多個文件在多個節點哈希存儲,每個文件再多分條帶在多個brick上存儲

        應用場景:讀/寫性能高的大量大文件場景

        優點:高并發支持

        缺點:沒有冗余,可靠性差

        brick數是stripe的倍數

        創建分布式條帶卷:

        gluster volume create volume_name stripe 2 node1:/data/br1 node2:/data/br1 node3:/data/br1 node4:/data/br1

        分布式存儲之GlusterFS插圖4

        分布式復制卷是將多個文件在多個節點上哈希存儲,在多個brick復制多份存儲。

        應用場景:大量文件讀和可靠性要求高的場景

        優點:高可靠,讀性能高

        缺點:犧牲存儲空間,寫性能差

        brick數量是replica的倍數

        gluster volume create volume_name replica 2 node1:/data/br1 node2:/data/br1 node3:/data/br1 node4:/data/br1

        分布式存儲之GlusterFS插圖5

        條帶式復制卷是將一個大文件存儲的時候劃分條帶,并且保存多份

        應用場景:超大文件,并且對可靠性要求高

        優點:大文件存儲,可靠性高

        缺點:犧牲空間寫性能差

        brick數量是stripe、replica的乘積

        gluster volume create volume_name stripe 2 replica 2 node1:/data/br1 node2:/data/br1 node3:/data/br1 node4:/data/br1

        3.glusterfs環境

        分布式存儲之GlusterFS插圖6

        日志存儲集群采用的是分布式復制卷,將多個文件在多個節點上哈希存儲,在多個brick復制多份存儲。共有五臺服務器,磁盤空間共有90T,那么采用這種分布式復制卷的方式,只有45T磁盤空間可用。并且需要采用分布式復制卷方式需要要有雙數的brick,所以現采用一臺服務器上創建兩個brick,如上圖所示,10.102.23.4:/data_01/node和10.102.23.44:/data_01/node是備份關系,其他節點均是如此,10.102.23.44作為日志存儲集群的管理節點,nfs-ganesha服務只需要安裝在控制節點,客戶端則可以通過nfs方式掛載。

        # sed -i 's#SELINUX=enforcing#SELINUX=disabled#' /etc/sysconfig/selinux #關閉selinux
        
        # iptables -F #清除防火墻規則
        

        安裝glusterfs(01-05)

        分布式存儲之GlusterFS插圖7

        # yum install userspace-rcu-*
        
        # yum install python2-gluster-3.13.2-2.el7.x86_64.rpm
        
        # yum install tcmu-runner-* libtcmu-*
        
        # yum install gluster*
        
        # yum install nfs-ganesha-*
        
        #這個nfs只要需要對外掛載的哪臺服務器需要安裝(10.102.23.44)
        
        # systemctl start glusterd.service #所有服務器啟動glusterd
        
        # systemctl start rpcbind
        
        # systemctl enable glusterd.service
        
        # systemctl enable rpcbind
        
        # ss -lnt #查詢端口是否有為24007,如果有則服務正常運行
        

        創建集群(在10.102.23.44節點上執行一下操作,向集群中添加節點):

        [root@admin-node ~]# gluster peer probe 10.102.23.44
        
        peer probe: success. [root@admin-node ~]# gluster peer probe 10.102.23.45
        
        peer probe: success.
        
        [root@admin-node ~]# gluster peer probe 10.102.23.46
        
        peer probe: success.
        
        [root@admin-node ~]# gluster peer probe 10.102.23.47
        
        peer probe: success.
        
        [root@admin-node ~]# gluster peer probe 10.102.23.4
        
        peer probe: success.
        

        查看虛擬機信任狀態添加結果

        [root@admin-node ~]# gluster peer status
        
        Number of Peers: 4
        
        Hostname: 10.102.23.46
        
        Uuid: 31b5ecd4-c49c-4fa7-8757-c01604ffcc7e
        
        State: Peer in Cluster (Connected)
        
        
        
        Hostname: 10.102.23.47
        
        Uuid: 38a7fda9-ad4a-441a-b28f-a396b09606af
        
        State: Peer in Cluster (Connected)
        
        
        
        Hostname: 10.102.23.45
        
        Uuid: 9e3cfb56-1ed4-4daf-9d20-ad4bf2cefb37
        
        State: Peer in Cluster (Connected)
        
        
        
        Hostname: 10.102.23.4
        
        Uuid: 1836ae9a-eca5-444f-bb9c-20f032247bcb
        
        State: Peer in Cluster (Connected)
        

        在所有節點進行以下磁盤操作:

        [root@admin-node ~]# fdisk /dev/sdb
        

        創建卷組:

        [root@admin-node ~]# vgcreate vg_data01 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1 /dev/sdf1
        
        [root@admin-node ~]# vgcreate vg_data02 /dev/sdg1 /dev/sdh1 /dev/sdi1 /dev/sdj1 /dev/sdk1
        

        查看卷組:

        [root@admin-node ~]# vgdisplay
        

        創建邏輯卷:

        [root@admin-node ~]# lvcreate -n lv_data01 -L 9TB vg_data01
        
        [root@admin-node ~]# lvcreate -n lv_data02 -L 9TB vg_data02
        

        查看邏輯卷:

        [root@admin-node ~]# lvdisplay
        

        格式化邏輯卷:

        [root@admin-node ~]# mkfs.xfs /dev/vg_data01/lv_data01
        
        [root@admin-node ~]# mkfs.xfs /dev/vg_data02/lv_data02
        

        掛載邏輯卷:

        [root@admin-node ~]# mkdir -p /data_01/node /data_02/node
        
        [root@admin-node ~]# vim /etc/fstab
        
        /dev/vg_data01/lv_data01 /data_01 xfs defaults 0 0
        
        /dev/vg_data02/lv_data02 /data_02 xfs defaults 0 0
        
        [root@admin-node ~]# mount /data_01
        
        [root@admin-node ~]# mount /data_02
        

        分布式復制模式(組合型), 最少需要4臺服務器才能創建。

        創建卷:

        [root@admin-node ~]# gluster volume create data-volume replica 2   10.102.23.4:/data_01/node  10.102.23.44:/data_01/node  10.102.23.44:/data_02/node 10.102.23.45:/data_02/node  10.102.23.45:/data_01/node  10.102.23.4:/data_02/node 10.102.23.46:/data_01/node  10.102.23.47:/data_01/node  10.102.23.46:/data_02/node  10.102.23.47:/data_02/node force
        

        啟動創建的卷:

        [root@admin-node ~]# gluster volume start data-volume
        

        volume start: data-volume: success所有機器都可以查看:

        [root@admin-node ~]# gluster volume info
        

        分布式存儲之GlusterFS插圖8

        查看分布式卷的狀態:

        [root@admin-node ~]# gluster volume status
        

        分布式存儲之GlusterFS插圖9

        基于以上glusterfs部署,glusterfs分布式復制卷已經完成

        4.nfs-ganesha環境搭建

        glusterfs服務本身也是支持nfs掛載,由于現有生產環境存在多個網段,并且有些網段與glusterfs存儲服務器網段是不通,所以需要通過nginx代理nfs來實現nfs掛載。Glusterfs服務只是支持nfs3版本的掛載,在通過nginx代理方面也不是那么方便,端口繁多,所以glusterfs與NFSs-Ganesha是完美組合。 NFSs-Ganesha 通過FSAL(文件系統抽象層)將一個后端存儲抽象成一個統一的API,提供給Ganesha服務端,然后通過NFS協議將其掛載到客戶端。在客戶端上對掛出來的空間進行操作。并且NFSs-Ganesha 可以指定nfs的版本。

        在管理節點10.102.23.44上安裝nfs-ganesha,在一開始部署glusterfs已在管理節點上安裝,這里就不重復說明了,直接簡要說明配置文件

        [root@admin-node ~]# vim /etc/ganesha/ganesha.conf
        
        .....................................
        
        EXPORT
        
        {
        
        ## Export Id (mandatory, each EXPORT must have a unique Export_Id)
        
        #Export_Id = 12345;
        
        Export_Id = 10;
        
        
        
        ## Exported path (mandatory)
        
        #Path = /nonexistant;
        
        Path = /data01;
        
        
        
        ## Pseudo Path (required for NFSv4 or if mount_path_pseudo = true)
        
        #Pseudo = /nonexistant;
        
        Pseudo = /data01; #客戶端通過nfs掛載的根目錄
        
        
        
        ## Restrict the protocols that may use this export. This cannot allow
        
        ## access that is denied in NFS_CORE_PARAM.
        
        #Protocols = 3,4;
        
        Protocols = 4; #客戶端nfs掛載的版本
        
        
        
        ## Access type for clients. Default is None, so some access must be
        
        ## given. It can be here, in the EXPORT_DEFAULTS, or in a CLIENT block
        
        #Access_Type = RW;
        
        Access_Type = RW; #權限問題
        
        
        
        ## Whether to squash various users.
        
        #Squash = root_squash;
        
        Squash = No_root_squash; #root降級
        
        
        
        ## Allowed security types for this export
        
        #Sectype = sys,krb5,krb5i,krb5p;
        
        Sectype = sys; #類型
        
        
        
        ## Exporting FSAL
        
        #FSAL {
        
        #Name = VFS;
        
        #}
        
        FSAL {
        
        Name = GLUSTER;
        
        hostname = "10.102.23.44"; #glusterfs管理節點IP
        
        volume = "data-volume"; #glusterfs卷名
        
        }
        
        }
        
        ...................
        
        [root@admin-node ~]# systemctl restart nfs-ganesha
        
        [root@admin-node ~]# systemctl enable nfs-ganesha
        
        [root@admin-node ~]# showmount -e 10.102.23.44
        
        Export list for 10.102.23.44: #nfs-ganesha搭建成功
        
        

        5.客戶端掛載

        以glusterfs方式掛載:

        [root@admin-node ~]# mkdir /logs
        
        [root@admin-node ~]# mount -t glusterfs 10.102.23.44:data-volume /logs/
        

        分布式存儲之GlusterFS插圖10

        以NFS方式進行掛載:

        在客戶端(10.1.99段):

        [root@moban-00 ~]#yum -y install nfs-utils rpcbind
        
        [root@moban-00 ~]# systemctl start rpcbind
        
        [root@moban-00 ~]# systemctl enable rpcbind
        
        [root@moban-00 ~]# mkdir /home/dwweiyinwen/logs/
        
        [root@moban-00 ~]# mount -t nfs -o vers=4,proto=tcp,port=2049 10.102.23.44:/data01 /home/dwweiyinwen/logs/
        

        分布式存儲之GlusterFS插圖11

        本文鏈接:http://www.abandonstatusquo.com/39365.html

        網友評論comments

        發表評論

        您的電子郵箱地址不會被公開。

        暫無評論

        Copyright ? 2012-2022 YUNWEIPAI.COM - 運維派 京ICP備16064699號-6
        掃二維碼
        掃二維碼
        返回頂部
        十分钟免费观看视频高清下载