9.2. QoS ポリシーのネットワークサービスの設定

Red Hat OpenStack Platform (RHOSP) Networking サービス (neutron) のサービス品質機能は、qos サービスプラグインを通じて提供されます。ML2/OVS および ML2/OVN メカニズムドライバーでは、デフォルトで qos が読み込まれます。ただし、これは ML2/SR-IOV には当てはまりません。

ML2/OVS および ML2/SR-IOV メカニズムドライバーで qos サービスプラグインを使用する場合は、それぞれのエージェントに qos 拡張機能もロードする必要があります。

次のリストは、ネットワークサービスを QoS 用に設定するために実行する必要があるタスクをまとめたものです。タスクの詳細は、次のリストの後に続きます。

  • すべてのタイプの QoS ポリシーの場合:

    • qos サービスプラグインを追加します。
    • エージェントの qos 拡張機能を追加します (OVS および SR-IOV のみ)。
  • 最小帯域幅ポリシーのみを使用して VM インスタンスをスケジュールするための追加タスク:

    • Compute サービス (nova) が使用する名前と異なる場合は、ハイパーバイザー名を指定します。
    • 各コンピュートノードで、関連するエージェントのリソースプロバイダーの入力帯域幅と出力帯域幅を設定します。
    • (オプション) vnic_types をサポート対象外としてマークします。
  • トンネリングのみで ML/OVS を使用するシステムでの DSCP マーキングポリシーの追加タスク:

    • dscp_inherittrue に設定します。

前提条件

  • RHOSP アンダークラウドにアクセスできる stack ユーザーである必要がある。

手順

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

    $ source ~/stackrc
  3. qos サービスプラグインがまだロードされていないことを確認します。

    $ openstack network qos policy list

    qos サービスプラグインがロードされていない場合、ResourceNotFound エラーが発生します。エラーが発生しない場合は、プラグインがロードされており、このトピックの手順を実行する必要はありません。

  4. YAML カスタム環境ファイルを作成します。

    $ vi /home/stack/templates/my-neutron-environment.yaml

  5. ご自分の環境ファイルには、parameter_defaults というキーワードを含める必要があります。parameter_defaults の下の新しい行で、NeutronServicePlugins パラメーターに qos を追加します。

    parameter_defaults:
       NeutronServicePlugins: "qos"
  6. ML2/OVS および ML2/SR-IOV メカニズムドライバーを使用する場合は、それぞれ NeutronAgentExtensions または NeutronSriovAgentExtensions 変数を使用して、エージェントに qos 拡張機能もロードする必要があります。

    • ML2/OVS

      parameter_defaults:
        NeutronServicePlugins: "qos"
        NeutronAgentExtensions: "qos"
    • ML2/SR-IOV

      parameter_defaults:
        NeutronServicePlugins: "qos"
        NeutronSriovAgentExtensions: "qos"
  7. 最小帯域幅 QoS ポリシーを使用して VM インスタンスをスケジュールする場合は、次のことも行う必要があります。

    1. プラグインのリストに placement を追加し、リストに qos も含まれていることを確認します。

      parameter_defaults:
         NeutronServicePlugins: "qos,placement"
    2. ハイパーバイザー名が Compute サービス (nova) で使用される標準的なハイパーバイザー名と一致する場合は、ステップ 7.iii に進みます。

      ハイパーバイザー名が Compute サービスで使用される標準的なハイパーバイザー名と一致しない場合は、resource_provider_default_hypervisor を使用して代替のハイパーバイザー名を指定します。

      • ML2/OVS

        parameter_defaults:
          NeutronServicePlugins: "qos,placement"
          ExtraConfig:
            Neutron::agents::ml2::ovs::resource_provider_default_hypervisor: %{hiera('fqdn_canonical')}
      • ML2/SR-IOV

        parameter_defaults:
          NeutronServicePlugins: "qos,placement"
          ExtraConfig:
            Neutron::agents::ml2::sriov::resource_provider_default_hypervisor: %{hiera('fqdn_canonical')}
        重要

        代替ハイパーバイザー名を設定する別の方法は、resource_provider_hypervisor を使用することです。

        • ML2/OVS

          parameter_defaults:
            ExtraConfig:
               Neutron::agents::ml2::ovs::resource_provider_hypervisors:"ens5:%{hiera('fqdn_canonical')},ens6:%{hiera('fqdn_canonical')}"
        • ML2/SR-IOV

          parameter_defaults:
            ExtraConfig:
               Neutron::agents::ml2::sriov::resource_provider_hypervisors:
               "ens5:%{hiera('fqdn_canonical')},ens6:%{hiera('fqdn_canonical')}"
    3. 最小帯域幅を提供する必要のある各コンピュートノードの該当するエージェントに対して、リソースプロバイダーの受信および送信帯域幅を設定します。

      次の形式を使用して、送信、受信、またはその両方を設定できます。

      • 送信帯域幅だけを設定する場合 (kbps 単位):

        NeutronOvsResourceProviderBandwidths: <bridge0>:<egress_kbps>:,<bridge1>:<egress_kbps>:,...,<bridgeN>:<egress_kbps>:
      • 受信帯域幅だけを設定する場合 (kbps 単位):

        NeutronOvsResourceProviderBandwidths: <bridge0>::<ingress_kbps>,<bridge1>::<ingress_kbps>,...,<bridgeN>::<ingress_kbps>
      • 送信および受信帯域幅の両方を設定する場合 (kbps 単位):

        NeutronOvsResourceProviderBandwidths: <bridge0>:<egress_kbps>:<ingress_kbps>,<bridge1>:<egress_kbps>:<ingress_kbps>,...,<bridgeN>:<egress_kbps>:<ingress_kbps>

        例 - OVS エージェント

        OVS エージェント用にリソースプロバイダーの受信および送信帯域幅を設定するには、ネットワーク環境ファイルに以下の設定を追加します。

        parameter_defaults:
          ...
          NeutronBridgeMappings: physnet0:br-physnet0
          NeutronOvsResourceProviderBandwidths: br-physnet0:10000000:10000000

        例 - SRIOV エージェント

        SRIOV エージェント用にリソースプロバイダーの受信および送信帯域幅を設定するには、ネットワーク環境ファイルに以下の設定を追加します。

        parameter_defaults:
          ...
          NeutronML2PhysicalNetworkMtus: physnet0:1500,physnet1:1500
          NeutronSriovResourceProviderBandwidths: ens5:40000000:40000000,ens6:40000000:40000000
    4. オプション: vnic_types をサポート対象外として識別するには (複数の ML2 メカニズムドライバーがデフォルトでサポートし、複数のエージェントが Placement サービスで追跡されている場合)、環境ファイルに以下の設定を追加します。

      例 - OVS エージェント

      parameter_defaults:
        ...
        NeutronOvsVnicTypeBlacklist: direct

      例 - SRIOV エージェント

      parameter_defaults:
        ...
        NeutronSriovVnicTypeBlacklist: direct

  8. DSCP マーキングポリシーを作成し、トンネリングプロトコル (VXLAN または GRE) で ML2/OVS を使用する場合は、NeutronAgentExtensions の下に次の行を追加します。

    parameter_defaults:
      ...
      ControllerExtraConfig:
        neutron::config::server_config:
            agent/dscp_inherit:
                value: true

    dscp_inherittrue の場合、Networking サービスは内部ヘッダーの DSCP 値を外部ヘッダーにコピーします。

  9. コア heat テンプレート、その他の環境ファイル、およびこの新しいカスタム環境ファイルを指定して、deployment コマンドを実行します。

    重要

    後で実行される環境ファイルで定義されているパラメーターとリソースが優先されることになるため、環境ファイルの順序は重要となります。

    $ openstack overcloud deploy --templates \
    -e <other_environment_files> \
    -e /home/stack/templates/my-neutron-environment.yaml

検証

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

    $ openstack network qos policy list

    qos サービスプラグインがロードされている場合、ResourceNotFound エラーは発生しません。