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