使用HashiCorp Nomad按需分配容器存储
這是來(lái)自Portworx的解決方案架構(gòu)師Jeff Silberman的客座文章。
沒有人想要管理存儲(chǔ),但是高價(jià)值的應(yīng)用程序沒有它是無(wú)法運(yùn)行的。在理想的情況下,存儲(chǔ)“就在那里”,而不需要考慮它——或者提供和管理它,對(duì)嗎?
Portworx是一個(gè)針對(duì)容器工作負(fù)載的軟件定義的持久存儲(chǔ)解決方案,它提供了一個(gè)高度可用的彈性數(shù)據(jù)結(jié)構(gòu)。Portworx云原生存儲(chǔ)允許作業(yè)無(wú)縫運(yùn)行超級(jí)融合的存儲(chǔ)層,以獲得最佳性能——同時(shí)也為數(shù)據(jù)可用性提供了豐富的選項(xiàng)。
最重要的是,Portworx非常適合DevOps——它易于部署和使用。
按需存儲(chǔ)
有多容易?那么,如果您的HashiCorp Nomad作業(yè)可以按需存儲(chǔ),并在運(yùn)行時(shí)提供呢?就像這樣:
[...]task "mysql-server" {driver = "docker"config {image = "mysql/mysql-server:8.0"port_map {db = 3306}volumes = ["name=mysqlvol,size=10,repl=3/:/var/lib/mysql",]volume_driver = "pxd"}[...]讓我們看看這意味著什么。當(dāng)mysql任務(wù)啟動(dòng)時(shí),mysqlvol將以10GB的size和3倍的復(fù)制因子動(dòng)態(tài)創(chuàng)建,確保數(shù)據(jù)將在3個(gè)不同的節(jié)點(diǎn)上復(fù)制。
不需要單獨(dú)的存儲(chǔ)供應(yīng)周期,因?yàn)槿萜髁6忍摂M卷是按需創(chuàng)建的。
什么是Portworx ?它是如何工作的?
在底層,Portworx是一個(gè)分布式塊設(shè)備驅(qū)動(dòng)程序,作為容器交付,安裝在運(yùn)行有狀態(tài)應(yīng)用程序的Nomad客戶機(jī)上。Portworx并不僅僅充當(dāng)現(xiàn)有存儲(chǔ)的連接器,而是與您現(xiàn)有的節(jié)點(diǎn)運(yùn)行高度聚合的關(guān)系,為在容器中運(yùn)行的應(yīng)用程序提供稀疏的、容器粒度的虛擬卷(和快照)。將塊數(shù)據(jù)復(fù)制到多個(gè)節(jié)點(diǎn)可以保證高可用性。
Portworx使用kvdb,類似Consul,用于集群/節(jié)點(diǎn)拓?fù)浒l(fā)現(xiàn)和控制路徑操作——但不用于任何數(shù)據(jù)路徑操作,因此可以解決圍繞可伸縮性和I/O性能的主要問題。
對(duì)于Nomad來(lái)說(shuō),Portworx運(yùn)行在system調(diào)度器之下,這意味著如果將新的Nomad客戶端添加到集群中,那么Portworx也會(huì)自動(dòng)在這些客戶機(jī)上運(yùn)行。system調(diào)度器與彈性自動(dòng)縮放組(ASGs)的概念非常一致,允許Portworx在新的客戶端節(jié)點(diǎn)上自動(dòng)旋轉(zhuǎn),無(wú)需手動(dòng)安裝。
Portworx在Nomad客戶端(不是服務(wù)器)上運(yùn)行。以下是Nomad客戶端需要的相關(guān)選項(xiàng):
client {enabled = trueoptions {"driver.raw_exec.enable" = "1""docker.privileged.enabled" = "true"} }如果你想深入了解,這很簡(jiǎn)單。Portworx doc站點(diǎn)已經(jīng)被更新,包括詳細(xì)的(和簡(jiǎn)單的)說(shuō)明如何在Nomad下安裝Portworx。
基礎(chǔ)設(shè)施代碼
“按需存儲(chǔ)”功能與編寫基礎(chǔ)設(shè)施的HashiCorp道一致。存儲(chǔ)需求是計(jì)算工作負(fù)載的一個(gè)基本元素,對(duì)于持久工作負(fù)載更是如此。到目前為止,提供存儲(chǔ)一直是提交“票據(jù)”的帶外過程——這是自動(dòng)化的一個(gè)詛咒。現(xiàn)在有了Portworx內(nèi)聯(lián)卷規(guī)格——或者“隨需存儲(chǔ)”,“存儲(chǔ)供應(yīng)周期”就過時(shí)了。Jobs根據(jù)需要按需存儲(chǔ)。
促進(jìn)高效的工作流程
容器粒度卷快照是Portworx免費(fèi)提供的一個(gè)有價(jià)值的企業(yè)特性。快照是即時(shí)創(chuàng)建的、在寫入時(shí)復(fù)制的元數(shù)據(jù)標(biāo)記,在創(chuàng)建時(shí)不消耗任何空間。更好的是,快照是可讀/可寫的。例如,假設(shè)您想要為CICD主構(gòu)建周期的輸出創(chuàng)建一個(gè)副本,以便將其傳遞給多個(gè)Jenkins slave以進(jìn)行并行處理。使用Portworx,您可以通過創(chuàng)建多個(gè)卷快照,并讓每個(gè)Jenkins slave在它自己的副本上并行操作來(lái)實(shí)現(xiàn)這一點(diǎn)。計(jì)算和存儲(chǔ)效率的提高是顯著的。
自己試試
DevOps的簡(jiǎn)單性已經(jīng)成為一個(gè)產(chǎn)品基礎(chǔ)——以內(nèi)聯(lián)體創(chuàng)建功能為例。沒有人想要一個(gè)陡峭/復(fù)雜的學(xué)習(xí)曲線,這就是為什么Portworx讓試驗(yàn)變得盡可能簡(jiǎn)單和無(wú)摩擦:該產(chǎn)品附帶一個(gè)免費(fèi)的30天試用許可證,所有功能都啟用了。
自己嘗試這個(gè)只有兩個(gè)小需求:訪問外部的“kvdb”,比如Consul。主機(jī)上的一個(gè)或多個(gè)未掛載/未格式化的原始設(shè)備(分區(qū)或磁盤)。
如果您已經(jīng)有一個(gè)工作的Nomad集群滿足這些需求,那么您可以立即嘗試一下。這里有一個(gè)用于啟動(dòng)Portworx的參考Nomad作業(yè)文件。
如果您沒有多余的Nomad集群可以嘗試,您也可以輕松地玩轉(zhuǎn)。Hashi-Porx AWS存儲(chǔ)庫(kù)提供了一個(gè)完整的集群,其中包含AWS中的Portworx/Nomad/Consul。在Hashi-Porx Vagrant 庫(kù)中,Nomad和Consul都運(yùn)行在-dev模式下的一個(gè)小小的Portworx集群上。
少即是多
沒有比這更真實(shí)的了,尤其是在DevOps的世界里。你管理的東西越少,你的生活就會(huì)越好。Portworx特別設(shè)計(jì)來(lái)支持DevOps自動(dòng)化,并允許容器的持久存儲(chǔ),以便高價(jià)值的有狀態(tài)應(yīng)用程序(比如數(shù)據(jù)庫(kù))能夠在容器中運(yùn)行。
我們很高興能夠?yàn)镠ashiCorp Nomad生態(tài)系統(tǒng)做出貢獻(xiàn),以更好地實(shí)現(xiàn)有意義的自動(dòng)化工作流——減少實(shí)際工作。
總結(jié)
以上是生活随笔為你收集整理的使用HashiCorp Nomad按需分配容器存储的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: BaaS后端即服务 - 分析篇
- 下一篇: Consul与外部服务