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 |
各测试项说明:
- 测试项中的NVMe-OF均指NVMe-OF over RDMA
- NVMe-OF+DPU+NVMe盘:基于 DPU 通过NVMe-OF协议连接Target,Target 后端是 NVMe物理盘
- 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的方案在交付效率、存储支持、安全性与资源利用率、架构简化以及性能优化等方面均展现出了显著的优势,为裸金属云服务的发展提供了新的动力和方向。
本方案来自于中科驭数软件研发团队,团队核心由一群在云计算、数据中心架构、高性能计算领域深耕多年的业界资深架构师和技术专家组成,不仅拥有丰富的实战经验,还对行业趋势具备敏锐的洞察力,该团队致力于探索、设计、开发、推广可落地的高性能云计算解决方案,帮助最终客户加速数字化转型,提升业务效能,同时降低运营成本。