Longhorn,Kubernetes 雲原生分散式塊儲存

為少發表於2021-08-16

Longhorn 是用於 Kubernetes 的輕量級、可靠且功能強大的分散式塊儲存系統。

Longhorn 使用容器(containers)和微服務(microservices)實現分散式塊儲存。
Longhorn 為每個塊裝置卷(device volume)建立一個專用的儲存控制器(storage controller),
並跨儲存在多個節點上的多個副本同步複製該卷。儲存控制器(storage controller)和副本(replicas)本身是使用 Kubernetes 編排的。

功能特性

  • 無單點故障的企業級分散式塊儲存
  • 塊儲存增量快照
  • 備份到輔助儲存(NFSS3相容的物件儲存)建立在高效的更改塊檢測之上
  • 定期快照和備份
  • 自動化(Automated)、無中斷升級(non-disruptive upgrades)。您可以升級整個 Longhorn 軟體堆疊,而不會中斷正在執行的儲存卷。
  • 直觀的 GUI 儀表板

Longhorn 是什麼?

LonghornKubernetes 的輕量級、可靠且易於使用的分散式塊儲存系統。

Longhorn 支援以下架構:

  1. AMD64
  2. ARM64 (實驗性的)

Longhorn 是免費的開源軟體。最初由 Rancher Labs 開發,現在作為 Cloud Native Computing Foundation 的沙箱專案進行開發。

使用 Longhorn,您可以:

  • 使用 Longhorn 卷作為 Kubernetes 叢集中分散式有狀態應用程式的持久儲存
  • 將塊儲存劃分為 Longhorn 卷,這樣無論是否有云提供商,都可以使用 Kubernetes
  • 跨多個節點和資料中心複製塊儲存以提高可用性
  • 將備份資料儲存在 NFSAWS S3 等外部儲存上
  • 建立跨叢集災難恢復卷,以便可以從第二個 Kubernetes 叢集的備份中快速恢復來自主 Kubernetes 叢集的資料
  • 安排卷的定期快照,並安排定期備份到 NFSS3 相容的輔助儲存
  • 從備份恢復卷
  • 在不中斷持久卷的情況下升級 Longhorn

Longhorn 帶有獨立的 UI,可以使用 HelmkubectlRancher app catalog 進行安裝。

使用微服務簡化分散式塊儲存

由於現代雲環境需要數萬到數百萬的分散式塊儲存卷,一些儲存控制器已經成為高度複雜的分散式系統。
相比之下,Longhorn 可以通過將一個大塊儲存控制器劃分為多個較小的儲存控制器來簡化儲存系統,只要這些卷仍然可以從一個公共磁碟池構建。
通過每個卷使用一個儲存控制器,Longhorn 將每個卷變成了一個微服務。控制器稱為 Longhorn 引擎。

Longhorn Manager 元件編排 Longhorn 引擎,使它們協同工作。

在不依賴雲提供商的情況下在 Kubernetes 中使用持久化儲存

Pod 可以直接引用儲存,但不推薦這樣做,因為它不允許 Pod 或容器是可移植的。
相反,應在 Kubernetes 持久卷 (PV) 和持久卷宣告 (PVC) 中定義工作負載的儲存要求。
使用 Longhorn,您可以指定卷的大小、IOPS 要求以及在為卷提供儲存資源的主機上所需的同步副本數量。
然後,您的 Kubernetes 資源可以為每個 Longhorn 卷使用 PVC 和相應的 PV
或者使用 Longhorn 儲存類(storage class)為工作負載自動建立 PV

Replicas 在底層磁碟或網路儲存上進行精簡配置。

跨多個計算或儲存主機排程多個副本(Replicas)

為了提高可用性(availability),Longhorn 建立了每個卷的副本。副本包含卷的一系列快照,每個快照都儲存來自前一個快照的更改。
卷的每個副本也在一個容器中執行,因此具有三個副本的卷會產生四個容器。

每個卷的副本數量可在 Longhorn 中配置,以及將安排副本的節點。Longhorn 監控每個副本的健康狀況並執行修復,並在必要時重建副本。

為每個卷分配多個儲存前端

常見的前端包括 Linux 核心裝置(對映在 /dev/longhorn 下)和一個 iSCSI 目標。

指定定期快照和備份操作的計劃

指定這些操作的頻率(每小時、每天、每週、每月和每年)、執行這些操作的確切時間(例如,每個星期日凌晨 3:00),以及保留多少定期快照和備份集。

相關文章