第 9 章 配置 VDPA Compute 节点以启用使用 VDPA 端口的实例
VIRTIO 数据路径加速 (VDPA) 通过 VIRTIO 提供有线速数据传输。VDPA 设备在 SR-IOV 虚拟功能 (VF) 上提供 VIRTIO 抽象,它允许在实例上不使用特定于供应商的驱动程序。
当您将 NIC 用作 VDPA 接口时,它必须专用于 VDPA 接口。您不能将 NIC 用于其他连接,因为您必须使用 switchdev
模式配置 NIC 的物理功能(PF),并使用硬件卸载的 OVS 管理 PF。
要让您的云用户创建使用 VDPA 端口的实例,请完成以下任务:
- 可选:为 VDPA 设计 Compute 节点。
- 为 VDPA 配置具有所需 VDPA 驱动程序的 Compute 节点。
- 部署 overcloud。
如果 VDPA 硬件有限,您还可以配置主机聚合来优化 VDPA Compute 节点上的调度。要仅在 VDPA Compute 节点上调度请求 VDPA 的实例,请创建一个具有 VDPA 硬件的 Compute 节点的主机聚合,并将计算调度程序配置为仅将 VDPA 实例放在主机聚合上。如需更多信息,请参阅通过隔离主机聚合和创建和管理主机聚合来过滤。
先决条件
- 您的 Compute 节点具有所需的 VDPA 设备和驱动程序。
- 您的 Compute 节点有 Mellanox NIC。
- 您的 overcloud 被配置为 OVS 硬件卸载。如需更多信息,请参阅配置 OVS 硬件卸载。
- 您的 overcloud 配置为使用 ML2/OVN。
9.1. 为 VDPA 设计 Compute 节点
要为请求 VIRTIO 数据路径加速 (VDPA) 接口的实例指定计算节点,请创建一个新的角色文件来配置 VDPA 角色,并使用 VDPA 资源类配置裸机节点,以标记 VDPA 的计算节点。
以下流程适用于尚未调配的新 overcloud 节点。要将资源类分配给已调配的现有 overcloud 节点,请缩减 overcloud 以取消置备节点,然后扩展 overcloud,以使用新的资源类分配来重新置备节点。有关更多信息,请参阅 扩展 overcloud 节点。
流程
-
以
stack
用户身份登录 undercloud 主机。 查找
stackrc
undercloud 凭证文件:[stack@director ~]$ source ~/stackrc
生成一个名为
roles_data_vdpa.yaml
的新角色数据文件,其中包含Controller
,Compute
, 和ComputeVdpa
角色:(undercloud)$ openstack overcloud roles \ generate -o /home/stack/templates/roles_data_vdpa.yaml \ ComputeVdpa Compute Controller
为 VDPA 角色更新
roles_data_vdpa.yaml
文件:############################################################################### # Role: ComputeVdpa # ############################################################################### - name: ComputeVdpa description: | VDPA Compute Node role CountDefault: 1 # Create external Neutron bridge tags: - compute - external_bridge networks: InternalApi: subnet: internal_api_subnet Tenant: subnet: tenant_subnet Storage: subnet: storage_subnet HostnameFormatDefault: '%stackname%-computevdpa-%index%' deprecated_nic_config_name: compute-vdpa.yaml
-
将 overcloud 的 VDPA Compute 节点添加到节点定义模板中,注册它们:
node.json
或node.yaml
。有关更多信息,请参阅 安装和管理 Red Hat OpenStack Platform 指南中的 为 overcloud 注册节点。 检查节点硬件:
(undercloud)$ openstack overcloud node introspect \ --all-manageable --provide
如需更多信息,请参阅 安装和管理 Red Hat OpenStack Platform 指南中的创建 裸机节点硬件清单。
使用自定义 VDPA 资源类标记您要为 VDPA 指定的每个裸机节点:
(undercloud)$ openstack baremetal node set \ --resource-class baremetal.VDPA <node>
将
<node>
替换为裸机节点的名称或 UUID。将
ComputeVdpa
角色添加到节点定义文件overcloud-baremetal-deploy.yaml
中,并定义您要分配给节点的任何预先节点放置、资源类、网络拓扑或其他属性:- name: Controller count: 3 - name: Compute count: 3 - name: ComputeVdpa count: 1 defaults: resource_class: baremetal.VDPA network_config: template: /home/stack/templates/nic-config/<role_topology_file>
-
将
<role_topology_file
> 替换为用于ComputeVdpa
角色的拓扑文件的名称,如vdpa_net_top.j2
。您可以重复使用现有网络拓扑,或为角色创建新的自定义网络接口模板。如需更多信息,请参阅使用 director 安装和管理 Red Hat OpenStack Platform 指南中的 自定义网络接口模板。要使用默认网络定义设置,请不要在角色定义中包含network_config
。
有关您可以在节点定义文件中配置节点属性的属性的更多信息,请参阅 裸机节点置备属性。有关节点定义文件的示例,请参阅 节点定义文件 示例。
-
将
打开您的网络接口模板
vdpa_net_top.j2
,并添加以下配置,将 VDPA 支持的网络接口指定为 OVS 网桥的成员:- type: ovs_bridge name: br-tenant members: - type: sriov_pf name: enp6s0f0 numvfs: 8 use_dhcp: false vdpa: true link_mode: switchdev - type: sriov_pf name: enp6s0f1 numvfs: 8 use_dhcp: false vdpa: true link_mode: switchdev
为您的角色置备新节点:
(undercloud)$ openstack overcloud node provision \ [--stack <stack>] \ [--network-config \] --output <deployment_file> \ /home/stack/templates/overcloud-baremetal-deploy.yaml
-
可选:将
<stack>
替换为置备裸机节点的堆栈的名称。默认为overcloud
。 -
可选:包含
--network-config
可选参数,为cli-overcloud-node-network-config.yaml
Ansible playbook 提供网络定义。如果您使用network_config
属性在节点定义文件中未定义网络定义,则使用默认网络定义。 -
将
<deployment_file>
替换为用于部署命令生成的 heat 环境文件的名称,如/home/stack/templates/overcloud-baremetal-deployed.yaml
。
-
可选:将
在一个单独的终端中监控置备进度。当置备成功时,节点状态将从
available
变为active
:(undercloud)$ watch openstack baremetal node list
如果您在没有
--network-config
选项运行 provisioning 命令,请在network-environment.yaml
文件中配置<Role>NetworkConfigTemplate
参数以指向 NIC 模板文件:parameter_defaults: ComputeNetworkConfigTemplate: /home/stack/templates/nic-configs/compute.j2 ComputeVdpaNetworkConfigTemplate: /home/stack/templates/nic-configs/<role_topology_file> ControllerNetworkConfigTemplate: /home/stack/templates/nic-configs/controller.j2
将 <
role_topology_file
> 替换为包含ComputeVdpa
角色的网络拓扑的文件的名称,如vdpa_net_top.j2
。设置为compute.j2
,以使用默认的网络拓扑。