摘要:項目現(xiàn)已正式發(fā)布這是一個基于云和容器部署的分布式塊存儲新方式。這可能是與大多數(shù)現(xiàn)有的分布式存儲系統(tǒng)相比,最具特色的功能??焖偃腴T指南易于安裝和使用。使用或術(shù)語,管理器容器是一項全球性服務。目前,我們不保留額外的元數(shù)據(jù)來指示使用哪些。
Longhorn項目現(xiàn)已正式發(fā)布!這是一個基于云和容器部署的分布式塊存儲新方式。Longhorn遵循微服務的原則,利用容器將小型獨立組件構(gòu)建為分布式塊存儲,并使用容器編排來協(xié)調(diào)這些組件,形成彈性分布式系統(tǒng)。
Why Longhorn?如今,基于云和容器的部署規(guī)模日益擴大,分布式塊存儲系統(tǒng)也正變得越來越復雜,單個存儲控制器上的volume數(shù)量在不斷增加。2000年代初,存儲控制器上的volume數(shù)量只有幾十個,但現(xiàn)代云環(huán)境卻需要數(shù)萬到數(shù)百萬的分布式塊存儲卷。存儲控制器變成了高度復雜的分布式系統(tǒng)。
分布式塊存儲本身比其他形式的分布式存儲(如文件系統(tǒng))更簡單。無論系統(tǒng)中有多少volume,每個volume只能由單個主機進行裝載。正因如此,我們設想,是否可以將大型塊存儲控制器分割成多個較小的存儲控制器?若想要如此分割,我們需要保證這些volume仍然是從公共磁盤池構(gòu)建的,并且我們需要有辦法來編排這些存儲控制器,讓它們可以協(xié)同工作。
為了將這一想法發(fā)揮到極限,我們創(chuàng)建了Longhorn項目。這是一個我們認為值得探索的方向,每個控制器上只有一個volume,這將大大簡化存儲控制器的設計。因為控制器軟件的故障域僅限于單個volume,所以控制器若崩潰,也只會影響一個volume。
Longhorn充分利用了近年來關于如何編排大量的容器和虛擬機的核心技術(shù)。例如,Longhorn并沒有構(gòu)建一個可以擴展到100,000個volume的高度復雜的控制器,而是出于讓存儲控制器簡單輕便的考慮,創(chuàng)建了100,000個多帶帶的控制器。然后,我們可以利用像Swarm、Mesos和Kubernetes這樣的最先進的編排系統(tǒng)來調(diào)度這些獨立的控制器,共享一組磁盤中的資源,協(xié)同工作,形成一個彈性的分布式塊存儲系統(tǒng)。
Longhorn基于微服務的設計還有很多其他優(yōu)勢。因為每個volume都有自己的控制器,在升級每個volume的控制器和replica容器時,是不會導致IO操作明顯的中斷的。 Longhorn可以創(chuàng)建一個長期運行的工作來編排所有l(wèi)ive volume的升級,同時確保不會中斷系統(tǒng)正在進行的操作。為確保升級不會導致意外的問題,Longhorn可以選擇升級一小部分volume,并在升級過程中出現(xiàn)問題時回滾到舊版本。這些做法在現(xiàn)代微服務應用中已得到廣泛應用,但在存儲系統(tǒng)中并不常見。我們希望Longhorn可以助力于微服務在存儲領域的更多應用。
Longhorn功能概述將本地磁盤或安裝在計算或?qū)S么鎯χ鳈C中的網(wǎng)絡存儲形成共享資源池。
為容器和虛擬機創(chuàng)建塊存儲卷。你可以指定volume的大小,IOPS的需求,以及你想要的跨主機的同步replica的數(shù)量(這里的主機是指那些為volume提供存儲資源的主機)。replica是在底層磁盤或網(wǎng)絡存儲上精簡配置的。
為每個volume創(chuàng)建一個專用的存儲控制器。這可能是與大多數(shù)現(xiàn)有的分布式存儲系統(tǒng)相比,Longhorn最具特色的功能。大多數(shù)現(xiàn)有的分布式存儲系統(tǒng)通常采用復雜的控制器軟件來服務于從數(shù)百到數(shù)百萬不等的volume。但Longhorn不同,每個控制器上只有一個volume,Longhorn將每個volume都轉(zhuǎn)變成了微服務。
跨計算或存儲主機調(diào)度多個replica。Longhorn會監(jiān)測每一個replica的健康狀況,對問題進行維修,并在必要時重新生成replica。
以Docker容器的形式操作存儲控制器和replica。例如,一個volume有三個replica,就意味著有四個容器。
為每個volume分配多個存儲“前端”。常見的前端包括Linux內(nèi)核設備(映射到/ dev / longhorn)和iSCSI目標。Linux內(nèi)核設備適用于支持Docker volume,而iSCSI目標更適合支持QEMU / KVM和VMware volume。
創(chuàng)建volume快照(snapshot)和AWS EBS風格的備份。您可以為每個volume創(chuàng)建多達254個快照,這些快照可以逐個備份到NFS或S3兼容的輔助存儲中。只有更改的字節(jié)會在備份操作期間被復制和存儲。
指定定期快照和備份操作的計劃。您可以指定這些操作的頻率(每小時,每天,每周,每月和每年)、執(zhí)行這些操作的確切時間(例如,每個星期日凌晨3:00),以及保留多少個循環(huán)快照和備份集。
快速入門指南Longhorn易于安裝和使用。您只需確保Docker已安裝,并且安裝了open-iscsi軟件包,就可以在單個Ubuntu 16.04服務器上設置運行Longhorn所需的一切。
運行以下命令在單個主機上設置Longhorn:
git clone https://github.com/rancher/longhorncd longhorn/deploy ./longhorn-setup-single-node-env.sh
該腳本將拉起并啟動多個容器,包括etcd鍵值存儲區(qū)、Longhorn volume管理器、Longhorn UI和Longhorn docker volume插件容器。此腳本完成后,將生成以下輸出:
Longhorn is up at port 8080
您可以通過連接到http://
您現(xiàn)在可以從Docker CLI創(chuàng)建持久的Longhorn volume:
docker volume create -d longhorn vol1 docker run -it --volume-driver longhorn -v vol1:/vol1 ubuntu bash
在同一主機上運行單主機Longhorn安裝程序etcd和所有volume副本,因此不適合在生產(chǎn)環(huán)境中使用。 Longhorn GitHub頁面有更多關于如何設置生產(chǎn)級別多主機使用說明:,多主機將使用多帶帶的etcd服務器、Docker swarm mode集群和用于存儲備份的多帶帶NFS服務器。
Longhorn和其他存儲系統(tǒng)作為一項實驗,我們編寫了Longhorn,借助容器和微服務,Longhorn構(gòu)建了一個分布式塊存儲系統(tǒng),Longhorn既不是為了與現(xiàn)有存儲軟件和存儲系統(tǒng)競爭,也并非為替代現(xiàn)有存儲軟件和存儲系統(tǒng),原因如下:
Longhorn只關注分布式塊存儲。從另一個角度來說,分布式文件存儲更難建立。如Ceph、Gluster、Infinit(由Docker收購)、Quobyte、Portworx和StorageOS以及來自NetApp、EMC等的存儲系統(tǒng),提供了分布式文件系統(tǒng)、統(tǒng)一存儲體驗、企業(yè)數(shù)據(jù)管理以及許多Longhorn不支持的其他企業(yè)級功能。
Longhorn需要NFS共享或S3兼容的對象用以存儲volume備份。因此,它必須與來自NetApp、EMC Isilon或其他供應商的網(wǎng)絡文件存儲器以及來自AWS S3、Minio、SwiftStack、Cloudian等的S3兼容的對象存儲端點配合使用。
Longhorn缺少企業(yè)級存儲功能,例如重復數(shù)據(jù)刪除、壓縮和自動分層以及將大容量條帶化為較小塊的能力。因此,Longhorn volumes受到單個磁盤的大小和性能的限制。 iSCSI目標以用戶級進程運行。我們在分布式存儲產(chǎn)品(如Dell EqualLogic,SolidFire和Datera)中可以看到,它缺乏企業(yè)級 iscsi 系統(tǒng)的性能、可靠性和多路徑支持。
我們建立了Longhorn,使其簡單易行,希望它可以測試我們的想法——使用容器和微服務來構(gòu)建存儲。它完全由Go(通常稱為golang)編寫,是現(xiàn)代系統(tǒng)編程的首選語言。
下面我們將繼續(xù)詳細描述Longhorn,讓大家能對Longhorn現(xiàn)階段的功能設計有個大致的預覽。當前,盡管所描述的功能還未全部實現(xiàn),但我們將會繼續(xù)努力,使Longhorn項目的愿景變?yōu)楝F(xiàn)實。
作為微服務的volumeLonghorn volume管理器容器在Longhorn集群中的每個主機上運行。使用Rancher或Swarm術(shù)語,Longhorn管理器容器是一項全球性服務。如果您使用Kubernetes,Longhorn volume管理器則被視為DaemonSet。Longhorn volume管理器處理從UI中或Docker和Kubernetes的卷插件中執(zhí)行API調(diào)用。您可以在這里找到Longhorn API的說明。下圖展示了Longhorn在Docker Swarm和Kubernetes中的控制路徑。
當Longhorn管理器被要求創(chuàng)建一個volume時,它將在該volume所附的主機以及放置副本的主機上創(chuàng)建一個控制器容器。副本應放置在不同的主機上,以確保最大可用性。
在下圖中,有三個容器有Longhorn volumes。每個Docker volume都有一個作為容器運行的專用控制器。每個控制器有兩個副本,每個副本都是一個容器。圖中的箭頭表示Docker volume、控制器容器、副本容器和磁盤之間的讀/寫數(shù)據(jù)流。通過為每個volume創(chuàng)建多帶帶的控制器,如果某個控制器發(fā)生故障,也不會影響其他volums的功能。
例如,在大規(guī)模部署100,000個Docker volumes的過程中,每個volume具有兩個副本,意味著將存在100,000個控制器容器和20萬個復制容器。為了安排、監(jiān)視、協(xié)調(diào)和修復所有這些控制器和副本,需要一個存儲編排系統(tǒng)。
存儲編排存儲編排負責調(diào)度控制器和副本,監(jiān)視各種組件,并從錯誤中恢復。Longhorn volume管理器執(zhí)行管理volume生命周期所需的所有存儲編排操作。您可以在這里找到Longhorn volume管理器執(zhí)行存儲編排的詳細信息。
控制器的功能類似于典型的鏡像RAID控制器,對其副本進行讀寫操作并監(jiān)控副本的健康狀況。所有寫入操作都被同步復制。因為每個volume都有自己的專用控制器,并且控制器駐留在volume所附加的同一主機上,所以我們不需要控制器的高可用性(HA)配置。
Longhorn volume管理器負責挑選副本所在的主機。然后檢查所有副本的健康狀況,在必要時,執(zhí)行相應操作重建錯誤的副本。
復制操作Longhorn replicas是通過Linux分散的文件構(gòu)建的,它支持精簡配置。目前,我們不保留額外的元數(shù)據(jù)來指示使用哪些block。block大小為4K。
拍攝快照時,您將創(chuàng)建一個差異磁盤。隨著快照數(shù)量的增長,差異磁盤鏈可能會相當長。為了提高讀取性能,Longhorn保留了一個讀取索引,記錄了該差異磁盤保存的每個4K block的有效數(shù)據(jù)。在下圖中,該volume有八個block。讀取索引有八個條目,并且在讀取操作發(fā)生時被惰性填充。寫操作會重置讀取索引,使其指向?qū)崟r數(shù)據(jù)。
讀取保存在內(nèi)存中的索引時,每4K block消耗一個字節(jié)。字節(jié)大小的讀取索引意味著您可以為每個volume獲取多達254個快照。
為每個副本讀取索引將會消耗一定量的內(nèi)存數(shù)據(jù)結(jié)構(gòu)。例如,1TB卷消耗256MB的內(nèi)存讀取索引。因此,我們未來會考慮將讀取的索引放在內(nèi)存映射文件中。
副本重建當控制器檢測到某個副本出現(xiàn)故障時,它會將副本標記為處于錯誤狀態(tài)。Longhorn volume管理器負責啟動和協(xié)調(diào)重建錯誤副本,過程如下所示:
Longhorn volume管理器創(chuàng)建一個空白副本,并調(diào)用控制器將空白副本添加到其副本集中。
要添加空白副本,控制器須執(zhí)行以下操作:
暫停所有讀寫操作 在WO(只寫)模式下添加空白副本 獲取所有現(xiàn)有副本的快照,即刻會有一個空白的差異磁盤 Unpauses全部讀取寫入操作,僅將寫入操作發(fā)送到新添加的副本 啟動后臺進程,將所有(除最新的以外)差異磁盤從好的副本同步到空白副本 同步完成后,所有副本的數(shù)據(jù)都具有一致性,volume管理器將新副本設置為RW(讀寫)模式
Longhorn volume管理器調(diào)用控制器從其副本集中刪除錯誤的副本。
重新構(gòu)建副本并不是很有效。我們可以通過嘗試重新使用故障副本中剩余的分散文件來提高重建性能。
備份快照我喜歡Amazon EBS的工作方式——每個快照都自動備份到S3。主存儲中沒有任何內(nèi)容。但是,我們決定讓Longhorn的快照和備份更靈活一些。將快照和備份操作分開執(zhí)行。通過拍攝快照、備份此快照與上一個快照之間的差異以及刪除上一個快照來模擬EBS風格的快照。我們還開發(fā)了一種定期的備份機制,以幫助您自動執(zhí)行此類操作。
通過檢測和傳輸快照之間的被更改的block, 我們實現(xiàn)了高效的增量備份。這個任務相對來說比較容易, 因為每個快照都是一個差異文件, 只用存儲最后一個快照中的更改。為了避免存儲大量的小block,我們使用2MB block執(zhí)行備份操作。這意味著,如果2MB邊界中的任何4K block改變,我們將不得不備份整個2MB block。但我們認為這在可管理性和效率之間提供了平衡。
在下圖中,我們已經(jīng)備份了snap2和snap3。每個備份保留自己的一組2MB block,兩個備份共享一個綠色block和一個藍色block。每個2MB block僅備份一次。這意味著當我們從二級存儲中刪除備份時,不能刪除它所使用的所有block。相反,我們會定期執(zhí)行垃圾回收,以便從二級存儲中清理未使用的block。
Longhorn將給定的volume的所有備份存儲在公用目錄下。以下是描述Longhorn如何存儲volume的備份的簡單視圖。volume級元數(shù)據(jù)存儲在volume.cfg中。每個備份的元數(shù)據(jù)文件(例如snap2.cfg)相對較小,因為它們只包含備份中所有2MB block的偏移量和校驗和。屬于同一volume的所有備份的2MB block都存儲在公用目錄下,因此可以跨多個備份進行共享。2MB block(.blk文件)被壓縮。由于使用了校驗和來處理2MB block,所以我們刪除了同一volume的2MB block中一定程度的重復數(shù)據(jù)。
兩種部署模式Longhorn volume管理器執(zhí)行調(diào)度副本到節(jié)點的任務。我們可以調(diào)整調(diào)度算法,以不同的方式放置控制器、復制副本??刂破饕冀K放置在連接volume的主機上。另一方面,副本可以在運行控制器的同一組計算服務器上或在一組專用存儲服務器上進行。前者構(gòu)成了超聚合部署模型, 后者則構(gòu)成專用存儲服務器模型。
堅信開源才是技術(shù)的未來,始終秉承開源理念的Rancher Labs,此次推出的Longhorn依然是100%的開源軟件。您可以通過在GitHub上下載Longhorn:。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/26880.html
摘要:近日,版本發(fā)布了,它可支持任何集群的持久化存儲實現(xiàn)如今,基于云和容器的部署規(guī)模日益擴大,分布式塊存儲系統(tǒng)也正變得越來越復雜,單個存儲控制器上的數(shù)量在不斷增加。 Longhorn項目是Rancher Labs推出的開源的基于云和容器部署的分布式塊存儲新方式。Longhorn遵循微服務的原則,利用容器將小型獨立組件構(gòu)建為分布式塊存儲,并使用容器編排來協(xié)調(diào)這些組件,形成彈性分布式系統(tǒng)。 自2...
摘要:在這方面通常有三種主要選項文件系統(tǒng)存儲塊存儲和對象存儲。結(jié)論塊存儲比文件系統(tǒng)存儲更靈活,這樣更容易適應容器環(huán)境的塊存儲。對象存儲對象存儲與文件系統(tǒng)存儲或塊存儲不同。結(jié)論由于依賴于調(diào)用,對象存儲可能更復雜。 當管理員首次開始使用Docker容器時,通常會使其感到驚訝的是, 容器本身采用的是非永久性存儲。當容器被移除時, 容器的存儲也被移除了。 當然,如果沒有辦法實現(xiàn)永久存儲,則容器應用程...
摘要:年月日,由以下簡稱主辦的第三屆企業(yè)容器創(chuàng)新大會以下簡稱在北京喜來登大酒店盛大舉行。在未來,希望能為中國用戶帶來更多更實用的容器技術(shù),推動中國企業(yè)容器化的持續(xù)創(chuàng)新。 2019年6月20日,由Rancher Labs(以下簡稱Rancher)主辦的第三屆企業(yè)容器創(chuàng)新大會(Enterprise Container Innovation Conference, 以下簡稱ECIC)在北京喜來登大...
摘要:資源獲取方式根據(jù)下面的索引,大家可以選擇自己需要的資源,然后在松哥公眾號牧碼小子后臺回復對應的口令,就可以獲取到資源的百度云盤下載地址。公眾號二維碼如下另外本文會定期更新,松哥有新資源的時候會及時分享給大家,歡迎各位小伙伴保持關注。 沒有一條路是容易的,特別是轉(zhuǎn)行計算機這條路。 松哥接觸過很多轉(zhuǎn)行做開發(fā)的小伙伴,我了解到很多轉(zhuǎn)行人的不容易,記得松哥大二時剛剛決定轉(zhuǎn)行計算機,完全不知道這...
摘要:現(xiàn)已全面發(fā)布這是容器管理平臺的最新版本。確認支持當初,在正式版發(fā)布之前,我們就已經(jīng)首先實現(xiàn)了對的支持。雖然項目計劃最終納入,但目前仍然是實驗性的,在現(xiàn)階段和仍然保持著各自的獨立性。中的密文支持在中,我們添加了使用處理中的密文的能力。 Rancher v1.6現(xiàn)已全面發(fā)布!這是Rancher容器管理平臺的最新版本。盡管我們一如既往地建議您使用Rancher最新的穩(wěn)定版本進行生產(chǎn)或關鍵任務...
閱讀 1701·2021-09-23 11:31
閱讀 1008·2021-09-23 11:22
閱讀 1450·2021-09-22 15:41
閱讀 4180·2021-09-03 10:28
閱讀 2975·2019-08-30 15:55
閱讀 3601·2019-08-30 15:55
閱讀 2054·2019-08-30 15:44
閱讀 2781·2019-08-30 13:50