首页 > 其他分享 >高性能、免运维,博云开源云原生本地存储方案:Carina

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

时间:2022-11-30 23:08:51浏览次数:53  
标签:存储 Carina carina 免运维 本地 磁盘 Kubernetes 博云


2021 年 10 月 11 日,博云正式开源 Carina 本地存储方案,Carina 基于 Kubernetes 及 LVM 实现,提供了数据库与中间件等有状态应用在 Kubernetes 中运行所必须的高性能的本地存储能力,极大减少了存储系统的运维压力。

今年9月,Carina 还以首批成员身份加入了由中国信通院发起的可信开源社区共同体,并获得可信开源项目成员证书。

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

Carina 最大的特点是高性能免运维,为中间件、数据库等有状态服务提供了匹配本地磁盘的高 IOPS 和极低延迟的性能指标,同时易安装、自运维能力又极大的减轻了存储系统的运维压力。另外,Carina 还提供了本地磁盘管理能力、PV 高级调度能力、PV 自动分层技术、卷拓扑能力、自动 failover 能力、动态 IO 限速、监控告警、多种存储供给能力等高级功能。

目前, Carina 项目代码已在 Github 上开源,项目地址为:​​https://github.com/carina-io/carina。欢迎广大技术开发者和爱好者前去试用。

功能亮点

  • 灵活高效的供给高 IOPS、低延迟的存储
  • 免运维,自动管理本地磁盘、自动组建 RAID
  • 多种调度策略可配
  • 支持带宽 IOPS 限速
  • 支持 PV 数据自动分层
  • 支持 PV 自动扩容
  • 支持 RAID 管理能力
  • 支持容灾转移能力
  • 提供块和文件的访问方式

Why Carina?

  • Kubernetes原生支持

完全兼容的 Kubernetes API ,无需额外开发,依赖组件很少且均为通用开源组件。

  • 本地磁盘管理

自动管理本地磁盘,提供 RAID 组建、数据分层、磁盘限速等高级功能。

  • 设备注册

将本地磁盘注册为 Kubernetes 设备,参与容器调度评分。

  • 容灾转移

支持在节点删除,将存储卷在其他节点重建。

  • 文件和块存储

同时支持为容器提供文件存储和块存储,以及在线扩容。

How it works

云端是标准 Kubernetes 集群,可以使用任何 CSI 存储插件,比如 Ceph-CSI。在集群中运行carina-controller carina-scheduler 在每个节点运行carina-node。

Carina主要有三部分组成,分别是carina-controllercarina-schedulercarina-node,其架构图如下所示:

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

  • 如上图架构所示,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 VS Ceph-CSI / NFS-CSI

Carina 不同于 Ceph-CSI,NFS-CSI 等 Kubernetes 网络存储插件。这些插件为网络存储插件,解决了应用在 Kubernetes 场景下数据跟随的问题,而 Carina 解决的是在数据库和中间件场景下对挂载设备高性能读写的问题。

Carina 应用场景

  • 场景一:数据库 Redis、Mysql

Redis 作为高性能的内存型数据库缓存服务,同样有数据落盘的需求,而使用网络存储往往有比较大延迟,在使用 Carina 情况下,能够提供和读写本地磁盘一致的性能。Redis 主从模式其本身已经解决了数据多地备份的问题,Carina 并不会提供更多冗余的数据备份,节省了磁盘空间。Mysql 作为严重依赖存储的数据库服务,使用 Carina 提供的存储卷使 Mysql 在云上运行可以获得更接近在物理机上运行的性能。

  • 场景二:消息服务 rocketmq、activemq

大多数消息中间件都是基于内存的,为了维持消息不丢失,消息中间件还是有落盘的需求,比如对于需要 ACK 应答的消息中间件,若是消息非常多,消息服务一般会选择将时间较久的消息落盘,对于消息中间件来说对磁盘性能要求可谓极高,Carina 恰恰提供了等同于本地磁盘的读写性能,且对于消息中间件并未有多副本存储需求,因此 Carina 也避免了存储多副本带来的性能消耗.

  • 场景三:普通应用 POD

Carina 的部署、运维、使用极其简易,可以被当做一般项目的本地存储使用,相当于 hostpath 。与 hostpath 不同的是 hostpath 要求在宿主机建立相关存储目录。Carina 则完全不用关心节点机器,直接创建原生 pvc 即可。

Join Us

Github

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

标签:存储,Carina,carina,免运维,本地,磁盘,Kubernetes,博云
From: https://blog.51cto.com/u_11976981/5900699

相关文章