2.10. 使用 ML2/OVN 部署自定义角色
在默认的 OSP 16.1 部署中,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。
先决条件
- 您知道如何部署自定义角色。有关更多信息,请参阅高级 Overcloud 自定义指南中的可组合服务和自定义角色。
流程
以
stack
用户身份登录 undercloud 主机,再提供stackrc
文件。$ source stackrc
选择适合您的部署的自定义角色文件。如果它是您需要,直接在 deploy 命令中使用它。或者,您可以生成组合其他自定义角色文件自己的自定义角色文件。
Deployment 角色 角色文件 Networker 角色
Networker
Networker.yaml
带有 SR-IOV 的 Networker 角色
NetworkerSriov
NetworkerSriov.yaml
与 SR-IOV 共存控制和网络器
ControllerSriov
ControllerSriov.yaml
- [可选] 生成一个新的自定义角色数据文件,该文件将其中一个自定义角色文件与其他自定义角色文件相结合。按照 高级 Overcloud 自定义指南中的 创建 roles_data 文件中 的说明进行操作。根据您的部署包括适当的源角色文件。
- [可选] 要为角色识别特定节点,您可以创建特定的硬件类别,并将类别分配到特定的节点。然后,使用环境文件为角色定义类别,并指定节点数。有关更多信息,请参阅高级 Overcloud 自定义指南中的创建新角色中的示例。
根据您的部署创建一个环境文件。
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: ""
-
部署 overcloud。使用
-e
选项在部署命令中包含环境文件。在部署命令中包含自定义角色数据文件,以及 -r 选项。例如:-r Networker.yaml
或-r mycustomrolesfile.yaml
。
验证步骤 - OVN 部署
以 overcloud SSH 用户身份登录 Controller 或 Networker 节点,默认为
heat-admin
。示例
ssh heat-admin@controller-0
确保
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.1_20200813.1 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 部署
以 overcloud SSH 用户身份登录 Compute 节点,默认为
heat-admin
。示例
ssh heat-admin@compute-0
确保
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
确保成功检测到 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}, ...}
其他资源
- 高级 Overcloud 自定义指南中的可组合服务和自定义角色