基于DPU的OpenStack裸金属服务快速部署及存储解决方案

news2024/12/28 3:34:04

1 方案背景和挑战

Openstack作为开源云计算领域的领军项目,凭借其强大的功能、灵活的架构以及活跃的社区支持,在全球范围内得到了广泛的采用。通过Openstack,企业和云服务提供商可以更加高效地管理和利用计算资源、存储资源和网络资源,实现业务的快速部署和灵活扩展,从而赢得市场竞争的先机。

Ironic作为Openstack的关键组件,提供了对裸金属服务的全面管理。通过Ironic,用户可以在云环境中直接控制和管理实体硬件,实现裸金属服务器的自动化部署、管理和监控。

原生的Ironic 采用本地物理盘进行启动,其首先将远程镜像下载并写入到本地物理盘中,然后再从本地盘启动进入系统。过程如下:

可以看到,其重点是通过方案具有以下问题和挑战:

a. 部署启动周期长(20分钟左右),业务敏捷性低,用户体验差

(1)两次启动:在部署裸金属服务器时,首先会通过PXE启动一个小的、临时的系统环境,IPA会启动并执行部署任务。部署完成后,服务器会从已安装的操作系统启动。这两次启动过程增加了整体部署时间。

(2)镜像下载:IPA需要从Glance下载完整的用户镜像到内存中或临时存储,这个下载过程取决于镜像的大小和网络条件,可能会非常耗时。对于大型镜像或网络条件不佳的环境,这个步骤可能成为瓶颈。

(3)镜像写入本地盘:下载完镜像后,IPA还需要将这个镜像写入到服务器的本地磁盘上。这个过程也取决于磁盘的写入速度和镜像的大小,可能会进一步增加部署时间。

b. 消耗大量带宽,影响整体网络应用性能

全量下载系统镜像会消耗大量的网络带宽,尤其是在多节点部署或频繁更新镜像的场景下。这不仅增加了网络负载,还可能影响其他网络应用的性能。

c. 系统盘无法扩容,敏捷性和弹性低

在当前部署模型中,用户镜像被直接写入到服务器的本地磁盘上,并且通常是作为一个固定的分区或文件系统来配置的。这意味着如果后续需要增加系统盘的容量(例如,因为数据量增长或应用需求变化),可能需要重新部署整个服务器,这既耗时又复杂。

d. 依赖外部组件,增加系统复杂度和成本

部署过程依赖于多个外部组件,如PXE、TFTP、DHCP等,这些组件需要正确配置和维护。任何一个组件的故障都可能导致部署失败,增加了系统的复杂性和维护成本。

2 方案介绍

2.1 整体架构

为了解决OpenStack Ironic裸金属服务方案的问题,中科驭数基于DPU开发了ironic裸金属服务解决方案,整体架构图如下:

在本方案中,DPU支持裸金属服务器的网络和存储资源虚拟化,使得物理服务器能够像虚拟机一样灵活配置,动态添加或删除网卡、硬盘等资源。这为裸金属服务器提供了类似云服务的弹性,同时保持了物理机级别的性能。另外,DPU能够管理远程存储资源,如云盘,使得裸金属服务器可以使用云存储服务,同时通过DPU加速存储I/O,提高读写性能,使得云盘接近本地存储的体验。

本方案主要涉及glance、cinder、nova、neutron、ironic模块。仍然使用ironic node资源管理裸金属实例。在开源ironic组件(ironic-api、ironic-conductor)之外,自研了ironic-dpu-agent组件,运行在每个裸金属节点的DPU Soc中,用于管理裸金属实例的存储、网络资源。本方案主要包含以下系统组件:

  • Nova:对接ironic,为裸金属提供和虚拟机一致的操作。
  • Ironic-api:裸金属rest api服务。
  • Ironic-conductor:裸金属实例的任务控制服务,负责裸金属开关机、重启、部署等任务。
  • Ironic-dpu-agent:运行在DPU Soc上,与ironic-conductor通过RPC通信,负责管理本节点裸金属实例的存储、网络资源。在裸金属部署阶段,接收ironic-conductor下发的部署指令,在DPU内连接云盘并挂载到host。在裸金属运行时,接收ironic-conductor下发的添加、删除磁盘指令,为host动态添加、删除磁盘。\
  • Volume-attacher:负责裸金属磁盘的挂载、卸载操作。
  • Neutron:OpenStack网络服务,为裸金属实例提供network、subnet、port管理功能。
  • Cinder:OpenStack块存储服务,为裸金属实例提供云盘创建、删除等管理功能。
  • Glance:OpenStack镜像管理服务,为裸金属实例提供镜像上传、下载功能。

2.2 方案描述

在基于DPU的OpenStack裸金属服务方案下,实现了裸金属的部署启动、云盘热插拔、cloudinit、冷迁移等常用功能,以下对主要部分做详细描述,并和传统ironic方案进行部分对比。

2.2.1 基于DPU的无盘启动方案

在基于 DPU 的方案中,我们采用直接挂载云盘系统的方式,不使用本地盘,过程如下:

  • nova-api接收到创建裸金属实例请求,调用nova-scheduler调度出ironic node。
  • nova-scheduler调用nova-compute孵化裸金属实例。
  • nova-compute根据指定的镜像,调用cinder创建出系统盘volume,cinder调用后端存储以快照方式克隆镜像卷,并不是完整拷贝,速度很快,一般在数秒内完成。
  • nova-compute的ironic virt driver根据指定的cinder volume在ironic中创建node的volume target,作为裸金属实例的云盘。之后调用ironic-api部署node。
  • ironic-conductor的dpu deploy driver调用node所对应的ironic-dpu-agent执行部署任务。
  • ironic-dpu-agent根据volume target在dpu内调用spdk映射云盘,给host侧挂载对应的系统盘。
  • 系统盘挂载完成后,ironic-conductor通过BMC重启裸金属节点,此时BIOS能扫描到系统盘,启动进入系统,裸金属启动完成。

和 Ironic 传统方案相比,没有PXE过程,也只需启动一次。

2.2.2 存储对接

Ironic 原生存储对接方案:

ironic的存储对接在host侧,host网络需和存储网络连通,且host中需安装相关组件,如下图:

为了完成云盘的挂载/卸载,host 中需要安装一个 ironic-agent,其调用 iscsi-initiator 或相应的存储客户端完成云盘的挂载/卸载操作。Ironic 的 StorageDriver 会配置好存储服务端,并调用 ironic-agent 完成云盘的操作。

基于DPU的存储对接方案:

在基于DPU 的方案中,系统盘和数据盘统一使用云盘,云盘由volume-attacher组件进行分配挂载。裸金属上看到的盘,是DPU 上的 spdk 通过 PCIE 模拟的设备。存储网络也是由 ovs 连接的和配置的。如下图所示:

相比于 Ironic 方案,DPU 方案有以下优势:

  • 存储网络统一走DPU侧,隐藏了存储网络的细节,并可利用 DPU 进行网络加速;
  • 兼容cinder后端存储,存储系统无需适配。云盘是通过cinder创建的,volume-attacher配置spdk连接云盘,模拟出对应的磁盘给到裸金属。
2.2.3 硬盘热插拔

如Ironic存储对接方案中所示,Ironic 中的 StorageDriver 调用 host 中的 ironic-agent 完成硬盘热插拔,用户镜像需安装相关依赖。

在基于 DPU 的方案中,由于裸金属上的盘是 DPU 通过PCIE 模拟的,因此,通过动态调整 DPU 上的 spdk 配置,即可实现硬盘的热插拔。

3 方案测试结果

3.1 创建裸金属实例

与创建虚拟机流程类似,选择裸金属的flavor和镜像进行创建。

可以看到bm01、bm02两个裸金属实例,均为active状态。通过nova创建裸金属实例,ironic node中会关联instance uuid。

3.2 部署启动时间

我们定义裸金属的部署启动时间为:下发创建裸金属实例的命令,到裸金属实例网络IP可以ping通的时间。

在联创万通 LCWT R7220 服务器上,镜像 OS 为 Ubuntu 22.04 Server,内核版本为5.15.0-106-generic 时测得的启动时间:从创建到可 ping 通共耗时 161 秒(2min41s)。

基于 DPU 的裸金属服务方案启动时间在 2-3min 内,具体耗时取决于服务器类型和镜像版本。相比之下,我们测试传统 Ironic 本地盘方式在 20min 以上。

3.3 添加磁盘

添加磁盘前,裸金属系统内看到的磁盘列表:

添加磁盘后,裸金属系统内看到的磁盘列表,nvme2n1是新添加的磁盘:

3.4 删除磁盘

删除磁盘前,裸金属系统内看到的磁盘列表:

删除磁盘后,裸金属系统内看到的磁盘列表,nvme2n1被删除:

3.5 存储 iops 和吞吐

测试结果如下:

分类

测试项

写iops

写吞吐

读iops

读吞吐

随机读写

NVMe-OF+DPU+NVMe 盘

682k

2662MiB/s

736k

2868MiB/s

NVMe本地物理盘

684k

2667MiB/s

980k

3849MiB/s

顺序读写

NVMe-OF+DPU+NVMe 盘

682k

2667MiB/s

705k

2761MiB/s

NVMe本地物理盘

686k

2673MiB/s

991k

3892MiB/s

各测试项说明:

  1. 测试项中的NVMe-OF均指NVMe-OF over RDMA
  2. NVMe-OF+DPU+NVMe盘:基于 DPU 通过NVMe-OF协议连接Target,Target 后端是 NVMe物理盘
  3. NVMe物理盘:直接对NVMe物理盘进行测试

可以看到,基于NVMe-OF的卸载方式下,DPU可以达到和NVMe本地盘近似的性能,几乎没有性能损耗。

4 方案优势

基于DPU的方案相较于传统的Ironic裸金属方案,在多个方面展现出了显著的优势。以下是这些优势的详细描述:

a. 交付效率显著提升,大幅改善最终用户体验

云盘启动加速:传统Ironic方案多采用本地盘启动方式,这一过程涉及到镜像的下载、安装及配置,耗时较长,通常需要20分钟左右。而基于DPU的方案采用云盘启动,通过预先配置好的云盘镜像,可以极大地缩短启动时间至2-5分钟。这种快速启动能力对于需要快速部署和扩展的云环境尤为重要,能够显著提升资源交付的效率和灵活性。

b. 存算分离,提升服务敏捷性和弹性

基于DPU的方案实现了存储与计算资源的分离,这种设计使得计算和存储资源可以独立扩展和优化。当业务需求变化时,可以迅速调整计算或存储资源,而无需对整个系统进行大规模的调整,从而提升了服务的敏捷性和弹性。此外,存算分离还有助于实现资源的更高效利用,避免了资源瓶颈和浪费。这种特性对于需要快速响应市场变化和灵活调整业务规模的云环境尤为重要。

c. 控制面与数据面分离,提升安全性和资源利用率

控制面与数据面下沉至DPU:通过将控制面和数据面处理任务下沉到DPU,不仅减轻了Host CPU的负担,还实现了对存储网络和后端存储细节的隐藏。这种设计提升了系统的安全性,防止了潜在的安全威胁,还使得Host侧的资源能够完全专注于业务处理,从而提高了资源利用率。

不侵入用户镜像:基于DPU的方案不依赖于用户镜像进行功能实现,避免了因镜像更新或修改导致的兼容性问题,同时也简化了用户镜像的管理和维护工作。

d. 架构简化,降低复杂度和维护成本

不依赖PXE等组件:传统Ironic方案可能需要依赖PXE(预启动执行环境)等组件来实现网络启动和镜像部署。而基于DPU的方案则通过内置的网络和存储功能,实现了更为简洁的架构设计,降低了系统的复杂度和维护成本。

e. 性能优化,接近本地盘体验

硬件加速利用:DPU内置了多种硬件加速功能,能够充分利用这些特性来提升云盘的性能表现。从测试数据中可以看到,在基于DPU的方案中,云盘性能可以达到接近甚至等同于本地盘的性能水平,为用户提供了更加流畅和高效的数据访问体验。

综上所述,基于DPU的方案在交付效率、存储支持、安全性与资源利用率、架构简化以及性能优化等方面均展现出了显著的优势,为裸金属云服务的发展提供了新的动力和方向。

本方案来自于中科驭数软件研发团队,团队核心由一群在云计算、数据中心架构、高性能计算领域深耕多年的业界资深架构师和技术专家组成,不仅拥有丰富的实战经验,还对行业趋势具备敏锐的洞察力,该团队致力于探索、设计、开发、推广可落地的高性能云计算解决方案,帮助最终客户加速数字化转型,提升业务效能,同时降低运营成本。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2160450.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

秋招面试准备:《小米2024数字芯片岗面试题》

在数字芯片设计的浪潮中,验证工程师的角色愈发重要。他们如同守门人,确保每一块芯片在投入市场前都能稳定、高效地运行。小米,作为全球知名的智能设备制造商,对数字芯片岗位的人才选拔尤为严格。 本文分享《小米2024数字芯片岗面…

Cat2Bug-Platform报告功能介绍

报告 报告是对团队、项目、测试用例、缺陷、交付物等工作管理做出的总结性报表,目前可通过OPEN API方式创建。 报告列表 报告列表中展示了已经提交的报表信息,点击某一个报告后可查看报告详情,报告可通过markdown格式展示,如下…

Java List初始化的六种方式

在日常的开发中,List作为我们常用的一种数据结构,那么有谁了解过在Java中如何对一个List进行初始化操作。在这些初始化操作中又有哪些遇到的坑呢? 1、常规方式 List<String> languageList = new ArrayList<>(); languageList.add("Java"); language…

C#使用实体类Entity Framework Core操作mysql入门:从数据库反向生成模型

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 源码指引&#xff1a;github源…

如何构建出更好的大模型RAG系统?

ChatGPT爆火之后&#xff0c;以ChatPDF为首的产品组合掀起了知识库问答的热潮。 在过去一整年中&#xff0c;大多数人都在完成RAG系统到高级RAG系统的迭代升级。但是技术发展是迅速的&#xff0c;如何深入了解RAG的发展&#xff0c;做出更好的RAG系统&#xff0c;其实还是非常…

32岁前端干了8年,是继续做前端开发,还是转其它工作_ui设计师转开发

前端发展有瓶颈&#xff0c;变来变去都是那一套&#xff0c;只是换了框架换了环境。换了框架后又得去学习&#xff0c;虽然很快上手&#xff0c;但是那些刚毕业的也很快上手了&#xff0c;入门门槛越来越低&#xff0c;想转行或继续卷&#xff0c;该如何破圈? 这是一位网友的自…

使用SBP打AssetBundle时脚本引用丢失

1&#xff09;使用SBP打AssetBundle时脚本引用丢失 2&#xff09;在UE 5.3中连接Power节点为何10的3次幂等于1009 3&#xff09;如何在Widget中倾斜一张纹理贴图 4&#xff09;如何在打开关卡蓝图时更改游戏模式 这是第401篇UWA技术知识分享的推送&#xff0c;精选了UWA社区的热…

uni-app快速入门

目录 一、什么是 uni-app二、快速创建 uni-app 项目1.创建 uni-app2.运行 uni-app 三、uni-app 相对传统 H5 的变化1.网络模型的变化2.文件类型变化3.文件内代码架构的变化4.外部文件引用方式变化5.组件/标签的变化6.js的变化&#xff08;1&#xff09;运行环境从浏览器变成v8引…

MCU自动测量单元采集振弦式应变计测值的过程

振弦式应变计是一种广泛应用于土木工程、地质勘探等领域的高精度传感器&#xff0c;用于测量结构的应变变化。近年来&#xff0c;随着微控制器单元(MCU)的发展&#xff0c;自动化测量技术得到了极大的提升&#xff0c;使得振弦式应变计的测值采集更加高效和精确。本文将详细介绍…

关于 mybatis-plus-boot-starter 与 mybatis-spring-boot-starter 的错误

不是知道你是否 出现过这样的错误 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): 经过各种度娘&#xff0c;无非就是让你检查三种情况 情况一&#xff1a;mapper.xml没有按照传统的maven架构进行放置 情况二&#xff1a;mybatis的配置信…

C语言实现简单凯撒密码算法

**实验2&#xff1a;传统密码技术 【实验目的】 通过本次实训内容&#xff0c;学习常见的传统密码技术&#xff0c;通过编程实现简单代替密码中的移位密码算法&#xff0c;加深对传统密码技术的了解&#xff0c;为深入学习密码学奠定基础。【技能要求】 分析简单代替密码中的移…

R语言机器学习遥感数据处理与模型空间预测技术及实际项目案例分析

随机森林作为一种集成学习方法&#xff0c;在处理复杂数据分析任务中特别是遥感数据分析中表现出色。通过构建大量的决策树并引入随机性&#xff0c;随机森林在降低模型方差和过拟合风险方面具有显著优势。在训练过程中&#xff0c;使用Bootstrap抽样生成不同的训练集&#xff…

LeetCode 每日一题 ---- 【2207. 字符串中最多数目的子序列】

LeetCode 每日一题 ---- 【2207. 字符串中最多数目的子序列】 2207.字符串中最多数目的子序列方法&#xff1a;贪心 一次遍历 2207.字符串中最多数目的子序列 方法&#xff1a;贪心 一次遍历 从题意中可以看出来&#xff0c;对于 pattern.charAt(0) 一定是插入到最左侧是最优…

什么是SSL证书?它能保护你的网络安全!

相信大家在浏览网页时经常会看到一些网址前面有个“小锁”图标&#xff0c;它代表的网站是安全的&#xff0c;而这背后的秘密就是SSL证书。那SSL证书到底是什么&#xff1f;它有什么用呢&#xff1f; 什么是SSL证书&#xff1f; SSL证书的全称是Secure Sockets Layer证书&…

php发送邮箱教程:如何实现邮件发送功能?

php发送邮箱性能优化策略&#xff1f;怎么使用PHPMail发送邮箱&#xff1f; 无论是用户注册验证、密码重置&#xff0c;还是系统通知&#xff0c;邮件发送都是不可或缺的一部分。AokSend将详细介绍如何使用PHP实现邮件发送功能&#xff0c;帮助开发者快速掌握这一技能。 php发…

高效驱动,掌控动力:TB67H400AFNG 马达驱动器

在如今智能设备和自动化应用领域中&#xff0c;驱动器的性能直接决定了系统的可靠性与效率。东芝的TB67H400AFNG有刷直流马达驱动器凭借其卓越的性能&#xff0c;成为众多行业解决方案中的关键部件。无论是工业控制、自动化设备还是消费类电子产品&#xff0c;TB67H400AFNG都能…

一小时拿下鸿蒙应用开发者高级证书!(二)

鸿蒙应用开发者高级认证&#xff0c;是华为自家研发的硬核操作系统&#xff0c;现在它在市场上的名声也越来越响亮。你手上要是有了鸿蒙的认证小本本&#xff0c;那就等于是掌握了这行里的独门秘籍&#xff0c;找工作的时候&#xff0c;妥妥的加分项。 一个小时刷刷题&#xf…

玩机进阶教程----MTK芯片杂牌机 小品牌机型以及其他mtk设备导出分区的另外一种方法解析

在前面多期博文中都是通过工具来导出分区 制作线刷包的。今天我们以另外一种方法备份系统分区。mtk芯片较多。具体机型适合哪种方法需要自测。多种方法多条思路。遇到机型善用工具。目前一些wifi网卡 点读笔以及有些其他mtk芯片设备。通常分区都较小。可以参考教程 通过教程了…

amr文件怎么转换成mp3?这几种方法超多人在用!

amr文件怎么转换成mp3&#xff1f;AMR音频格式&#xff0c;作为音频领域的一个相对边缘角色&#xff0c;其应用范围相对狭窄&#xff0c;这背后深藏着多重内在限制&#xff0c;首要挑战在于AMR的音质瓶颈&#xff0c;它难以逃脱声音失真与杂音干扰的阴影&#xff0c;这对于追求…

通过企业微信群机器人 发送群消息

1、添加群机器人&#xff0c;复制的webhook地址 2、 public static void main(String[] args) { String reqUrl "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key6xdexxxxxxxxxxxxxxxxxxxxxxxxxxx"; String title "填…