9.3. 使用 QoS 策略控制最小带宽
对于 Red Hat OpenStack Platform (RHOSP)网络服务(neutron),可以在两个不同的上下文中强制实施保证最小带宽 QoS 规则:网络服务后端强制和资源分配调度强制。
网络后端 ML2/OVS 或 ML2/SR-IOV 会尝试保证应用该规则的每个端口都小于指定的网络带宽。
当您使用资源分配调度带宽强制时,计算服务(nova)仅将虚拟机实例放在支持最小带宽的主机上。
您可以使用网络服务后端强制、资源分配调度实施或两者都应用 QoS 最小带宽规则。
下表标识支持最小带宽 QoS 策略的 Modular Layer 2 (ML2)机制驱动程序。
ML2 机制驱动程序 | Agent | VNIC 类型 |
---|---|---|
ML2/SR-IOV | sriovnicswitch | direct |
ML2/OVS | openvswitch | normal |
9.3.1. 使用网络服务后端强制强制最小带宽 复制链接链接已复制到粘贴板!
您可以通过将 Red Hat OpenStack Platform (RHOSP)服务质量(QoS)策略应用到端口来确保网络流量的最小带宽。这些端口必须由扁平或 VLAN 物理网络支持。
目前,带有 Open Virtual Network 机制驱动程序(ML2/OVN)的 Modular Layer 2 插件不支持最小带宽 QoS 规则。
先决条件
-
RHOSP Networking 服务(neutron)必须载入
qos
服务插件。(这是默认值。) 不要将具有和没有带宽保证的端口混合到同一物理接口,因为这可能导致在不保证的情况下将所需的资源(打包)拒绝端口。
提示创建主机聚合以将带宽保证与那些端口分开,而无需带宽保证。
流程
提供您的凭据文件。
示例
source ~/overcloudrc
$ source ~/overcloudrc
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 确认
qos
服务插件已加载到网络服务中:openstack network qos policy list
$ openstack network qos policy list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果没有加载
qos
服务插件,则您会收到ResourceNotFound
错误,且您必须加载qos
服务插件,然后才能继续。更多信息请参阅 第 9.2 节 “为 QoS 策略配置网络服务”。识别您要为其创建 QoS 策略的项目 ID:
openstack project list
$ openstack project list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用上一步中的项目 ID,为项目创建一个 QoS 策略。
示例
在本例中,为
admin
项目创建一个名为guaranteed_min_bw
的 QoS 策略:openstack network qos policy create --share \ --project 98a2f53c20ce4d50a40dac4a38016c69 guaranteed_min_bw
$ openstack network qos policy create --share \ --project 98a2f53c20ce4d50a40dac4a38016c69 guaranteed_min_bw
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 配置策略的规则。
示例
在本例中,为名为
guaranteed_min_bw
的策略创建最小带宽为40000000
kbps 的入口和出口的 QoS 规则:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 配置端口以将策略应用到。
示例
在本例中,
guaranteed_min_bw
策略应用于端口 ID56x9aiw1-2v74-144x-c2q8-ed8w423a6s12
:openstack port set --qos-policy guaranteed_min_bw \ 56x9aiw1-2v74-144x-c2q8-ed8w423a6s12
$ openstack port set --qos-policy guaranteed_min_bw \ 56x9aiw1-2v74-144x-c2q8-ed8w423a6s12
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
ML2/SR-IOV
使用 root 访问权限,登录 Compute 节点,并显示物理功能中保存的虚拟功能的详细信息。
示例
ip -details link show enp4s0f1
# ip -details link show enp4s0f1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ML2/OVS
使用 root 访问权限,登录到计算节点,显示物理网桥接口上的
tc
规则和类。示例
tc class show dev mx-bond
# tc class show dev mx-bond
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
class htb 1:11 parent 1:fffe prio 0 rate 4Gbit ceil 34359Mbit burst 9000b cburst 8589b class htb 1:1 parent 1:fffe prio 0 rate 72Kbit ceil 34359Mbit burst 9063b cburst 8589b class htb 1:fffe root rate 34359Mbit ceil 34359Mbit burst 8589b cburst 8589b
class htb 1:11 parent 1:fffe prio 0 rate 4Gbit ceil 34359Mbit burst 9000b cburst 8589b class htb 1:1 parent 1:fffe prio 0 rate 72Kbit ceil 34359Mbit burst 9063b cburst 8589b class htb 1:fffe root rate 34359Mbit ceil 34359Mbit burst 8589b cburst 8589b
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
9.3.2. 使用最小带宽 QoS 策略调度实例 复制链接链接已复制到粘贴板!
您可以将最小带宽 QoS 策略应用到端口,以确保生成其 Red Hat OpenStack Platform (RHOSP)虚拟机实例的主机具有最低网络带宽。
先决条件
-
RHOSP Networking 服务(neutron)必须载入
qos
和placement
服务插件。默认情况下加载qos
服务插件。 网络服务必须支持以下 API 扩展:
-
agent-resources-synced
-
port-resource-request
-
qos-bw-minimum-ingress
-
- 您必须使用 ML2/OVS 或 ML2/SR-IOV 机制驱动程序。
- 只有当没有使用该策略的任何端口的实例时,才能修改最小带宽 QoS 策略。如果端口绑定,网络服务将无法更新放置 API 使用量信息。
- 放置服务必须支持微版本 1.29。
- Compute 服务(nova)必须支持 microversion 2.72。
流程
提供您的凭据文件。
示例
source ~/overcloudrc
$ source ~/overcloudrc
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 确认
qos
服务插件已加载到网络服务中:openstack network qos policy list
$ openstack network qos policy list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果没有加载
qos
服务插件,则您会收到ResourceNotFound
错误,且您必须加载qos
服务插件,然后才能继续。更多信息请参阅 第 9.2 节 “为 QoS 策略配置网络服务”。识别您要为其创建 QoS 策略的项目 ID:
openstack project list
$ openstack project list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用上一步中的项目 ID,为项目创建一个 QoS 策略。
示例
在本例中,为
admin
项目创建一个名为guaranteed_min_bw
的 QoS 策略:openstack network qos policy create --share \ --project 98a2f53c20ce4d50a40dac4a38016c69 guaranteed_min_bw
$ openstack network qos policy create --share \ --project 98a2f53c20ce4d50a40dac4a38016c69 guaranteed_min_bw
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 配置策略的规则。
示例
在本例中,为名为
guaranteed_min_bw
的策略创建最小带宽为40000000
kbps 的入口和出口的 QoS 规则:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 配置端口以将策略应用到。
示例
在本例中,
guaranteed_min_bw
策略应用于端口 ID56x9aiw1-2v74-144x-c2q8-ed8w423a6s12
:openstack port set --qos-policy guaranteed_min_bw \ 56x9aiw1-2v74-144x-c2q8-ed8w423a6s12
$ openstack port set --qos-policy guaranteed_min_bw \ 56x9aiw1-2v74-144x-c2q8-ed8w423a6s12
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
- 以 stack 用户身份登录 undercloud 主机。
查找 undercloud 凭证文件:
source ~/stackrc
$ source ~/stackrc
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 列出所有可用资源供应商:
openstack --os-placement-api-version 1.17 resource provider list
$ openstack --os-placement-api-version 1.17 resource provider list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查特定资源提供的带宽。
openstack --os-placement-api-version 1.17 \ resource provider inventory list <rp_uuid>
(undercloud)$ openstack --os-placement-api-version 1.17 \ resource provider inventory list <rp_uuid>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
在本例中,由主机
dell-r730-014
上的接口enp6s0f1
提供的带宽被检查,使用资源供应商 UUIDe518d381-d590-5767-8f34-c20def34b252
:openstack --os-placement-api-version 1.17 \ resource provider inventory list e518d381-d590-5767-8f34-c20def34b252
[stack@dell-r730-014 nova]$ openstack --os-placement-api-version 1.17 \ resource provider inventory list e518d381-d590-5767-8f34-c20def34b252
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要在实例运行时检查资源供应商的声明,请运行以下命令:
openstack --os-placement-api-version 1.17 \ resource provider show --allocations <rp_uuid>
(undercloud)$ openstack --os-placement-api-version 1.17 \ resource provider show --allocations <rp_uuid>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
在本例中,针对资源提供程序的声明在主机(
dell-r730-014
)上进行检查,使用资源提供程序 UUIDe518d381-d590-5767-8f34-c20def34b252
:openstack --os-placement-api-version 1.17 resource provider show --allocations e518d381-d590-5767-8f34-c20def34b252 -f value -c allocations
[stack@dell-r730-014 nova]$ openstack --os-placement-api-version 1.17 resource provider show --allocations e518d381-d590-5767-8f34-c20def34b252 -f value -c allocations
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{3cbb9e07-90a8-4154-8acd-b6ec2f894a83: {resources: {NET_BW_EGR_KILOBIT_PER_SEC: 1000000, NET_BW_IGR_KILOBIT_PER_SEC: 1000000}}, 8848b88b-4464-443f-bf33-5d4e49fd6204: {resources: {NET_BW_EGR_KILOBIT_PER_SEC: 1000000, NET_BW_IGR_KILOBIT_PER_SEC: 1000000}}, 9a29e946-698b-4731-bc28-89368073be1a: {resources: {NET_BW_EGR_KILOBIT_PER_SEC: 1000000, NET_BW_IGR_KILOBIT_PER_SEC: 1000000}}, a6c83b86-9139-4e98-9341-dc76065136cc: {resources: {NET_BW_EGR_KILOBIT_PER_SEC: 3000000, NET_BW_IGR_KILOBIT_PER_SEC: 3000000}}, da60e33f-156e-47be-a632-870172ec5483: {resources: {NET_BW_EGR_KILOBIT_PER_SEC: 1000000, NET_BW_IGR_KILOBIT_PER_SEC: 1000000}}, eb582a0e-8274-4f21-9890-9a0d55114663: {resources: {NET_BW_EGR_KILOBIT_PER_SEC: 3000000, NET_BW_IGR_KILOBIT_PER_SEC: 3000000}}}
{3cbb9e07-90a8-4154-8acd-b6ec2f894a83: {resources: {NET_BW_EGR_KILOBIT_PER_SEC: 1000000, NET_BW_IGR_KILOBIT_PER_SEC: 1000000}}, 8848b88b-4464-443f-bf33-5d4e49fd6204: {resources: {NET_BW_EGR_KILOBIT_PER_SEC: 1000000, NET_BW_IGR_KILOBIT_PER_SEC: 1000000}}, 9a29e946-698b-4731-bc28-89368073be1a: {resources: {NET_BW_EGR_KILOBIT_PER_SEC: 1000000, NET_BW_IGR_KILOBIT_PER_SEC: 1000000}}, a6c83b86-9139-4e98-9341-dc76065136cc: {resources: {NET_BW_EGR_KILOBIT_PER_SEC: 3000000, NET_BW_IGR_KILOBIT_PER_SEC: 3000000}}, da60e33f-156e-47be-a632-870172ec5483: {resources: {NET_BW_EGR_KILOBIT_PER_SEC: 1000000, NET_BW_IGR_KILOBIT_PER_SEC: 1000000}}, eb582a0e-8274-4f21-9890-9a0d55114663: {resources: {NET_BW_EGR_KILOBIT_PER_SEC: 3000000, NET_BW_IGR_KILOBIT_PER_SEC: 3000000}}}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow