當前位置:
首頁 > 最新 > 如何構建一個安全的Glusterfs分散式文件系統集群?

如何構建一個安全的Glusterfs分散式文件系統集群?

一、前言

本文主要通過實驗方式展現對Glusterfs的一些配置與操作,僅供技術參考,不可作為生產上的指導。

本文不涉及Glusterfs的基本概念介紹,默認讀者已經對Glusterfs有所認知。

全文的實驗中,所有節點如果沒有關閉firewalld,就需要添加相應埠和服務的防火牆規則,本文基於所有節點firewalld關閉進行的。

在glusterfs中,對volume參數的修改,大多需要將volme umount,修改參數完畢後,再mount。

二、調優

紅帽 Gluster 存儲附帶兩個已調優的調優配置文件,可以根據預期的工作負載來應用它們;rhgs-random-io 適用於數量多、規模小的讀取和寫入,rhgs-sequential-io 則適用於大型文件傳輸。它們都基於 throughput-performance 配置文件。

參數調優針對的對象是glusterfs集群的節點。而非整個集群。

三、加密集群

glusterfs的加密,是給glusterfs集群節點之間通訊加密,以及客戶端到集群的機密通訊。

glusterfs集群之間加密通訊需要幾個文件(所有節點,包括glusterfs節點和client。這些證書通常由企業內部簽發):

/etc/ssl/glusterfs.pem

/etc/ssl/glusterfs.key

/etc/ssl/glusterfs.ca

/var/lib/glusterd/secure-access(手工創建,有這個文件後,glusterfs集群節點通過加密方式進行網路訪問)

在所有server節點和client節點下載key並touch文件(以一個server節點為例):

添加節點:

確認glusterd

增加serverd:

在兩個節點上各創建10G的thin pool:

在兩個節點的thin pool上創建2G的lv:

在兩個lv上創建文件系統:

在兩個節點創建文件系統的mount點:

在兩個節點創建brick:

創建volume:

啟動volume:

接下來,我們的vulume進行許可權限制,禁止客戶端通過NFS訪問它.

然後在客戶端通過nfs mount卷,報錯:

將限制取消:

可以mount成功:

接下來,對一個volume做安全限制。

在一個server節點:

允許所有server節點和client可以訪問存儲池:

再次查看volume的狀態,與之前進行對比:

重啟glusterfs所有相關服務。

接下來,對client進行配置

安裝fuse:

Client掛載成功:

四、管理快照

現有的實驗環境中:

查看已有volume的快照:

刪除tigers快照:

接下來,將剩下的elephants快照克隆成一個新的volume:

接下來,配置幾個和快照相關的參數。

snap-max-hard-limit:一個volume最大快照的數量

snap-max-soft-limit:快照數量超過這個以後舊的快照會自動刪除

配置自動激活新的快照:

在客戶端重新umount volume

為zoo volume啟用user-serviceable snapshots

在客戶端重新mount volume:

mount -a

接下來創建一個不帶時間戳的快照:

接下來,為snapshot配置計劃任務。

啟動shared storage

五、配置分層

在Red Hat Gluster Storage中,分層將經常訪問的數據放在更高的位置執行熱點層(如固態驅動器(SSD))和不活動的數據到性能較低的層冷層(如旋轉磁碟),沒有任何I / O中斷。當活動的水平數據被識別,分層使用重新平衡邏輯將活動和非活動數據重新定位到最多適當的存儲層。數據根據訪問頻率定義為熱或冷。當文件訪問增加時,數據被移動到熱層。相反,當文件訪問數據減少時,數據將重新定位到冷級。

分層架構

分層轉換器基於 DHT 和重新平衡邏輯,將一個卷分割為兩個子卷:hot 和 cold。hot 子卷被視為 cold 子卷的緩存。轉換器負責決定將哪一分層用於文件,以及何時在分層之間遷移文件。一個文件可以駐留於任一個卷,但一個文件不能分割到兩個子卷上。文件遷移按照以下條件發生:

熱度:文件被訪問的頻率。

容量:達到了 hot 子卷的容量(或水位)。

cluster.watermark-hi和cluster.watermark-hi是高水位和低水位。


數據移動框架是利用重新平衡邏輯的遷移邏輯一般化。用於遷移文件的觸發器由應用驅動。文件被升級或降級到適當的分層。可以配置文件的升級和降級檢查頻率,以適合具體的 glusterfs 架構。

數據移動觸發器

數據移動觸發器是觸發文件從源存儲單元到目標存儲單元的機制。源存儲單元 (SSU) 和目標存儲單元 (DSU) 分別指定從中遷移出數據的 glusterfs brick/卷,以及遷移後數據所駐留的 glusterfs brick/卷。數據移動觸發器將創建數據移動請求 (DMR),該請求將提交至數據移動服務 (DMS)。觸發器有兩個,即 I/O Path Trigger和 Scanning Trigger。

I/O Path Trigger

當文件符合指定的數據移動規則時,此觸發器將啟動。

Scanner Trigger

根據指定的移動規則,Scanner Trigger 遍歷指定的源單元並選擇對象/文件。在選擇對象/文件後,向數據移動服務提交數據移動請求。

數據移動服務 (DMS)

數據移動服務負責數據的實際移動。此服務接收由數據移動觸發器提交的數據移動請求。數據移動請求指定用於處理該請求的適當插件。

查看一個已有的volume:

接下來,給volume增加hot tier:

gluster volume tier prod-vol attach replica 2 serverc:/bricks/brick-c2/brick serverd:/bricks/brick-d2/brick

確認volume的狀態:

查看tier的狀態:

接下來,我們給另外一個volume刪除tier。

刪除brick-c5和brick-d5的tier(不能只刪除部分tier,只能先刪除刪除所有的4個,再添加回不需要刪除的兩個):

將需要的兩個brick tier加回來:

六、配置ACLs和配額

本實驗中,對graphics volume設置配額。

查看volume:

在graphics volume hard-limit 針對/raw 1 GiB, soft limit設置為50%.

接下來,把volume的硬超時設置為5s,軟超時為1s:

下面命令含義是讓df查看目錄的時候,顯示的剩餘空間是配額空間,而不是物理剩餘空間。

客戶端重新掛載volume:

嘗試寫入大於1G文件:

當文件大於1G的時候,就會提示超出限額。

接下來,配置ACLs。

客戶端的fstab配置中設置acl:

在掛載的文件系統中創建目錄,並設置屬組:

讓目錄可以被屬組的成員有完全訪問的許可權:

屬組的成員對於新創建的文件也有完全訪問許可權:

directors組對現有文件和新創建文件有隻讀許可權:

配置volume的qouta:

七、配置異地複製

異地複製在兩個卷之間提供非同步的單向增量複製。這表示對主卷進行的更改將同步到從卷,但這種同步不是即刻執行的。通過運行修改版本的rsync(稱為gsyncd),在主卷和從卷之間使用 SSH 連接。

異地複製可以在同一主機上的卷之間配置,也可以在本地卷和遠程主機上的卷之間配置。這一遠程主機可以使用同一數據中心的 LAN、WAN 或者互聯網進行連接。

異地複製和複製卷並不相同。複製卷鏡像同一受信存儲池中 brick 之間的數據,而異地複製則鏡像(地理上分散的)受信存儲池之間的數據。複製卷用於實現高可用性,而異地複製則用於備份和災難恢復。還有一個區別,複製卷是同步的,任何更改都會立即寫入所有 brick;而異地複製是非同步的,更改會以某種間隔批量同步。

異地複製還能以級聯的方式配置。單個主卷可以同步到多個從卷,這些從卷又可以各自同步到一個或多個從卷。這可用於實現數據同步到全球各地多個數據中心的設置。

本是實驗中,serverc和serverd是一個glusterfs集群:

servere是另外一個glusterfs集群

兩個集群之間做volume的異地複製。datavol到backupvol。

NFS Ganesha和異地等功能要求共享存儲在群集的所有節點上都可用。這種情況下需要對volume啟用gluster_shared_storage的gluster參數。

接下來,創建用於非同步複製的用戶:geouser

先創建ssh key:

在servere,創建一個名為/ var / mountbroker-root的新目錄。 這個目錄

必須使用許可權0711創建,並且具有與/ home相同的SELinux上下文。 這個

目錄將用於在異地過程中處理(無特權)的掛載。

將mountbroker-root目錄設置成/var/mountbroker-root.

Set the mountbroker user for the backupvol volume to geouser.

Set the geo-replication-log-group group to geogroup.

允許RPC連接:

重啟服務:

為異地複製的進程創建ssh key

On serverc, create and push the SSH keys that will be used for georeplication.

On servere, copy the keys pushed in the previous step to the correct locations

配置兩個卷之間的複製關係:

啟動異地卷複製:

查看異地複製的進度:

查看backupvol的bricks:

到對應的bricks中,可以看到拷貝過來的文件:

影響異地複製的選項也可以直接在主卷上設置。changelog.rollover-time決定更改日誌檢查更改的頻率與主volume同步。此設置的默認值為15秒。

我們將它改成5s:

ignore-deletes參數默認為false。

如果設置為true,那麼在主volume上刪除文件,複製卷上的文件不會被刪除。

魏新宇

"大魏分享"運營者、紅帽資深解決方案架構師

專註開源雲計算、容器及自動化運維在金融行業的推廣

擁有MBA、ITIL V3、Cobit5、C-STAR、TOGAF9.1(鑒定級)等管理認證。

擁有紅帽RHCE/RHCA、VMware VCP-DCV、VCP-DT、VCP-Network、VCP-Cloud、AIX、HPUX等技術認證。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 大魏分享 的精彩文章:

Ansible Tower的容量規劃與高可用設計
Ansible Tower的安裝與基本功能測試

TAG:大魏分享 |