天天看點

高性能、免運維,博雲開源雲原生本地存儲方案:Carina

2021 年 10 月 11 日,博雲正式開源 Carina 本地存儲方案,Carina 基于 Kubernetes 及 LVM 實作,提供了資料庫與中間件等有狀态應用在 Kubernetes 中運作所必須的高性能的本地存儲能力,極大減少了存儲系統的運維壓力。今年 9 月,Carina 還以首批成員身份加入了由中國信通院發起的可信開源社群共同體,并獲得可信開源項目成員證書。

Carina 最大的特點是高性能和免運維,為中間件、資料庫等有狀态服務提供了比對本地磁盤的高 IOPS 和極低延遲的性能名額,同時易安裝、自運維能力又極大的減輕了存儲系統的運維壓力。另外,Carina 還提供了本地磁盤管理能力、PV 進階排程能力、PV 自動分層技術、卷拓撲能力、自動 failover 能力、動态 IO 限速、監控告警、多種存儲供給能力等進階功能。

目前, Carina 項目代碼已在 Github 上開源,項目位址為:https://github.com/carina-io/carina。歡迎廣大技術開發者和愛好者前去試用。

靈活高效的供給高 IOPS、低延遲的存儲

免運維,自動管理本地磁盤、自動組建 RAID

多種排程政策可配

支援帶寬 IOPS 限速

支援 PV 資料自動分層

支援 PV 自動擴容

支援 RAID 管理能力

支援容災轉移能力

提供塊和檔案的通路方式

Kubernetes 原生支援

完全相容的 Kubernetes API ,無需額外開發,依賴元件很少且均為通用開源元件。

本地磁盤管理

自動管理本地磁盤,提供 RAID 組建、資料分層、磁盤限速等進階功能。

裝置注冊

将本地磁盤注冊為 Kubernetes 裝置,參與容器排程評分。

容災轉移

支援在節點删除,将存儲卷在其他節點重建。

檔案和塊存儲

同時支援為容器提供檔案存儲和塊存儲,以及線上擴容。

雲端是标準 Kubernetes 叢集,可以使用任何 CSI 存儲插件,比如 Ceph-CSI。在叢集中運作 carina-controller carina-scheduler 在每個節點運作 carina-node。

Carina 主要有三部分組成,分别是 carina-controller、carina-scheduler 和 carina-node,其架構圖如下所示:

如上圖架構所示,Carina 能夠自動發現本地裸盤,并根據其磁盤特性劃分為 hdd 磁盤卷組及 ssd 磁盤卷組等,針對于本地資料高可用,Carina 推出了基于 bcache 的磁盤緩存功能以及自動元件 RAID 功能;

Carina-node 是運作在每個節點上的 agent 服務,利用 lvm 技術管理本地磁盤,按照類别将本地磁盤劃分到不同的 VG 卷組,并從中劃分 LV 提供給 POD 使用;

Carina-scheduler 是 kubernetes 的排程插件,負責基于申請的 PV 大小,節點剩餘磁盤空間大小,節點負載使用情況進行合理的排程。預設提供了 spreadout 及 binpack 兩種排程政策;

Carina-controller 是 Carina 的控制平面,監聽 PVC 等資源,維護 PVC,LV 之間的關系。

Carina 不同于 Ceph-CSI,NFS-CSI 等 Kubernetes 網絡存儲插件。這些插件為網絡存儲插件,解決了應用在 Kubernetes 場景下資料跟随的問題,而 Carina 解決的是在資料庫和中間件場景下對挂載裝置高性能讀寫的問題。

場景一:資料庫 Redis、Mysql

Redis 作為高性能的記憶體型資料庫緩存服務,同樣有資料落盤的需求,而使用網絡存儲往往有比較大延遲,在使用 Carina 情況下,能夠提供和讀寫本地磁盤一緻的性能。Redis 主從模式其本身已經解決了資料多地備份的問題,Carina 并不會提供更多備援的資料備份,節省了磁盤空間。Mysql 作為嚴重依賴存儲的資料庫服務,使用 Carina 提供的存儲卷使 Mysql 在雲上運作可以獲得更接近在實體機上運作的性能。

場景二:消息服務 rocketmq、activemq

大多數消息中間件都是基于記憶體的,為了維持消息不丢失,消息中間件還是有落盤的需求,比如對于需要 ACK 應答的消息中間件,若是消息非常多,消息服務一般會選擇将時間較久的消息落盤,對于消息中間件來說對磁盤性能要求可謂極高,Carina 恰恰提供了等同于本地磁盤的讀寫性能,且對于消息中間件并未有多副本存儲需求,是以 Carina 也避免了存儲多副本帶來的性能消耗.

場景三:普通應用 POD

Carina 的部署、運維、使用極其簡易,可以被當做一般項目的本地存儲使用,相當于 hostpath 。與 hostpath 不同的是 hostpath 要求在主控端建立相關存儲目錄。Carina 則完全不用關心節點機器,直接建立原生 pvc 即可。

Github:https://github.com/carina-io/carina

官方網站: http://www.opencarina.io

官方郵箱:[email protected]

微信群:掃碼加入微信交流群👇

(入群暗号:carina)