3.4. 使用 SR-IOV 支持安装 OpenDaylight


OpenDaylight 可能会部署为支持 单根输入/ 输出虚拟化(SR-IOV)的 Compute 节点。在本部署中,Compute 节点必须作为专用 SR-IOV 节点运行,且不能和基于 OVS 的 nova 实例混合。可以在单个 OpenDaylight 部署中部署 OVS 和 SR-IOV Compute 节点。

这种情境利用自定义 SR-IOV Compute 角色来完成这种部署。

SR-IOV 部署需要使用 neutron SR-IOV 代理来配置虚拟功能(VF)。然后,在部署时,这些功能直接传递到计算实例,它们充当网络端口。VF 从 Compute 节点上的主机 NIC 中获取,因此在启动部署前需要一些有关主机接口的信息。

3.4.1. 准备 SR-IOV Compute 角色

遵循与 Install of OpenDaylight In Custom Role 中显示的相同的方法,您必须为 SR-IOV Compute 节点创建一个自定义角色,以允许创建基于 SR-IOV 的实例,而默认的 Compute 角色提供基于 OVS 的 nova 实例。

开始前

流程

  1. 将默认角色文件复制到新目录中,并将原始文件保留为备份。

    $ mkdir ~/roles
    $ cp /usr/share/openstack-tripleo-heat-templates/roles/* ~/roles
  2. ~/roles 目录中创建一个新的 ComputeSriov.yaml 文件,并添加以下角色描述:

     - name: ComputeSRIOV
       CountDefault: 1
       ServicesDefault:
         - OS::TripleO::Services::Kernel
         - OS::TripleO::Services::Ntp
         - OS::TripleO::Services::NeutronSriovHostConfig
         - OS::TripleO::Services::NeutronSriovAgent
         - OS::TripleO::Services::TripleoPackages
         - OS::TripleO::Services::TripleoFirewall
         - OS::TripleO::Services::Sshd
         - OS::TripleO::Services::NovaCompute
         - OS::TripleO::Services::NovaLibvirt
         - OS::TripleO::Services::NovaMigrationTarget
         - OS::TripleO::Services::Timezone
         - OS::TripleO::Services::ComputeNeutronCorePlugin
         - OS::TripleO::Services::Securetty
  3. 保存该文件。
  4. 从默认的 Compute 角色中删除 NeutronSriovAgentNeutronSriovHostConfig 服务,并将信息保存到 roles_data.yaml 中。

         - OS::TripleO::Services::NeutronSriovHostConfig
         - OS::TripleO::Services::NeutronSriovAgent
  5. 生成新角色文件,以使用 OpenDaylight Compute SR-IOV 支持部署 OpenStack overcloud。

    $ openstack overcloud roles generate --roles-path ~/roles -o ~/roles_data.yaml Controller Compute ComputeSriov
  6. 创建本地 registry:

    openstack overcloud container image prepare   --namespace=192.168.24.1:8787/rhosp13   --prefix=openstack-   --tag=2018-05-07.2
    -e /home/stack/templates/environments/services-docker/neutron-opendaylight.yaml -e /home/stack/templates/environments/services-docker/neutron-opendaylight-sriov.yaml --output-env-file=/home/stack/templates/overcloud_images.yaml --roles-file /home/stack/templates/roles_data.yaml

3.4.2. 配置 SR-IOV 代理服务

要使用 SR-IOV 支持部署 OpenDaylight,您必须覆盖 neutron-opendaylight.yaml 文件中的默认参数。您可以使用位于 /usr/share/openstack-tripleo-heat-templatesneutron-opendaylight.yaml 环境文件的标准 SR-IOV 环境文件。但是,最好不要编辑原始文件。相反,复制原始环境文件并修改重复文件中的参数。

或者,您可以创建一个新的环境文件,其中只提供您要更改的参数,并使用这两个文件进行部署。若要部署自定义的 OpenDaylight,请将这两个文件传递给部署命令。因为较新的环境文件会覆盖任何之前设置,所以必须在部署命令中以正确的顺序包括它们。正确的顺序是 neutron-opendaylight.yaml,然后是 neutron-opendaylight-sriov.yaml

如果要使用默认设置部署 OpenDaylight 和 SR-IOV,您可以使用红帽提供的 neutron-opendaylight-sriov.yaml。如果您需要更改或添加参数,请制作默认 SR-IOV 环境文件的副本并编辑新创建的文件。

以下是自定义的 neutron-opendaylight-sriov.yaml 文件示例:

# A Heat environment that can be used to deploy OpenDaylight with SRIOV
resource_registry:
  OS::TripleO::Services::NeutronOvsAgent: OS::Heat::None
  OS::TripleO::Services::ComputeNeutronOvsAgent: OS::Heat::None
  OS::TripleO::Services::ComputeNeutronCorePlugin: ../puppet/services/neutron-plugin-ml2.yaml
  OS::TripleO::Services::NeutronCorePlugin: ../puppet/services/neutron-plugin-ml2-odl.yaml
  OS::TripleO::Services::OpenDaylightApi: ../docker/services/opendaylight-api.yaml
  OS::TripleO::Services::OpenDaylightOvs: ../puppet/services/opendaylight-ovs.yaml
  OS::TripleO::Services::NeutronSriovAgent: ../puppet/services/neutron-sriov-agent.yaml
  OS::TripleO::Services::NeutronL3Agent: OS::Heat::None

parameter_defaults:
  NeutronEnableForceMetadata: true
  NeutronPluginExtensions: 'port_security'
  NeutronMechanismDrivers: ['sriovnicswitch','opendaylight_v2']
  NeutronServicePlugins: 'odl-router_v2,trunk'

  # Add PciPassthroughFilter to the scheduler default filters
  #NovaSchedulerDefaultFilters: ['RetryFilter','AvailabilityZoneFilter','RamFilter','ComputeFilter','ComputeCapabilitiesFilter',         'ImagePropertiesFilter','ServerGroupAntiAffinityFilter','ServerGroupAffinityFilter','PciPassthroughFilter']
  #NovaSchedulerAvailableFilters: ["nova.scheduler.filters.all_filters","nova.scheduler.filters.pci_passthrough_filter.PciPassthroughFilter"]

  #NeutronPhysicalDevMappings: "datacentre:ens20f2"

  # Number of VFs that needs to be configured for a physical interface
  #NeutronSriovNumVFs: "ens20f2:5"

  #NovaPCIPassthrough:
  #  - devname: "ens20f2"
  #    physical_network: "datacentre"

更多信息

您可以在 neutron-opendaylight-sriov.yaml 文件中配置以下选项。表描述了单独的选项,并提到启用 SR-IOV 功能所需的设置:

Expand

NovaSchedulerDefaultFilters

允许将 PCI Passthrough 用于 SR-IOV。这必须在环境文件中取消注释,并包含 PciPassthroughFilter

NovaSchedulerAvailableFilters

为 Nova Default 过滤器启用 PCI Passthrough 过滤器。必须设置并包含 nova.scheduler.filters.all_filters

NeutronPhysicalDevMappings

将逻辑网络映射到主机网络接口。必须指定此设置,以便 neutron 能够将虚拟网络绑定到物理端口。

NeutronSriovNumVFs

为主机网络接口创建的 VF 数量。语法:& lt;Interface name>:<number of VFs>

NovaPCIPassthrough

以列表格式配置 nova 中允许的 PCI 设备白名单,例如:

NovaPCIPassthrough:
    - vendor_id: "8086"
      product_id: "154c"
      address: "0000:05:00.0"
      physical_network: "datacentre"

它还可以使用逻辑设备名称而不是特定硬件属性:

NovaPCIPassthrough:
  - devname: "ens20f2"
    physical_network: "datacentre"

3.4.3. 使用 SR-IOV 安装 OpenDaylight

开始前

流程

  1. 使用 -r 参数运行部署命令,使其包含您的自定义角色文件和必要的环境文件,以启用带有 OpenDaylight 的 SR-IOV 功能。

    $ openstack overcloud deploy --templates /usr/share/openstack-tripleo-heat-templates
    -e <other environment files>
    -e /usr/share/openstack-tripleo-heat-templates/environments/services-docker/neutron-opendaylight.yaml
    -e /usr/share/openstack-tripleo-heat-templates/environments/services-docker/neutron-opendaylight-sriov.yaml
    -e network-environment.yaml --compute-scale 1 --ntp-server 0.se.pool.ntp.org --control-flavor control --compute-flavor compute -r my_roles_data.yaml
    -e /home/stack/templates/docker-images.yaml
    -e /home/stack/templates/odl-images.yaml
注意

部署命令中存在的环境文件会覆盖您在 命令中之前包含的环境文件。您必须注意您包括的环境文件顺序以避免意外覆盖参数。

提示

您可以通过创建一个最小的环境文件来覆盖一些参数,该文件只设置您要更改的参数并将其与默认环境文件合并。

更多信息

  • r 选项会在安装时覆盖角色定义。

    -r <roles_data>.yaml
  • 自定义角色在安装过程中需要一个额外的 ironic 节点。
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部