馬志鑫


摘要:針對分布式存儲技術在私有云平臺中的應用策略進行研究,旨在推動我國私有云平臺發展水平,在充分發揮分布式存儲技術優勢基礎上,為私有云平臺用戶提供更為強大的數據存儲服務。在對分布式存儲技術、私有云平臺概念加以分析后,探討私有云平臺中應用分部式存儲的意義,并分別針對基于vSAN、開源Kubernetes+Gluster的分布式存儲方案進行研究,且對兩種方案進行對比。期望此成果可為我國私有云平臺應用企業提供技術借鑒價值,為企業應用性能提升以及經濟效益的獲取起到推動作用。
關鍵詞:分布式存儲;私有云平臺;K8s;vSAN;Cluster
一、前言
云計算視角下,分布式存儲技術相比傳統存儲形式具有諸多顯著優勢。首先,分布式存儲具有較強的靈活性和可擴展性,能輕松調整存儲容量,按需分配且自由擴展,以有效滿足云計算應用企業不斷變化的業務需求。其次,分布式存儲形式有助于優化讀寫效能,通過在多個節點并行讀寫,可顯著提升系統的性能,并且相比傳統集中式存儲,分布式存儲更傾向于使用一般的標準硬件,在維護成本、擴容投資上都更具成本效益。因此,分布式存儲將是未來云平臺數據存儲的主要發展方向,亦是進一步推動云平臺服務效率提升的重點研究領域。
二、分布式存儲技術與私有云平臺概述
(一)分布式存儲技術
分布式存儲技術是通過網絡將數據分散存儲在不同的物理位置上的技術。相比傳統集中存儲,在數據分布方面,分布式存儲技術以“分而治之”思想,將大量數據劃分為若干小塊,并將這些數據塊分散存儲在不同服務器或存儲設備上。這一分散存儲方式,有利于通過并行化提高讀寫速度,并可有效地處理大規模數據。冗余備份方面,在分布式存儲系統中,為防止單點故障導致數據丟失,引入了數據備份機制,即在多個節點上保存數據的副本。當某一節點失敗時,可以通過其余節點上的副本恢復數據,從而確保數據的高可用性以及系統的容錯性。一致性機制下,因數據被分布存儲在多個節點上,分布式存儲系統會基于一致性算法,保證所有節點上的數據狀態一致,以實現整個系統的數據一致性。
(二)私有云平臺
私有云平臺是一種云計算部署模式,其核心理念是為企業、單個組織構建專有、專用云計算環境。作為一種虛擬化計算環境,私有云平臺旨在通過將硬件資源如存儲、網絡及計算資源虛擬化,提供按需分配的動態服務。
一方面,從資源管理層面分析,私有云平臺利用虛擬化技術,會將物理資源如服務器、存儲、網絡抽象化,形成一個資源池,用戶可以業務需要為依據按需請求使用,實現資源的最優化分配,該模式為企業計算環境的即時性、彈性提供了可能。另一方面,在安全與數據管理方面,私有云平臺所有計算資源都由企業自行開展管理與控制,私有云平臺則能夠提供高級別的數據安全和隱私保護。在數據處理、存儲和遷移過程中,企業可以自行設定、執行特有安全政策,有效避免數據被泄露、篡改與丟失等風險。
三、分布式存儲在私有云平臺中的應用意義
分布式存儲在私有云平臺中的應用,其意義可體現在服務高效性、存儲彈性與可擴展性、存儲可靠性與安全性三個維度。
首先,服務高效性視角下,分布式存儲支持對數據的并行處理,數據存取操作不會受制于單一存儲設備性能。例如,針對大規模數據的讀取,傳統單點存儲需要消耗大量時間成本。但是,分布式存儲可將這些數據分散于一個節點上,以并行讀取形式提高數據訪問速度。這一特性下,私有云平臺的一些海量數據操作,如大數據分析、深度學習等場景都能得到性能上的滿足。
其次,存儲彈性與可擴展性視角下,將分布式存儲應用于私有云平臺,能夠以業務需求為依據動態增加、減少存儲階段,靈活調整存儲空間大小,且上述操作無須停機,不會影響私有云平臺相關業務運行。例如,某企業數據量驟增背景下,私有云平臺可快速增加存儲資源應對數據變化,用戶無須關心物理存儲設備的容量。因此,私有云平臺中應用分布式存儲可良好應對數據處理的臨時高峰。
最后,存儲可靠性與安全性視角下,分布式存儲將數據分布于多個存儲節點,即便某一階段處于故障,其他節點依舊可基于副本提供服務,可大幅度提升業務連續性。同時,分布式存儲分散性的特征,也可確保數據不會被不法分子全盤盜取,數據安全性顯著提升[1]。
四、私有云平臺中分布式存儲的應用策略
(一)基于vSAN的私有云平臺分布式存儲
1.vSAN介紹
vSAN又稱虛擬存儲區域網絡,是VMware公司推出的一種分布式存儲架構。vSAN集成在VMware的vSphere中,形成了一個軟件定義的存儲解決方案,具有靈活性、可擴展性及性能出色的特點。該技術原理是利用直接連接到各服務器節點的本地存儲設備,如硬盤驅動器、固態硬盤等,形成分布式共享數據存儲層。這種架構可最大限度地利用存儲硬件性能,避免了傳統存儲網絡單點的瓶頸。
2.節點故障容錯設計
在利用vSAN部署私有云平臺分布式部署階段,為避免出現單節點故障造成風險,vSAN設計需重點考量故障域提出的要求,計算一個集群內vSAN的故障域數量(D),可參考式(1)。
D=2×N+1 (1)
式(1)中,N代表最多容忍vSAN節點故障的數量。vSAN部署期間,至少要設置三個故障域才可容忍集群內同時最多一個階段出現故障時,系統仍處于正常運行狀態。倘若希望集群內可同時容忍2個階段出現故障,則需要設置至少五個故障域[2]。
(二)基于開源系統的私有云平臺分布式存儲搭建
相比vSAN此類專屬于vSANMware的私有協議,目前還存在其他開源且被廣泛應用的分布式存儲技術,如HDFS-Hadoop分布式文件存儲、Ceph、Gluster、Kubernetes(K8s)容器集群管理系統等,不同技術有著各自的優勢。Kubernetes(K8s)作為開源容器集群管理系統,具備強大自動化功能,可實現自動化部署、擴容縮容、網絡設定,可大幅度降低運維難度。
1.面向K8s虛擬技術的私有云平臺
基于Kubernetes(K8s)技術實現私有云平臺的部署,主要目的在于充分運用其集群資源調度能力,以便在之后的步驟中將Gluster分布式存儲系統的資源有效利用至容器中。
關于Kubernetes(K8s)技術,其實是Google基于Borg系統研發的開源容器編排平臺,負責面向云平臺提供一個實現自動化部署、彈性擴縮和無縫更新機制。目前,K8s已廣泛應用于企業私有云平臺部署中,不僅提升了開發和運維效率,也提供了有效的資源管理和訪問控制,已成為業界主流的應用部署方式之一。
一方面,Kubernetes技術采用虛擬化技術,可以將一臺或多臺服務器硬件資源匯聚為一體,實現資源統一調度UI分配,避免資源閑置或資源不足現象,運行階段,K8s會將每個服務器虛擬化為一個“節點”,各節點可運行多個隔離環境的“容器”,容器內部則包含運行應用所需的各類環境與配置,讓應用能運行于任意Kubernetes節點,全面提升應用部署靈活性。
另一方面,在私有云平臺部署中,Kubernetes可實現對應用的細粒度管理,會為每個應用分配特定命名空間,讓用戶能夠在調度應用階段更方便地管理、控制隸屬同一業務線的應用程序。同時,Kubernetes提供的服務發現、負載均衡機制,可保證應用始終具備高可用性,其對外提供的接口調整為集群級別,內部調度轉發到對應的容器進一步保證了應用在運行階段的對外訪問能力。
2.Gluster集群應用
Gluster集群是目前市場中高度流行的開源分布式文件系統,其提供的存儲解決方案,目前已被廣泛應用于私有云平臺中。
一方面,技術原理視角下,Gluster集群利用計算機網絡技術,將網絡中的多個磁盤設備或者存儲設備集合起來,形成統一存儲池,為上層應用提供統一訪問接口。在此基礎上,每個存儲節點均為對等關系,不會出現單點故障問題。數據運行期間,Gluster會在各節點之間進行條帶化存儲,讓應用實現面向大量數據的可靠、高效存儲。
另一方面,Gluster集群中的每個節點均可實現獨立運行,不依賴于中心節點或是元數據服務器。這一架構讓Gluster集群具備良好的可伸縮性與容錯性,即便某一節點出現故障,其他節點仍舊能夠繼續工作而不影響數據的訪問[3]。
3.部署過程
以下是基于K8s技術結合Gluster的私有云平臺分布式存儲部署策略。
步驟1:確定主節點與工作節點。Kubernetes整個集群管理與控制均需由主節點負責,如跨主機的容器編排、服務發現與負載均衡、錯誤恢復工作等。剩余的服務器資源,會被設定為工作節點,運行實際的容器應用。
步驟2:進行網絡配置。對于Kubernetes而言,其CNI(Container Network Interface)容器網絡插件的運用至關重要。其CNI主要負責Kubernetes集群中各Pod之間的網絡通信。盡管Kubernetes支持多種網絡插件,如Flannel、Calico或是Cilium等,但仍舊需要以具體網絡環境、業務需求為依據選擇最為合理的插件。
步驟3:配備管理工具。部署Kubernetes需要配備管理工具,Kubectl能夠幫助用戶與Kubernetes實現高效交互,對集群進行有效管理。Helm同樣為有效管理Kubernetes應用的工具,在集群運行階段,Helm負責簡化部署與配置的過程。此外,為實時監控Kubernetes集群的狀態,還需配備Prometheus、Grafana此類系統與工具。
步驟4:持久化存儲應用。部署私有云平臺分布式存儲階段,Kubernetes提供了PV (持久卷) 和PVC (持久卷申領) 兩種存儲方式,它們能夠幫助用戶描述管理存儲資源。應用部署階段,需要在StatafulSet內進行volumeClaimTemplates配置,從而生成Pod、PV以及PVC。圖1為Pod、PV以及PVC生成情況查看示意圖。
在部署Gluster集群后,會有三個節點已經利用LVM創建3個1G的存儲邏輯卷軸,且會實現自動掛載。節點數量由vvolumetype內復制卷的數量而決定。圖2為volumeClaimTemplates配置示意圖。
步驟5:資源分配與隔離。對于大規模的集群,資源分配、隔離尤為重要。此刻,Kubernetes提供的Namespace和Quota可實現資源的有效分配與隔離。Namespace能夠為一組資源提供一種邏輯隔離方式,以便于集群對資源進行分類管理。Quota則負責限制每個Namespace在存儲、CPU、內存等各維度的資源使用率,確保各 Namespace 中,資源使用始終處于均衡狀態。
步驟 6:Gluster環境配置。對于每個參與Gluster集群的節點,設置hostname,于/etc/hosts文件中添加所有參與節點的IP地址以及其同hostname的映射關系。隨后,在每個節點安裝Gluster-server,通過默認包管理工具進行安裝。操作階段,可在Ubuntu環境中,使用apt命令:sudo apt-get install -y glusterfs-server。
步驟7:啟動GLusterfu服務。于每個節點上啟動GlusterFS服務,以確保服務在開機時實現自動啟動,具體命令為:systemctl enable glusterd & systemctl start glusterd。
步驟8:構建集群。任選一節點,通過下列命令將其他節點加入集群內:gluster peer probe <節點hostname>。利用gluster peer status命令,可查詢集群狀態。隨后,于任一個節點執行gluster volume create命令,創建Gluster卷。
步驟9:配置K8s下StorageClass。創建一個StorageClass,面向GlusterFS作為存儲。在StorageClass定義文件內,type設置為glusterfs,parameters中將resturl設置為Heketi服務API地址。部署Heketi,用于管理GlusterFS集群的RESTful管理接口,其負責為集群提供用于創建、查詢、刪除和修改GlusterFS卷,最后創建K8s的PV與PVC。
(三)技術對比
在私有云平臺中,vSAN和Kubernetes+Gluster隸屬兩種較為常見的分布式存儲解決方案。本文從架構與兼容性、功能與易用性兩個維度進行對比。
架構與兼容性方面,vSAN是VMware發布的分布式存儲解決方案。該方案深度整合于VMWare虛擬化平臺vSphere中,適合基于VMWare虛擬化技術的私有云環境。vSAN分布式存儲擁有較好的性能與一致性。對比之下,Kubernetes+Gluster是一種應用更為廣泛的解決方案,同時支持物理機、虛擬化以及容器環境,具有更廣泛適用性。GlusterFS以及其他現代軟件定義存儲解決方案期間,通常都設計為同底層硬件獨立的形式,因此,該方案可運行在任何Linux分發版上,且Kubernetes+Gluster架構更為靈活,無擴展性限制。
功能與易用性方面,vSAN在功能上更為豐富,如磁盤和網絡故障重新配置等,同時通過vSphere Client進行管理,對于VMware用戶而言,易用性、可視化和集成度都非常高。Kubernetes+Gluster的管理復雜性相比vSAN更高,操作階段需要通過命令行工具或是API進行操作。然而,該方案結構簡單,功能強大,相比vSAN具有更為靈活的配置,可滿足各種私有云平臺應用需求[4]。
五、結語
綜合上分析,針對面向私有云平臺的分布式存儲應用策略進行研究,對基于vSAN的分布式存儲方案、開源Kubernetes+Gluster分布式存儲方案進行了詳細研究。研究表明,Kubernetes+Gluster方案相比vSAN方案具有更強的靈活性、適用性,但作為成熟的分布式存儲策略,兩種方案各有優勢,使用者還需根據私有云平臺情況、實際應用需求合理選擇,以便在滿足企業私有云平臺應用需求的同時節約經濟成本。
參考文獻
[1]鄒文仲,鄧力源,張高峰,等.基于調度云平臺通用分布式架構實踐[J].南方電網技術,2023,17(09):20-28.
[2]張利,劉洛川,李光.一種基于邊緣計算的分布式高精度定位方法[J].長江信息通信,2022,35(02):34-42.
[3]桂晶,基于云端融合的三維計算機輔助設計系統研發[R].廣東省,云浮清軟海芯科技有限公司,2021-12-22.
[4]宋偉.基于OPENSTACK私有云平臺上的HADOOP完全分布式環境應用研究[J].電腦知識與技術,2020,16(11):234-236.
作者單位:中國石油吐哈油田公司數智技術公司
■ 責任編輯:張津平、尚丹