跳转到主要内容

Fabric聚合管理器处理器

项目描述

PyPI

AMHandlers

聚合管理器

聚合管理器控制对底层组件的访问。它控制由一组服务器、存储单元、网络元素或其他组件组成的特定站点中的一些基础设施资源,这些组件属于共同的所有权和控制。AM通过传递资源广告信息模型来通知代理关于可用资源。AM可以与多个代理相关联,而代理之间资源的划分则留给AM来决定。根据部署需求,可能存在过度预订的情况。FABRIC允许底层提供商将资源仲裁和日历调度外包给代理。通过将资源委托给代理,AM同意代理的政策,并同意如果用户在AM上有权限,则尝试尊重代理发出的预留。

此外,每个AM类型都有资源特定模块,这些模块确定其资源分配行为(资源管理策略)和它为分配一个sliver所采取的具体操作(资源处理器)。这两个插件都由AM公共核心代码根据资源类型或正在考虑的请求类型调用。

处理器

AM上调用处理程序接口来设置和拆解每个sliver。资源处理程序执行实现sliver所需的特定底层的配置操作。处理程序接口包括一个探针方法来轮询sliver的当前状态,并修改来调整sliver的属性。

处理程序根据资源类型进行注册和选择。每个处理程序的调用都在一个独立的线程中执行,因此处理程序可能会因为慢速的配置操作而阻塞。处理程序通过一个名为HandlerProcessor的类进行调用,该类可以调用处理程序脚本语言的解释器。处理程序将用Python脚本语言编写。

每个处理程序为资源实现3种基本操作类型

  • 创建 - 配置资源
    • 示例 - 创建虚拟机或裸金属节点,或网络连接
  • 删除 - 取消配置资源
    • 撤销上述创建
  • 修改 - 修改资源的状态
    • 修改虚拟机或网络连接的属性(例如,更改带宽)

每个操作都可以有子命令和参数,这些参数确定了采取行动的细节,其中一些将在下面讨论。这些参数有助于将多个sliver“缝合”在一起。一个典型的例子是将网络信息从提供网络的处理程序传递给提供计算节点的处理程序,以便计算节点最终具有正确的网络配置(例如,连接到正确的VLAN)。特定操作的特定参数是资源管理策略和插件之间约定的事项。

处理程序接收 Orchestrator 在 AM 上执行的配置工作流(兑现操作的序列)中的参数。它们还可以在配置过程中将有关保留资源的消息作为 AM 和 Orchestrator 之间标准消息交换的一部分传递给 Orchestrator。

剧本

处理程序使用Ansible Playbooks进行配置。

接口和设计

Class Diagram

配置

AM处理程序需要以下配置才能设置

  • Inventory信息用于头节点
  • 处理程序配置文件(以下为VM处理程序的示例)

VM处理程序配置文件

VM处理程序配置文件可在fabric_am/config/vm_handler_config.yml找到。它描述了特定操作的Playbook位置和名称。

playbooks:
  location: /etc/fabric/actor/playbooks
  inventory_location: /etc/fabric/actor/playbooks/inventory
  VM: head_vm_provisioning.yml
  GPU: worker_pci_provisioning.yml
  SmartNIC: worker_pci_provisioning.yml
  SharedNIC: worker_pci_provisioning.yml
  FPGA: worker_pci_provisioning.yml
  NVME: worker_pci_provisioning.yml

PCI设备支持

使用PCI直通将PCI设备传递给VM。FABRIC还支持通过PCI直通传递到VM的SRIOV功能。为了处理SRIOV上的环回连接,为用于托管虚拟功能的专用卡启用了底层桥的VEPA模式。

[kissel@uky-w1 ~]$ sudo bridge link set dev ens6f1 hwmode vepa

什么是VEPA?

在标准模式下,软件升级到虚拟机管理程序中的VEB简单地强制每个VM帧输出到外部交换机,而不考虑目的地。这对外部主机的目标MAC地址没有影响,但对主机内的目标(同一VLAN中的另一个VM)强制将其流量转发到上游交换机,然后将其转发回来而不是内部处理,这被称为环回。正是这种环回导致了需要上游交换机具有更新的固件,典型的STP行为阻止交换机将其接收到的帧转发回其接收端口。固件更新允许物理主机和上游交换机之间就VEPA端口进行协商,然后允许这种环回。

VEPA只是简单地强制将虚拟机(VM)流量由外部交换机处理。这使得每个VM帧流可以被监控、管理和保护,就像物理交换机可用的所有工具一样。这并不为VM提供任何类型的个人隧道,也不提供可配置的交换机端口,但允许进行诸如流量统计收集、访问控制列表(ACL)执行等操作。基本上,我们只是在将MAC转发决策推送到物理交换机,并允许该交换机在每次事务上执行其可用的任何功能。这里的缺点是我们现在必须为之前内部处理的每个帧执行一个入站和出站操作。这意味着需要考虑带宽和延迟问题。像单根I/O虚拟化(SR/IOV)和直接路径I/O这样的功能可以在实施此方案时缓解一些延迟问题。就像任何技术一样,通常需要权衡利弊。在这种情况下,增加的控制和功能应该超过带宽和延迟的增加。

关于VEPA的更多详细信息,请参阅这里

项目详情


发布历史 发布通知 | RSS订阅

下载文件

下载适用于您平台的文件。如果您不确定选择哪一个,请了解更多关于安装包的信息。

源代码分布

fabric-am-handlers-1.7.1.tar.gz (239.0 kB 查看哈希值)

上传时间 源代码

构建分布

fabric_am_handlers-1.7.1-py3-none-any.whl (134.9 kB 查看哈希值)

上传时间 Python 3

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面