Red Hat Training

A Red Hat training course is available for Red Hat OpenStack Platform

第12章 Quality-of-Service (QoS) の設定

Red Hat OpenStack Platform 10 では、ネットワークの quality-of-service (QoS) ポリシーがサポートされるようになりました。これらのポリシーにより、OpenStack の管理者は、インスタンスの送信トラフィックに速度制限を適用して、さまざまなサービスレベルを提供することができます。QoS ポリシーを実装すると、指定したレートを超過するトラフィックはドロップされるようになります。

12.1. QoS ポリシースコープ

QoS ポリシーは個々のポートまたは特定のテナントネットワークに適用されます。テナントネットワークに適用される場合、そのポリシーは、ポリシーが適用されていないポートに継承されます。

12.2. QoS ポリシー管理

QoS ポリシーは、動的に適用、変更、削除することができます。以下の例では、帯域幅を制限するルールを手動で作成して、1 つのポートに適用します。

  1. テナントの一覧を確認して、QoS ポリシーを作成するテナントの ID を決定します。

    # openstack project list
    +----------------------------------+----------+
    | ID                               | Name     |
    +----------------------------------+----------+
    | 4b0b98f8c6c040f38ba4f7146e8680f5 | auditors |
    | 519e6344f82e4c079c8e2eabb690023b | services |
    | 80bf5732752a41128e612fe615c886c6 | demo     |
    | 98a2f53c20ce4d50a40dac4a38016c69 | admin    |
    +----------------------------------+----------+
  2. admin テナントに bw-limiter という名前の QoS ポリシーを作成します。

    # neutron qos-policy-create 'bw-limiter' --tenant-id 98a2f53c20ce4d50a40dac4a38016c69
  3. bw-limiter の規制ルールを設定します。

    # neutron qos-bandwidth-limit-rule-create bw-limiter --max_kbps 3000 --max_burst_kbps 3000
  4. bw-limiter ポリシーを適用する neutron ポートを設定します

    # neutron port-update <port id> --qos-policy bw-limiter
  5. QoS ルールを確認します。以下に例を示します。

    # neutron qos-rule-show 9be535c3-daa2-4d7b-88ea-e8de16
    
    +-------------------+---------------------------------+
    | Field             | Value                           |
    +-------------------+---------------------------------+
    | id                | 9be535c3-daa2-4d7b-88ea-e8de16  |
    | rule_type         | bandwidth_limit                 |
    | description       |                                 |
    | max_kbps          | 3000                            |
    | max_burst_kbps    | 300                             |
    +-------------------+---------------------------------+

以下の値により、規制のアルゴリズムを適宜に設定することができます。

  • max_kbps: インスタンスが送信可能な最大レート (Kbps 単位)
  • max_burst_kbps: トークンのバッファーが満杯であった場合にそのポートが一度に送信することができたデータの最大量 (キロビット単位)。トークンのバッファーは「max_kbps」のレートで補充されます。

12.3. 送信トラフィックの DSCP マーキング

Differentiated Services Code Point (DSCP) では、IP ヘッダーに関連の値を埋め込むことで、ネットワーク上に QoS を実装することができます。OpenStack Networking (neutron) QoS ポリシーは、DSCP マーキングを使用して、neutron ポートとネットワーク上で送信トラフィックを管理することができます。現在、DSCP は Open vSwitch (OVS) を使用する VLAN とフラットプロバイダーネットワークのみに利用できます。今後、VXLAN もサポートされる予定です。

この実装では、最初にポリシーが作成され、DSCP ルールが定義されてポリシーに適用されます。これらのルールは、--dscp-mark パラメーターを使用して、DSCP マークに 10 進数の値を指定します。以下に例を示します。

1. 新規 QoS ポリシーを作成します。

neutron qos-policy-create qos-web-servers --tenant-id 98a2f53c20ce4d50a40dac4a38016c69

2. DSCP マーク 18 を使用して、DSCP ルールを作成してそれを qos-web-servers ポリシーに適用します。

neutron qos-dscp-marking-rule-create qos-web-servers --dscp-mark 18
Created a new dscp_marking_rule:
+-----------+--------------------------------------+
| Field     | Value                                |
+-----------+--------------------------------------+
| dscp_mark | 18                                   |
| id        | d7f976ec-7fab-4e60-af70-f59bf88198e6 |
+-----------+--------------------------------------+

3. QoS ポリシー qos-web-servers の DSCP ルールを表示します。

neutron qos-dscp-marking-rule-list qos-web-servers
+-----------+--------------------------------------+
| dscp_mark | id                                   |
+-----------+--------------------------------------+
|        18 | d7f976ec-7fab-4e60-af70-f59bf88198e6 |
+-----------+--------------------------------------+

4. qos-web-servers ポリシーに割り当てられた DSCP ルールの詳細を表示します。

neutron qos-dscp-marking-rule-show d7f976ec-7fab-4e60-af70-f59bf88198e6 qos-web-servers
+-----------+--------------------------------------+
| Field     | Value                                |
+-----------+--------------------------------------+
| dscp_mark | 18                                   |
| id        | d7f976ec-7fab-4e60-af70-f59bf88198e6 |
+-----------+--------------------------------------+

5. ルールに割り当てられた DSCP 値を変更します。

neutron qos-dscp-marking-rule-update d7f976ec-7fab-4e60-af70-f59bf88198e6 qos-web-servers --dscp-mark 22
Updated dscp_marking_rule: d7f976ec-7fab-4e60-af70-f59bf88198e6

6. DSCP ルールを削除します。

neutron qos-dscp-marking-rule-delete d7f976ec-7fab-4e60-af70-f59bf88198e6 qos-web-servers
Deleted dscp_marking_rule(s): d7f976ec-7fab-4e60-af70-f59bf88198e6

12.4. QoS ポリシーの RBAC

Red Hat OpenStack Platform 10 では、QoS ポリシーにロールベースアクセス制御 (RBAC) が追加されました。これにより、QoS ポリシーを特定のプロジェクトに適用できるようになりました。

たとえば、優先順位が低いネットワークトラフィックを許可する QoS ポリシーを作成して、特定のプロジェクトにのみ適用することができます。以下のコマンドでは、以前に作成した bw-limiter ポリシーが demo テナントに割り当てられます。

# neutron rbac-create 'bw-limiter' --type qos-policy --target-tenant 80bf5732752a41128e612fe615c886c6 --action access_as_shared