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 部署指南中的可组合服务和自定义角色。
流程
以
stack
用户身份登录 undercloud 主机,再提供stackrc
文件。$ source stackrc
选择适合您的部署的自定义角色文件。如果它符合您的需要,请在 deploy 命令中直接使用它。或者,您可以生成自己的自定义角色文件,它们组合了其他自定义角色文件。
Deployment 角色 角色文件 Networker 角色
Networker
Networker.yaml
带有 SR-IOV 的 Networker 角色
NetworkerSriov
NetworkerSriov.yaml
与 SR-IOV 共存控制和网络程序
ControllerSriov
ControllerSriov.yaml
(可选)生成一个新的自定义角色数据文件,它将之前列出的自定义角色文件之一与其他自定义角色文件合并。
按照 自定义 Red Hat OpenStack Platform 部署 指南中的创建 roles_data 文件中 的说明进行操作。根据您的部署,包含适当的源角色文件。
(可选)要识别角色的特定节点,您可以创建特定的硬件类别,并将该类别分配到特定的节点。然后,使用环境文件来定义角色的类别,并指定节点数。
如需更多信息,请参阅自定义 Red Hat OpenStack Platform 部署 指南中的 创建新角色 中的示例。
根据您的部署创建环境文件。
Deployment 环境文件示例 Networker 角色
neutron-ovn-dvr-ha.yaml
带有 SR-IOV 的 Networker 角色
ovn-sriov.yaml
根据您的部署,包含以下设置。
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: ""
运行部署命令,并使用
-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
验证步骤
以
tripleo-admin
用户身份登录 Controller 或 Networker 节点:示例
ssh tripleo-admin@controller-0
确保
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
确保具有 OVN 服务或专用 Networker 节点的 Controller 节点已配置为 OVS 的网关。
$ sudo ovs-vsctl get Open_Vswitch . external_ids:ovn-cms-options
输出示例
enable-chassis-as-gw
SR-IOV 部署的额外验证步骤
以
tripleo-admin
用户身份登录 Compute 节点:示例
ssh tripleo-admin@compute-0
确保
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
确保已成功检测到网络可用的 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 部署