高性能、免运维,博云开源云原生本地存储方案:Carina


2021 年 10 月 11 日,博云正式开源 Carina 本地存储方案,Carina 基于 Kubernetes 及 LVM 实现,提供了数据库与中间件等有状态应用在 Kubernetes 中运行所必须的高性能的本地存储能力,极大减少了存储系统的运维压力。今年 9 月,Carina 还以首批成员身份加入了由中国信通院发起的可信开源社区共同体,并获得可信开源项目成员证书。

博客图片.jpg


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
加粗文字

0 个评论

要回复文章请先登录注册