検索

9.3. QoS ポリシーを使用した最小帯域幅の制御

download PDF

Red Hat OpenStack Platform (RHOSP) Networking サービス (neutron) の場合、ネットワークサービスのバックエンドの適用とリソース割り当てのスケジューリングの 2 つの異なるコンテキストで保証された最小帯域幅の QoS ルールを適用できます。

ネットワークバックエンド、ML2/OVS または ML2/SR-IOV は、ルールが適用される各ポートが指定されたネットワーク帯域幅以上であることを保証しようとします。

リソース割り当てスケジューリング帯域幅強制を使用すると、Compute サービス (nova) は最小帯域幅をサポートするホストにのみ VM インスタンスを配置します。

ネットワークサービスバックエンドの適用、リソース割り当てスケジュールの適用、またはその両方を使用して、QoS 最小帯域幅ルールを適用できます。

次の表は、最小帯域幅の QoS ポリシーをサポートする Modular Layer2(ML2) メカニズムドライバーを示しています。

表9.4 最小帯域幅の QoS をサポートする ML2 メカニズムドライバー
ML2 メカニズムドライバーエージェントVNIC タイプ

ML2/SR-IOV

sriovnicswitch

direct

ML2/OVS

openvswitch

normal

9.3.1. Networking サービスのバックエンドの実行を使用した最小帯域幅の適用

Red Hat OpenStack Platform (RHOSP) のサービス品質 (QoS) ポリシーをポートに適用することで、ポートのネットワークトラフィックの最小帯域幅を保証できます。これらのポートは、フラットまたは VLAN 物理ネットワークによってサポートされている必要があります。

注記

現在、Open Virtual Network メカニズムドライバー (ML2/OVN) を備えた Modular Layer 2 プラグインは、最小帯域幅の QoS ルールをサポートしていません。

前提条件

  • RHOSP Networking サービス (neutron) には、qos サービスプラグインがロードされている必要があります。(これがデフォルトです)。
  • 同じ物理インターフェイス上で、帯域幅が保証されているポートと保証されていないポートを混在させないでください。これにより、保証のないポートで必要なリソースが拒否される (枯渇する) 可能性があります。

    ヒント

    ホストアグリゲートを作成して、帯域幅が保証されているポートと帯域幅が保証されていないポートを分離します。

手順

  1. Source コマンドで認証情報ファイルを読み込みます。

    $ source ~/overcloudrc

  2. qos サービスプラグインが Networking サービスにロードされていることを確認します。

    $ openstack network qos policy list

    qos サービスプラグインがロードされていない場合は、ResourceNotFound エラーが発生します。続行するには qos サービスプラグインをロードする必要があります。詳細は、「QoS ポリシーのネットワークサービスの設定」 を参照してください。

  3. QoS ポリシーを作成するプロジェクトの ID を特定します。

    $ openstack project list

    出力例

    +----------------------------------+----------+
    | ID                               | Name     |
    +----------------------------------+----------+
    | 4b0b98f8c6c040f38ba4f7146e8680f5 | auditors |
    | 519e6344f82e4c079c8e2eabb690023b | services |
    | 80bf5732752a41128e612fe615c886c6 | demo     |
    | 98a2f53c20ce4d50a40dac4a38016c69 | admin    |
    +----------------------------------+----------+

  4. 前の手順のプロジェクト ID を使用して、プロジェクトの QoS ポリシーを作成します。

    この例では、guaranteed_min_bw という名前の QoS ポリシーが admin プロジェクト用に作成されています。

    $ openstack network qos policy create --share \
     --project 98a2f53c20ce4d50a40dac4a38016c69 guaranteed_min_bw
  5. ポリシーのルールを設定します。

    この例では、guaranteed_min_bw という名前のポリシーに対して、最小帯域幅が 40000000 kbps の入力および出力の 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
  6. ポリシーを適用するポートを設定します。

    この例では、guaranteed_min_bw ポリシーがポート 56x9aiw1-2v74-144x-c2q8-ed8w423a6s12 に適用されます。

    $ openstack port set --qos-policy guaranteed_min_bw \
     56x9aiw1-2v74-144x-c2q8-ed8w423a6s12

検証

  • ML2/SR-IOV

    ルートアクセスを使用して、コンピュートノードにログインし、物理関数で保持されている仮想関数の詳細を表示します。

    # 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

  • ML2/OVS

    ルートアクセスを使用して、コンピュートノードにログインし、物理ブリッジインターフェイスに tc ルールとクラスを表示します。

    #  tc class show dev mx-bond

    出力例

    class htb 1:11 parent 1:fffe prio 0 rate 4Gbit ceil 34359Mbit burst 9000b cburst 8589b
    class htb 1:1 parent 1:fffe prio 0 rate 72Kbit ceil 34359Mbit burst 9063b cburst 8589b
    class htb 1:fffe root rate 34359Mbit ceil 34359Mbit burst 8589b cburst 8589b

関連情報

9.3.2. 最小帯域幅の QoS ポリシーを使用したインスタンスのスケジューリング

最小帯域幅の QoS ポリシーをポートに適用して、Red Hat OpenStack Platform (RHOSP) VM インスタンスが生成されるホストに最小のネットワーク帯域幅があることを保証できます。

前提条件

  • RHOSP Networking サービス (neutron) には、qos および placement サービスのプラグインがロードされている必要があります。qos サービスプラグインはデフォルトでロードされます。
  • ネットワークサービスは、次の API 拡張機能をサポートする必要があります。

    • agent-resources-synced
    • port-resource-request
    • qos-bw-minimum-ingress
  • ML2/OVS または ML2/SR-IOV メカニズムドライバーを使用する必要がある。
  • 最小帯域幅を確保する QoS ポリシーを変更できるのは、ポリシーが割り当てられたポートを使用するインスタンスがない場合に限る。ポートがバインドされている場合、ネットワークサービスは配置 API の使用情報を更新できない。
  • Placement サービスは、マイクロバージョン 1.29 をサポートする必要があります。
  • Compute サービス (nova) はマイクロバージョン 2.72 をサポートする必要があります。

手順

  1. Source コマンドで認証情報ファイルを読み込みます。

    $ source ~/overcloudrc

  2. qos サービスプラグインが Networking サービスにロードされていることを確認します。

    $ openstack network qos policy list

    qos サービスプラグインがロードされていない場合は、ResourceNotFound エラーが発生します。続行するには qos サービスプラグインをロードする必要があります。詳細は、「QoS ポリシーのネットワークサービスの設定」 を参照してください。

  3. QoS ポリシーを作成するプロジェクトの ID を特定します。

    $ openstack project list

    出力例

    +----------------------------------+----------+
    | ID                               | Name     |
    +----------------------------------+----------+
    | 4b0b98f8c6c040f38ba4f7146e8680f5 | auditors |
    | 519e6344f82e4c079c8e2eabb690023b | services |
    | 80bf5732752a41128e612fe615c886c6 | demo     |
    | 98a2f53c20ce4d50a40dac4a38016c69 | admin    |
    +----------------------------------+----------+

  4. 前の手順のプロジェクト ID を使用して、プロジェクトの QoS ポリシーを作成します。

    この例では、guaranteed_min_bw という名前の QoS ポリシーが admin プロジェクト用に作成されています。

    $ openstack network qos policy create --share \
     --project 98a2f53c20ce4d50a40dac4a38016c69 guaranteed_min_bw
  5. ポリシーのルールを設定します。

    この例では、guaranteed_min_bw という名前のポリシーに対して、最小帯域幅が 40000000 kbps の入力および出力の 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
  6. ポリシーを適用するポートを設定します。

    この例では、guaranteed_min_bw ポリシーがポート 56x9aiw1-2v74-144x-c2q8-ed8w423a6s12 に適用されます。

    $ openstack port set --qos-policy guaranteed_min_bw \
     56x9aiw1-2v74-144x-c2q8-ed8w423a6s12

検証

  1. アンダークラウドホストに stack ユーザーとしてログインします。
  2. source コマンドでアンダークラウドの認証情報ファイルを読み込みます。

    $ source ~/stackrc
  3. 利用可能なすべてのリソースプロバイダーをリスト表示します。

    $ openstack --os-placement-api-version 1.17 resource provider list

    出力例

    +--------------------------------------+-----------------------------------------------------+------------+--------------------------------------+--------------------------------------+
    | uuid                                 | name                                                | generation | root_provider_uuid                   | parent_provider_uuid                 |
    +--------------------------------------+-----------------------------------------------------+------------+--------------------------------------+--------------------------------------+
    | 31d3d88b-bc3a-41cd-9dc0-fda54028a882 | dell-r730-014.localdomain                           |         28 | 31d3d88b-bc3a-41cd-9dc0-fda54028a882 | None                                 |
    | 6b15ddce-13cf-4c85-a58f-baec5b57ab52 | dell-r730-063.localdomain                           |         18 | 6b15ddce-13cf-4c85-a58f-baec5b57ab52 | None                                 |
    | e2f5082a-c965-55db-acb3-8daf9857c721 | dell-r730-063.localdomain:NIC Switch agent          |          0 | 6b15ddce-13cf-4c85-a58f-baec5b57ab52 | 6b15ddce-13cf-4c85-a58f-baec5b57ab52 |
    | d2fb0ef4-2f45-53a8-88be-113b3e64ba1b | dell-r730-014.localdomain:NIC Switch agent          |          0 | 31d3d88b-bc3a-41cd-9dc0-fda54028a882 | 31d3d88b-bc3a-41cd-9dc0-fda54028a882 |
    | f1ca35e2-47ad-53a0-9058-390ade93b73e | dell-r730-063.localdomain:NIC Switch agent:enp6s0f1 |         13 | 6b15ddce-13cf-4c85-a58f-baec5b57ab52 | e2f5082a-c965-55db-acb3-8daf9857c721 |
    | e518d381-d590-5767-8f34-c20def34b252 | dell-r730-014.localdomain:NIC Switch agent:enp6s0f1 |         19 | 31d3d88b-bc3a-41cd-9dc0-fda54028a882 | d2fb0ef4-2f45-53a8-88be-113b3e64ba1b |
    +--------------------------------------+-----------------------------------------------------+------------+--------------------------------------+--------------------------------------+

  4. 特定のリソースが提供する帯域幅を確認します。

    (undercloud)$ openstack --os-placement-api-version 1.17 \
     resource provider inventory list <rp_uuid>

    この例では、リソースプロバイダー UUID、e518d381-d590-5767-8f34-c20def34b252 を使用して、ホスト dell-r730-014 のインターフェイス enp6s0f1 によって提供される帯域幅がチェックされます。

    [stack@dell-r730-014 nova]$ openstack --os-placement-api-version 1.17 \
     resource provider inventory list e518d381-d590-5767-8f34-c20def34b252

    出力例

    +----------------------------+------------------+----------+------------+----------+-----------+----------+
    | resource_class             | allocation_ratio | min_unit |   max_unit | reserved | step_size |    total |
    +----------------------------+------------------+----------+------------+----------+-----------+----------+
    | NET_BW_EGR_KILOBIT_PER_SEC |              1.0 |        1 | 2147483647 |        0 |         1 | 10000000 |
    | NET_BW_IGR_KILOBIT_PER_SEC |              1.0 |        1 | 2147483647 |        0 |         1 | 10000000 |
    +----------------------------+------------------+----------+------------+----------+-----------+----------+

  5. インスタンス実行時のリソースプロバイダーに対する要求を確認するには、以下のコマンドを実行します。

    (undercloud)$ openstack --os-placement-api-version 1.17 \
     resource provider show --allocations  <rp_uuid>

    この例では、リソースプロバイダーに対するクレームは、リソースプロバイダー UUID e518d381-d590-5767-8f34-c20def34b252 を使用して、ホスト dell-r730-014 でチェックされます。

    [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}}}

関連情報

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.