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

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

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

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

限制

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

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

先决条件

  • 您知道如何部署自定义角色。

    如需更多信息 ,请参阅自定义 Red Hat OpenStack Platform 部署指南中的可组合服务和自定义角色

流程

  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. (可选)生成一个新的自定义角色数据文件,它将之前列出的自定义角色文件之一与其他自定义角色文件合并。

    按照 自定义 Red Hat OpenStack Platform 部署 指南中的创建 roles_data 文件中 的说明进行操作。根据您的部署,包含适当的源角色文件。

  4. (可选)要识别角色的特定节点,您可以创建特定的硬件类别,并将该类别分配到特定的节点。然后,使用环境文件来定义角色的类别,并指定节点数。

    如需更多信息,请参阅自定义 Red Hat OpenStack Platform 部署 指南中的 创建新角色 中的示例。

  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. 运行部署命令,并使用 -r 选项在部署命令中包含核心 heat 模板、其他环境文件以及自定义角色数据文件。

    重要

    但是,环境文件的顺序非常重要,因为后续环境文件中定义的参数和资源更为优先。

    示例

    $ openstack overcloud deploy --templates <core_heat_templates> \
    -e <other_environment_files> \
    -e /home/stack/templates/my-neutron-environment.yaml
    -r mycustom_roles_file.yaml

验证步骤

  1. tripleo-admin 用户身份登录 Controller 或 Networker 节点:

    示例

    ssh tripleo-admin@controller-0

  2. 确保 ovn_metadata_agent 正在运行。

    $ sudo podman ps | grep ovn_metadata

    输出示例

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

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

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

    输出示例

    enable-chassis-as-gw

SR-IOV 部署的额外验证步骤

  1. tripleo-admin 用户身份登录 Compute 节点:

    示例

    ssh tripleo-admin@compute-0

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

    sudo podman ps | grep neutron_sriov_agent

    输出示例

    f54cbbf4523a  undercloud-0.ctlplane.localdomain:8787 ...
    openstack-neutron-sriov-agent ...
    kolla_start  23 hours ago  Up 21 hours ago  neutron_sriov_agent

  3. 确保已成功检测到网络可用的 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}, ...}

其他资源

  • 自定义 Red Hat OpenStack Platform 部署 指南中的可组合服务和自定义角色
  • 命令行界面参考中的 overcloud 部署