第6章 最小帯域幅 QoS を確保したインスタンスの作成

Quality of Service (QoS) ポリシーを使用して、最小帯域幅の確保を要求するインスタンスを作成することができます。

QoS ポリシーと最小帯域幅を確保するルールの組み合わせは、特定の物理ネットワーク上のポートに割り当てられます。設定したポートを使用するインスタンスを作成する場合、Compute のスケジューリングサービスは、この要求を満たすインスタンス用ホストを選択します。Compute のスケジューリングサービスは、インスタンスをデプロイするホストを選択する前に、他のインスタンスが各物理インターフェイス上に確保する帯域幅を Placement サービスに問い合わせます。

制限/制約

  • 新規インスタンスの作成時にのみ、最小帯域幅を確保する QoS ポリシーを割り当てることができます。Compute サービスがインスタンス用リソースの使用状況を更新するのは作成または移動操作時だけなので、すでに動作中のインスタンスに最小帯域幅を確保する QoS ポリシーを割り当てることはできません。つまり、インスタンスで利用可能な最小帯域幅を保証することはできません。
  • 最小帯域幅を確保する QoS ポリシーなど、リソース要求が設定されたポートを使用するインスタンスのライブマイグレーション、復元または退避を行うことはできません。ポートにリソース要求が設定されているかどうかを確認するには、以下のコマンドを実行します。

    $ openstack port show <port_name/port_id>

前提条件

手順

  1. 利用可能な QoS ポリシーをリスト表示します。

    (overcloud)$ openstack network qos policy list
    ----------------------------------------------------------------+
    | ID                                   | Name    | Shared | Default | Project                          |
    ----------------------------------------------------------------+
    | 6d771447-3cf4-4ef1-b613-945e990fa59f | policy2 | True   | False   | ba4de51bf7694228a350dd22b7a3dc24 |
    | 78a24462-e3c1-4e66-a042-71131a7daed5 | policy1 | True   | False   | ba4de51bf7694228a350dd22b7a3dc24 |
    | b80acc64-4fc2-41f2-a346-520d7cfe0e2b | policy0 | True   | False   | ba4de51bf7694228a350dd22b7a3dc24 |
    ----------------------------------------------------------------+
  2. 利用可能な各ポリシーのルールを確認して、必要な最小帯域幅に関するものを特定します。

    (overcloud)$ openstack network qos policy show policy0
    ----------------------------------------------------------------------------------------------------+
    | Field       | Value                                                                                 |
    ----------------------------------------------------------------------------------------------------+
    | description |                                                                                                                                                                                                                                                                                                                                                                     |
    | id          | b80acc64-4fc2-41f2-a346-520d7cfe0e2b                                                                                                                                                                                                                                                                                                                                |
    | is_default  | False                                                                                                                                                                                                                                                                                                                                                               |
    | location    | cloud=', project.domain_id=, project.domain_name='Default, project.id=ba4de51bf7694228a350dd22b7a3dc24, project.name=admin, region_name=regionOne, zone=                                                                                                                                                                                                    |
    | name        | policy0                                                                                                                                                                                                                                                                                                                                                             |
    | project_id  | ba4de51bf7694228a350dd22b7a3dc24                                                                                                                                                                                                                                                                                                                                    |
    | rules       | [{min_kbps: 100000, direction: egress, id: d46218fe-9218-4e96-952b-9f45a5cb3b3c, qos_policy_id: b80acc64-4fc2-41f2-a346-520d7cfe0e2b, type: minimum_bandwidth}, {min_kbps: 100000, direction: ingress, id: 1202c4e3-a03a-464c-80d5-0bf90bb74c9d, qos_policy_id: b80acc64-4fc2-41f2-a346-520d7cfe0e2b, type: minimum_bandwidth}] |
    | shared      | True                                                                                                                                                                                                                                                                                                                                                                |
    | tags        | []                                                                                                                                                                                                                                                                                                                                                                  |
    ----------------------------------------------------------------------------------------------------+
  3. 適切なポリシーからポートを作成します。

    (overcloud)$ openstack port create port-normal-qos --network net0 --qos-policy policy0
  4. 使用する NIC ポートを指定して、インスタンスを作成します。

    $ openstack server create --flavor cirros256 --image cirros-0.3.5-x86_64-disk --nic port-id=port-normal-qos --wait qos_instance

    出力の ACTIVE ステータスは、要求された最小帯域幅を保証できるホストにインスタンスが正常に作成されていることを示しています。

6.1. インスタンスからの最小帯域幅を確保する QoS の削除

インスタンスから最小帯域幅を確保する QoS ポリシーの制約を外す場合、インターフェイスの割り当てを解除することができます。

手順

  • インターフェイスの割り当てを解除するには、以下のコマンドを入力します。

    $ openstack server remove port <vm_name|vm_id> <port_name|port_id>