如何為 Longhorn 擴(kuò)展對(duì)象存儲(chǔ)能力

2022-12-13 12:09:37 來源:51CTO博客

作者:

王海龍,Rancher 中國社區(qū)技術(shù)經(jīng)理,Linux Foundation APAC Evangelist,負(fù)責(zé) Rancher 中國技術(shù)社區(qū)的維護(hù)和運(yùn)營。擁有 8 年的云計(jì)算領(lǐng)域經(jīng)驗(yàn),經(jīng)歷了 OpenStack 到 Kubernetes 的技術(shù)變革,無論底層操作系統(tǒng) Linux,還是虛擬化 KVM 或是 Docker 容器技術(shù)都有豐富的運(yùn)維和實(shí)踐經(jīng)驗(yàn)。

在云原生環(huán)境中,非常重要的環(huán)節(jié)之一就是提供一個(gè)可以使用標(biāo)準(zhǔn)協(xié)議與客戶端交互的存儲(chǔ)系統(tǒng)。大家可能會(huì)馬上聯(lián)想到簡單存儲(chǔ)服務(wù) S3 (Simple Storage Service)。S3 是一個(gè)龐大的協(xié)議,涵蓋了存儲(chǔ)桶、對(duì)象、密鑰、版本控制、ACL 和區(qū)域等關(guān)鍵概念。


(資料圖片僅供參考)

Longhorn 是 Kubernetes 的分布式塊存儲(chǔ)系統(tǒng),除了支持塊存儲(chǔ)以外,還提供了文件系統(tǒng)能力。那么,Longhorn 能否充當(dāng) S3 的服務(wù)器,并提供單一的 AWS S3 API 接口來訪問后端數(shù)據(jù)存儲(chǔ)呢?

當(dāng)然可以!但是你可能需要一個(gè) S3 網(wǎng)關(guān)來向外部客戶端提供對(duì)數(shù)據(jù)的訪問權(quán)限。

s3gw 項(xiàng)目讓這一切設(shè)想變的可行!

什么是 s3gw?

??s3gw?? 是一項(xiàng)與 S3 兼容的服務(wù),專注于在任何 PVC 支持的 Kubernetes 環(huán)境中進(jìn)行部署,包括 Longhorn。s3gw自成立以來,關(guān)注重點(diǎn)一直在云原生部署上。但是,如果附加了某種形式的存儲(chǔ),s3gw 是可以部署在許多場(chǎng)景中的。

s3gw 基于 Ceph 的 RADOSGW (RGW),但它是作為獨(dú)立服務(wù)運(yùn)行的,沒有 RADOS 集群,并且依賴于 SUSE 存儲(chǔ)團(tuán)隊(duì)持續(xù)開發(fā)的存儲(chǔ)后端。目前 s3gw 仍處于開發(fā)的早期階段,但它已經(jīng)可以用于測(cè)試和使用一些 S3 功能。

以上介紹來自 s3gw 官網(wǎng)的直譯。大家可以把 s3gw 看作一個(gè)減配版的 minio。只不過 s3gw 為了補(bǔ)充 Rancher 產(chǎn)品組合,目前將重心放在和 Longhorn 的適配上,但該工具不限于 Rancher 產(chǎn)品。另外,s3gw 采用的是??Apache License, Version 2.0??,而 minio 部分組件采用的是??GNU AGPLv3 license??。

接下來,本文將介紹如何安裝和使用 s3gw。

部署 s3gw

s3gw 依賴一個(gè)基礎(chǔ)的 Kubernetes 集群和 Longhorn。本次介紹將通過 Rancher 創(chuàng)建一個(gè)下游 K3s 集群,然后通過 Rancher 應(yīng)用商店在下游 K3s 集群中安裝 Longhorn 和 s3gw。

部署 Rancher 和 K3s

為了節(jié)省篇幅,部署 Rancher 和 K3s 的步驟就不在本文中詳細(xì)描述,大家可參考 Rancher 和 K3s 文檔進(jìn)行部署。

演示環(huán)境:

操作系統(tǒng):Ubuntu 20.04.5 LTSRancher 版本:rancher/rancher:v2.7.0下游 K3s 版本:v1.24.8+k3s1s3gw chart:0.8.0Longhorn chart:101.1.0+up1.3.2
部署 Longhorn

通過 Rancher 部署 Longhorn 非常簡單,只需要進(jìn)入下游 K3s 集群,在 Rancher 儀表板左側(cè)Apps下的Charts選擇 Longhorn 便可開始部署 Longhorn:

安裝非常簡單,你不需要更改 chart 中的任何默認(rèn)值。最后,如果一切順利,你應(yīng)該會(huì)看到 Rancher 的控制臺(tái)顯示:

安裝 Longhorn 后,你只需單擊左側(cè) Rancher 菜單中的 Longhorn 菜單即可重定向到 Longhorn 的儀表板:

新安裝的 Longhorn 顯示仍然沒有應(yīng)用程序使用持久卷。

部署 s3gw

和 Longhorn 一樣,你仍然可以使用Apps來安裝 S3gw,你會(huì)在合作伙伴存儲(chǔ)庫中找到可用的 s3gw,如下所示:

你也可以為 s3gw 設(shè)置一些自定義的參數(shù)。

本次 Demo 取消了??Create Storage Class??選項(xiàng),并且修改??Storage Class??為??longhorn??。因?yàn)?Longhorn 已經(jīng)通過 Rancher App 進(jìn)行部署,并且名稱為??longhorn??。

安裝完成后,如果一切順利,你應(yīng)該會(huì)看到 Rancher 的控制臺(tái)顯示:

在 Longhorn 儀表板上,你可以驗(yàn)證應(yīng)用程序是否正在使用 Longhorn 持久卷:

以上,我們就完成了 s3gw 的安裝,接下來,我們就可以驗(yàn)證 S3gw 的使用!

驗(yàn)證 s3gw

默認(rèn)情況下,s3gw chart 配置一個(gè) ingress,該 ingress 指向具有 FQDN 的 S3 網(wǎng)關(guān):??s3gw.local??。因此,你必須在 /etc/hosts 中定義 s3gw.local 指向主機(jī)物理接口之一的 IP 地址。

如果部署 s3gw 時(shí)啟用了 S3 UI,那么也需要將 S3 UI 的 FQDN 加到映射文件中,例如:

35.182.248.120 s3gw.local35.182.248.120 s3gw-ui.local

要測(cè)試 S3 gateway,你可以依賴 s3cmd,它是一個(gè)流行的命令行 S3 客戶端。

安裝后,你可以從 ??https://raw.githubusercontent.com/aquarist-labs/s3gw-core/main/env/s3cmd.cfg?? 獲取 s3cmd 配置文件并將其用于 s3gw。

需要修改文件中的??access_key??和??secret_key??

接下來,你需要做的就是創(chuàng)建一個(gè)目錄,將 s3cmd.cfg 放入其中,最后調(diào)用 s3cmd。

創(chuàng)建 bucket
$ s3cmd -c s3cmd.cfg mb s3://foo
上傳文件到 bucket 中

讓我們創(chuàng)建一個(gè) 1mb 的文件,填充一些隨機(jī)數(shù)據(jù)并將其放入存 bucket 中:

$ dd if=/dev/random bs=1k count=1k of=obj.1mb.bin$ s3cmd -c s3cmd.cfg put obj.1mb.bin s3://foo
列出 bucket 中包含的對(duì)象
$ s3cmd -c s3cmd.cfg ls s3://foo2022-12-02 02:05      1048576  s3://foo/obj.1mb.bin
刪除 bucket
$ s3cmd -c s3cmd.cfg rm s3://foo/obj.1mb.bin

Rancher 備份對(duì)接 S3gw

Rancher 可以通過??rancher-backup operator??來備份和恢復(fù)任何 Kubernetes 集群上的 Rancher,備份文件可以保存在 S3 兼容的對(duì)象存儲(chǔ)中。這樣我們就可以利用??rancher-backup operator??將 Rancher 備份通過 s3gw 存儲(chǔ)在 longhorn 中。

要實(shí)現(xiàn)以上的需求,只需要在創(chuàng)建 Rancher 備份時(shí)選擇??Use an S3-compatible object store??,并設(shè)置 s3gw 的連接參數(shù)即可,以下是示例:

備份創(chuàng)建成功后,可以通過 s3cmd 確認(rèn) Rancher 備份是否上傳到 s3gw:

$ s3cmd -c s3cmd.cfg ls s3://foo2022-12-02 02:09      1048576  s3://foo/obj.1mb.bin2022-12-02 02:55       826155  s3://foo/rancher-backup-demo-455e4847-d18f-4ae5-a960-90ecc5768986-2022-12-02T02-55-36Z.tar.gz

S3gw UI

s3gw Web UI 提供了一種與 s3gw 服務(wù)交互的直觀方式,包括用戶和存儲(chǔ)桶管理,以及對(duì)象資源管理器。

要訪問 s3gw Web UI,可以使用在 chart 中配置的 S3 UI FQDN 訪問 S3 Web UI(本例為:s3gw-ui.local),并使用 chart 中設(shè)置的??Access key??和??Secret key??作為憑證登錄 S3 Web UI(本例為:test/test):

下面是當(dāng)前 UI 版本的一些屏幕截圖,但請(qǐng)記住,我們?nèi)栽诜e極開發(fā)它,它的功能還不完整。

總 結(jié)

本文主要介紹了如何在 Rancher 中安裝 Longhorn/s3gw 以及使用 S3 網(wǎng)關(guān)系統(tǒng)。K3s、Rancher 和 Longhorn 是建立一個(gè)具有彈性和高性能存儲(chǔ)環(huán)境的強(qiáng)大工具,如果你需要將存儲(chǔ)暴露給外部客戶端,那么 s3gw 是一個(gè)非常好的選擇。

標(biāo)簽: 采用的是 一切順利 存儲(chǔ)系統(tǒng)

上一篇:焦點(diǎn)熱訊:CentOS 7 下安裝docker
下一篇:焦點(diǎn)速訊:【Dubbo3入門到精通】「序章介紹說明」Dubbo3新特性概覽的介紹說明