1. 程式人生 > >Torus登場:CoreOS打造的新一代分散式儲存系統

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

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

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

如今CoreOS推出了Torus,它是一種針對容器叢集量身打造的儲存系統,可以為通過Kubernetes編排和管理的容器叢集提供可靠可擴充套件的儲存。

我們相信開源軟體必須及早釋出產品,這樣可以讓更多的開發者、測試者以及貢獻者參與進來,以增進整個社群的進步。所以現在您就可以在Github(https://github.com/coreos/torus)獲取Tours的原型釋出版本,同時我們也鼓勵所有人蔘與測試資料和部署叢集,一併幫助開發完善下一代的分散式儲存。

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

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

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

為什麼我們構建了Torus

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

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

如果把現存的儲存解決方案的部署、管理、操作試圖硬塞進現代化的容器叢集中實踐,這非常困難,而且成本很高。這種分散式主要是為大機器小叢集設計的,而不是像GIFEE(http://www.cio.com/article/3037988/coreos-ceo-containers-are-just-the-beginning.html)倡導的側重於小機器,大叢集的建立。更糟糕的是,商業化的分散式儲存往往需要昂貴的定製軟硬體完成,這樣不僅購買昂貴而且很難和其他的工具整合使用,隨著時間的推移,升級、許可、超過售後器的維修都是大問題。

容器需要持久化的儲存

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

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

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

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

Torus接下來做什麼?社群的反饋

Torus的釋出僅僅是我們準備建立一個世界級的cloud-native分散式儲存系統的開始,我們還需要很多幫助。請直接到GitHub(https://github.com/coreos/torus)中提供你對專案的幫助和指導。歡迎加入專案的測試,問題提交,加入我們社群的討論。如果你在San Francisco區域,請加入我們下次的CoreOS會議,可以深度探討一下關於Torus的實現細節。

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

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

本文為翻譯文章,原文連結:https://coreos.com/blog/torus-distributed-storage-by-coreos.html

譯/張亞龍(攜程開發工程師,Dockone優秀翻譯)

文章出處:Docker