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