Longhorn,Kubernetes 云原生分布式塊存儲
本文轉(zhuǎn)載自微信公眾號「黑客下午茶」,作者為少 。轉(zhuǎn)載本文請聯(lián)系黑客下午茶公眾號。
Longhorn 是用于 Kubernetes 的輕量級、可靠且功能強(qiáng)大的分布式塊存儲系統(tǒng)。
Longhorn 使用容器(containers)和微服務(wù)(microservices)實(shí)現(xiàn)分布式塊存儲。 Longhorn 為每個(gè)塊設(shè)備卷(device volume)創(chuàng)建一個(gè)專用的存儲控制器(storage controller), 并跨存儲在多個(gè)節(jié)點(diǎn)上的多個(gè)副本同步復(fù)制該卷。存儲控制器(storage controller)和副本(replicas)本身是使用 Kubernetes 編排的。
功能特性
- 無單點(diǎn)故障的企業(yè)級分布式塊存儲
- 塊存儲增量快照
- 備份到輔助存儲(NFS或S3兼容的對象存儲)建立在高效的更改塊檢測之上
- 定期快照和備份
- 自動化(Automated)、無中斷升級(non-disruptive upgrades)。您可以升級整個(gè) Longhorn 軟件堆棧,而不會中斷正在運(yùn)行的存儲卷。
- 直觀的 GUI 儀表板
Longhorn 是什么?
Longhorn 是 Kubernetes 的輕量級、可靠且易于使用的分布式塊存儲系統(tǒng)。
Longhorn 支持以下架構(gòu):
- AMD64
- ARM64 (實(shí)驗(yàn)性的)
Longhorn 是免費(fèi)的開源軟件。最初由 Rancher Labs 開發(fā),現(xiàn)在作為 Cloud Native Computing Foundation 的沙箱項(xiàng)目進(jìn)行開發(fā)。
使用 Longhorn,您可以:
- 使用 Longhorn 卷作為 Kubernetes 集群中分布式有狀態(tài)應(yīng)用程序的持久存儲
- 將塊存儲劃分為 Longhorn 卷,這樣無論是否有云提供商,都可以使用 Kubernetes 卷
- 跨多個(gè)節(jié)點(diǎn)和數(shù)據(jù)中心復(fù)制塊存儲以提高可用性
- 將備份數(shù)據(jù)存儲在 NFS 或 AWS S3 等外部存儲上
- 創(chuàng)建跨集群災(zāi)難恢復(fù)卷,以便可以從第二個(gè) Kubernetes 集群的備份中快速恢復(fù)來自主 Kubernetes 集群的數(shù)據(jù)
- 安排卷的定期快照,并安排定期備份到 NFS 或 S3 兼容的輔助存儲
- 從備份恢復(fù)卷
- 在不中斷持久卷的情況下升級 Longhorn
Longhorn 帶有獨(dú)立的 UI,可以使用 Helm、kubectl 或 Rancher app catalog 進(jìn)行安裝。
使用微服務(wù)簡化分布式塊存儲
由于現(xiàn)代云環(huán)境需要數(shù)萬到數(shù)百萬的分布式塊存儲卷,一些存儲控制器已經(jīng)成為高度復(fù)雜的分布式系統(tǒng)。相比之下,Longhorn 可以通過將一個(gè)大塊存儲控制器劃分為多個(gè)較小的存儲控制器來簡化存儲系統(tǒng),只要這些卷仍然可以從一個(gè)公共磁盤池構(gòu)建。通過每個(gè)卷使用一個(gè)存儲控制器,Longhorn 將每個(gè)卷變成了一個(gè)微服務(wù)。控制器稱為 Longhorn 引擎。
Longhorn Manager 組件編排 Longhorn 引擎,使它們協(xié)同工作。
在不依賴云提供商的情況下在 Kubernetes 中使用持久化存儲
Pod 可以直接引用存儲,但不推薦這樣做,因?yàn)樗辉试S Pod 或容器是可移植的。相反,應(yīng)在 Kubernetes 持久卷 (PV) 和持久卷聲明 (PVC) 中定義工作負(fù)載的存儲要求。使用 Longhorn,您可以指定卷的大小、IOPS 要求以及在為卷提供存儲資源的主機(jī)上所需的同步副本數(shù)量。然后,您的 Kubernetes 資源可以為每個(gè) Longhorn 卷使用 PVC 和相應(yīng)的 PV, 或者使用 Longhorn 存儲類(storage class)為工作負(fù)載自動創(chuàng)建 PV。
Replicas 在底層磁盤或網(wǎng)絡(luò)存儲上進(jìn)行精簡配置。
跨多個(gè)計(jì)算或存儲主機(jī)調(diào)度多個(gè)副本(Replicas)
為了提高可用性(availability),Longhorn 創(chuàng)建了每個(gè)卷的副本。副本包含卷的一系列快照,每個(gè)快照都存儲來自前一個(gè)快照的更改。卷的每個(gè)副本也在一個(gè)容器中運(yùn)行,因此具有三個(gè)副本的卷會產(chǎn)生四個(gè)容器。
每個(gè)卷的副本數(shù)量可在 Longhorn 中配置,以及將安排副本的節(jié)點(diǎn)。Longhorn 監(jiān)控每個(gè)副本的健康狀況并執(zhí)行修復(fù),并在必要時(shí)重建副本。
為每個(gè)卷分配多個(gè)存儲前端
常見的前端包括 Linux 內(nèi)核設(shè)備(映射在 /dev/longhorn 下)和一個(gè) iSCSI 目標(biāo)。
指定定期快照和備份操作的計(jì)劃
指定這些操作的頻率(每小時(shí)、每天、每周、每月和每年)、執(zhí)行這些操作的確切時(shí)間(例如,每個(gè)星期日凌晨 3:00),以及保留多少定期快照和備份集。
























