Longhorn,Kubernetes 雲原生分散式塊存儲
- 2021 年 8 月 17 日
- 筆記
Longhorn 是用於 Kubernetes 的輕量級、可靠且功能強大的分散式塊存儲系統。
Longhorn
使用容器(containers
)和微服務(microservices
)實現分散式塊存儲。
Longhorn
為每個塊設備卷(device volume
)創建一個專用的存儲控制器(storage controller
),
並跨存儲在多個節點上的多個副本同步複製該卷。存儲控制器(storage controller
)和副本(replicas
)本身是使用 Kubernetes 編排的。
功能特性
- 無單點故障的企業級分散式塊存儲
- 塊存儲增量快照
- 備份到輔助存儲(NFS或S3兼容的對象存儲)建立在高效的更改塊檢測之上
- 定期快照和備份
- 自動化(
Automated
)、無中斷升級(non-disruptive upgrades
)。您可以升級整個Longhorn
軟體堆棧,而不會中斷正在運行的存儲卷。 - 直觀的
GUI
儀錶板
Longhorn 是什麼?
Longhorn
是 Kubernetes
的輕量級、可靠且易於使用的分散式塊存儲系統。
Longhorn
支援以下架構:
AMD64
ARM64
(實驗性的)
Longhorn
是免費的開源軟體。最初由 Rancher Labs
開發,現在作為 Cloud Native Computing Foundation
的沙箱項目進行開發。
使用 Longhorn
,您可以:
- 使用
Longhorn
卷作為Kubernetes
集群中分散式有狀態應用程式的持久存儲 - 將塊存儲劃分為
Longhorn
卷,這樣無論是否有雲提供商,都可以使用Kubernetes
卷 - 跨多個節點和數據中心複製塊存儲以提高可用性
- 將備份數據存儲在
NFS
或AWS S3
等外部存儲上 - 創建跨集群災難恢復卷,以便可以從第二個
Kubernetes
集群的備份中快速恢復來自主Kubernetes
集群的數據 - 安排卷的定期快照,並安排定期備份到
NFS
或S3
兼容的輔助存儲 - 從備份恢復卷
- 在不中斷持久卷的情況下升級
Longhorn
Longhorn
帶有獨立的 UI
,可以使用 Helm
、kubectl
或 Rancher 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
),以及保留多少定期快照和備份集。