10.2.2. 最小帯域幅を確保する QoS ポリシーおよびルールの作成と適用
物理ネットワーク (physnet) がサポートする segmentation_type=flat
または segmentation_type=vlan
が設定されたネットワークのポートに対して、帯域幅の確保を要求することができます。
- 同じ物理インターフェース上で、帯域幅を確保するポートと確保しないポートを混在させないでください。確保しないポートの帯域幅が不足する可能性があるためです。ホストアグリゲートを作成して、帯域幅を確保するポートを確保しないポートから分離します。
- 最小帯域幅を確保する QoS ポリシーを変更できるのは、ポリシーが割り当てられたポートを使用するインスタンスがない場合に限ります。
サポートされているドライバーおよびエージェント
- SR-IOV (sriovnicswitch) vnic_types: direct、macvtap
ML2/OVS (openvswitch) vnic_types: normal、direct
注記ML2/OVN は最小帯域幅をサポートしません。
前提条件
- Placement サービスは、マイクロバージョン 1.29 をサポートする必要があります。
- Compute (nova) サービスは、マイクロバージョン 2.72 をサポートする必要があります。
Networking (neutron) サービスは、以下の API 拡張機能をサポートする必要があります。
-
agent-resources-synced
-
port-resource-request
-
qos-bw-minimum-ingress
-
-
OpenStack CLI を使用して配置情報を照会するには、アンダークラウドに Placement サービスパッケージ
python3-osc-placement
をインストールします。
手順
Openstack Networking で Placement サービスプラグインがまだ設定されていない場合には、以下の手順を実施します。
カスタム環境ファイルに
NeutronServicePlugins
がすでに設定されている場合には、パラメーターを更新して「placement」を含めます。そうでなければ、カスタム環境ファイルを作成して以下の設定を追加します。parameter_defaults: NeutronServicePlugins: 'router,qos,segments,trunk,placement'
parameter_defaults: NeutronServicePlugins: 'router,qos,segments,trunk,placement'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow この設定を適用するには、その他の環境ファイルと共にカスタム環境ファイルをスタックに追加して、オーバークラウドをデプロイします。
(undercloud) $ openstack overcloud deploy --templates \ -e [your environment files] -e /home/stack/templates/network-environment.yaml
(undercloud) $ openstack overcloud deploy --templates \ -e [your environment files] -e /home/stack/templates/network-environment.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 詳しい情報は、『director のインストールと使用方法』の「オーバークラウド環境の変更」を参照してください。
(オプション)
vnic_types
をブラックリストに登録するには (複数の ML2 メカニズムドライバーがデフォルトでサポートし、複数のエージェントが Placement により追跡されている場合)、/etc/neutron/plugins/ml2/ml2_conf.ini
にvnic_type_blacklist
を追加して、エージェントを再起動します。[ovs_driver] vnic_type_blacklist = direct [sriov_driver] #vnic_type_blacklist = direct
[ovs_driver] vnic_type_blacklist = direct [sriov_driver] #vnic_type_blacklist = direct
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 最小帯域幅を提供する必要のある各コンピュートノードの該当するエージェントに対して、リソースプロバイダーの受信および送信帯域幅を設定します。以下の形式を使用して、受信もしくは送信のみ、またはその両方を設定することができます。
送信帯域幅だけを設定する場合 (kbps 単位):
resource_provider_bandwidths = <bridge0>:<egress_kbps>:,<bridge1>:<egress_kbps>:,...,<bridgeN>:<egress_kbps>:
resource_provider_bandwidths = <bridge0>:<egress_kbps>:,<bridge1>:<egress_kbps>:,...,<bridgeN>:<egress_kbps>:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 受信帯域幅だけを設定する場合 (kbps 単位):
resource_provider_bandwidths = <bridge0>::<ingress_kbps>,<bridge1>::<ingress_kbps>,...,<bridgeN>::<ingress_kbps>
resource_provider_bandwidths = <bridge0>::<ingress_kbps>,<bridge1>::<ingress_kbps>,...,<bridgeN>::<ingress_kbps>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 送信および受信帯域幅の両方を設定する場合 (kbps 単位):
resource_provider_bandwidths = <bridge0>:<egress_kbps>:<ingress_kbps>,<bridge1>:<egress_kbps>:<ingress_kbps>,...,<bridgeN>:<egress_kbps>:<ingress_kbps>
resource_provider_bandwidths = <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 エージェント用にリソースプロバイダーの受信および送信帯域幅を設定するには、
/etc/neutron/plugins/ml2/openvswitch_agent.ini
にresource_provider_bandwidths
を追加します。[ovs] bridge_mappings = physnet0:br-physnet0 resource_provider_bandwidths = br-physnet0:10000000:10000000
[ovs] bridge_mappings = physnet0:br-physnet0 resource_provider_bandwidths = br-physnet0:10000000:10000000
Copy to Clipboard Copied! Toggle word wrap Toggle overflow SRIOV エージェント用にリソースプロバイダーの受信および送信帯域幅を設定するには、
/etc/neutron/plugins/ml2/sriov_agent.ini
にresource_provider_bandwidths
を追加します。[sriov_nic] physical_device_mappings = physnet0:ens5,physnet0:ens6 resource_provider_bandwidths = ens5:40000000:40000000,ens6:40000000:40000000
[sriov_nic] physical_device_mappings = physnet0:ens5,physnet0:ens6 resource_provider_bandwidths = ens5:40000000:40000000,ens6:40000000:40000000
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
リソースプロバイダーの帯域幅を実装するには、設定したエージェントを再起動します。
QoS ポリシーを作成するプロジェクトの ID を特定します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow admin
プロジェクトに「guaranteed_min_bw」という名前の QoS ポリシーを作成します。(overcloud) $ openstack network qos policy create --share --project 98a2f53c20ce4d50a40dac4a38016c69 guaranteed_min_bw
(overcloud) $ openstack network qos policy create --share --project 98a2f53c20ce4d50a40dac4a38016c69 guaranteed_min_bw
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 「guaranteed_min_bw」ポリシーのルールを設定します。
(overcloud) $ openstack network qos rule create --type minimum-bandwidth --min-kbps 40000000 --ingress guaranteed_min_bw (overcloud) $ openstack network qos rule create --type minimum-bandwidth --min-kbps 40000000 --egress guaranteed_min_bw
(overcloud) $ openstack network qos rule create --type minimum-bandwidth --min-kbps 40000000 --ingress guaranteed_min_bw (overcloud) $ openstack network qos rule create --type minimum-bandwidth --min-kbps 40000000 --egress guaranteed_min_bw
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 「guaranteed_min_bw」ポリシーを適用するポートを設定します。
(overcloud) $ openstack port set --qos-policy guaranteed_min_bw <port_name|port_ID>
(overcloud) $ openstack port set --qos-policy guaranteed_min_bw <port_name|port_ID>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
利用可能なすべてのリソースプロバイダーを一覧表示します。
(undercloud) $ openstack --os-placement-api-version 1.17 resource provider list
(undercloud) $ 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 特定のリソースが提供する帯域幅を確認します。
(undercloud) $ 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 によって提供される帯域幅が示されています。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow インスタンス実行時のリソースプロバイダーに対する要求を確認するには、以下のコマンドを実行します。
(undercloud) $ 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 出力例:
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 {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