1. 程式人生 > >使用HashiCorp Nomad按需分配容器儲存

使用HashiCorp Nomad按需分配容器儲存

這是來自Portworx的解決方案架構師Jeff Silberman的客座文章。

沒有人想要管理儲存,但是高價值的應用程式沒有它是無法執行的。在理想的情況下,儲存“就在那裡”,而不需要考慮它——或者提供和管理它,對嗎?

Portworx是一個針對容器工作負載的軟體定義的持久儲存解決方案,它提供了一個高度可用的彈性資料結構。Portworx雲原生儲存允許作業無縫執行超級融合的儲存層,以獲得最佳效能——同時也為資料可用性提供了豐富的選項。

最重要的是,Portworx非常適合DevOps——它易於部署和使用。

按需儲存

有多容易?那麼,如果您的HashiCorp Nomad作業可以按需儲存,並在執行時提供呢?就像這樣:

[...]
 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"
      }
  [...]

讓我們看看這意味著什麼。當mysql

任務啟動時,mysqlvol將以10GB的size和3倍的複製因子動態建立,確保資料將在3個不同的節點上覆制。

不需要單獨的儲存供應週期,因為容器粒度虛擬卷是按需建立的。

什麼是Portworx ?它是如何工作的?

在底層,Portworx是一個分散式塊裝置驅動程式,作為容器交付,安裝在執行有狀態應用程式的Nomad客戶機上。Portworx並不僅僅充當現有儲存的聯結器,而是與您現有的節點執行高度聚合的關係,為在容器中執行的應用程式提供稀疏的、容器粒度的虛擬卷(和快照)。將塊資料複製到多個節點可以保證高可用性。

Portworx使用kvdb,類似Consul,用於叢集/節點拓撲發現和控制路徑操作——但不用於任何資料路徑操作,因此可以解決圍繞可伸縮性和I/O效能的主要問題。

對於Nomad來說,Portworx執行在system排程器之下,這意味著如果將新的Nomad客戶端新增到叢集中,那麼Portworx也會自動在這些客戶機上執行。system排程器與彈性自動縮放組(ASGs)的概念非常一致,允許Portworx在新的客戶端節點上自動旋轉,無需手動安裝。

Portworx在Nomad客戶端(不是伺服器)上執行。以下是Nomad客戶端需要的相關選項:

client {
  enabled = true
  options {
    "driver.raw_exec.enable" = "1"
    "docker.privileged.enabled" = "true"
  }
}

如果你想深入瞭解,這很簡單。Portworx doc站點已經被更新,包括詳細的(和簡單的)說明如何在Nomad下安裝Portworx。

基礎設施程式碼

“按需儲存”功能與編寫基礎設施的HashiCorp道一致。儲存需求是計算工作負載的一個基本元素,對於持久工作負載更是如此。到目前為止,提供儲存一直是提交“票據”的帶外過程——這是自動化的一個詛咒。現在有了Portworx內聯卷規格——或者“隨需儲存”,“儲存供應週期”就過時了。Jobs根據需要按需儲存。

促進高效的工作流程

容器粒度卷快照是Portworx免費提供的一個有價值的企業特性。快照是即時建立的、在寫入時複製的元資料標記,在建立時不消耗任何空間。更好的是,快照是可讀/可寫的。例如,假設您想要為CICD主構建週期的輸出建立一個副本,以便將其傳遞給多個Jenkins slave以進行並行處理。使用Portworx,您可以通過建立多個卷快照,並讓每個Jenkins slave在它自己的副本上並行操作來實現這一點。計算和儲存效率的提高是顯著的。

自己試試

DevOps的簡單性已經成為一個產品基礎——以內聯體建立功能為例。沒有人想要一個陡峭/複雜的學習曲線,這就是為什麼Portworx讓試驗變得儘可能簡單和無摩擦:該產品附帶一個免費的30天試用許可證,所有功能都啟用了。

自己嘗試這個只有兩個小需求:訪問外部的“kvdb”,比如Consul。主機上的一個或多個未掛載/未格式化的原始裝置(分割槽或磁碟)。

如果您已經有一個工作的Nomad叢集滿足這些需求,那麼您可以立即嘗試一下。這裡有一個用於啟動Portworx的參考Nomad作業檔案

如果您沒有多餘的Nomad叢集可以嘗試,您也可以輕鬆地玩轉。Hashi-Porx AWS儲存庫提供了一個完整的叢集,其中包含AWS中的Portworx/Nomad/Consul。在Hashi-Porx Vagrant 庫中,Nomad和Consul都執行在-dev模式下的一個小小的Portworx叢集上。

少即是多

沒有比這更真實的了,尤其是在DevOps的世界裡。你管理的東西越少,你的生活就會越好。Portworx特別設計來支援DevOps自動化,並允許容器的持久儲存,以便高價值的有狀態應用程式(比如資料庫)能夠在容器中執行。

我們很高興能夠為HashiCorp Nomad生態系統做出貢獻,以更好地實現有意義的自動化工作流——減少實際工作。