首页 > 其他分享 >基于DPU的OpenStack裸金属服务快速部署及存储解决方案

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

时间:2024-09-23 18:21:55浏览次数:3  
标签:云盘 DPU 解决方案 存储 金属 镜像 ironic OpenStack

1 方案背景和挑战

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

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

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

原生的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的OpenStack裸金属服务快速部署及存储解决方案_云计算_02

在本方案中,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 的方案中,我们采用直接挂载云盘系统的方式,不使用本地盘,过程如下:

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

  • 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中需安装相关组件,如下图:

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

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

基于DPU的存储对接方案:

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

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

相比于 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和镜像进行创建。

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

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

可以看到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 添加磁盘

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

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

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

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

3.4 删除磁盘

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

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

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

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


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的方案在交付效率、存储支持、安全性与资源利用率、架构简化以及性能优化等方面均展现出了显著的优势,为裸金属云服务的发展提供了新的动力和方向。

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


标签:云盘,DPU,解决方案,存储,金属,镜像,ironic,OpenStack
From: https://blog.51cto.com/yusur/12090853

相关文章

  • 【解决方案】Java 互联网项目中常见的 Redis 缓存应用场景
    一、常见key-value首先介绍的是项目开发中常见的一些String类型的key-value结构场景,如:使用jsonStr结构存储的用户登录信息,包括:手机号、token、唯一uuid、昵称等;jsonStr结构某个热门商品的信息,包括:商品名称、商品唯一id、所属商家、价格等;String类型的、......
  • 鸿蒙跨端实践-长列表解决方案和性能优化
    这是我参加创作者计划的第一篇文章。 前言长列表是前端和客户端应用中最常见的业务场景,比如商品瀑布流等,有成千上万条数据,因此长列表的渲染性能在iOS,Android,Harmony,Web等各大平台都非常重要。HarmonyOS和iOS类似也提供了自己的解决方案。Roma(罗码)作为跨端平台,在此基础上......
  • SQLSyntaxErrorException: Unknown database ‘server‘ ---数据库相关报错解决方案
    java.sql.SQLSyntaxErrorException:Unknowndatabase'server'这个错误通常表示你尝试连接的数据库名称(在这个例子中是server)在你的数据库服务器上不存在。这可能是由于以下几种原因之一:数据库名称拼写错误:检查你在连接字符串中指定的数据库名称是否正确,确保没有拼写错......
  • 建立数据库连接时出现错误:原因与解决方案
    建立数据库连接时出现错误的原因可能有很多,以下是一些常见的原因及其解决方案:原因登录信息错误:账号、密码、服务器名称或数据库名称不正确。网络问题:客户端与数据库服务器之间的网络连接不稳定或中断。数据库服务未启动:数据库服务没有运行,或者在尝试连接时服务停止......
  • OpenStack的组件及工作原理
    OpenStack就是一个虚拟化管理平台吗?这样说并不准确。它们存在很多相似性,但并非完全相同。的确,OpenStack和虚拟化管理平台都位于虚拟化资源层之上,都可以帮助用户发现、报告和自动执行位于不同供应商产品环境中的业务流程。但虚拟化管理平台主要是方便利用虚拟资源的特性和功能,而O......
  • 建立数据库连接时出现错误:原因与解决方案
    网站数据库连接失败可能有以下几个常见原因:数据库配置错误:数据库连接参数配置错误,如用户名、密码、主机地址、端口号、数据库名称等配置不正确。应用程序中的数据库配置文件(如WordPress中的wp-config.php)可能包含了错误的信息。网络问题:数据库服务器与应用程序服务器......
  • 统信服务器操作系统【SSH登录常见问题】解决方案
    方案适用于统信服务器操作系统D/E/A版。文章目录前言问题及解决方案问题一问题现象问题原因问题方案问题二问题现象问题原因问题方案问题三问题原因问题方案问题四问题现象问题原因问题方案问题五问题现象问题原因问题方案......
  • 数据库连接错误:原因与解决方案
    数据库连接错误可能由多种因素引起,下面列出了一些常见的原因及其解决方案:常见原因及解决方案配置错误原因:数据库连接字符串中的参数错误,如主机名/IP地址、端口号、数据库名称、用户名或密码不正确。解决方法:检查并确认连接字符串中的所有参数都正确无误。网络问题原......
  • SpringBoot前后端接口加解密--解决方案
    开放接口-通信方式采用HTTP+JSON或消息中间件进行通信。-调用接口之前需要使用登录鉴权接口获得token。-当鉴权成功之后才能调用其他接口(携带Token)。登录接口:Code 说明200 成功401 未授权,请先登录。403 没有访问权限404 接口不存在500 接口内部错误但是开放接口......
  • SpringBoot实战:JWT Token 自动续期的解决方案
    前言在前后端分离的开发架构中,当用户成功登录后,后端服务会生成一个JWT(JSONWebTokens)token,并将其返回给前端。前端(如Vue应用)接收到此token后,通常会将其存储在LocalStorage中以方便后续请求时使用。每次向后端发送请求时,前端会将这个token作为请求头的一部分发送给后端,以便后端通......