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_inherit
をtrue
に設定します。
-
前提条件
-
RHOSP アンダークラウドにアクセスできる
stack
ユーザーである必要がある。
手順
-
アンダークラウドホストに
stack
ユーザーとしてログインします。 source コマンドでアンダークラウドの認証情報ファイルを読み込みます。
$ source ~/stackrc
qos
サービスプラグインがまだロードされていないことを確認します。$ openstack network qos policy list
qos
サービスプラグインがロードされていない場合、ResourceNotFound
エラーが発生します。エラーが発生しない場合は、プラグインがロードされており、このトピックの手順を実行する必要はありません。YAML カスタム環境ファイルを作成します。
例
$ vi /home/stack/templates/my-neutron-environment.yaml
ご自分の環境ファイルには、
parameter_defaults
というキーワードを含める必要があります。parameter_defaults
の下の新しい行で、NeutronServicePlugins
パラメーターにqos
を追加します。parameter_defaults: NeutronServicePlugins: "qos"
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"
最小帯域幅 QoS ポリシーを使用して VM インスタンスをスケジュールする場合は、次のことも行う必要があります。
プラグインのリストに
placement
を追加し、リストにqos
も含まれていることを確認します。parameter_defaults: NeutronServicePlugins: "qos,placement"
ハイパーバイザー名が 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')}"
最小帯域幅を提供する必要のある各コンピュートノードの該当するエージェントに対して、リソースプロバイダーの受信および送信帯域幅を設定します。
次の形式を使用して、送信、受信、またはその両方を設定できます。
送信帯域幅だけを設定する場合 (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
オプション:
vnic_types
をサポート対象外として識別するには (複数の ML2 メカニズムドライバーがデフォルトでサポートし、複数のエージェントが Placement サービスで追跡されている場合)、環境ファイルに以下の設定を追加します。例 - OVS エージェント
parameter_defaults: ... NeutronOvsVnicTypeBlacklist: direct
例 - SRIOV エージェント
parameter_defaults: ... NeutronSriovVnicTypeBlacklist: direct
DSCP マーキングポリシーを作成し、トンネリングプロトコル (VXLAN または GRE) で ML2/OVS を使用する場合は、
NeutronAgentExtensions
の下に次の行を追加します。parameter_defaults: ... ControllerExtraConfig: neutron::config::server_config: agent/dscp_inherit: value: true
dscp_inherit
がtrue
の場合、Networking サービスは内部ヘッダーの DSCP 値を外部ヘッダーにコピーします。コア 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
エラーは発生しません。
関連情報
- RHOSP Networking サービス用のメカニズムドライバードライバー
- Director インストールと使用方法 ガイドの 環境ファイル
- Director インストールと使用方法 ガイドの オーバークラウドの作成時の環境ファイルの追加
- 「Networking サービスのバックエンドの実行を使用した最小帯域幅の適用」
- 「最小帯域幅の QoS ポリシーを使用したインスタンスのスケジューリング」
- 「QoS ポリシーを使用したネットワークトラフィックの制限」
- 「DSCP マーキング QoS ポリシーを使用したネットワークトラフィックの優先順位付け」