搜索

7.8. 部署 SR-IOV overcloud

download PDF

在 SR-IOV 环境中配置 Red Hat OpenStack Platform (RHOSP) overcloud 的最后一步是运行 openstack overcloud deploy 命令。命令的输入包括您构建的所有 overcloud 模板和环境文件。

先决条件

  • 访问 stack 用户的 undercloud 主机和凭据。
  • 您已执行了本节前面流程中列出的所有步骤,并编译了所有各种 heat 模板和环境文件,以用作 overcloud deploy 命令的输入。

流程

  1. stack 用户身份登录 undercloud 主机。
  2. 查找 stackrc undercloud 凭证文件:

    $ source ~/stackrc
  3. 输入 openstack overcloud deploy 命令。

    以特定顺序列出 openstack overcloud deploy 命令的输入非常重要。常规规则是首先指定默认的 heat 模板文件,后跟包含自定义配置的自定义环境文件和自定义模板,如覆盖默认属性。

    按照以下顺序将输入添加到 openstack overcloud deploy 命令中:

    1. 包含 overcloud 上 SR-IOV 网络规格的自定义网络定义文件,如 network-data.yaml

      如需更多信息,请参阅使用 director 安装和管理 Red Hat OpenStack Platform 指南中的 网络定义文件配置选项

    2. 包含 RHOSP director 用来部署 OVS 硬件卸载环境的 ControllerComputeOvsHwOffload 角色的角色文件。

      示例: roles_data_compute_sriov.yaml

      如需更多信息,请参阅 第 7.1 节 “为 SR-IOV 生成角色和镜像文件”

    3. 来自置备 overcloud 网络的输出文件。

      示例: overcloud-networks-deployed.yaml

      如需更多信息,请参阅使用 director 安装和管理 Red Hat OpenStack Platform 指南中的配置和管理 overcloud 网络定义

    4. 来自置备 overcloud VIP 的输出文件。

      示例: overcloud-vip-deployed.yaml

      如需更多信息,请参阅 安装和管理 Red Hat OpenStack Platform 指南中的 为 overcloud 配置和置备网络 VIP

    5. 置备裸机节点的输出文件。

      示例: overcloud-baremetal-deployed.yaml

      有关更多信息,请参阅使用 director 安装和管理 Red Hat OpenStack Platform 指南中的 为 overcloud 置备裸机节点

    6. director 用来确定获取容器镜像的位置以及如何存储它们的镜像文件。

      示例: overcloud_images.yaml

      如需更多信息,请参阅 第 7.1 节 “为 SR-IOV 生成角色和镜像文件”

    7. 您的环境使用的网络服务(neutron)机制驱动程序和路由器方案的环境文件:

      • ML2/OVN

        • 分布式虚拟路由(DVR): neutron-ovn-dvr-ha.yaml
        • 集中式虚拟路由: neutron-ovn-ha.yaml
      • ML2/OVS

        • 分布式虚拟路由(DVR): neutron-ovs-dvr.yaml
        • 集中式虚拟路由: neutron-ovs.yaml
    8. 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

    9. 一个或多个包含您的配置的自定义环境文件:

      • SR-IOV 节点的 PCI 透传设备。
      • SR-IOV 节点的特定于角色的参数
      • 覆盖 SR-IOV 环境的默认配置值。

        示例: sriov-overrides.yaml

        如需更多信息,请参阅:

      • 第 7.2 节 “为 SR-IOV 配置 PCI 透传设备”.
      • 第 7.3 节 “添加特定于角色的参数和配置覆盖”.

        示例

        示例 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
  4. 运行 openstack overcloud deploy 命令。

    完成 overcloud 创建后,RHOSP director 会提供帮助您访问 overcloud 的详细信息。

验证

  1. 使用 director 安装和管理 Red Hat OpenStack Platform 指南中的执行验证 overcloud 部署 中的步骤。
  2. 要验证您的 NIC 是否已正确分区,请执行以下操作:

    1. tripleo-admin 用户身份登录 overcloud Compute 节点,并检查 VF 的数量:

      示例

      在本例中,p4p1p4p2 的 VF 数量都是 10

      $ sudo cat /sys/class/net/p4p1/device/sriov_numvfs
      
      10
      
      $ sudo cat /sys/class/net/p4p2/device/sriov_numvfs
      
      10
    2. 显示 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"
    3. 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
  3. 列出 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
  4. 如果您使用 NovaPCIPassthrough 将 VF 传递给实例,请通过部署 SR-IOV 实例进行测试。

其他资源

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.