2.12. 使用 ML2/OVN 部署自定义角色

在默认的 Red Hat OpenStack (RHOSP)部署中,ML2/OVN 可组合服务在 Controller 节点上运行。您可以选择使用受支持的自定义角色,如以下示例所述。

Networker
在专用网络器节点上运行 OVN 可组合服务。
带有 SR-IOV 的 Networker
使用 SR-IOV 在专用 networker 节点上运行 OVN 可组合服务。
使用 SR-IOV 的控制器
在支持 SR-IOV 的控制器节点上运行 OVN 可组合服务。

您还可以生成自己的自定义角色。

限制

以下限制适用于本发行版本中将 SR-IOV 与 ML2/OVN 和原生 OVN DHCP 搭配使用。

  • 所有外部端口都调度到单个网关节点上,因为所有端口只有一个 HA Chassis 组。
  • VLAN 租户网络上的 VF (direct)端口上的北路由无法用于 SR-IOV,因为外部端口没有与逻辑路由器的网关端口在一起。请参阅 https://bugs.launchpad.net/neutron/+bug/1875852

先决条件

流程

  1. stack 用户身份登录 undercloud 主机,再提供 stackrc 文件。

    $ source stackrc
  2. 选择适合您的部署的自定义角色文件。如果它是您需要,直接在 deploy 命令中使用它。或者,您可以生成组合其他自定义角色文件自己的自定义角色文件。

    Deployment角色角色文件

    Networker 角色

    Networker

    Networker.yaml

    带有 SR-IOV 的 Networker 角色

    NetworkerSriov

    NetworkerSriov.yaml

    与 SR-IOV 共存控制和网络器

    ControllerSriov

    ControllerSriov.yaml

  3. [可选] 生成一个新的自定义角色数据文件,该文件将其中一个自定义角色文件与其他自定义角色文件相结合。按照 高级 Overcloud 自定义指南中的 创建 roles_data 文件中 的说明进行操作。根据您的部署包括适当的源角色文件。
  4. [可选] 要为角色识别特定节点,您可以创建特定的硬件类别,并将类别分配到特定的节点。然后,使用环境文件为角色定义类别,并指定节点数。有关更多信息,请参阅高级 Overcloud 自定义指南中的创建新角色中的示例。
  5. 根据您的部署创建一个环境文件。

    Deployment环境文件示例

    Networker 角色

    neutron-ovn-dvr-ha.yaml

    带有 SR-IOV 的 Networker 角色

    ovn-sriov.yaml

  6. 根据您的部署包括以下设置。

    Deployment设置

    Networker 角色

    ControllerParameters:
        OVNCMSOptions: ""
    ControllerSriovParameters:
            OVNCMSOptions: ""
    NetworkerParameters:
        OVNCMSOptions: "enable-chassis-as-gw"
    NetworkerSriovParameters:
        OVNCMSOptions: ""

    带有 SR-IOV 的 Networker 角色

    OS::TripleO::Services::NeutronDhcpAgent: OS::Heat::None
    
    ControllerParameters:
        OVNCMSOptions: ""
    ControllerSriovParameters:
            OVNCMSOptions: ""
    NetworkerParameters:
        OVNCMSOptions: ""
    NetworkerSriovParameters:
        OVNCMSOptions: "enable-chassis-as-gw"

    与 SR-IOV 共存控制和网络器

    OS::TripleO::Services::NeutronDhcpAgent: OS::Heat::None
    
    ControllerParameters:
        OVNCMSOptions: ""
    ControllerSriovParameters:
            OVNCMSOptions: "enable-chassis-as-gw"
    NetworkerParameters:
        OVNCMSOptions: ""
    NetworkerSriovParameters:
        OVNCMSOptions: ""
  7. 部署 overcloud。使用 -e 选项在部署命令中包含环境文件。在部署命令中包含自定义角色数据文件,以及 -r 选项。例如: -r Networker.yaml-r mycustomrolesfile.yaml

验证步骤 - OVN 部署

  1. 以 overcloud SSH 用户身份登录 Controller 或 Networker 节点,默认为 heat-admin

    示例

    ssh heat-admin@controller-0

  2. 确保 ovn_metadata_agent 在 Controller 和 Networker 节点上运行。

    $ sudo podman ps | grep ovn_metadata

    输出示例

    a65125d9588d  undercloud-0.ctlplane.localdomain:8787/rh-osbs/rhosp16-openstack-neutron-metadata-agent-ovn:16.2_20200813.1  kolla_start           23 hours ago  Up 21 hours ago         ovn_metadata_agent

  3. 确保带有 OVN 服务或专用网络器节点的 Controller 节点已配置为 OVS 的网关。

    $ sudo ovs-vsctl get Open_Vswitch . external_ids:ovn-cms-options

    输出示例

    ...
        enable-chassis-as-gw
    ...

验证步骤 - SR-IOV 部署

  1. 以 overcloud SSH 用户身份登录 Compute 节点,默认为 heat-admin

    示例

    ssh heat-admin@compute-0

  2. 确保 neutron_sriov_agent 在 Compute 节点上运行。

    $ sudo podman ps | grep neutron_sriov_agent

    输出示例

    f54cbbf4523a  undercloud-0.ctlplane.localdomain:8787/rh-osbs/rhosp16-openstack-neutron-sriov-agent:16.2_20200813.1
    kolla_start  23 hours ago  Up 21 hours ago         neutron_sriov_agent

  3. 确保成功检测到 network-available SR-IOV NIC。

    $ sudo podman exec -uroot galera-bundle-podman-0 mysql nova -e 'select hypervisor_hostname,pci_stats from compute_nodes;'

    输出示例

    computesriov-1.localdomain	{... {"dev_type": "type-PF", "physical_network": "datacentre", "trusted": "true"}, "count": 1}, ... {"dev_type": "type-VF", "physical_network": "datacentre", "trusted": "true", "parent_ifname": "enp7s0f3"}, "count": 5}, ...}
    computesriov-0.localdomain	{... {"dev_type": "type-PF", "physical_network": "datacentre", "trusted": "true"}, "count": 1}, ... {"dev_type": "type-VF", "physical_network": "datacentre", "trusted": "true", "parent_ifname": "enp7s0f3"}, "count": 5}, ...}

其他资源