第 4 章 使用 Quality of Service (QoS)策略来管理数据流量
您可以使用服务质量(QoS)策略将速率限制应用到 Red Hat OpenStack Platform (RHOSP)网络上的出口和入口流量,为虚拟机实例提供不同的服务级别。
您可以将 QoS 策略应用到单独的端口,或者将 QoS 策略应用到项目网络,其中没有附加特定策略的端口继承该策略。
内部网络拥有的端口(如 DHCP 和内部路由器端口)不包括在网络策略应用中。
您可以动态应用、修改或删除 QoS 策略。但是,对于保证最小带宽 QoS 策略,您只能在没有使用策略分配给的任何端口时应用修改。
4.1. 使用 QoS 策略控制最小带宽 复制链接链接已复制到粘贴板!
对于 OpenShift (RHOSO)网络服务(neutron)上的 Red Hat OpenStack Services,可在两个不同的上下文中强制执行保证的最小带宽 QoS 规则:网络服务后端实施和资源分配调度强制。
网络后端 ML2/OVN 或 ML2/SR-IOV 会尝试保证应用该规则的每个端口都小于指定的网络带宽。
当您使用资源分配调度带宽强制时,计算服务(nova)仅将虚拟机实例放在支持最小带宽的主机上。
您可以使用网络服务后端强制、资源分配调度强制来应用 QoS 最小带宽规则,或两者。
下表标识了支持最小带宽 QoS 策略的 Modular Layer 2 (ML2)机制驱动程序:
| ML2 机制驱动程序 | Agent | VNIC 类型 |
|---|---|---|
| ML2/OVN | (不适用) | normal |
| ML2/SR-IOV |
| direct |
4.1.1. 使用网络服务后端强制强制实施最小带宽 复制链接链接已复制到粘贴板!
您可以通过将 Red Hat OpenStack Services on OpenShift (RHOSO)服务质量(QoS)策略应用到端口,保证端口的网络流量的最小带宽。这些端口必须支持扁平或 VLAN 物理网络。
目前,带有 Open Virtual Network 机制驱动程序(ML2/OVN)的 Modular Layer 2 插件不支持最小带宽 QoS 规则。
先决条件
-
您的管理员已使用
qos服务插件启用了 Networking 服务。(默认情况下会加载插件。) -
管理员已为您创建一个项目,并为您提供了一个
clouds.yaml文件来访问云。 python-openstackclient软件包驻留在您的工作站上。dnf list installed python-openstackclient
$ dnf list installed python-openstackclientCopy to Clipboard Copied! Toggle word wrap Toggle overflow 不要在同一物理接口上混合带有和没有带宽保证的端口,因为这可能会导致在没有保证的情况下将所需资源(starvation)拒绝到端口。
提示创建主机聚合,以分隔这些端口的带宽保证的端口,而无需带宽保证。
流程
确认为您的云设置了系统
OS_CLOUD变量:echo $OS_CLOUD
$ echo $OS_CLOUD my_cloudCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果需要,重置变量:
export OS_CLOUD=my_other_cloud
$ export OS_CLOUD=my_other_cloudCopy to Clipboard Copied! Toggle word wrap Toggle overflow 作为替代方案,您可以在每次运行
openstack命令时添加--os-cloud <cloud_name> 选项指定云名称。确认
qos服务插件已加载到网络服务中:openstack network qos policy list
$ openstack network qos policy listCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果没有加载
qos服务插件,则您会收到ResourceNotFound错误,并且您必须加载qos服务插件,然后才能继续。如需更多信息,请参阅您的 RHOSO 管理员。识别您要为其创建 QoS 策略的项目的 ID:
openstack project list
$ openstack project listCopy 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_bwCopy to Clipboard Copied! Toggle word wrap Toggle overflow 配置策略的规则。
示例
在本例中,为名为
guaranteed_min_bw的策略创建 ingress 和 egress 的 QoS 规则,最小带宽为40000000kbps :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-ed8w423a6s12Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
ML2/SR-IOV
使用 root 访问权限,登录 Compute 节点,并显示物理功能中保存的虚拟功能的详细信息。
示例
ip -details link show enp4s0f1
# ip -details link show enp4s0f1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.1.2. 使用最小带宽 QoS 策略调度实例 复制链接链接已复制到粘贴板!
您可以将最小带宽 QoS 策略应用到端口,以确保其 Red Hat OpenStack Services on OpenShift (RHOSO)虚拟机实例的主机生成最小网络带宽。
先决条件
-
您的管理员启用了具有
qos和放置服务插件的网络服务。默认情况下加载qos服务插件。 -
管理员已为您创建一个项目,并为您提供了一个
clouds.yaml文件来访问云。 python-openstackclient软件包驻留在您的工作站上。dnf list installed python-openstackclient
$ dnf list installed python-openstackclientCopy to Clipboard Copied! Toggle word wrap Toggle overflow 网络服务必须支持以下 API 扩展:
-
agent-resources-synced -
port-resource-request -
qos-bw-minimum-ingress
-
- 您必须使用 ML2/OVN 或 ML2/SR-IOV 机制驱动程序。
- 只有当没有使用策略所分配到的任何端口的实例时,才能修改最小带宽 QoS 策略。如果端口绑定,网络服务无法更新放置 API 使用量信息。
- 放置服务必须支持 microversion 1.29。
- Compute 服务(nova)必须支持微版本 2.72。
流程
确认为您的云设置了系统
OS_CLOUD变量:echo $OS_CLOUD
$ echo $OS_CLOUD my_cloudCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果需要,重置变量:
export OS_CLOUD=my_other_cloud
$ export OS_CLOUD=my_other_cloudCopy to Clipboard Copied! Toggle word wrap Toggle overflow 作为替代方案,您可以在每次运行
openstack命令时添加--os-cloud <cloud_name> 选项指定云名称。确认
qos服务插件已加载到网络服务中:openstack network qos policy list
$ openstack network qos policy listCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果没有加载
qos服务插件,则您会收到ResourceNotFound错误,并且您必须加载qos服务插件,然后才能继续。如需更多信息,请参阅您的 RHOSO 管理员。识别您要为其创建 QoS 策略的项目的 ID:
openstack project list
$ openstack project listCopy 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_bwCopy to Clipboard Copied! Toggle word wrap Toggle overflow 配置策略的规则。
示例
在本例中,为名为
guaranteed_min_bw的策略创建 ingress 和 egress 的 QoS 规则,最小带宽为40000000kbps :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-ed8w423a6s12Copy to Clipboard Copied! Toggle word wrap Toggle overflow