基于Arm架构的云计算最新进展

字数 3776阅读 368评论 0赞 0

Arm架构软件生态系统的最新进展,基于Arm的服务器落地的挑战,以及生产就绪的经验分享。

赵帅 郑振宇 郭长波 2021 年 2 月 24 日

近年来,Arm服务器被广泛使用,上层软件生态系统也得到了极大的发展。特别是一些公有云厂商已经开始提供基于Arm架构的云计算产品。华为、易捷行云EasyStack和Linaro等公司和组织投入了大量资源来加速Arm架构在云计算中的应用。 接下来,我们将分享云计算领域Arm架构软件生态系统的最新进展、基于Arm的服务器落地面临的挑战以及生产就绪的经验分享。

开源软件的全栈支持 ****

如上图所示,基础架构层只是整个软件栈的一小部分,为了让该层在Arm平台上功能正常、性能更好,开发者在OS、驱动、库等底层项目上也做了很多。另一方面,最终用户也关心在基础设施上运行的软件,它们能否在Arm平台上运行是考虑使用Arm平台作为基础设施关键考虑因素之一。接下来,让我们从更大的视角来看Arm平台的使能工作。 在开源世界,开发流水线对上游开发人员尤为重要。目前大部分开源项目都只有基于x86的开发流水线,所以整个开发过程和结果对Arm用户不是很友好,在Arm平台上运行之前可能会有一些额外的工作:

为了让Arm平台成为开源世界的一等公民,第一步就是为开源项目提供一条开发流水线,让开发者有资源在Arm平台上进行开发和测试,最后输出的产品也将原生支持Arm:

基于这一理念, 华为在 50 多个顶级开源社区中启用了 Arm CI ,涵盖 6 个主要领域,包括云和 SDS 、大数据、数据库、 Web 、 Libs & Middleware 以及人工智能。 有很多开源项目已经支持 Arm 平台,用户现在在这些领域有多种选择,读者可以参考 Arm CI 全景图以了解更多详细信息( https://kunpengcompute.github.io/arm-landscape/ )。 除了赋能,华为在提升Arm平台开源项目性能、缩小x86平台功能差距等方面也做了很多工作。例如,我们在Arm平台上在Libvirt里启用了CPU信息观察和主机CPU对比功能,目前正在使用它们,以便在OpenStack中获得更好的迁移体验。 有了这些功能和改进,Arm平台对用户和上游开发人员更具竞争力和吸引力。

Linaro在ARM64云计算生态系统上的工作

Linaro 是一个 Arm 64 生态系统上的开源组织,主要专注于上游开发和维护,如 Linaro 内核、工具链、 Android ,以及数据中心等一些指定领域。

Linaro 通过为 Arm 64 OpenStack 使能、部署(维护 Arm 64 Kolla 镜像)和维护 Arm 64 OpenDev CI 资源,深入参与了开放基础设施社区。 同时,基于 OpenStack 和 Ceph ,建立了 Linaro Developer Cloud ,不仅可以在云计算中测试成员公司的硬件,还可以帮助开发人员使用 Arm 64 资源。

如上图所示, Linaro Developer Cloud 完全基于 OpenStack 和 Ceph 。 现在,它可以提供基于 Nova/Ironic 的 VM/BM 服务以及基于 Magnum 支持的 Arm 64 Kubernetes 服务。 生产级 OpenStack 集群由 Kolla 容器镜像部署,操作升级更加灵活。 为了支持这一点,包括许多上游工作:

  • Arm64上的Nova/Ironic/disk-image-builder启用和错误修复
  • Arm64 OpenStack的Devstack启用支持
  • Kolla 镜像构建、Kolla-ansible 部署支持和 OpenStack 版本升级的错误修复。
  • Arm64上的Magnum多架构支持和K8s云提供商支持

Linaro De veloper Cloud K8s 服务现已上线约一年, K8s 服务版本 v1.17 、 v1.18 已通过 CNCF 一致性测试认证。 这是 Arm 64 在开源云计算领域一个很好的例子。

硬件自动化是近年来的另一个热门话题。相当多的工作负载需要运行在裸金属上(例如裸金属上的云原生K8s、HPC ) , 才能实现更好的网络和存储性能或绕过虚拟化限制(Arm64不支持嵌顿虚拟化 ) , 因此快速的硬件预置、标准的硬件管理框架在Arm64上是必不可少和重要的。 为了满足这些要求,Linaro在Arm64上提出了无磁盘引导解决方案,该解决方案利用OpenStack Ironic进行裸机管理,并使用Ceph iSCSI提供卷启动。使用Ceph卷作为磁盘可以大大缩短裸机提供时间,并提高RootFS安全性,所有数据可靠性将由Ceph保证。

如上图所示,工作流程的控制路径依赖于来自卷的 PXE ISCSI 引导、 Cinder Ceph ISCSI 驱动程序和 Ceph ISCSI 网关。 Linaro 贡献了几项功能,以使 Arm 64 支持无磁盘引导:

  • PXE iSCSI支持Ironic 引导
  • Cinder Ceph ISCSI驱动程序支持
  • Ceph iSCSI客户端错误修复和稳定增强

    我们相信硬件自动化解决方案将有利于Arm64开发和CI系统。我们将在Linaro Developer Cloud中快速上线BM服务支持,为外部应用程序提供更多资源。

在Arm服务器上运行云的最佳实践

易捷行云 EasyStack 作为一家专注于云计算的公司,自成立以来已服务超过 1000 名客户。 公司于 2019 年 4 月开始支持 Arm 服务器, 2020 年 2 月发布了技术预览版,并于 2021 年 1 月 31 日发布了正式的 GA 版本,在功能覆盖和测试强度方面已经达到了产品级的支持。 到目前为止,近 30 家客户已经在生产环境中部署了 Arm 版云计算产品。

在人们心目中,Arm生态没有x86那么广泛。有许多未知问题需要解决,包括硬件、固件、操作系统、软件等。其实,这种印象持续了相当长的时间,在过去的5年里,Arm生态系统有了很大的发展,事情发生了迅速的变化。CPU核心数量不断增加,单个核心的处理能力也在增强。我们已经看到,基于Arm的分布式存储的性能甚至高于x86架构。 生态也得到了很大发展。越来越多的操作系统支持Arm。云计算中的开源软件对Arm架构也有更好的支持,比如在正常开发过程中使用Arm CI作为验证手段。Arm架构在能效方面具有优势,这也是吸引公有云厂商设计自己的Arm CPU以提供云计算服务的驱动力之一。总之,Arm在云计算领域的应用和x86架构的差异大大缩小。

在整个适配阶段,易捷行云EasyStack的工程师们适配了10多种类型的服务器。这些服务器在BIOS/固件上存在差异,导致相同的操作系统可以在一些服务器上运行,但无法运行在另一些服务器。工程师们分析了差异,并进行了相应的维修。最后,操作系统可以在所有Arm服务器上稳定运行。上层软件版本的选择也尤为重要。易捷行云EasyStack的产品使用Kubernetes作为基础,其他服务以pod形式运行,包括OpenStack组件。这使得Arm版本产品使用与x86架构相同的软件堆栈,易于维护。在此过程中,libvirt的CPU特定错误、Openvswitch的稳定性和MariaDB的稳定性得到解决。总之,Kubernetes、OpenStack和其他组件可以在Arm平台上完美运行。

经过适配工作,开始支持产品层面的严格测试。在x86上有的功能都经过了全面测试。这份测试工作被集成到日常的CI/CD流程中,以确保任何代码更改都不会损坏x86和Arm 平台的功能。比如在Arm平台上做网络带宽测试时,带宽值没有达到预期值,通过绑定特定的中断对应CPU来解决;发现VNC控制台在一些guest OS中没有输出,这主要与设置guest OS grub启动参数tty0有关;一些Arm服务器不支持硬件watchdog,有时无法正常工作。我们完成了完整的测试,与x86架构产品相比,只有四个区别:1.它不支持Windows客户操作系统;2.Arm架构上的GPU驱动程序和SDK支持不够好,暂时无法支持GPU。3.由于Arm架构的限制,每台虚拟机支持的磁盘和网卡都比x86少;4.由于IPMI的限制,无法获得磁盘速度等一些监控指标,这就是Arm和x86架构之间的区别。

使用Arm服务器进行生产的客户越来越多。这个阶段我们需要完成x86架构应用向Arm架构的迁移,从x86平台到Arm平台的资源规格转换等。对于易捷行云EasyStack来说,总共有近30个客户,基于Arm架构的云计算物理节点超过500个,用于生产并运行良好,其中运行时间最长的客户超过一年。生产就绪是大规模推广的基础,包括社区内各公司的大力支持。目前,我们已经看到了黎明。我们相信,在不久的将来,更多的企业会采用Arm架构作为云计算的基础,提供云服务。

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

0

添加新评论0 条评论

Ctrl+Enter 发表