当我们想到为全球大型数据中心提供动力的云软件时,很难想象同样的平台在边缘是如何工作的,OpenStack也不例外。OpenInfra Edge Computing Group最近与Chameleon项目会面,了解他们如何使用OpenStack的自适应功能为计算机科学研究和教育领域的用例提供动力,同时将其基础设施从数据中心和大学校园中移出,以管理未来的自动驾驶车辆或小型设备。
什么是Chameleon计划?
它是一个NSF资助的试验台,支持研究和教育活动,如操作系统、虚拟化解决方案或新网络协议的开发和创新。试验台的硬件位于2个超级计算中心,由OpenStack提供动力,并带有一些扩展,以支持网络试验和可重复性(这在科学环境中至关重要)。软件基础设施包括OpenStack、扩展和修改,以提供支持软件定义网络(SDN)等试验的功能,以及可供合作伙伴在大学和其他站点本地安装的操作工具,称为CHI-in-a-Box,其中CHI代表变色龙基础设施。该项目已经运行了6年多,迄今已服务6000多个用户。
随着对边缘计算兴趣的增加,Chameleon用户越来越需要诸如Raspberry Pis或Nvidia nano之类的资源。虽然可以在数据中心使用这些设备进行一些有用的试验,但大多数用户对在不同的部署环境中部署这些设备感兴趣:与自动驾驶汽车、无人机或浮动车辆相关,或连接到部署在现场的软件定义无线电(SDR)、摄像头和智能传感器。这就是Chameleon团队创建CHI@Edge的原因——测试平台可以扩展到部署和运行在一系列位置的边缘和物联网设备:从数据中心到用户所在的任何地方。云测试台的原始需求集已经强调了深层次的可配置性和适应性,通过将基础设施从数据中心剥离到边缘,能够重新配置环境的需求增加了几个数量级。
OpenStack如何满足这些需求
在设计边缘产品时,Chameleon团队希望尽可能依赖OpenStack接口,因为这允许他们保留构建在Chameleon前端上的所有功能,例如通过联合身份或与Jupyter集成的身份验证——这些功能受到许多用户的重视。同时,为边缘设备提供裸金属重新配置被证明具有挑战性:其中许多设备不是服务器级实体,因此不支持所需的功能。为了使重新配置方法保持相对轻量级,并适应边缘资源能力的降低,团队选择使用容器作为解决方案的一部分——该解决方案可以使用OpenStack Zun项目进行管理。该项目的主要挑战是使Zun适应在使用数据中心以外的资源时出现的网络和安全问题的变化。
为了获得所有所需的功能,需要填补一些空白:
Doni
Chameleon边缘平台的目标之一是使研究人员能够轻松地携带自己的设备,以便使用基于OpenStack的平台进行管理。该团队实施了一项新的Doni服务,通过提供一个用于注册的单一接入点(封装,例如请求访问凭据、配置Zun、在Blazar中注册设备),可以以编程方式注册和管理设备的生命周期。这种封装的一个重要部分是,它提供了一个抽象层,用于向注册其设备的用户隐藏特权API。
Tunelo+Neutron+Wireguard
Chameleon使用Wireguard创建并维护保护设备到云通信的隧道。一个隧道承载所有控制平面流量(例如MySQL、RabbitMQ和内部OpenStack API),而另一个隧道承载从设备上启动的容器中生成的所有租户流量。第二个隧道包裹了一个VxLAN覆盖网络,该网络通过Neutron和Kuryr提供给容器。
Neutron也在更高层上使用,通过新的ML2插件将Wireguard隧道本身的状态保持为Neutron“端口”。这听起来可能有点奇怪,因为Wireguard在第3层运行,但实际上它的工作原理是要求Neutron中的Wireguard端口与子网相关联;Neutron的IPAM提供了一种很好的方法来确保两个这样的端口永远不会使用相同的IP地址。然后,ML2插件创建Wireguard接口并存储其公钥以供以后查询。设备到云网络类似于网状网络,但目前遵循的是一种中心辐射模型,设备在相互寻址时使用hub作为中介,尽管当两个设备位于相对于云的同一本地网络上时,这可以通过静态路由解决(基于每个设备)。
为了简化在设备上的部署,ML2插件和代理不在边缘运行;Chameleon提供了一个Edge SDK,设备所有者可以调用该SDK来创建Wireguard接口,然后通过提供公钥从Neuton请求Wireguard端口。然后,Neutron可以确保拓扑中的hub端口使用新的对等点列表进行更新。
Wireguard端口抽象需要调用特权Neutron API操作;为了控制这种访问,Chameleon团队还创建了一个名为Tunelo的瘦服务,它的主要职责是将这些特权调用打包到Neutron。
Blazar更新
在项目实施的几年中,Chameleon团队也为OpenStack Blazar的开发做出了重大贡献,OpenStack Blazar实现了提前预订。对于像Chameleon这样的系统,这是一个关键组件,可以确保用户在需要时提供资源。这在资源匮乏的情况下尤其重要,例如,当用户希望提供由许多节点组成的集群或需求量很大的任何GPU资源时,或者当用户希望确保资源在论文截止日期之前可用。
该项目的改进包括一种称为“设备”的新资源类型,它允许保留一个Zun计算节点,并使用该节点在由OpenStack编排的节点上运行容器。Blazar还能够将可保留资源的列表限制在指定的项目列表中,从而将平台转变为一种私有设置中用户的管理界面,而不是注册并与云中的所有人共享他们的所有设备。
Cyborg-Zun集成
团队必须解决的另一个问题是组织对各种“外围设备”的访问,即物联网(IoT)设备,如相机、软件定义的无线电或执行器,这些设备可与边缘设备一起使用。为了支持它,团队利用了OpenStack Cyborg项目。Cyborg允许访问硬件加速器,并通过与Nova的集成帮助将其插入虚拟机。由于这些加速器设备和作为外围设备的摄像头接口等特定接口也应可用于连接到容器,Chameleon团队向Cyborg添加了一种称为“外围设备”的新设备类型,以及一种称为“OCI(开放容器倡议)”的新连接类型“能够将Cyborg与Zun集成,并允许容器利用作为边缘设备连接的专用硬件。
Edge SDK
这是设备所有者安装在设备上的系统,用于将设备插入基础设施,并与中央云共享有关边缘设备的信息。
下一步
该项目仍在开发中,仍有挑战需要解决。解决更多的安全场景以支持更多的用例是Chameleon优先考虑的领域之一。在这种情况下,中央设备所有权模式被打破,因为用户可以携带自己的设备。有了这一概念,还需要提供对中央云的高级别访问,以便能够高效地连接设备,以执行所有期望的任务——但以减少设备有权采取的行动的方式。
Cyborg-Zun集成尚未在上游实施,团队正在考虑与该项目合作。
CHI@Edge仍在大力开发中,在网络等多个领域都有考虑,以使设置更加不可知,从而能够利用创新的解决方案,如他们目前作为外围设备连接的软件定义无线电。在网络领域也有一些正在进行的伙伴关系将利用测试台,这需要在工具、连接性和安全性方面进行改进。
原文链接:
https://superuser.openstack.org/articles/openstack-at-the-edge-challenges-and-solutions/