• <dd id="hdgin"><track id="hdgin"></track></dd>
  • <em id="hdgin"><tr id="hdgin"></tr></em>
  • <th id="hdgin"><track id="hdgin"><noframes id="hdgin"></noframes></track></th>
        <rp id="hdgin"><ruby id="hdgin"></ruby></rp>

        <legend id="hdgin"><noscript id="hdgin"><video id="hdgin"></video></noscript></legend>
          <dd id="hdgin"><track id="hdgin"></track></dd>
            首頁 運維干貨分布式存儲之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://m.abandonstatusquo.com/39365.html

            網友評論comments

            發表評論

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

            暫無評論

            Copyright ? 2012-2022 YUNWEIPAI.COM - 運維派 京ICP備16064699號-6
            掃二維碼
            掃二維碼
            返回頂部
            久久久久亚洲国内精品|亚洲一区二区在线观看综合无码|欧洲一区无码精品色|97伊人久久超碰|一级a爱片国产亚洲精品