Torus登場:CoreOS打造的新一代分布式存儲系統

[編者的話]最近CoreOS推出來重量級產品Torus,專門為容器集群量身打造的分布式存儲系統,可以為通過Kubernetes編排和管理的容器集群提供可靠可擴展的存儲。讓我們來感受下新產品給我們的集群分布式存儲帶來了多大的優勢。

在容器集群的基礎設施中,持久化存儲是目前計算機界討論最熱的問題之一。微服務生產和消耗的海量數據我們該如何存儲?尤其是對于部署一成不變、離散的應用時如何能做到持久化存儲?隨著容器在企業中的大規模應用,如何用一種能夠讓開發者在任何環境中能順利使用的方式存儲這些信息?怎樣在容器不斷動態迭代中保證數據的一致性和持久性?

如今CoreOS推出了Torus,它是一種針對容器集群量身打造的存儲系統,可以為通過Kubernetes編排和管理的容器集群提供可靠可擴展的存儲。我們相信開源軟件必須及早發布產品,這樣可以讓更多的開發者、測試者以及貢獻者參與進來,以增進整個社區的進步。所以現在您就可以在Github獲取Tours的原型發布版本,同時我們也鼓勵所有人參與測試數據和部署集群,以并幫助開發完善下一代的分布式存儲。

分布式系統的過去、現在和將來

站在CoreOS的角度,我們相信分布式系統為互聯網的安全可靠運行奠定了基礎。通過模塊化的方式進行構建,在工作負載增加的時候進行擴展,同時確保其簡單易用,并使得不同模塊能夠與其他組件相互配合。這種做法解決了大規模存儲計算領域曾經面臨過的不少挑戰。通過我們構建etcd的三年經驗,我們達成解決分布式問題的共識,在集群快速異步更新以及讀取信息時,無論粒度多小的重要信息都應該是被約定和保持一致。今天etcd是最快、最穩定的開源分布式鍵值存儲,它被用于包括Kubernetes在內數以百計的業界翹楚的分布式系統軟件項目中,扮演者在大規模節點和應用程序執行時被用來協調配置的角色。

過去可靠的分布式存儲問題比分布式具有更多的挑戰,但是現狀確實也是這樣的。在實現分布式存儲的算法中,如果出現錯誤后果將會很嚴重。一般情況下分布式存儲的數據巨大,一旦實現中出現錯誤,錯誤會以驚人的速度傳播,而且這種錯誤也很難被檢測到。數據的瘋長也會改變我們創建備份、歸檔和其他故障安全措施保障應用程序安全的做法。

為什么我們構建了Torus

Tour提供存儲應該具有的原始特性:可靠、分布式,簡單。它旨在解決今天開發團隊運行分布式應用程序中遇到的一些主要問題。雖然傳統的存儲結構可以連接到我們現在的底層容器,但是這兩個模型之間的不匹配促使我們開發這種新的解決方案來解決容器集群之間的存儲。現在被認可的分布式存儲算法也是出了名的困難的。Torus使用etcd為數以千計的生產部署提供部署服務、元數據的管理以及一致性的維護等。這也使得Torus能夠把關注的焦點從新穎的解決方案上轉移到存儲部分方程上。

現在的存儲方案并非全部為cloud-native而生

如果把現存的存儲解決方案的部署、管理、操作試圖硬塞進現代化的容器集群中實踐,這非常困難,而且成本很高。這種分布式主要是為大機器小集群設計的,而不是像 theGIFEE 倡導的側重于小機器,大集群的窗井。更糟糕的是,商業化的分布式存儲往往需要昂貴的定制軟硬件完成,這樣不僅購買昂貴而且很難和其他的工具集成使用,隨著時間的推移,升級、許可、超過售后器的維修都是大問題。

容器需要持久化的存儲

容器集群比以往的設計更具有動態性,能在遇到自動擴容的場景時做到及時的更新,能夠完成持續交付,能夠及時應對組件加載失敗方便更換的場景。確保能提供以容器微服務的方式為持久化存儲提供啟動、停止、升級,集群節點之間的數據遷移不像簡單的為一個單一服務器運行獨立的應用程序甚至是甚至多個虛擬機提供備份儲存那么的簡單。

現代化集群的存儲必須在網絡端維持統一的可用性,隨著數據在不同容器中處理還需要在一致性基礎上保證管理訪問,就算只是在一個應用程序內部使用,隨著應用版本的增長也需要做到這幾方面。

Torus在架構的設計上通過下列幾個特性解決了這些問題:

  • 擴展性:與etcd類似,Torus也是一種構建塊,可以實現包括分布式塊設備(Distributed block
    device)或大型對象存儲在內不同類型的存儲。Torus使用Go語言編寫并使用gRPC協議,用戶可以方便地用任何語言創建Torus客戶端。
  • 易用性:專門針對集群和Kubernetes等集群流程平臺(Cluster orchestration platform)設計的Torus可用簡單的方法部署和運維,并可隨時縮放。
  • 準確性:Torus使用etcd分布式鍵值數據庫存儲并檢索文件或對象元數據。etcd為必須快速可靠執行的分布式系統核心運作提供了一個堅實、經得起考驗的基礎。
  • 縮放性:Torus目前可縮放至數百個節點,并可將多個共用磁盤以單一存儲池的方式使用。

"我們認識到市場對分布式存儲有明確的需求,它可以解決使用動態化的容器應用,可以利用快速發展到硬件環境。“Packet的CEOZachary Smith說"我們很興奮的看到CoreOS發布第一個真正意義上的分布式存儲解決方案。"

Torus是如何工作的

像core一樣,Torus的核心是一個將接口以傳統文件方式呈現的庫,這個庫使得存儲系統能夠順利實現易于理解的基本文件操作。借助etdc的一致過程進行協調和檢查點操作,這個分布式文件可以通過多種方式暴露給用戶的應用程序。目前Torus支持通過網絡塊設備(NBD)。將這個文件以面向塊(Block-oriented)的存儲進行暴露。Torus為Kubernetes的pod提供了簡單的固定存儲。這樣的設計還可在不遠的未來支持加密和高效率的Reed-Solomon糾錯功能,借此為整個系統提供更有保障的數據有效性和保密性。

部署Torus

Torus可通過Kubernetes快速簡單的部署和管理。目前發布的Torus包含用于在任何Kubernetes集群上以應用程序方式配置和運行Torus的Kubernetes清單。這使得Torus的安裝、管理和升級變成一種簡單,完全在云端完成的操作。一旦集群中的應用spun up,Torus會把固定的容量以插件的形式放入Kubernetes的動態存儲中。為了使應用程序能夠運行在pod,Torus要表現為傳統的文件形式存儲。從現在發布的版本包括演示運行在固定容量Kubernetes上的 PostgreSQL 數據庫服務器,使用Torus作為備份存儲。發布的內容有簡明的操作文檔,使用etcd部署Torus,以及Kubernetes集群,供外部測試使用。

Torus接下來做什么?社區的反饋

Torus的發布僅僅是我們準備建立一個世界級的cloud-native分布式存儲系統的開始,我們還需要很多幫助。請直接到 github 中提供你對項目的幫助和指導。歡迎加入項目的測試,問題提交,加入我們社區的討論。如果你在Francisco 區域,請加入我們下次的 CoreOS會議 上,可以深度探討一下關于Torus的實現細節。

分布式系統工程師兼Go kit創始人Peter Bourgon認為:“分布式存儲一直被視作云原生應用程序難以解決的問題,我對于Torus的潛力感到很滿意,很希望知道CoreOS和這個社區最終將取得怎樣的輝煌成果!”

Tour是一個專門為cloud-native提供的簡單可靠的現代分布式存儲解決方案,也是全球范圍企業級Kubernetes使用的基礎。

 

來自: http://dockone.io/article/1404

 

 本文由用戶 RaymondMYB 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!