9.3. 使用 QoS 策略控制最小带宽
对于 Red Hat OpenStack Platform (RHOSP)网络服务(neutron),可在两个不同的上下文中强制实施保证的最小带宽 QoS 规则:网络服务后端强制和资源分配调度强制。
ML2/OVS 或 ML2/SR-IOV 的网络后端会尝试确保应用该规则的每个端口都小于指定的网络带宽。
当您使用资源分配调度带宽强制时,计算服务(nova)仅将虚拟机实例放在支持最小带宽的主机上。
您可以使用网络服务后端实施、资源分配调度强制或两者都应用 QoS minumum 带宽规则。
下表标识了支持最小带宽 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 网络服务(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 的 ingress 和 egress 的 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 网络服务(neutron)必须加载
qos
和placement
服务插件。默认情况下加载qos
服务插件。 网络服务必须支持以下 API 扩展:
-
agent-resources-synced
-
port-resource-request
-
qos-bw-minimum-ingress
-
- 您必须使用 ML2/OVS 或 ML2/SR-IOV 机制驱动程序。
- 只有当没有实例使用分配给策略的任何端口时,才能修改最小带宽 QoS 策略。如果绑定了端口,网络服务无法更新放置 API 使用信息。
- 放置服务必须支持 microversion 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 的 ingress 和 egress 的 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