边缘计算社区 · 2021年11月08日

OpenStack在边缘的应用及挑战

本文是OpenInfra边缘计算小组发表的系列博文的一部分,旨在解决边缘计算进入主流采用周期时的一些棘手问题。

当我们想到为全球大型数据中心提供动力的云软件时,很难想象在边缘端也能使用相同的平台,OpenStack 也不例外。为了打破这个神话,OpenInfra Edge Computing Group 最近会见了 Chameleon 项目,以了解他们如何使用 OpenStack 的改编版来支持他们在计算机科学研究和教育领域的用例,同时将他们的基础设施从数据中心和大学中移除校园管理自动驾驶汽车或学生和讲师家中的小型设备

1.什么是Chameleon项目?

它是一个由美国国家科学基金会资助的测试平台,支持研究和教育活动,如操作系统、虚拟化解决方案或新网络协议的开发和创新。测试平台的硬件位于2个超级计算中心,它由OpenStack提供支持,并进行了一些扩展,以支持网络的实验和对可重复性的支持,这在科学环境中是至关重要的。由OpenStack、扩展和改编组成的软件基础设施提供了支持实验的功能,如软件定义网络(SDN)和操作工具,可供合作伙伴在大学和其他地点本地安装,它被称为CHI-in-a-Box,其中CHI代表Chameleon基础设施。该项目已经运行了6年多,迄今已为6000多个用户提供服务。

随着人们对边缘计算兴趣的上升,Chameleon用户越来越需要树莓派(Raspberry Pis)或Nvidia nanos这样的资源。虽然可以用这些设备在数据中心进行一些有用的实验,但大多数用户对在不同的部署环境中部署这些设备感兴趣:与自驾车、无人机或浮动车辆相关联,或连接到部署在现场的软件定义无线电(SDR)、相机和智能传感器。这就是为什么Chameleon团队创建了CHI@Edge,以便测试平台可以扩展到边缘和物联网设备的部署,并在一系列地点运行:从数据中心到用户所在的地方。对云测试平台的最初要求已经强调了深入的可配置性和适应性--通过将基础设施从数据中心转移到边缘,对能够重新配置环境的需求增加了几个数量级。

2.OpenStack如何满足这些需求?

在设计边缘产品时,Chameleon团队希望尽可能地依赖OpenStack接口,因为这使他们能够保留Chameleon前端建立的所有功能,例如通过联合身份认证或与Jupyter的集成,这一点受到许多用户的重视。同时,为边缘设备提供裸机重新配置被证明是具有挑战性的:许多设备不是服务器类实体,因此不支持所需的功能。为了保持重新配置的方法相对轻巧,并适合边缘资源的能力降低,该团队选择使用容器作为他们解决方案的一部分,可以使用OpenStack Zun项目进行管理。该项目的主要挑战是调整Zun,以适应与数据中心以外的资源一起工作时出现的变化的网络和安全问题。

为了获得所有想要的功能,有一些差距需要填补。

3.Doni

Chameleon边缘平台的目标之一是使研究人员能够很容易地带来自己的设备,这样就可以使用基于OpenStack的平台进行管理。该团队实施了一项新的Doni服务,通过为注册提供一个单一的接入点(封装,例如,请求访问证书、配置Zun、在Blazar中注册设备),使得以编程方式注册和管理设备的生命周期成为可能。这种封装的一个重要部分是,它提供了一个抽象层,向正在注册设备的用户隐藏有特权的API。

4.Tunelo + Neutron + Wireguard?

Chameleon使用Wireguard来创建和维护隧道,以确保设备到云的通信。一个隧道承载所有控制面的流量(如MySQL、RabbitMQ和内部OpenStack APIs),而另一个隧道承载从设备上启动的容器内产生的所有租户流量。这第二条隧道包裹了一个VxLAN覆盖网络,通过Neutron和Kuryr提供给容器使用。

Neutron也被用于更高的层面,通过一个新的ML2插件将Wireguard隧道本身作为Neutron "端口 "来维护。这听起来有点奇怪,因为Wireguard在第三层运行,但在实践中,它通过要求Neutron中的Wireguard端口与一个子网相关联;Neutron的IPAM提供了一个很好的方法来确保两个这样的端口永远不会使用相同的IP地址。然后,ML2插件创建Wireguard接口,并存储其公钥,以便日后查询。设备到云的联网类似于网状网络,但目前遵循集线器和辐条模型,设备在相互寻址时使用集线器作为中介,尽管当两个设备相对于云在同一个本地网络时,可以通过静态路由来解决(以每个设备为基础)。

为了简化设备上的部署,ML2插件和代理不在边缘运行;Chameleon提供了一个边缘SDK,由设备所有者调用,创建Wireguard接口,然后通过提供公钥从Neutron请求一个Wireguard端口。然后Neutron可以确保拓扑结构中的枢纽端口被更新为新的对等体列表。

Wireguard端口抽象需要调用有权限的Neutron API操作;为了控制这种访问,Chameleon团队还创建了一个名为Tunelo的“瘦身服务”,它的主要职责是将这些特权调用封装到Neutron。

5.Blazar更新

在项目进行的这些年里,Chameleon团队也为OpenStack Blazar的发展做出了重大贡献。对于像Chameleon这样的系统来说,这是一个关键的组件,可以确保用户在需要的时候能够提供资源。这在资源稀缺的情况下尤其重要,例如,当用户想要提供由许多节点组成的集群或任何需求量很大的GPU资源时,或者当用户想要确保在论文截止日期之前为演示或课程提供资源时。

该项目的改进包括一个被称为 "设备 "的新资源类型,它允许保留一个Zun计算节点,并在这些节点上运行由OpenStack协调的容器。Blazar还提供了将可保留的资源列表限制在指定的项目列表中的能力,这样就把平台变成了用户在某种私人设置中的管理界面,而不是在云中注册并与所有人分享他们的所有设备。

6.Cyborg-Zun整合

该团队必须解决的另一个问题是组织对各种 "外围设备 "的访问,即物联网(IoT)设备,如摄像头、软件定义无线电或执行器,可与边缘设备一起使用。为了支持它,该团队使用了OpenStack Cyborg项目。Cyborg允许访问硬件加速器,并通过与Nova的集成,帮助将它们插入虚拟机中。由于这些加速器设备和特定的接口,如作为外围设备的摄像头接口,也应该可以连接到容器上,Chameleon团队在Cyborg中添加了一个新的设备类型,称为 "外围设备",以及一个新的附加类型,称为 "OCI",以便能够将Cyborg与Zun进行整合,让容器利用作为边缘设备附加的专门硬件。

7.边缘SDK

如前所述,它是设备所有者安装在设备上的系统,用于将他们的设备插入基础设施,以及与中央云共享边缘设备的信息。

推荐阅读

来源:边缘计算社区
注:本文只代表作者个人观点,与任何组织机构无关,如有错误和不足之处欢迎在留言中批评指正。
尊重知识,转载时请保留全文,并包括本行及如下二维码。感谢您的阅读和支持!
推荐阅读
关注数
12081
内容数
208
关于边缘计算的一切。
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息