2.7. 使用 ML2/OVN 部署自定义角色
在默认的 Red Hat OpenStack (RHOSP)部署中,ML2/OVN 可组合服务在 Controller 节点上运行。您可以选择使用支持的自定义角色,如以下示例中描述的角色。
- Networker
- 在专用网络器节点上运行 OVN 可组合服务。
- 带有 SR-IOV 的 Networker
- 使用 SR-IOV 在专用的网络器节点上运行 OVN 可组合服务。
- 带有 SR-IOV 的控制器
- 在支持 SR-IOV 的控制器节点中运行 OVN 可组合服务。
您还可以生成自己的自定义角色。
限制
本发行版本中使用了 ML2/OVN 和原生 OVN DHCP 的 SR-IOV 有以下限制。
- 所有外部端口都调度到一个网关节点上,因为所有端口只有一个 HA Chasis Group。
- VLAN 租户网络上的 VF (direct)端口上的北/南路由无法用于 SR-IOV,因为外部端口没有与逻辑路由器的网关端口并置。请参阅 https://bugs.launchpad.net/neutron/+bug/1875852。
先决条件
您知道如何部署自定义角色。
如需更多信息 ,请参阅 Director 安装和使用指南中的可组合服务和自定义角色。
流程
以
stack用户身份登录 undercloud 主机,并提供stackrc文件。$ source stackrc
选择适合您的部署的自定义角色文件。如果适合您需求,请直接在部署命令中使用它。或者您可以生成组合了其他自定义角色文件自己的自定义角色文件。
Deployment 角色 角色文件 Networker 角色
Networker
Networker.yaml带有 SR-IOV 的 Networker 角色
NetworkerSriov
NetworkerSriov.yaml将控制和网络与 SR-IOV 在一起
ControllerSriov
ControllerSriov.yaml(可选)生成一个新的自定义角色数据文件,该文件将前面列出的自定义角色文件与其他自定义角色文件合并。
按照 Director 安装和使用指南中的创建 roles_data 文件中的说明进行操作。根据您的部署包含适当的源角色文件。
(可选)要识别角色的特定节点,您可以创建特定的硬件类别,并将该类别分配给特定的节点。然后,使用环境文件为角色定义类别,并指定节点数。
如需更多信息,请参阅 Director 安装和使用指南中的创建新角色的示例。
根据您的部署创建一个环境文件。
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: "" NetworkerSriYou can uovParameters: 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 服务或专用网络器节点的 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
确保 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}, ...}
其他资源
- Director 安装和使用 指南中的 可组合服务和自定义角色。
- 命令行界面参考中的 overcloud 部署