VMware Integrated OpenStack 支持在底层 vSphere 环境中以非一致内存访问 (NUMA) 感知方式放置 OpenStack 实例。

重要说明: 此功能仅在 VMware Integrated OpenStack 运营商版本 中提供。有关详细信息,请参见 VMware Integrated OpenStack 许可

NUMA 使用高性能连接来链接经济高效的小型节点以提供低延迟和高吞吐量。电信环境中的虚拟网络功能 (VNF) 通常需要这种性能。有关 vSphere 中 NUMA 的信息,请参见《vSphere 资源管理》中的配合使用 NUMA 实例和 ESXi

要获取有关当前 NUMA 配置的信息,请在 ESXi 主机上运行以下命令:

vsish -e get /net/pNics/vmnic<id>/properties | grep 'Device NUMA Node'

前提条件

  • 确保用于虚拟机流量的 vCPU、内存和物理网卡位于同一节点上。
  • vSphere 中,创建在 NUMA 节点上包含所有物理网卡的绑定策略。请参见《vSphere 网络连接》中的绑定和故障切换策略

过程

  1. root 用户身份登录到 Integrated OpenStack Manager
    ssh root@mgmt-server-ip
  2. 打开工具箱并设置 admin 帐户的密码。
    toolbox
    export OS_PASSWORD=admin-account-password
  3. 创建所有物理网卡都位于单个 NUMA 节点上的 Neutron 网络。
  4. 创建包含 numa.nodeAffinity 属性的 OpenStack 特定实例。
    nova flavor-key flavor-id set vmware:extra_config='{"numa.nodeAffinity": "numa-node-id"}'
  5. 使用此过程中创建的特定实例和网络启动 OpenStack 实例。

    具有多个 SRIOV 的实例

    您可以为虚拟机 vNIC 配置多 SRIOV 以均衡多个物理网络适配器 (pnic) 上的工作负载,以避免一个 pnic 上发生网络流量拥堵,而另一个 pnic 上没有流量。此应用程序可以与 pnic 进行 NUMA 对齐以避免性能损失。两个 pnic 以物理连接冗余对的形式工作,对于不同的流量或 VLAN 以不同的对工作。
    注:VMware Integrated OpenStack 7.2 中,如果要指定 nodeAffinity,则必须在特定实例中对其进行设置。创建实例后,无法进行配置。另外,如果已在特定实例中指定 numa.nodeAffinity,它将覆盖 pnic 中的 NUMA 设置。
    以下步骤介绍了创建具有多个 SRIOV 的实例的过程:
    • 配置 nova-compute.conf
      对于 Nova 计算 CR 中的 PCI 定义,可以使用以下格式在 values 部分中输入内容:
      '{"address": "<PCI address of vmnicX>", "product_id": "*", "vendor_id": "*", "physical_network":"<uuid of vlan transport zone of provider-networkA>"}'
      viocli update novacompute <nova-compute-cr-name>
      conf:
        nova_compute:
          DEFAULT:
           ......
          pci:
            passthrough_whitelist:
              type: multistring
              values:
              - '{"address": "0000:1a:00.0", "product_id": "*", "vendor_id": "*", "physical_network":"bf86b52f-a629-4c07-a8bd-14b4b46ba384"}'
              - '{"address": "0000:5e:00.1", "product_id": "*", "vendor_id": "*", "physical_network":"c12a7025-22bc-403c-8ff9-9a25a236704a"}'
              - '{"address": "0000:d8:00.0", "product_id": "*", "vendor_id": "*", "physical_network":"801cd687-b65b-449c-9892-c22647851bf3"}'
              - '{"address": "0000:d8:00.1", "product_id": "*", "vendor_id": "*", "physical_network":"7ab64053-9e48-416d-8b1e-80e1fccd3dcd"}'
    • 创建提供商网络和子网。
      neutron --insecure net-create 3158-net --provider:network_type vlan --provider:physical_network c12a7025-22bc-403c-8ff9-9a25a236704a --provider:segmentation_id 3158
      openstack --insecure subnet create --network 3158-net --allocation-pool start=172.17.2.1,end=172.17.2.254 --gateway 172.17.0.1 --subnet-range 172.17.0.0/22 3158-subnet
      
    • 创建 SRIOV 端口。
      neutron --insecure port-create 3158-net --name 3158-p1 --vnic_type direct
      neutron --insecure port-create 3158-net --name 3158-p2 --vnic_type direct
      neutron --insecure port-create 3158-net --name 3158-p3 --vnic_type direct
    • 启动具有指定端口的实例。您可以看到网络适配器已添加到虚拟机并连接到 vmnic2
      nova boot --flavor m1.tiny --image a133ffd7-1601-42e5-a66f-1eb6130db093 --nic port-id=031e14e3-cf06-40e1-addf-3f13f5b5da66 --nic port-id=25c6ce90-2cff-4189-ae21-abc27a131ae7  <vm-name>