使用 SR-IOV 端口与 Octavia¶
单根 I/O 虚拟化 (SR-IOV) 可以显著降低基于 Octavia Amphora 的负载均衡器的延迟,同时最大化带宽和请求速率。使用 Octavia Amphora 负载均衡器,您可以将 SR-IOV 虚拟功能 (VF) 作为 VIP 端口和/或后端成员端口连接。
在您的计算主机上启用 SR-IOV¶
为了允许 Octavia 负载均衡器使用 SR-IOV,您必须配置 nova 和 neutron,以便在至少一台计算主机上提供 SR-IOV。请遵循 网络指南 来设置您的计算主机以支持 SR-IOV。
配置主机聚合、计算和 Octavia 规格¶
Octavia 在负载均衡器被配置时将网络端口热插到 Amphora 中。这意味着我们需要使用主机聚合和计算规格属性来确保 Amphora 在启用了 SR-IOV 的计算主机上使用正确的网络创建。
主机聚合¶
此配置可以根据您的需要简单或复杂。一种简单的方法是为 SR-IOV 主机聚合添加一个属性,例如
$ openstack aggregate create sriov_aggregate
$ openstack aggregate add host sriov_aggregate sriov-host.example.org
$ openstack aggregate set --property sriov-nic=true sriov_aggregate
更高级的配置可以列出通过 SR-IOV VF 可用的特定网络
$ openstack aggregate create sriov_aggregate
$ openstack aggregate add host sriov_aggregate sriov-host.example.org
$ openstack aggregate set --property public-sriov=true --property members-sriov=true sriov_aggregate
计算规格¶
接下来,我们需要创建一个计算规格,其中包含与主机聚合匹配的必需属性。以下是使用上一节讨论的高级主机聚合的 Octavia Amphora 计算规格的示例
$ openstack flavor create --id amphora-sriov-flavor --ram 1024 --disk 3 --vcpus 1 --private sriov.amphora --property hw_rng:allowed=True --property public-sriov=true --property members-sriov=true
注意
此规格被标记为“私有”,因此必须在 Octavia 服务帐户项目中创建。
Octavia 规格¶
现在我们已经设置好计算服务,可以正确地将我们的 Amphora 实例放置在具有 SR-IOV NIC 的主机上的正确网络上,我们可以创建一个 Octavia 规格,该规格将使用计算规格。
$ openstack loadbalancer flavorprofile create --name amphora-sriov-profile --provider amphora --flavor-data '{"compute_flavor": "amphora-sriov-flavor", "sriov_vip": true, "allow_member_sriov": true}'
$ openstack loadbalancer flavor create --name SRIOV-public-members --flavorprofile amphora-sriov-profile --description "A load balancer that uses SR-IOV for the 'public' network and 'members' network." --enable
当 allow_member_sriov Octavia 规格设置设置为 true 时,用户可以请求 Octavia 使用 SR-IOV VF 连接成员端口。如果 Octavia 无法成功将成员端口作为 SR-IOV VF 连接,则该成员将被标记为 provisioning_status 为 ERROR,因为我们无法为请求的成员网络获取网络端口。如果成员网络已经使用非 SR-IOV 端口连接,该成员也将被标记为 provisioning_status 为 ERROR。
注意
默认情况下,sriov_vip 和 allow_member_sriov 都为 false。
构建 Amphora 镜像¶
Neutron 不支持 SR-IOV 端口上的安全组,因此 Octavia 将在 Amphroa 内部使用 nftables 来提供网络安全。Amphora 镜像必须构建为启用 nftables,才能用于启用了 SR-IOV 的负载均衡器。启用了 nftables 的镜像可用于启用了 SR-IOV 的负载均衡器以及未使用 SR-IOV 端口的负载均衡器。当 Octavia 中添加了负载均衡器 VIP 端口的 SR-IOV 功能时,默认使用 nftables 的设置已更改为 True。在此之前,需要在构建 Amphora 镜像之前通过设置环境变量来启用它
$ export DIB_OCTAVIA_AMP_USE_NFTABLES=True
$ ./diskimage-create.sh