7.8. 部署 SR-IOV overcloud
在 SR-IOV 环境中配置 Red Hat OpenStack Platform (RHOSP) overcloud 的最后一步是运行 openstack overcloud deploy
命令。命令的输入包括您构建的所有 overcloud 模板和环境文件。
先决条件
-
访问
stack
用户的 undercloud 主机和凭据。 -
您已执行了本节前面流程中列出的所有步骤,并编译了所有各种 heat 模板和环境文件,以用作
overcloud deploy
命令的输入。
流程
-
以
stack
用户身份登录 undercloud 主机。 查找
stackrc
undercloud 凭证文件:$ source ~/stackrc
输入
openstack overcloud deploy
命令。以特定顺序列出
openstack overcloud deploy
命令的输入非常重要。常规规则是首先指定默认的 heat 模板文件,后跟包含自定义配置的自定义环境文件和自定义模板,如覆盖默认属性。按照以下顺序将输入添加到
openstack overcloud deploy
命令中:包含 overcloud 上 SR-IOV 网络规格的自定义网络定义文件,如
network-data.yaml
。如需更多信息,请参阅使用 director 安装和管理 Red Hat OpenStack Platform 指南中的 网络定义文件配置选项。
包含 RHOSP director 用来部署 OVS 硬件卸载环境的
Controller
和ComputeOvsHwOffload
角色的角色文件。示例:
roles_data_compute_sriov.yaml
如需更多信息,请参阅 第 7.1 节 “为 SR-IOV 生成角色和镜像文件”。
来自置备 overcloud 网络的输出文件。
示例:
overcloud-networks-deployed.yaml
如需更多信息,请参阅使用 director 安装和管理 Red Hat OpenStack Platform 指南中的配置和管理 overcloud 网络定义。
来自置备 overcloud VIP 的输出文件。
示例:
overcloud-vip-deployed.yaml
如需更多信息,请参阅 安装和管理 Red Hat OpenStack Platform 指南中的 为 overcloud 配置和置备网络 VIP。
置备裸机节点的输出文件。
示例:
overcloud-baremetal-deployed.yaml
有关更多信息,请参阅使用 director 安装和管理 Red Hat OpenStack Platform 指南中的 为 overcloud 置备裸机节点。
director 用来确定获取容器镜像的位置以及如何存储它们的镜像文件。
示例:
overcloud_images.yaml
如需更多信息,请参阅 第 7.1 节 “为 SR-IOV 生成角色和镜像文件”。
您的环境使用的网络服务(neutron)机制驱动程序和路由器方案的环境文件:
ML2/OVN
-
分布式虚拟路由(DVR):
neutron-ovn-dvr-ha.yaml
-
集中式虚拟路由:
neutron-ovn-ha.yaml
-
分布式虚拟路由(DVR):
ML2/OVS
-
分布式虚拟路由(DVR):
neutron-ovs-dvr.yaml
-
集中式虚拟路由:
neutron-ovs.yaml
-
分布式虚拟路由(DVR):
SR-IOV 的环境文件,具体取决于您的机制驱动程序:
ML2/OVN
-
neutron-ovn-sriov.yaml
-
ML2/OVS
neutron-sriov.yaml
注意如果您也有一个 OVS-DPDK 环境,并希望在同一节点上找到 OVS-DPDK 和 SR-IOV 实例,请在部署脚本中包含以下环境文件:
ML2/OVN
neutron-ovn-dpdk.yaml
ML2/OVS
neutron-ovs-dpdk.yaml
一个或多个包含您的配置的自定义环境文件:
- SR-IOV 节点的 PCI 透传设备。
- SR-IOV 节点的特定于角色的参数
覆盖 SR-IOV 环境的默认配置值。
示例:
sriov-overrides.yaml
如需更多信息,请参阅:
- 第 7.2 节 “为 SR-IOV 配置 PCI 透传设备”.
示例
示例
openstack overcloud deploy
命令摘录演示了使用 DVR 的 SR-IOV ML2/OVN 环境正确排序命令输入:$ openstack overcloud deploy \ --log-file overcloud_deployment.log \ --templates /usr/share/openstack-tripleo-heat-templates/ \ --stack overcloud \ -n /home/stack/templates/network_data.yaml \ -r /home/stack/templates/roles_data_compute_sriov.yaml \ -e /home/stack/templates/overcloud-networks-deployed.yaml \ -e /home/stack/templates/overcloud-vip-deployed.yaml \ -e /home/stack/templates/overcloud-baremetal-deployed.yaml \ -e /home/stack/templates/overcloud-images.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/services/\ neutron-ovn-dvr-ha.yaml -e /usr/share/openstack-tripleo-heat-templates/environments/services/\ neutron-ovn-sriov.yaml \ -e /home/stack/templates/sriov-overrides.yaml
运行
openstack overcloud deploy
命令。完成 overcloud 创建后,RHOSP director 会提供帮助您访问 overcloud 的详细信息。
验证
- 使用 director 安装和管理 Red Hat OpenStack Platform 指南中的执行验证 overcloud 部署 中的步骤。
要验证您的 NIC 是否已正确分区,请执行以下操作:
以
tripleo-admin
用户身份登录 overcloud Compute 节点,并检查 VF 的数量:示例
在本例中,
p4p1
和p4p2
的 VF 数量都是10
:$ sudo cat /sys/class/net/p4p1/device/sriov_numvfs 10 $ sudo cat /sys/class/net/p4p2/device/sriov_numvfs 10
显示 OVS 连接:
$ sudo ovs-vsctl show
输出示例
您应该看到类似如下的输出:
b6567fa8-c9ec-4247-9a08-cbf34f04c85f Manager "ptcp:6640:127.0.0.1" is_connected: true Bridge br-sriov2 Controller "tcp:127.0.0.1:6633" is_connected: true fail_mode: secure datapath_type: netdev Port phy-br-sriov2 Interface phy-br-sriov2 type: patch options: {peer=int-br-sriov2} Port br-sriov2 Interface br-sriov2 type: internal Bridge br-sriov1 Controller "tcp:127.0.0.1:6633" is_connected: true fail_mode: secure datapath_type: netdev Port phy-br-sriov1 Interface phy-br-sriov1 type: patch options: {peer=int-br-sriov1} Port br-sriov1 Interface br-sriov1 type: internal Bridge br-ex Controller "tcp:127.0.0.1:6633" is_connected: true fail_mode: secure datapath_type: netdev Port br-ex Interface br-ex type: internal Port phy-br-ex Interface phy-br-ex type: patch options: {peer=int-br-ex} Bridge br-tenant Controller "tcp:127.0.0.1:6633" is_connected: true fail_mode: secure datapath_type: netdev Port br-tenant tag: 305 Interface br-tenant type: internal Port phy-br-tenant Interface phy-br-tenant type: patch options: {peer=int-br-tenant} Port dpdkbond0 Interface dpdk0 type: dpdk options: {dpdk-devargs="0000:18:0e.0"} Interface dpdk1 type: dpdk options: {dpdk-devargs="0000:18:0a.0"} Bridge br-tun Controller "tcp:127.0.0.1:6633" is_connected: true fail_mode: secure datapath_type: netdev Port vxlan-98140025 Interface vxlan-98140025 type: vxlan options: {df_default="true", egress_pkt_mark="0", in_key=flow, local_ip="152.20.0.229", out_key=flow, remote_ip="152.20.0.37"} Port br-tun Interface br-tun type: internal Port patch-int Interface patch-int type: patch options: {peer=patch-tun} Port vxlan-98140015 Interface vxlan-98140015 type: vxlan options: {df_default="true", egress_pkt_mark="0", in_key=flow, local_ip="152.20.0.229", out_key=flow, remote_ip="152.20.0.21"} Port vxlan-9814009f Interface vxlan-9814009f type: vxlan options: {df_default="true", egress_pkt_mark="0", in_key=flow, local_ip="152.20.0.229", out_key=flow, remote_ip="152.20.0.159"} Port vxlan-981400cc Interface vxlan-981400cc type: vxlan options: {df_default="true", egress_pkt_mark="0", in_key=flow, local_ip="152.20.0.229", out_key=flow, remote_ip="152.20.0.204"} Bridge br-int Controller "tcp:127.0.0.1:6633" is_connected: true fail_mode: secure datapath_type: netdev Port int-br-tenant Interface int-br-tenant type: patch options: {peer=phy-br-tenant} Port int-br-ex Interface int-br-ex type: patch options: {peer=phy-br-ex} Port int-br-sriov1 Interface int-br-sriov1 type: patch options: {peer=phy-br-sriov1} Port patch-tun Interface patch-tun type: patch options: {peer=patch-int} Port br-int Interface br-int type: internal Port int-br-sriov2 Interface int-br-sriov2 type: patch options: {peer=phy-br-sriov2} Port vhu4142a221-93 tag: 1 Interface vhu4142a221-93 type: dpdkvhostuserclient options: {vhost-server-path="/var/lib/vhost_sockets/vhu4142a221-93"} ovs_version: "2.13.2"
以
tripleo-admin
用户身份登录 SR-IOV Compute 节点并检查 Linux 绑定:$ cat /proc/net/bonding/<bond_name>
输出示例
您应该看到类似如下的输出:
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011) Bonding Mode: fault-tolerance (active-backup) Primary Slave: None Currently Active Slave: eno3v1 MII Status: up MII Polling Interval (ms): 0 Up Delay (ms): 0 Down Delay (ms): 0 Peer Notification Delay (ms): 0 Slave Interface: eno3v1 MII Status: up Speed: 10000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 4e:77:94:bd:38:d2 Slave queue ID: 0 Slave Interface: eno4v1 MII Status: up Speed: 10000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 4a:74:52:a7:aa:7c Slave queue ID: 0
列出 OVS 绑定:
$ sudo ovs-appctl bond/show
输出示例
您应该看到类似如下的输出:
---- dpdkbond0 ---- bond_mode: balance-slb bond may use recirculation: no, Recirc-ID : -1 bond-hash-basis: 0 updelay: 0 ms downdelay: 0 ms next rebalance: 9491 ms lacp_status: off lacp_fallback_ab: false active slave mac: ce:ee:c7:58:8e:b2(dpdk1) slave dpdk0: enabled may_enable: true slave dpdk1: enabled active slave may_enable: true
-
如果您使用
NovaPCIPassthrough
将 VF 传递给实例,请通过部署 SR-IOV 实例进行测试。
其他资源
- 使用 director 安装和管理 Red Hat OpenStack Platform 指南中的创建 overcloud
- 命令行界面参考中的 overcloud 部署
- 第 7.10 节 “在 SR-IOV 或 OVS TC-flower 硬件卸载环境中创建实例”