近日,CoreOS在GitHub上基于Apache 2.0許可證協(xié)議開源了它們的分布式存儲(chǔ)系統(tǒng)Torus。Torus是一種針對(duì)容器集群量身打造的存儲(chǔ)系統(tǒng),可以為通過Kubernetes編排和管理的容器集群提供可靠可擴(kuò)展的存儲(chǔ)。這是繼etcd、rkt、flannel,以及CoreOS Linux之后CoreOS發(fā)布的另一個(gè)開源產(chǎn)品。
分布式系統(tǒng)的過去、現(xiàn)在和將來
分布式系統(tǒng)為物聯(lián)網(wǎng)的安全可靠運(yùn)行奠定了基礎(chǔ)。通過模塊化的方式進(jìn)行構(gòu)建,在工作負(fù)載增加的時(shí)候進(jìn)行擴(kuò)展,同時(shí)確保簡(jiǎn)單易用,并使得不同模塊能夠與其他組件相互配合,這樣的做法解決了大規(guī)模環(huán)境中計(jì)算領(lǐng)域曾經(jīng)面臨過的不少挑戰(zhàn)。
容器技術(shù)一經(jīng)推出就獲得了用戶的普遍認(rèn)可,然而在部署容器集群的過程中,很多用戶都在頭疼一個(gè)問題:
如何將容器運(yùn)行過程中訪問的數(shù)據(jù)固定存儲(chǔ)起來? 如何用一種能夠讓開發(fā)者在任何環(huán)境中順利使用的方式存儲(chǔ)這些信息? 隨著使用過程中容器集群不斷縮放和擴(kuò)展,怎樣保證這些數(shù)據(jù)的一致性和固定性?絕大部分容器集群依然可以使用傳統(tǒng)存儲(chǔ),然而這類系統(tǒng)并非針對(duì)容器這種新技術(shù)量身打造的,這樣的使用不僅會(huì)遇到很多技術(shù)困難,同時(shí)也需要付出極高的成本。
在設(shè)計(jì)上,傳統(tǒng)分布式存儲(chǔ)系統(tǒng)主要適用于由大型計(jì)算機(jī)組成的小規(guī)模集群,而非使用廉價(jià)小型計(jì)算機(jī)組成的大規(guī)模集群,后者才是容器世界中最常用的。此外傳統(tǒng)商用分布式存儲(chǔ)系統(tǒng)通常需要使用昂貴甚至定制的軟硬件,拋開價(jià)格不談,這類系統(tǒng)很難與新興的工具和使用模式進(jìn)行集成。隨著使用時(shí)間的延長(zhǎng),這類系統(tǒng)升級(jí)、許可,以及維護(hù)的成本也將日益增加。
此時(shí)只能通過某種全新的解決方案為容器集群提供存儲(chǔ)。
CoreOS最近發(fā)布的開源分布式存儲(chǔ)系統(tǒng)Torus,在設(shè)計(jì)上可以為通過Kubernetes編排和管理的容器集群提供可靠可擴(kuò)展的存儲(chǔ)。
Torus的架構(gòu)
現(xiàn)代化集群的存儲(chǔ)必須在網(wǎng)絡(luò)端維持統(tǒng)一的可用性,隨著數(shù)據(jù)在不同容器中處理還需要管理訪問并保障一致性,就算只是在一個(gè)應(yīng)用程序內(nèi)部使用,隨著應(yīng)用版本的增長(zhǎng)也需要做到這幾方面。
Torus在架構(gòu)的設(shè)計(jì)上通過下列幾個(gè)特性解決了這些問題:
擴(kuò)展性:與etcd類似,Torus也是一種構(gòu)建塊,可以實(shí)現(xiàn)包括分布式塊設(shè)備(Distributed block device)或大型對(duì)象存儲(chǔ)在內(nèi)不同類型的存儲(chǔ)。Torus使用Go語(yǔ)言編寫并使用gRPC協(xié)議,用戶可以方便地用任何語(yǔ)言創(chuàng)建Torus客戶端。 易用性:專門針對(duì)集群和Kubernetes等集群流程平臺(tái)(Cluster orchestration platform)設(shè)計(jì)的Torus可用簡(jiǎn)單的方法部署和運(yùn)維,并可隨時(shí)縮放。 準(zhǔn)確性:Torus使用etcd分布式鍵值數(shù)據(jù)庫(kù)存儲(chǔ)并檢索文件或?qū)ο笤獢?shù)據(jù)。etcd為必須快速可靠執(zhí)行的分布式系統(tǒng)核心運(yùn)作提供了一個(gè)堅(jiān)實(shí)、經(jīng)得起考驗(yàn)的基礎(chǔ)。 縮放性:Torus目前可縮放至數(shù)百個(gè)節(jié)點(diǎn),并可將多個(gè)共用磁盤以單一存儲(chǔ)池的方式使用。Torus的核心是一個(gè)將接口以傳統(tǒng)文件方式呈現(xiàn)的庫(kù),這個(gè)庫(kù)使得存儲(chǔ)系統(tǒng)能夠順利實(shí)現(xiàn)易于理解的基本文件操作。借助etdc的一致過程(consensus process)進(jìn)行協(xié)調(diào)和檢查點(diǎn)操作,這個(gè)分布式文件可以通過多種方式暴露給用戶的應(yīng)用程序。目前Torus支持通過網(wǎng)絡(luò)塊設(shè)備(Network Block Device,NBD)將這個(gè)文件以面向塊(Block-oriented)的存儲(chǔ)進(jìn)行暴露。
Torus為Kubernetes的pod提供了簡(jiǎn)單的固定存儲(chǔ)
這樣的設(shè)計(jì)還可在不遠(yuǎn)的未來支持加密和高效率的Reed-Solomon糾錯(cuò)功能,借此為整個(gè)系統(tǒng)提供更有保障的數(shù)據(jù)有效性和保密性。
Torus可通過Kubernetes部署和管理。目前首發(fā)的Torus包含用于在任何Kubernetes集群上以應(yīng)用程序方式配置和運(yùn)行Torus的Kubernetes清單。這使得Torus的安裝、管理和升級(jí)變成一種簡(jiǎn)單,完全在云端完成的操作。
據(jù)CoreOS介紹,該公司計(jì)劃在未來讓對(duì)象存儲(chǔ)等其他存儲(chǔ)系統(tǒng)也能基于Torus實(shí)現(xiàn),通過這些分布式文件創(chuàng)建集合,并由etcd負(fù)責(zé)協(xié)調(diào)。
Torus的前景如何?畢竟開源的分布式存儲(chǔ)系統(tǒng)還有很多,例如Ceph、GlusterFS等,但這些系統(tǒng)都是針對(duì)傳統(tǒng)基礎(chǔ)結(jié)構(gòu)設(shè)計(jì)的,有別于Torus這一業(yè)界首個(gè)主要以容器為中心的分布式存儲(chǔ)平臺(tái)。如果Torus能夠按照CoreOS的規(guī)劃繼續(xù)完善,IT管理員很可能會(huì)將其視作一種更為優(yōu)雅和成熟,專門針對(duì)容器打造的固定存儲(chǔ)解決方案。
若想嘗試和體驗(yàn)該產(chǎn)品,可按照這里提供的指南開始運(yùn)行第一個(gè)Torus集群。
社區(qū)反饋
Torus發(fā)布后獲得了大量社區(qū)成員的關(guān)注,大家都對(duì)這種全新的分布式存儲(chǔ)系統(tǒng)表示出巨大的興趣。同時(shí)該項(xiàng)目的相關(guān)工作人員也對(duì)此發(fā)表了自己的看法。
CoreOS產(chǎn)品主管Wei Dang表示:“我們聽到Kubernetes用戶說現(xiàn)有的存儲(chǔ)系統(tǒng)有些難用,希望Torus的使用能簡(jiǎn)單一些。Torus可通過Kubernetes部署到容器內(nèi)部運(yùn)行,能夠?yàn)槎鄠€(gè)微服務(wù)工作負(fù)載提供一個(gè)統(tǒng)一的分布式存儲(chǔ)集群。”
分布式系統(tǒng)工程師兼Go kit創(chuàng)始人Peter Bourgon認(rèn)為:“分布式存儲(chǔ)一直被視作云原生應(yīng)用程序難以解決的問題,我對(duì)于Torus的潛力感到很滿意,很希望知道CoreOS和這個(gè)社區(qū)最終將取得怎樣的輝煌成果!”
Twitter用戶Barak Michener(@barakmich)則認(rèn)為:“Torus的開發(fā)已經(jīng)有段時(shí)間了,特別感謝@coreoslinux給我提供了這次機(jī)會(huì)以及@packethost對(duì)我的幫助,當(dāng)然,還要感謝我的測(cè)試平臺(tái)。”