k8s持久化存儲方案

共享存儲為分布式系統(tǒng)非常重要的一部分,存儲一般要求穩(wěn)定、可用、性能、可靠。

從用戶角度看


存儲就是一塊盤或者一個目錄,用戶不關心盤或者目錄如何實現(xiàn),用戶要求非?!昂唵巍保褪欠€(wěn)定,性能好。為了能夠提供穩(wěn)定可靠的存儲產(chǎn)品,各個廠家推出了各種各樣的存儲技術和概念。為了能夠讓大家有一個整體認識,本文先介紹存儲中的這些概念。

從存儲介質角度


存儲介質分為機械硬盤和固態(tài)硬盤(SSD)。機械硬盤泛指采用磁頭尋址的磁盤設備,包括SATA硬盤和SAS硬盤。由于采用磁頭尋址,機械硬盤性能一般,隨機IOPS一般在200左右,順序帶寬在150MB/s左右。固態(tài)硬盤是指采用Flash/DRAM芯片+控制器組成的設備,根據(jù)協(xié)議的不同,又分為SATA SSD,SAS SSD,PCIe SSD和NVMe SSD。

從產(chǎn)品定義角度


存儲分為本地存儲(DAS),網(wǎng)絡存儲(NAS),存儲局域網(wǎng)(SAN)和軟件定義存儲(SDS)四大類

  • DAS就是本地盤,直接插到服務器上
  • NAS是指提供NFS協(xié)議的NAS設備,通常采用磁盤陣列+協(xié)議網(wǎng)關的方式
  • SAN跟NAS類似,提供SCSI/iSCSI協(xié)議,后端是磁盤陣列
  • SDS是一種泛指,包括分布式NAS(并行文件系統(tǒng)),ServerSAN等

從應用場景角度


存儲分為文件存儲(Posix/MPI),塊存儲(iSCSI/Qemu)和對象存儲(S3/Swift)三大類。

Kubernetes是如何給存儲定義和分類呢?Kubernetes中跟存儲相關的概念有PersistentVolume (PV)和PersistentVolumeClaim(PVC),PV又分為靜態(tài)PV和動態(tài)PV。靜態(tài)PV方式如下:


d17352d3560e6a0d0042050193bd926c.jpg

動態(tài)PV需要引入StorageClass的概念,使用方式如下:


ea911aeab3a74f8a60c8e70c156a678a.jpg

社區(qū)列舉出PersistentVolume的in-tree Plugin,如下圖所示。從圖中可以看到,Kubernetes通過訪問模式給存儲分為三大類,RWO/ROX/RWX。這種分類將原有的存儲概念混淆,其中包含存儲協(xié)議,存儲開源產(chǎn)品,存儲商業(yè)產(chǎn)品,公有云存儲產(chǎn)品等等。
image

如何將Kubernetes中的分類和熟知的存儲概念對應起來呢?本文選擇將其和應用場景進行類比。

塊存儲通常只支持RWO,比如AWSElasticBlockStore,AzureDisk,有些產(chǎn)品能做到支持ROX,比如GCEPersistentDisk,RBD,ScaleIO等

文件存儲(分布式文件系統(tǒng))支持RWO/ROX/RWX三種模式,比如CephFS,GlusterFS和AzureFile
對象存儲不需要PV/PVC來做資源抽象,應用可以直接訪問和使用

多種多樣的應用場景


介紹完存儲概念之后,選擇哪種存儲仍然懸而未決。這個時候,請問自己一個問題,業(yè)務是什么類型?選擇合適的存儲,一定要清楚自己的業(yè)務對存儲的需求。本文整理了使用容器存儲的場景及其特點。

  • 配置

無論集群配置信息還是應用配置信息,其特點是并發(fā)訪問,也就是前邊提到的ROX/RWX,在不同集群或者不同節(jié)點,都能夠訪問同樣的配置文件,分布式文件存儲是最優(yōu)選擇。

  • 日志

在容器場景中,日志是很重要的一部分內(nèi)容,其特點是高吞吐,有可能會產(chǎn)生大量小文件。如果有日志分析場景,還會有大量并發(fā)讀操作。分布式文件存儲是最優(yōu)選擇。

  • 應用(數(shù)據(jù)庫/消息隊列/大數(shù)據(jù))

Kafka,MySQL,Cassandra,PostgreSQL,ElasticSearch,HDFS等應用,本身具備了存儲數(shù)據(jù)的能力,對底層存儲的要求就是高IOPS,低延遲。底層存儲最好有數(shù)據(jù)冗余機制,上層應用就可以避免復雜的故障和恢復處理。以HDFS為例,當某個datanode節(jié)點掉線后,原有邏輯中,會選擇啟動新的datanode,觸發(fā)恢復邏輯,完成數(shù)據(jù)副本補全,這段時間會比較長,而且對業(yè)務影響也比較大。如果底層存儲有副本機制,HDFS集群就可以設置為單副本,datanode節(jié)點掉線后,啟動新的datanode,掛載原有的pv,集群恢復正常,對業(yè)務的影響縮短為秒級。高性能分布式文件存儲和高性能分布式塊存儲是最優(yōu)選擇。

  • 備份

應用數(shù)據(jù)的備份或者數(shù)據(jù)庫的備份,其特點是高吞吐,數(shù)據(jù)量大,低成本。文件存儲和對象存儲最優(yōu)。

綜合應用場景,高性能文件存儲是最優(yōu)選擇。

形形色色的存儲產(chǎn)品


市面上的存儲產(chǎn)品種類繁多,但是對于容器場景,主要集中在4種方案:分布式文件存儲,分布式塊存儲,Local-Disk和傳統(tǒng)NAS。

分布式塊存儲包括開源社區(qū)的Ceph,Sheepdog,商業(yè)產(chǎn)品中EMC的Scale IO,Vmware的vSAN等。分布式塊存儲不適合容器場景,關鍵問題是缺失RWX的特性。

分布式文件存儲包括開源社區(qū)的Glusterfs,Cephfs,Lustre,Moosefs,Lizardfs,商業(yè)產(chǎn)品中EMC的isilon,IBM的GPFS等。分布式文件存儲適合容器場景,但是性能問題比較突出,主要集中在GlusterFS,CephFS,MooseFS/LizardFS。
這里簡單對比下開源項目的優(yōu)缺點,僅供參考。


image

Local-Disk方案有明顯的缺點,尤其是針對數(shù)據(jù)庫,大數(shù)據(jù)類的應用。節(jié)點故障后,數(shù)據(jù)的恢復時間長,對業(yè)務影響范圍廣。

傳統(tǒng)NAS也是一種文件存儲,但是協(xié)議網(wǎng)關(機頭)是性能瓶頸,傳統(tǒng)NAS已經(jīng)跟不上時代發(fā)展的潮流。

分門別類的評估策略


存儲的核心需求是穩(wěn)定,可靠,可用。無論是開源的存儲項目還是商業(yè)的存儲產(chǎn)品,評估方法具有普適性,本文會介紹常見的評估項和評估方法。

  • 數(shù)據(jù)可靠性

數(shù)據(jù)可靠性是指數(shù)據(jù)不丟失的概率。通常情況下,存儲產(chǎn)品會給出幾個9的數(shù)據(jù)可靠性,或者給出最多允許故障盤/節(jié)點個數(shù)。評估方式就是暴力拔盤,比如說存儲提供3副本策略,拔任意2塊盤,只要數(shù)據(jù)不損壞,說明可靠性沒問題。存儲采用不同的數(shù)據(jù)冗余策略,提供的可靠性是不一樣的。

  • 數(shù)據(jù)可用性

數(shù)據(jù)可用性和數(shù)據(jù)可靠性很容易被混淆,可用性指的是數(shù)據(jù)是否在線。比如存儲集群斷電,這段時間數(shù)據(jù)是不在線,但是數(shù)據(jù)沒有丟失,集群恢復正常后,數(shù)據(jù)可以正常訪問。評估可用性的主要方式是拔服務器電源,再有查看存儲的部署組件是否有單點故障的可能。

  • 數(shù)據(jù)一致性

數(shù)據(jù)一致性是最難評估的一項,因為大部分場景用戶不知道程序寫了哪些數(shù)據(jù),寫到了哪里。該如何評估數(shù)據(jù)一致性呢?普通的測試工具可以采用fio開啟crc校驗選項,最好的測試工具就是數(shù)據(jù)庫。如果發(fā)生了數(shù)據(jù)不一致的情況,數(shù)據(jù)庫要么起不來,要么表數(shù)據(jù)不對。具體的測試用例還要細細斟酌。

  • 存儲性能

存儲的性能測試很有講究,塊存儲和文件存儲的側重點也不一樣。

  • 容器存儲功能

除了存儲的核心功能(高可靠/高可用/高性能),對于容器存儲,還需要幾個額外的功能保證生產(chǎn)環(huán)境的穩(wěn)定可用。

  • Flexvolume/CSI接口的支持,動態(tài)/靜態(tài)PV的支持

  • 存儲配額。對于Kubernetes的管理員來說,存儲的配額是必須的,否則存儲的使用空間會處于不可控狀態(tài)

  • 服務質量(QoS)。如果沒有QoS,存儲管理員只能期望存儲提供其他監(jiān)控指標,以保證在集群超負荷時,找出罪魁禍首

萬變不離其宗的選擇


Kubernetes持久化存儲方案的重點在存儲和容器支持上。因此首要考慮存儲的核心功能和容器的場景支持。綜合本文所述,將選擇項按優(yōu)先級列舉:

1、存儲的三大核心,高可靠,高可用和高性能

2、業(yè)務場景,選擇分布式文件存儲

3、擴展性,存儲能橫向擴展,應對業(yè)務增長需求

4、可運維性,存儲的運維難度不亞于存儲的開發(fā),選擇運維便捷存儲產(chǎn)品

5、成本

摘自:
https://mp.weixin.qq.com/s/6yg_bt5mYKWdXS0CidY6Rg

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 關于Mongodb的全面總結 MongoDB的內(nèi)部構造《MongoDB The Definitive Guide》...
    中v中閱讀 32,284評論 2 89
  • 專業(yè)名詞 塊存儲、文件存儲、對象存儲 塊存儲 就好比硬盤一樣, 直接掛在到主機, 一般用于主機的直接存儲空間和數(shù)據(jù)...
    rochy_he閱讀 11,816評論 0 37
  • 就在各大銀行都開始宣傳網(wǎng)銀免費轉賬的時候,原本免費體現(xiàn)的微信錢包,反而反其道行之,開始宣布:從2016-03-01...
    xiaojieLu閱讀 664評論 0 1
  • 今天爸爸給我講了兩個關于竹子的故事。 第一個:竹子用了四年的時間長了三厘米,但是,竹子的根已經(jīng)在地...
    5666徐閱讀 2,015評論 0 4

友情鏈接更多精彩內(nèi)容