1. 方案背景和挑战
1.1. Mayastor简介
OpenEBS是一个广受欢迎的开源云原生存储解决方案,托管于CNCF(云原生计算基金会)之下,旨在通过扩展Kubernetes的能力,为有状态应用提供灵活的持久性存储。Mayastor是OpenEBS项目中的关键存储引擎,它以其高性能、耐久性和易于管理的特点,为云原生应用提供了理想的存储解决方案。Mayastor的特点包括:
基于NVMe-oF:Mayastor利用NVMe-oF协议,这是一种基于网络的NVMe访问方法,允许NVMe设备通过以太网或其他网络结构进行远程访问,这有助于提高存储系统的性能和可扩展性。
支持多种设备类型:虽然Mayastor优化了NVMe-oF的使用,但它并不要求必须使用NVMe设备或云卷,也可以与其他类型的存储设备配合使用。
与Kubernetes集成:Mayastor作为OpenEBS的一部分,与Kubernetes紧密集成,允许开发人员和运维人员使用Kubernetes的原生工具(如kubectl)来管理和监控存储资源。
Mayastor适用于需要高性能和耐久性存储解决方案的云原生应用场景,特别是在边缘计算、大数据分析、流媒体处理等领域。它可以帮助开发人员构建高可用性和可扩展性的有状态应用,同时降低存储系统的复杂性和成本。通过利用NVMe-oF协议和最新一代固态存储设备的性能能力,Mayastor能够提供低开销的存储抽象,满足有状态应用对持久性存储的需求。
1.2. 问题与挑战
当前Mayastor只提供了NVMe over TCP技术实现数据存储服务,不支持NVMe over RDMA技术,这就不能充分挖掘NVMe SSD盘的性能优势,主要问题和挑战包括:
1、性能瓶颈:
Mayastor依赖于TCP来实现NVMe SSD的数据传输,这意味着它不可避免地继承了TCP的性能瓶颈。TCP的头部开销和拥塞控制机制限制了数据传输的有效速率,尤其是在处理大量小数据包时更为明显。对于需要高速访问和处理的NVMe SSD来说,这种限制可能显著影响Mayastor的整体性能。
2、延迟敏感应用的挑战:
对于那些对延迟要求极高的应用(如高频交易、实时数据分析等),Mayastor当前的TCP实现可能无法提供足够的低延迟保证。TCP的延迟增加和抖动问题可能导致这些应用的性能下降,从而影响业务决策的时效性和准确性。
3、资源消耗:
在高并发场景下,Mayastor处理TCP数据包时涉及的频繁中断和上下文切换会显著增加CPU的负载。这不仅会降低系统整体的计算效率,还可能影响Mayastor处理其他存储请求的能力,导致整体性能下降。
2. 方案介绍
2.1. 整体架构
本方案是基于驭云ycloud-csi架构,将Mayastor整合进来,通过Gateway提供数据通路的RDMA加速,提高IO性能。在Host侧通过DPU卸载,可以进一步解放工作节点上的CPU负载,获取更好的应用性能。整体架构如下所示(标绿和标蓝部分是自研组件):
本方案将不同的组件分别部署在不同的node,主要包含:
- Master Node上,部署 csi的控制器csi-controller,用于创建volume和NVMe-oF target。
- Worker Node上,部署csi-node-host,配合csi-node-dpu,通过volumeattachment发现DPU挂载的NVMe盘,然后执行绑定或者格式化。
- DPU上,部署csi-node-dpu和opi-bridge。opi-bridge是卡对opi-api存储的实现;csi-node-dpu 负责给host侧挂盘。
- Stor