高性能、免運維,博雲開源雲原生本地存儲方案: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。歡迎廣大技術開發者和愛好者前去試用。

 

01 功能亮點

 

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

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

  • 多種調度策略可配

  • 支持帶寬 IOPS 限速

  • 支持 PV 數據自動分層

  • 支持 PV 自動擴容

  • 支持 RAID 管理能力

  • 支持容災轉移能力

  • 提供塊和文件的訪問方式

 

02 Why Carina?

  • Kubernetes 原生支持

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

  • 本地磁盤管理

自動管理本地磁盤,提供 RAID 組建、數據分層、磁盤限速等高級功能。

  • 設備注冊

將本地磁盤注冊為 Kubernetes 設備,參與容器調度評分。

  • 容災轉移

支持在節點刪除,將存儲卷在其他節點重建。

  • 文件和塊存儲

同時支持為容器提供文件存儲和塊存儲,以及在線擴容。

 

03 How it works

 

雲端是標准 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 之間的關系。

 

04 Carina VS Ceph-CSI / NFS-CSI

 

Carina 不同於 Ceph-CSI,NFS-CSI 等 Kubernetes 網絡存儲插件。這些插件為網絡存儲插件,解決了應用在 Kubernetes 場景下數據跟隨的問題,而 Carina 解決的是在數據庫和中間件場景下對掛載設備高性能讀寫的問題。

 

05 Carina 應用場景

 

  • 場景一:數據庫 Redis、Mysql

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

 

  • 場景二:消息服務 rocketmq、activemq

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

 

  • 場景三:普通應用 POD

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

 

06 Join Us

 

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

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

官方郵箱:carina@beyondcent.com

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

 

 

(入群暗號:carina)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM