第4章 Quality of Service (QoS) ポリシーを使用したデータトラフィックの管理
サービスの品質 (QoS) ポリシーを使用して、Red Hat OpenStack Platform (RHOSP) ネットワークの Egress および Ingress トラフィックにレート制限を適用することで、VM インスタンスにさまざまなサービスレベルを提供できます。
個々のポートに QoS ポリシーを適用することも、特定のポリシーがアタッチされていないポートがポリシーを継承するプロジェクトネットワークに QoS ポリシーを適用することもできます。
DHCP や内部ルーターポート等の内部ネットワークが所有するポートは、ネットワークポリシーの適用から除外されます。
QoS ポリシーは、動的に適用、変更、削除することができます。ただし、最小帯域幅を確保する QoS ポリシーには、ポリシーが割り当てられたポートを使用するインスタンスがない場合に限り、変更を適用することができます。
4.1. QoS ポリシーを使用した最小帯域幅の制御 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenStack Services on OpenShift (RHOSO) の Networking サービス (neutron) の場合、確保された最小帯域幅の QoS ルールは、Networking サービスのバックエンドの適用とリソース割り当てのスケジューリングの適用という 2 つの異なるコンテキストで適用できます。
ネットワークバックエンド (ML2/OVN または ML2/SR-IOV) は、ルールが適用される各ポートに、指定されたネットワーク帯域幅を確保することを試みます。
リソース割り当てスケジューリング帯域幅強制を使用すると、Compute サービス (nova) は最小帯域幅をサポートするホストにのみ VM インスタンスを配置します。
Networking サービスバックエンドの適用、リソース割り当てスケジューリングの適用、またはその両方を使用して、QoS 最小帯域幅ルールを適用できます。
次の表は、最小帯域幅の QoS ポリシーをサポートする Modular Layer2 (ML2) メカニズムドライバーを示しています。
| ML2 メカニズムドライバー | エージェント | VNIC タイプ |
|---|---|---|
| ML2/OVN | (該当なし) | normal |
| ML2/SR-IOV |
| direct |
4.1.1. Networking サービスのバックエンドの実行を使用した最小帯域幅の適用 リンクのコピーリンクがクリップボードにコピーされました!
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同じ物理インターフェイス上で、帯域幅が確保されているポートと確保されていないポートを混在させないでください。これにより、確保されていないポートで必要なリソースが拒否される (枯渇する) 可能性があります。
ヒントホストアグリゲートを作成して、帯域幅が確保されているポートと帯域幅が確保されていないポートを分離します。
手順
システムの
OS_CLOUD変数がクラウドに設定されていることを確認します。$ echo $OS_CLOUD my_cloud必要に応じて変数をリセットします。
$ export OS_CLOUD=my_other_cloud代わりに、
openstackコマンドを実行するたびに--os-cloud <cloud_name>オプションを追加してクラウド名を指定することもできます。qosサービスプラグインが Networking サービスにロードされていることを確認します。$ openstack network qos policy listqosサービスプラグインがロードされていない場合は、ResourceNotFoundエラーが発生します。続行するにはqosサービスプラグインをロードする必要があります。詳細は、RHOSO 管理者に問い合わせてください。QoS ポリシーを作成するプロジェクトの ID を特定します。
$ openstack project list出力例
+----------------------------------+----------+ | ID | Name | +----------------------------------+----------+ | 4b0b98f8c6c040f38ba4f7146e8680f5 | auditors | | 519e6344f82e4c079c8e2eabb690023b | services | | 80bf5732752a41128e612fe615c886c6 | demo | | 98a2f53c20ce4d50a40dac4a38016c69 | admin | +----------------------------------+----------+前の手順のプロジェクト ID を使用して、プロジェクトの QoS ポリシーを作成します。
例
この例では、
guaranteed_min_bwという名前の QoS ポリシーがadminプロジェクト用に作成されています。$ openstack network qos policy create --share \ --project 98a2f53c20ce4d50a40dac4a38016c69 guaranteed_min_bwポリシーのルールを設定します。
例
この例では、
guaranteed_min_bwという名前のポリシーに対して、最小帯域幅が40000000kbps の入力および出力の QoS ルールが作成されます。$ openstack network qos rule create \ --type minimum-bandwidth --min-kbps 40000000 \ --ingress guaranteed_min_bw $ openstack network qos rule create \ --type minimum-bandwidth --min-kbps 40000000 \ --egress guaranteed_min_bwポリシーを適用するポートを設定します。
例
この例では、
guaranteed_min_bwポリシーがポート56x9aiw1-2v74-144x-c2q8-ed8w423a6s12に適用されます。$ openstack port set --qos-policy guaranteed_min_bw \ 56x9aiw1-2v74-144x-c2q8-ed8w423a6s12
検証
ML2/SR-IOV
ルートアクセスを使用して、Compute ノードにログインし、物理関数で保持されている仮想関数の詳細を表示します。
例
# ip -details link show enp4s0f1出力例
50: enp4s0f1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 9000 qdisc mq master mx-bond state UP mode DEFAULT group default qlen 1000 link/ether 98:03:9b:9d:73:74 brd ff:ff:ff:ff:ff:ff permaddr 98:03:9b:9d:73:75 promiscuity 0 minmtu 68 maxmtu 9978 bond_slave state BACKUP mii_status UP link_failure_count 0 perm_hwaddr 98:03:9b:9d:73:75 queue_id 0 addrgenmode eui64 numtxqueues 320 numrxqueues 40 gso_max_size 65536 gso_max_segs 65535 portname p1 switchid 74739d00039b0398 vf 0 link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff, spoof checking off, link-state disable, trust off, query_rss off vf 1 link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff, spoof checking off, link-state disable, trust off, query_rss off vf 2 link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff, spoof checking off, link-state disable, trust off, query_rss off vf 3 link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff, spoof checking off, link-state disable, trust off, query_rss off vf 4 link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff, spoof checking off, link-state disable, trust off, query_rss off vf 5 link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff, spoof checking off, link-state disable, trust off, query_rss off vf 6 link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff, spoof checking off, link-state disable, trust off, query_rss off vf 7 link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff, spoof checking off, link-state disable, trust off, query_rss off vf 8 link/ether fa:16:3e:2a:d2:7f brd ff:ff:ff:ff:ff:ff, tx rate 999 (Mbps), max_tx_rate 999Mbps, spoof checking off, link-state disable, trust off, query_rss off vf 9 link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff, spoof checking off, link-state disable, trust off, query_rss off
4.1.2. 最小帯域幅の QoS ポリシーを使用したインスタンスのスケジューリング リンクのコピーリンクがクリップボードにコピーされました!
ポートに最小帯域幅 QoS ポリシーを適用して、Red Hat OpenStack Services on OpenShift (RHOSO) 仮想マシンインスタンスが生成されるホストに最小ネットワーク帯域幅を確保できます。
前提条件
-
管理者が、
qosおよびplacementサービスプラグインを使用して Networking サービスを有効にした。qosサービスプラグインはデフォルトでロードされます。 -
管理者がプロジェクトを作成し、管理者からクラウドにアクセスするための
clouds.yamlファイルが提供されている。 python-openstackclientパッケージがワークステーション上に存在する。$ dnf list installed python-openstackclientNetworking サービスは、次の API 拡張機能をサポートする必要があります。
-
agent-resources-synced -
port-resource-request -
qos-bw-minimum-ingress
-
- ML2/OVN または ML2/SR-IOV メカニズムドライバーを使用する必要があります。
- 最小帯域幅を確保する QoS ポリシーを変更できるのは、ポリシーが割り当てられたポートを使用するインスタンスがない場合に限る。ポートがバインドされている場合、Networking サービスは Placement API の使用情報を更新できない。
- Placement サービスは、マイクロバージョン 1.29 をサポートする必要があります。
- Compute サービス (nova) はマイクロバージョン 2.72 をサポートする必要があります。
手順
システムの
OS_CLOUD変数がクラウドに設定されていることを確認します。$ echo $OS_CLOUD my_cloud必要に応じて変数をリセットします。
$ export OS_CLOUD=my_other_cloud代わりに、
openstackコマンドを実行するたびに--os-cloud <cloud_name>オプションを追加してクラウド名を指定することもできます。qosサービスプラグインが Networking サービスにロードされていることを確認します。$ openstack network qos policy listqosサービスプラグインがロードされていない場合は、ResourceNotFoundエラーが発生します。続行するにはqosサービスプラグインをロードする必要があります。詳細は、RHOSO 管理者に問い合わせてください。QoS ポリシーを作成するプロジェクトの ID を特定します。
$ openstack project list出力例
+----------------------------------+----------+ | ID | Name | +----------------------------------+----------+ | 4b0b98f8c6c040f38ba4f7146e8680f5 | auditors | | 519e6344f82e4c079c8e2eabb690023b | services | | 80bf5732752a41128e612fe615c886c6 | demo | | 98a2f53c20ce4d50a40dac4a38016c69 | admin | +----------------------------------+----------+前の手順のプロジェクト ID を使用して、プロジェクトの QoS ポリシーを作成します。
例
この例では、
guaranteed_min_bwという名前の QoS ポリシーがadminプロジェクト用に作成されています。$ openstack network qos policy create --share \ --project 98a2f53c20ce4d50a40dac4a38016c69 guaranteed_min_bwポリシーのルールを設定します。
例
この例では、
guaranteed_min_bwという名前のポリシーに対して、最小帯域幅が40000000kbps の入力および出力の QoS ルールが作成されます。$ openstack network qos rule create \ --type minimum-bandwidth --min-kbps 40000000 \ --ingress guaranteed_min_bw $ openstack network qos rule create \ --type minimum-bandwidth --min-kbps 40000000 \ --egress guaranteed_min_bwポリシーを適用するポートを設定します。
例
この例では、
guaranteed_min_bwポリシーがポート56x9aiw1-2v74-144x-c2q8-ed8w423a6s12に適用されます。$ openstack port set --qos-policy guaranteed_min_bw \ 56x9aiw1-2v74-144x-c2q8-ed8w423a6s12