4.2. 使用 QoS 策略限制网络流量
您可以在 OpenShift (RHOSO)网络服务(neutron)质量上创建一个 Red Hat OpenStack Services,以限制 RHOSP 网络、端口、浮动 IP 或网关 IP (技术预览)上的带宽,并丢弃超过指定率的任何流量。
先决条件
-
您的管理员已使用
qos服务插件启用了 Networking 服务。(默认情况下会加载插件。) -
管理员已为您创建一个项目,并为您提供了一个
clouds.yaml文件来访问云。 python-openstackclient软件包驻留在您的工作站上。$ dnf list installed python-openstackclient
流程
确认为您的云设置了系统
OS_CLOUD变量:$ echo $OS_CLOUD my_cloud如果需要,重置变量:
$ export OS_CLOUD=my_other_cloud作为替代方案,您可以在每次运行
openstack命令时添加--os-cloud <cloud_name> 选项指定云名称。确认
qos服务插件已加载到网络服务中:$ openstack network qos policy list如果没有加载
qos服务插件,则您会收到ResourceNotFound错误,并且您必须加载qos服务插件,然后才能继续。如需更多信息,请参阅您的 RHOSO 管理员。识别您要为其创建 QoS 策略的项目的 ID:
$ openstack project list输出示例
+----------------------------------+----------+ | ID | Name | +----------------------------------+----------+ | 4b0b98f8c6c040f38ba4f7146e8680f5 | auditors | | 519e6344f82e4c079c8e2eabb690023b | services | | 80bf5732752a41128e612fe615c886c6 | demo | | 98a2f53c20ce4d50a40dac4a38016c69 | admin | +----------------------------------+----------+使用上一步中的项目 ID,为项目创建一个 QoS 策略。
示例
在本例中,为
admin项目创建一个名为bw-limiter的 QoS 策略:$ openstack network qos policy create --share --project 98a2f53c20ce4d50a40dac4a38016c69 bw-limiter配置策略的规则。
注意您可以在策略中添加多个规则,只要每个规则的类型或方向不同。例如,您可以指定两个带宽限制规则,一个用于出口,另一个具有入口方向。
示例
在本例中,为名为
bw-limiter的策略创建 QoS 入口和出口规则,带宽限制为50000kbps,最大突发大小为50000kbps:$ openstack network qos rule create --type bandwidth-limit \ --max-kbps 50000 --max-burst-kbits 50000 --ingress bw-limiter $ openstack network qos rule create --type bandwidth-limit \ --max-kbps 50000 --max-burst-kbits 50000 --egress bw-limiter您可以创建一个附加策略的端口,或将策略附加到预先存在的端口。
示例 - 创建带有附加策略的端口
在本例中,策略
bw-limiter与端口port2关联:$ openstack port create --qos-policy bw-limiter --network private port2输出示例
+-----------------------+--------------------------------------------------+ | Field | Value | +-----------------------+--------------------------------------------------+ | admin_state_up | UP | | allowed_address_pairs | | | binding_host_id | | | binding_profile | | | binding_vif_details | | | binding_vif_type | unbound | | binding_vnic_type | normal | | created_at | 2024-09-19T19:20:24Z | | data_plane_status | None | | description | | | device_id | | | device_owner | | | dns_assignment | None | | dns_name | None | | extra_dhcp_opts | | | fixed_ips | ip_address='192.0.2.210', subnet_id='292f8c-...' | | id | f51562ee-da8d-42de-9578-f6f5cb248226 | | ip_address | None | | mac_address | fa:16:3e:d9:f2:ba | | name | port2 | | network_id | 55dc2f70-0f92-4002-b343-ca34277b0234 | | option_name | None | | option_value | None | | port_security_enabled | False | | project_id | 98a2f53c20ce4d50a40dac4a38016c69 | | qos_policy_id | 8491547e-add1-4c6c-a50e-42121237256c | | revision_number | 6 | | security_group_ids | 0531cc1a-19d1-4cc7-ada5-49f8b08245be | | status | DOWN | | subnet_id | None | | tags | [] | | trunk_details | None | | updated_at | 2024-09-19T19:23:00Z | +-----------------------+--------------------------------------------------+示例 - 将策略附加到预先存在的端口
在本例中,策略
bw-limiter与port1关联:$ openstack port set --qos-policy bw-limiter port1