9.2. 为 QoS 策略配置网络服务
Red Hat OpenStack Platform (RHOSP) Networking 服务(neutron)中的服务质量功能通过 qos
服务插件提供。使用 ML2/OVS 和 ML2/OVN 机制驱动程序时,qos
默认加载。但是,对于 ML2/SR-IOV,这并不为 true。
将 qos
服务插件与 ML2/OVS 和 ML2/SR-IOV 机制驱动程序搭配使用时,还必须在其对应的代理上加载 qos
扩展。
以下列表总结了为 QoS 配置网络服务时必须执行的任务。任务详情遵循这个列表:
对于所有 QoS 策略类型:
-
添加
qos
服务插件。 -
为代理(仅限OVS 和 SR-IOV)添加
qos
扩展。
-
添加
仅使用最小带宽策略调度虚拟机实例的其他任务:
- 如果与计算服务(nova)使用的名称不同,请指定虚拟机监控程序名称。
- 为每个 Compute 节点上为相关代理配置资源提供程序入口和出口带宽。
-
(可选)不支持 Mark
vnic_types
。
在只使用 ML/OVS 和隧道的系统上为 DSCP 标记策略的额外任务:
-
将
dscp_inherit
设置为true
。
-
将
先决条件
-
您必须是有权访问 RHOSP undercloud 的
stack
用户。
流程
-
以
stack
用户身份登录 undercloud 主机。 提供 undercloud 凭证文件:
source ~/stackrc
$ source ~/stackrc
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
错误。如果没有收到错误,则插件会被加载,您不需要执行本主题中的步骤。创建 YAML 自定义环境文件。
示例
vi /home/stack/templates/my-neutron-environment.yaml
$ vi /home/stack/templates/my-neutron-environment.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您的环境文件必须包含关键字
parameter_defaults
。在parameter_defaults
下面的新行中,将qos
添加到NeutronServicePlugins
参数:parameter_defaults: NeutronServicePlugins: "qos"
parameter_defaults: NeutronServicePlugins: "qos"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果使用 ML2/OVS 和 ML2/SR-IOV 机制驱动程序,那么您还必须使用
NeutronAgentExtensions
或NeutronSriovAgentExtensions
变量分别加载代理上的qos
扩展:ML2/OVS
parameter_defaults: NeutronServicePlugins: "qos" NeutronAgentExtensions: "qos"
parameter_defaults: NeutronServicePlugins: "qos" NeutronAgentExtensions: "qos"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ML2/SR-IOV
parameter_defaults: NeutronServicePlugins: "qos" NeutronSriovAgentExtensions: "qos"
parameter_defaults: NeutronServicePlugins: "qos" NeutronSriovAgentExtensions: "qos"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
如果要使用最小带宽 QoS 策略调度虚拟机实例,则还必须执行以下操作:
将
放置
添加到插件列表中,并确保列表中还包含qos
:parameter_defaults: NeutronServicePlugins: "qos,placement"
parameter_defaults: NeutronServicePlugins: "qos,placement"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果虚拟机监控程序名称与计算服务(nova)使用的规范虚拟机监控程序名称匹配,则跳至第 7.iii 步。
如果虚拟机监控程序名称与计算服务使用的规范管理程序名称不匹配,请使用
resource_provider_default_hypervisor
指定替代的虚拟机监控程序名称:ML2/OVS
parameter_defaults: NeutronServicePlugins: "qos,placement" ExtraConfig: Neutron::agents::ml2::ovs::resource_provider_default_hypervisor: %{hiera('fqdn_canonical')}
parameter_defaults: NeutronServicePlugins: "qos,placement" ExtraConfig: Neutron::agents::ml2::ovs::resource_provider_default_hypervisor: %{hiera('fqdn_canonical')}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ML2/SR-IOV
parameter_defaults: NeutronServicePlugins: "qos,placement" ExtraConfig: Neutron::agents::ml2::sriov::resource_provider_default_hypervisor: %{hiera('fqdn_canonical')}
parameter_defaults: NeutronServicePlugins: "qos,placement" ExtraConfig: Neutron::agents::ml2::sriov::resource_provider_default_hypervisor: %{hiera('fqdn_canonical')}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要设置替代管理程序名称的另一种方法是使用
resource_provider_hypervisor
:ML2/OVS
parameter_defaults: ExtraConfig: Neutron::agents::ml2::ovs::resource_provider_hypervisors:"ens5:%{hiera('fqdn_canonical')},ens6:%{hiera('fqdn_canonical')}"
parameter_defaults: ExtraConfig: Neutron::agents::ml2::ovs::resource_provider_hypervisors:"ens5:%{hiera('fqdn_canonical')},ens6:%{hiera('fqdn_canonical')}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ML2/SR-IOV
parameter_defaults: ExtraConfig: Neutron::agents::ml2::sriov::resource_provider_hypervisors: "ens5:%{hiera('fqdn_canonical')},ens6:%{hiera('fqdn_canonical')}"
parameter_defaults: ExtraConfig: Neutron::agents::ml2::sriov::resource_provider_hypervisors: "ens5:%{hiera('fqdn_canonical')},ens6:%{hiera('fqdn_canonical')}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
在需要提供最小带宽的每个 Compute 节点上为相关代理配置资源供应商入口和出口带宽。
您可以使用以下格式配置出口、入口或两者:
仅配置出口带宽,单位为 kbps:
NeutronOvsResourceProviderBandwidths: <bridge0>:<egress_kbps>:,<bridge1>:<egress_kbps>:,...,<bridgeN>:<egress_kbps>:
NeutronOvsResourceProviderBandwidths: <bridge0>:<egress_kbps>:,<bridge1>:<egress_kbps>:,...,<bridgeN>:<egress_kbps>:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 仅配置入口带宽,单位为 kbps:
NeutronOvsResourceProviderBandwidths: <bridge0>::<ingress_kbps>,<bridge1>::<ingress_kbps>,...,<bridgeN>::<ingress_kbps>
NeutronOvsResourceProviderBandwidths: <bridge0>::<ingress_kbps>,<bridge1>::<ingress_kbps>,...,<bridgeN>::<ingress_kbps>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以 kbps 配置出口和入口带宽:
NeutronOvsResourceProviderBandwidths: <bridge0>:<egress_kbps>:<ingress_kbps>,<bridge1>:<egress_kbps>:<ingress_kbps>,...,<bridgeN>:<egress_kbps>:<ingress_kbps>
NeutronOvsResourceProviderBandwidths: <bridge0>:<egress_kbps>:<ingress_kbps>,<bridge1>:<egress_kbps>:<ingress_kbps>,...,<bridgeN>:<egress_kbps>:<ingress_kbps>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例 - OVS 代理
要为 OVS 代理配置资源供应商入口和出口带宽,请在网络环境文件中添加以下配置:
parameter_defaults: ... NeutronBridgeMappings: physnet0:br-physnet0 NeutronOvsResourceProviderBandwidths: br-physnet0:10000000:10000000
parameter_defaults: ... NeutronBridgeMappings: physnet0:br-physnet0 NeutronOvsResourceProviderBandwidths: br-physnet0:10000000:10000000
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例 - SRIOV 代理
要为 SRIOV 代理配置资源供应商入口和出口带宽,请在网络环境文件中添加以下配置:
parameter_defaults: ... NeutronML2PhysicalNetworkMtus: physnet0:1500,physnet1:1500 NeutronSriovResourceProviderBandwidths: ens5:40000000:40000000,ens6:40000000:40000000
parameter_defaults: ... NeutronML2PhysicalNetworkMtus: physnet0:1500,physnet1:1500 NeutronSriovResourceProviderBandwidths: ens5:40000000:40000000,ens6:40000000:40000000
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
可选:当多个 ML2 机制驱动程序默认支持它们且在放置服务中跟踪多个代理时,将
vnic_types
标记为不支持,还要在您的环境文件中添加以下配置:示例 - OVS 代理
parameter_defaults: ... NeutronOvsVnicTypeBlacklist: direct
parameter_defaults: ... NeutronOvsVnicTypeBlacklist: direct
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例 - SRIOV 代理
parameter_defaults: ... NeutronSriovVnicTypeBlacklist: direct
parameter_defaults: ... NeutronSriovVnicTypeBlacklist: direct
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
如果要创建 DSCP 标记策略,并将 ML2/OVS 与隧道协议(VXLAN 或 GRE)搭配使用,然后在
NeutronAgentExtensions
下添加以下行:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 当
dscp_inherit
为true
时,网络服务会将内部标头的 DSCP 值复制到外部标头。运行部署命令,并包括核心 heat 模板、其他环境文件和新的自定义环境文件。
重要但是,环境文件的顺序非常重要,因为后续环境文件中定义的参数和资源更为优先。
示例
openstack overcloud deploy --templates \ -e <other_environment_files> \ -e /home/stack/templates/my-neutron-environment.yaml
$ openstack overcloud deploy --templates \ -e <other_environment_files> \ -e /home/stack/templates/my-neutron-environment.yaml
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
错误。