Red Hat OpenStack Platform ネットワークの設定
OpenStack Networking サービス (neutron) の管理
概要
はじめに リンクのコピーリンクがクリップボードにコピーされました!
インスタンスの作成中に、ロールベースのアクセス制御 (RBAC) 共有セキュリティーグループをインスタンスに直接適用することはできません。RBAC 共有セキュリティーグループをインスタンスに適用するには、最初にポートを作成し、共有セキュリティーグループをそのポートに適用してから、そのポートをインスタンスに割り当てる必要があります。セキュリティーグループのポートへの追加 を参照してください。
Red Hat ドキュメントへのフィードバック (英語のみ) リンクのコピーリンクがクリップボードにコピーされました!
Red Hat ドキュメントに対するご意見をお聞かせください。ドキュメントの改善点があればお知らせください。
問題の作成 フォームを使用して、Red Hat OpenStack Services on OpenShift (RHOSO) または Red Hat OpenStack Platform (RHOSP) の以前のリリースのドキュメントに関するフィードバックを提供します。RHOSO または RHOSP ドキュメントの問題を作成すると、その問題は RHOSO Jira プロジェクトに記録され、フィードバックの進行状況を追跡できるようになります。
問題の作成 フォームを完了するには、Jira にログインしていることを確認してください。Red Hat Jira アカウントをお持ちでない場合は、https://issues.redhat.com でアカウントを作成できます。
- 次のリンクをクリックして、問題の作成 ページを開きます (問題の作成)。
- Summary フィールドと Description フィールドに入力します。Description フィールドに、ドキュメントの URL、章またはセクション番号、および問題の詳しい説明を入力します。フォーム内の他のフィールドは変更しないでください。
- Create をクリックします。
第1章 OpenStack ネットワークの概要 リンクのコピーリンクがクリップボードにコピーされました!
Networking サービス (neutron) は、Red Hat OpenStack Platform (RHOSP) のソフトウェア定義ネットワーク (SDN) のコンポーネントです。RHOSP Networking サービスは、仮想マシンインスタンスとの間の内部および外部トラフィックを管理し、ルーティング、セグメンテーション、DHCP、メタデータなどのコアサービスを提供します。仮想ネットワーク機能とスイッチ、ルーター、ポート、ファイアウォールの管理のための API を提供します。
1.1. RHOSP ネットワークの管理 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenStack Platform (RHOSP) Networking サービス (neutron) を使用すると、サイトのネットワークの目標を効果的に満たすことができます。これにより、以下が可能になります。
プロジェクト内の VM インスタンスへの接続を提供する。
プロジェクトネットワークは、主に一般的な (非特権) プロジェクトが、管理者を介さずにネットワークを管理できるようにするものです。これらのネットワークは完全に仮想化されており、他のプロジェクトネットワークやインターネットなどの外部ネットワークとやり取りするために仮想ルーターが必要です。プロジェクトネットワークは通常、仮想マシンインスタンスに DHCP およびメタデータサービスを提供します。RHOSP は、フラット、VLAN、VXLAN、GRE、および GENEVE のプロジェクトネットワークタイプをサポートします。
詳細は、プロジェクトネットワークの管理 を参照してください。
VM インスタンスをプロジェクト外のネットワークに接続する。
プロバイダーネットワークは、プロジェクトネットワークのような接続性を提供します。ただし、これらのネットワークは物理ネットワークインフラストラクチャーとインターフェイスするため、管理 (特権付き) ユーザーのみがこれらのネットワークを管理できます。RHOSP は、フラットと VLAN というプロバイダーネットワークのタイプをサポートします。
プロジェクトネットワークの内部では、Floating IP アドレスのプールまたは単一の Floating IP アドレスを使用して、受信トラフィックを VM インスタンスに転送できます。ブリッジマッピングを使用すると、OVS または OVN で作成したブリッジに物理ネットワーク名 (インターフェイスラベル) を関連付け、プロバイダーネットワークトラフィックが物理ネットワークに到達できるようにすることができます。
詳細は、仮想マシンインスタンスを物理ネットワークに接続する を参照してください。
エッジに最適化されたネットワークを構築する。
オペレーターは、エッジデプロイメントで通常使用されるルーティング対応プロバイダーネットワークを作成し、セグメントが 1 つしかない従来のネットワークではなく、複数のレイヤー 2 ネットワークセグメントに依存できます。
エンドユーザー向けには 1 つのネットワークしか表示されないので、ルーティング対応プロバイダーネットワークによりクラウドが単純化されます。クラウドオペレーター向けには、ルーティング対応プロバイダーネットワークによりスケーラビリティーおよび耐障害性が提供されます。たとえば、重大なエラーが発生した場合でも、1 つのセグメントしか影響を受けず、ネットワーク全体で障害が発生することはありません。
詳細は、ルーティング対応プロバイダーネットワークのデプロイ を参照してください。
ネットワークリソースを高可用性にする。
アベイラビリティーゾーン (AZ) や Virtual Router Redundancy Protocol (VRRP) を利用して、ネットワークリソースの可用性を高く保つことができます。オペレーターは、さまざまな AZ のさまざまな電源に接続されているネットワークノードをグループ化します。次に、オペレーターは、DHCP、L3、FW などの重要なサービスを別々の AZ で実行するようにスケジュールします。
RHOSP は VRRP を使用して、プロジェクトルーターと Floating IP アドレスの高可用性を実現します。集中型ルーティングの代わりに、分散仮想ルーティング (DVR) は、VRRP に基づく代替ルーティング設計を提供します。これは、L3 エージェントをデプロイし、すべての Compute ノードにルーターをスケジュールします。
詳細は、アベイラビリティーゾーンの使用によるネットワークリソースの高可用性設定 を参照してください。
ポートレベルでネットワークを保護する。
セキュリティーグループは、受信 (インスタンスへのインバウンド) と送信 (インスタンスからのアウトバウンド) のネットワークトラフィックをポートレベルで制御する仮想ファイアウォールルールのコンテナーを提供します。セキュリティーグループは、デフォルトの拒否ポリシーを使用し、特定のトラフィックを許可するルールのみを含んでいます。各ポートは、1 つ以上のセキュリティーグループを追加的に参照できます。ファイアウォールドライバーは、セキュリティーグループのルールを、iptables などの基礎となるパケットフィルタリングテクノロジーの設定に変換します。
デフォルトでは、セキュリティーグループはステートフルです。ML2/OVN デプロイメントでは、ステートレスセキュリティーグループも作成できます。ステートレスセキュリティーグループは、パフォーマンスに大きな利点をもたらす可能性があります。ステートフルセキュリティーグループとは異なり、ステートレスセキュリティーグループは戻りトラフィックを自動的に許可しないため、関連トラフィックの戻りを許可するセキュリティーグループルールを作成する必要があります。
詳細は、共有セキュリティーグループの設定 を参照してください。
ポートトラフィックを管理する。
許可するアドレスペアを使用して、特定の MAC アドレス、IP アドレス、またはその両方を識別し、サブネットに関係なくネットワークトラフィックがポートを通過できるようにします。許可するアドレスペアを定義すると、VRRP (仮想ルーター冗長プロトコル) 等のプロトコルを使用できます。このプロトコルでは、2 つの仮想マシンインスタンス間で IP アドレスを移動して、迅速なデータプレーンのフェイルオーバーが可能です。
詳細は、許可するアドレスペアの設定 を参照してください。
大規模なオーバーレイネットワークを最適化する。
L2 Population ドライバーを使用すると、ブロードキャスト、マルチキャスト、およびユニキャストトラフィックを有効にして、大規模なオーバーレイネットワークでスケールアウトできます。
詳細は、L2 ポプレーションドライバーの設定 を参照してください。
VM インスタンス上のトラフィックの受信および送信の制限を設定する。
Quality of Service (QoS) ポリシーを使用して送信および受信トラフィックにレート制限を適用することで、さまざまなインスタンスのサービスレベルを提供できます。個別のポートに QoS ポリシーを適用できます。QoS ポリシーをプロジェクトネットワークに適用することもできます。この場合、特定のポリシーが設定されていないポートは、ネットワークのポリシーを継承します。
詳細は、Quality of Service (QoS) ポリシーの設定 を参照してください。
RHOSP プロジェクトが作成できるネットワークリソースの量を管理する。
Networking サービスの quota オプションを使用すると、プロジェクトユーザーが作成できるネットワークリソースの量に制限を設けることができます。これには、ポート、サブネット、ネットワークなどのリソースが含まれます。
詳細は、プロジェクトクォータの管理 を参照してください。
ネットワーク機能仮想化 (NFV) 用に VM インスタンスを最適化する。
インスタンスは、単一の仮想 NIC を使用して、VLAN タグ付けされたトラフィックを送受信できます。このことは、特に VLAN タグ付けされたトラフィックを想定する NFV アプリケーション (VNF) に役立ちます。単一の仮想 NIC で複数の顧客/サービスに対応することができるためです。
VLAN 透過ネットワークでは、仮想マシンインスタンスで VLAN タグ付けを設定します。VLAN タグはネットワークを通じて転送され、同じ VLAN の仮想マシンインスタンスにより消費され、他のインスタンスやデバイスでは無視されます。VLAN トランクは、複数の VLAN を 1 つのトランクポートに結び付けて、VLAN 対応のインスタンスをサポートします。
詳細は、VLAN 対応インスタンス を参照してください。
共有ネットワークにインスタンスを接続できるプロジェクトを制御する。
RHOSP Networking サービスの role-based access control (RBAC) ポリシーを使用すると、クラウド管理者は、一部のプロジェクトがネットワークを作成する機能を削除し、代わりにプロジェクトに対応する既存のネットワークに接続することを許可することができます。
詳細は、RBAC ポリシーの設定 を参照してください。
インスタンスとの間のネットワークアクセスを制御します。
セキュリティーグループを使用して、インスタンスとの間のネットワークアクセスおよびプロトコルアクセスを制御できます。セキュリティーグループは、たとえばユーザーがインスタンスに対して ICMP ping を実行したり、SSH を実行してインスタンスに接続したりできるようにする、IP フィルタールールのセットです。セキュリティーグループルールは、プロジェクト内のすべてのインスタンスに適用されます。
詳細は、セキュリティーグループの設定 を参照してください。
インスタンスとの間のトラフィックフローイベントのロギング
セキュリティーグループのパケットログを作成して、仮想マシンインスタンスとの間のトラフィックフローを監視できます。各ログは、パケットフローイベントに関するデータストリームを生成し、それを仮想マシンインスタンスが起動された Compute ホスト上の共通ログファイルに追加します。
詳細は、セキュリティーグループアクションのロギング を参照してください。
1.2. Networking サービスコンポーネント リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenStack Platform (RHOSP) Networking サービス (neutron) には、以下のコンポーネントが含まれています。
API サーバー
RHOSP のネットワーク API は、レイヤ 2 ネットワークと IP アドレス管理 (IPAM) のサポート、およびレイヤ 2 ネットワークと外部ネットワークへのゲートウェイ間のルーティングを可能にするレイヤ 3 ルーター設定のエクステンションを備えています。RHOSP ネットワーキングには、ルーター、スイッチ、仮想スイッチ、ソフトウェア定義ネットワーキング (SDN) コントローラーなど、さまざまな商用およびオープンソースネットワークテクノロジーとの相互運用性を可能にするプラグインのリストが増えています。
Modular Layer 2 (ML2) プラグインとエージェント
ML2 は、ポートをプラグおよびアンプラグし、ネットワークやサブネットを作成して、IP アドレス指定を提供します。
メッセージングキュー
RHOSP サービス間で RPC リクエストを受け入れてルーティングし、API 操作を完了します。
1.3. Modular Layer 2 (ML2) ネットワーク リンクのコピーリンクがクリップボードにコピーされました!
Modular Layer 2 (ML2) は Red Hat OpenStack Platform (RHOSP) のネットワーキングのコアとなるプラグインです。ML2 モジュラー設計により、メカニズムドライバーを介した混合ネットワークテクノロジーの同時操作が可能になります。Open Virtual Network (OVN) は、ML2 で使用されるデフォルトのメカニズムドライバーです。
ML2 フレームワークは、設定可能な 2 種類のドライバーを区別します。
- タイプドライバー
RHOSP ネットワークが技術的にどのように実現されるかを定義します。
使用可能な各ネットワークタイプは ML2 タイプのドライバーによって管理され、必要なタイプ固有のネットワーク状態を維持します。プロバイダーネットワークのタイプ固有の情報を検証するタイプドライバーは、プロジェクトネットワークでの空きセグメントの割り当てを行います。タイプドライバーの例としては、GENEVE、GRE、VXLAN などがあります。
- メカニズムドライバー
特定のタイプの RHOSP ネットワークにアクセスするためのメカニズムを定義します。
メカニズムドライバーは、タイプドライバーによって確立された情報を取得し、それを有効になっているネットワークメカニズムに適用します。メカニズムドライバーの例としては、Open Virtual Networking (OVN) や Open vSwitch (OVS) などがあります。
メカニズムドライバーは L2 エージェントを使用でき、RPC を使用して外部デバイスまたはコントローラーと直接対話します。同じ仮想ネットワークの異なるポートにアクセスするために、複数のメカニズムとタイプドライバーを同時に使用することができます。
1.4. ML2 ネットワーク種別 リンクのコピーリンクがクリップボードにコピーされました!
複数のネットワークセグメントを同時に操作できます。ML2 は、複数のネットワークセグメントの使用と相互接続をサポートします。ML2 はポートを接続のあるセグメントにバインドするため、ポートをネットワークセグメントにバインドする必要はありません。メカニズムドライバーに応じて、ML2 は、以下のネットワークセグメントタイプをサポートします。
- フラット
- VLAN
- GENEVE トンネル(OVN メカニズムドライバーのみ)
- VXLAN トンネル
- フラット
- すべての仮想マシン (VM) インスタンスは、同じネットワーク上に存在し、ホストと共有することもできます。VLAN タグ付けやその他のネットワーク分離は行われません。
- VLAN
RHOSP ネットワーキングを使用すると、ユーザーは、物理ネットワークに存在する VLAN に対応する VLAN ID (802.1Q タグ付き) を使用して、複数のプロバイダーまたはプロジェクトネットワークを作成できます。これにより、インスタンスは環境全体で相互に通信を行うことが可能になります。また、専用のサーバー、ファイアウォール、ロードバランサー、および同じレイヤー 2 VLAN 上にある他のネットワークインフラストラクチャーと通信することもできます。
VLAN を使用して、同じスイッチ上で動作しているコンピューターのネットワークトラフィックを分割することができます。つまり、それぞれ別のネットワークのメンバーとなるようにポートを設定することで、スイッチを論理的に分割することができます。この場合、それぞれのネットワークは、セキュリティー上の理由からトラフィックを分割するのに使用できる、小規模な LAN ということになります。
たとえば、スイッチに合計 24 個のポートがある場合に、ポート 1 - 6 を VLAN200 に、ポート 7 - 18 を VLAN201 に、それぞれ割り当てることができます。その結果、VLAN200 に接続されているコンピューターは、VLAN201 のコンピューターと完全に分離され、直接通信することはできなくなります。通信する必要があれば、スイッチの VLAN200 部分と VLAN201 部分が 2 つの別個の物理スイッチであったかのように、トラフィックはルーターを通過する必要があります。相互に通信が可能な VLAN の組み合わせを制御するには、ファイアウォールも有用です。
- GENEVE トンネル
- GENEVE は、ネットワーク仮想化におけるさまざまなデバイスの変化する機能とニーズを認識し、それに対応します。システム全体を規定するのではなく、トンネリングのフレームワークを提供します。GENEVE は、カプセル化中に追加されるメタデータの内容を柔軟に定義し、さまざまな仮想化シナリオへの対応を試みます。UDP をトランスポートプロトコルとして使用し、拡張可能なオプションヘッダーを使用してサイズを動的に変動させます。Geneve はユニキャスト、マルチキャスト、およびブロードキャストをサポートします。GENEVE タイプドライバーは、ML2/OVN メカニズムドライバーと互換性があります。
- VXLAN トンネル
- VXLAN は、ネットワークオーバーレイを使用してインスタンス間のプライベート通信をサポートします。RHOSP ネットワーキングルーターは、トラフィックが VXLAN プロジェクトネットワークの外部に通過できるようにするために必要です。また、ルーターは、直接接続されたプロジェクトネットワークを外部ネットワーク (インターネットを含む) に接続するためにも必要とされ、このルーターは、Floating IP アドレスを使用して外部ネットワークから直接インスタンスに接続する機能を提供します。VXLAN タイプドライバーは、ML2/OVS メカニズムドライバーと互換性があります。
1.5. Modular Layer 2 (ML2) メカニズムドライバー リンクのコピーリンクがクリップボードにコピーされました!
Modular Layer 2 (ML2) プラグインは、共通のコードベースを持つメカニズムとして実装されます。このアプローチにより、コードの再利用が可能になる上、コードのメンテナンスとテストにおける複雑性が大幅に軽減されます。
Orchestration サービス (heat) パラメーター NeutronMechanismDrivers を使用して、メカニズムドライバーを有効にします。heat カスタム環境ファイルの例を以下に示します。
parameter_defaults: ... NeutronMechanismDrivers: ansible,ovn,baremetal ...
parameter_defaults:
...
NeutronMechanismDrivers: ansible,ovn,baremetal
...
メカニズムドライバーを指定する順番が重要です。上記の例で、ベアメタルメカニズムドライバーを使用してポートをバインドする場合は、ansible の前に baremetal を指定する必要があります。この順番で指定しないと、ansible ドライバーがポートをバインドします。NeutronMechanismDrivers の値のリストでは、ansible が baremetal に優先するためです。
RHOSP 15 以降のすべての新規デプロイメントについて、Red Hat では ML2/OVN をデフォルトのメカニズムドライバーとして選択しました。これは、今日のほとんどのお客様にとって ML2/OVS メカニズムドライバー以上のメリットが即座に得られるためです。継続して ML2/OVN 機能セットの拡張および改善を行っているため、これらのメリットはリリースと共に拡大します。
非推奨の ML2/OVS メカニズムドライバーは、RHOSP 17 リリースでサポートされます。この間、ML2/OVS ドライバーはメンテナンスモードのままで、バグ修正と通常のサポートを受け、ほとんどの新機能開発は ML2/OVN メカニズムドライバーで行われます。
RHOSP 18.0 では、Red Hat は ML2/OVS メカニズムドライバーを完全に削除し、サポートを停止する予定です。
既存の Red Hat OpenStack Platform (RHOSP) デプロイメントで ML2/OVS メカニズムドライバーを使用している場合は、今すぐメカニズムドライバーへの移行計画の評価を開始してください。移行は RHOSP 16.2 でサポートされており、RHOSP 17.1 でもサポートされる予定です。移行ツールの使用は、RHOSP 17.0 でのテスト目的に限定されています。
ML2/OVS から ML2/OVN への移行を試みる前に、プロアクティブケースを作成する必要があります。プロアクティブケースを作成しない場合、Red Hat では移行をサポートしません。How to open a proactive case for a planned activity on Red Hat OpenStack Platform? を参照してください。
1.6. Open vSwitch リンクのコピーリンクがクリップボードにコピーされました!
Open vSwitch (OVS) は、レガシーの Linux ソフトウェアブリッジと同様の、ソフトウェア定義ネットワーク (SDN) の仮想スイッチです。OVS は業界標準の OpenFlow および sFlow をサポートし、仮想ネットワークにスイッチングサービスを提供します。OVS と物理スイッチの統合には、STP、LACP、802.1Q VLAN タグ付け等のレイヤー 2 (L2) 機能が必要です。Open vSwitch のバージョン 1.11.0-1.el6 以降は、VXLAN および GRE を使用したトンネリングもサポートします。
1 つのブリッジには単一のインターフェイスまたは単一のボンディングのみをメンバーにすると、OVS でネットワークループが発生するリスクを緩和することができます。複数のボンディングまたはインターフェイスが必要な場合には、複数のブリッジを設定することが可能です。
1.7. Open Virtual Network (OVN) リンクのコピーリンクがクリップボードにコピーされました!
Open Virtual Network (OVN) は、仮想マシンやコンテナー環境において、論理的なネットワーク抽象化をサポートするためのシステムです。Open vSwitch のオープンソース仮想ネットワーキングと呼ばれることもある OVN は、OVS の既存の機能を補完し、論理 L2 および L3 オーバーレイ、セキュリティーグループ、DHCP などのサービスなど、論理ネットワーク抽象化のネイティブサポートを追加します。
物理ネットワークは、物理ワイヤー、スイッチ、およびルーターで構成されます。仮想ネットワークは、物理ネットワークをハイパーバイザーやコンテナープラットフォームに拡張し、VM やコンテナーを物理ネットワークにブリッジします。OVN 論理ネットワークとは、トンネルなどのカプセル化によって物理ネットワークから分離されたソフトウェアに実装されたネットワークです。これにより、論理ネットワークで使用される IP などのアドレス空間と物理ネットワークで使用されるアドレス空間が競合を起こすことなくオーバーラップするようになります。論理ネットワークトポロジーは、それらが実行されている物理ネットワークのトポロジーに関係なく配置できます。このため、論理ネットワークの一部である VM は、ネットワークを遮断することなく、ある物理マシンから別の物理マシンへ移行することができます。
カプセル化レイヤーは、論理ネットワークに接続された VM やコンテナーが、物理ネットワーク上のノードと通信することを阻止します。VM とコンテナーをクラスタリングする場合、これは許容範囲内であり、望ましい場合もあります。しかし、多くの場合、VM およびコンテナーは物理ネットワークへの接続整を必要とします。OVN では、この目的のために複数の形式のゲートウェイを提供します。OVN のデプロイメントは、いくつかのコンポーネントで構成されています。
- Cloud Management System (CMS)
- OVN 論理ネットワーク要素を管理し、OVN 論理ネットワークインフラストラクチャーを物理ネットワーク要素に接続することにより、OVN を物理ネットワークに統合します。いくつかの例には、OpenStack および OpenShift が含まれます。
- OVN データベース
- OVN の論理ネットワークと物理ネットワークを表すデータを格納します。
- Hypervisors
- Open vSwitch を実行し、OVN 論理ネットワークを物理マシンまたは仮想マシン上の OpenFlow に変換します。
- ゲートウェイ
- トンネルと物理ネットワークインフラストラクチャー間でパケットを転送することにより、トンネルベースの OVN 論理ネットワークを物理ネットワークに拡張します。
1.8. Modular Layer 2 (ML2) タイプおよびメカニズムドライバーの互換性 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenStack Platform (RHOSP) のデータネットワークを計画する際には、以下の表を参照して、各 Modular Layer 2 (ML2) メカニズムドライバーがサポートするネットワークタイプを決定してください。
| メカニズムドライバー | これらのタイプのドライバーをサポートします。 | ||||
| フラット | GRE | VLAN | VXLAN | GENEVE | |
| Open Virtual Network (OVN) | はい | いいえ | はい | いいえ | はい |
| Open vSwitch (OVS) | はい | はい | はい | はい | いいえ |
1.9. RHOSP Networking サービス用のメカニズムドライバードライバー リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenStack Platform (RHOSP) Networking サービス (neutron) は、拡張可能です。エクステンションには 2 つの目的があります。バージョンを変更せずに API に新機能を導入できるようにすることと、ベンダー固有のニッチ機能を導入できるようにすることです。アプリケーションは、/extensions URI で GET を実行することにより、使用可能なエクステンションをプログラムでリスト表示することができます。これはバージョン管理されたリクエストであることに注意してください。つまり、ある API バージョンで使用可能なエクステンションは、別のバージョンでは使用できない場合があります。
ML2 プラグインは、他のプラグイン可能なドライバーがネットワークオブジェクトの ML2 プラグインに実装されているコアリソースを拡張できるようにするエクステンションドライバーもサポートします。エクステンションドライバーの例としては、QoS やポートセキュリティーなどのサポートが挙げられます。
第2章 ML2/OVN の操作 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenStack Platform (RHOSP) のネットワークは、Networking サービス (neutron) によって管理されます。Networking サービスの中核は Modular Layer 2 (ML2) プラグインで、RHOSP ML2 プラグインのデフォルトメカニズムドライバーは Open Virtual Networking (OVN) メカニズムドライバーです。
以前のバージョンの RHOSP では、デフォルトで Open vSwitch (OVS) メカニズムドライバーを使用していましたが、Red Hat ではほとんどのデプロイメントで ML2/OVN メカニズムドライバーを推奨します。
2.1. RHOSP OVN アーキテクチャーのコンポーネントリスト リンクのコピーリンクがクリップボードにコピーされました!
RHOSP OVN アーキテクチャーでは、Networking API をサポートするために OVS Modular Layer 2 (ML2) メカニズムドライバーが OVN ML2 メカニズムドライバーに置き換えられます。OVN は、Red Hat OpenStack Platform のネットワークサービスを提供します。
図 2.1 に示すように、OVN アーキテクチャーは次のコンポーネントとサービスで構成されます。
- OVN メカニズムドライバーを備えた ML2 プラグイン
- ML2 プラグインは、OpenStack 固有のネットワーク設定を、プラットフォーム非依存の OVN 論理ネットワーク設定に変換します。通常、コントローラーノード上で実行されます。
- OVN northbound (NB) データベース (
ovn-nb) -
このデータベースは、OVN ML2 プラグインからの論理 OVN ネットワーク設定を保管します。通常コントローラーノードで実行され、TCP ポート
6641をリッスンします。 - OVN northbound サービス (
ovn-northd) - このサービスは OVN NB データベースからの論理ネットワーク設定を論理データパスフローに変換して、それらを OVN Southbound データベースに投入します。通常、コントローラーノード上で実行されます。
- OVN southbound (SB) データベース (
ovn-sb) -
このデータベースは、変換された論理データパスフローを保管します。通常コントローラーノードで実行され、TCP ポート
6642をリッスンします。 - OVN コントローラー (
ovn-controller) -
このコントローラーは OVN SB データベースに接続して Open vSwitch コントローラーとして機能し、ネットワークトラフィックの制御とモニタリングを行います。これにより、
OS::Tripleo::Services::OVNControllerが定義されているすべての Compute およびゲートウェイノードで実行されます。 - OVN メタデータエージェント (
ovn-metadata-agent) -
このエージェントは、OVS インターフェイス、ネットワーク名前空間、メタデータ API 要求のプロキシーに使用される HAProxy プロセスを管理するための
haproxyインスタンスを作成します。このエージェントは、OS::TripleO::Services::OVNMetadataAgentが定義されているすべての Compute およびゲートウェイノードで実行されます。 - OVS データベースサーバー (OVSDB)
-
OVN の Northbound および Southbound データベースをホストします。また、
ovs-vswitchdと連携して OVS データベースconf.dbをホストします。
NB データベースのスキーマファイルは /usr/share/ovn/ovn-nb.ovsschema にあり、SB データベースのスキーマファイルは /usr/share/ovn/ovn-sb.ovsschema にあります。
図2.1 RHOSP 環境の OVN アーキテクチャー
2.2. ML2/OVN databases リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenStack Platform ML2/OVN デプロイメントでは、ネットワーク設定情報は共有分散データベースを介してプロセス間で受け渡されます。これらのデータベースを調べて、ネットワークのステータスを確認し、問題を特定できます。
- OVN ノースバウンドデータベース
ノースバウンドデータベース (
OVN_Northbound) は、OVN と Red Hat OpenStack Platform (RHOSP) などのクラウド管理システムの間のインターフェイスとして機能します。RHOSP は、ノースバウンドデータベースのコンテンツを生成します。ノースバウンドデータベースには、ネットワークの現在の望ましい状態が含まれており、論理ポート、論理スイッチ、論理ルーターなどのコレクションとして提示されます。すべての RHOSP Networking サービス (neutron) オブジェクトは、ノースバウンドデータベースのテーブルに表示されます。
- OVN サウスバウンドデータベース
-
サウスバウンドデータベース (
OVN_Southbound) は、OVN システムが仮想ネットワークの抽象化をサポートするための論理的および物理的な設定状態を保持します。ovn-controllerは、このデータベース内の情報を使用して、Networking サービス (neutron) の要件を満たすように OVS を設定します。
2.3. Compute ノード上の ovn-controller サービス リンクのコピーリンクがクリップボードにコピーされました!
ovn-controller サービスは各 Compute ノードで実行され、OVN Southbound (SB) データベースサーバーに接続して論理フローを取得します。次に ovn-controller はその論理フローを OpenFlow の物理フローに変換して、OVS ブリッジ (br-int) に追加します。
ovs-vswitchd と通信して OpenFlow フローをインストールするために、ovn-controller は ovn-controller の起動時に渡された UNIX ソケットパス (例: unix:/var/run/openvswitch/db.sock) を使用して、(conf.db をホストする) ローカルで有効な ovsdb-server サーバーの 1 台に接続します。
ovn-controller サービスは、Open_vSwitch テーブルの external_ids コラムに特定のキーと値のペアがあることを想定します。puppet-ovn は puppet-vswitch を使用して、これらのフィールドにデータを読み込みます。puppet-vswitch が external_ids コラムに設定するキーと値のペアは以下のとおりです。
hostname=<HOST NAME> ovn-encap-ip=<IP OF THE NODE> ovn-encap-type=geneve ovn-remote=tcp:OVN_DBS_VIP:6642
hostname=<HOST NAME>
ovn-encap-ip=<IP OF THE NODE>
ovn-encap-type=geneve
ovn-remote=tcp:OVN_DBS_VIP:6642
2.4. Compute ノードの OVN メタデータエージェント リンクのコピーリンクがクリップボードにコピーされました!
OVN メタデータエージェントは tripleo-heat-templates/deployment/ovn/ovn-metadata-container-puppet.yaml ファイルで設定され、OS::TripleO::Services::OVNMetadataAgent でデフォルトの Compute ロールに含まれます。そのため、デフォルトのパラメーターを使用する OVN メタデータエージェントは、OVN のデプロイメントの一環としてデプロイされます。
OpenStack のゲストインスタンスは、169.254.169.254 のリンクローカル IP アドレスで利用可能なネットワークのメタデータサービスにアクセスします。neutron-ovn-metadata-agent は、Compute のメタデータ API があるホストネットワークへのアクセスが可能です。各 HAProxy は、適切なホストネットワークに到達できないネットワーク名前空間内にあります。HaProxy は、メタデータ API の要求に必要なヘッダーを追加してから、UNIX ドメインソケット上でその要求を neutron-ovn-metadata-agent に転送します。
OVN Networking サービスは、メタデータサービスを有効化する各仮想ネットワークに独自のネットワーク名前空間を作成します。Compute ノード上のインスタンスがアクセスする各ネットワークには、対応するメタデータ名前空間があります (ovnmeta-<network_uuid>)。
2.5. OVN コンポーザブルサービス リンクのコピーリンクがクリップボードにコピーされました!
通常 Red Hat OpenStack Platform は、事前定義済みロールのノード (Controller ロール、Compute ロール、さまざまなストレージロール種別のノードなど) で構成されます。これらのデフォルトロールには、それぞれコアの heat テンプレートコレクションで定義されるサービスのセットが含まれます。
デフォルトの Red Hat OpenStack (RHOSP) デプロイメントでは、ML2/OVN コンポーザブルサービス (ovn-dbs) はコントローラーノード上で実行されます。サービスはコンポーザブルなので、Networker ロール等の別のロールに割り当てることができます。ML2/OVN サービスを別のロールに割り当てることを選択することで、コントローラーノードの負荷を軽減し、Networker ノードで Networking サービスを分離して高可用性戦略を実装できます。
2.6. OVN でのレイヤー 3 高可用性 リンクのコピーリンクがクリップボードにコピーされました!
OVN は、特別な設定なしでレイヤー 3 の高可用性 (L3 HA) をサポートします。
OVN ルーターはデフォルトで高可用性であるため、ルーター作成時に --ha オプションは使用しないでください。--ha オプションを含む Openstack router create コマンドは失敗します。
OVN は、指定した外部ネットワークで L3 ゲートウェイとして機能することが可能なすべての利用可能なゲートウェイノードに対して、ルーターポートを自動的にスケジューリングします。OVN L3 HA は OVN Logical_Router_Port テーブルの gateway_chassis コラムを使用します。大半の機能は、バンドルされた active_passive の出力を使用する OpenFlow ルールによって管理されます。ovn-controller は Address Resolution Protocol (ARP) リスポンダーとルーターの有効化/無効化を処理します。FIP 用の Gratuitous ARP およびルーターの外部アドレスも ovn-controller によって定期的に送信されます。
L3HA は OVN を使用してルーターのバランスを取り、元のゲートウェイノードに戻して、ノードがボトルネックとなるのを防ぎます。
- BFD モニタリング
- OVN は双方向フォワーディング検出 (BFD) プロトコルを使用してゲートウェイノードの可用性をモニタリングします。このプロトコルは、ノード間で確立される Geneve トンネル上でカプセル化されます。
各ゲートウェイノードは、デプロイメント内のスタートポロジーを設定するその他すべてのゲートウェイノードをモニタリングします。ゲートウェイノードは、コンピュートノードもモニタリングして、パケットのルーティングの有効化/無効化および ARP の応答とアナウンスメントを行います。
各コンピュートノードは BFD を使用して、各ゲートウェイノードをモニタリングし、特定のルーターのアクティブなゲートウェイノードを介して送信元および宛先のネットワークアドレス変換 (SNAT および DNAT) などの外部のトラフィックを自動的に誘導します。コンピュートノードは他のコンピュートノードをモニタリングする必要はありません。
ML2-OVS 設定で検出されるような外部ネットワークのエラーは検出されません。
OVN 向けの L3 HA では、以下の障害モードがサポートされています。
- ゲートウェイノードがネットワーク (トンネリングインターフェイス) から切断された場合。
-
ovs-vswitchdが停止した場合 (ovs-switchdが BFD のシグナリングを行うロールを果たします)。 -
ovn-controllerが停止した場合 (ovn-controllerは登録済みノードとして、それ自身を削除します)。
この BFD モニタリングメカニズムは、リンクのエラーのみで機能し、ルーティングのエラーには機能しません。
2.7. Active-active のクラスター化されたデータベースサービスモデル リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenStack Platform (RHOSP) ML2/OVN デプロイメントでは、Raft コンセンサスアルゴリズムを適用するクラスター化データベースサービスモデルを使用して、OVS データベースプロトコルトラフィックのパフォーマンスを強化し、より高速で信頼性の高いフェイルオーバー処理を提供します。RHOSP 17.0 以降、Pacemaker ベースの active/backup モデルは、クラスター化されたデータベースサービスモデルに置き換えられます。
クラスター化されたデータベースは、異なるホストにある 3 つ以上のデータベースサーバーのクラスター上で動作します。サーバーは Raft コンセンサスアルゴリズムを使用して書き込みを同期させ、クラスター全体でネットワークトラフィックを継続的に共有します。クラスターは、リーダーとして 1 台のサーバーを選択します。クラスター内のすべてのサーバーはデータベースの読み取り操作を処理できるため、コントロールプレーンでのボトルネックが発生する可能性が低減されます。書き込み操作はクラスターのリーダーによって処理されます。
サーバーが失敗すると、新しいクラスターリーダーが選定され、トラフィックが残りの稼働中のサーバー間で再分散されます。クラスター化されたデータベースサービスモデルは、pacemaker ベースのモデルよりもフェイルオーバーをより効率的に処理します。これにより、フェイルオーバー時間が長い場合に発生する可能性のある関連するダウンタイムや問題が軽減されます。
リーダーの選定プロセスでは過半数が必要になるため、耐障害性はクラスター内の最も大きな奇数により制限されます。たとえば、1 つのサーバーに障害が発生した場合に、3 つのサーバーで設定されるクラスターは動作し続けます。5 つのサーバーで設定されるクラスターは、最大 2 つの障害を許容します。サーバー数を偶数に増やしても、耐障害性は向上しません。たとえば、4 つのサーバーで設定されるクラスターは、3 つのサーバーで設定されるクラスターよりも多くの障害を許容できません。
ほとんどの RHOSP デプロイメントでは 3 つのサーバーが使用されます。
5 つのサーバーより多いクラスターも機能し、2 つの追加サーバーごとにクラスターの耐障害性は 1 つ向上しますが、書き込みのパフォーマンスが低下します。
データベースサーバーのステータスのモニタリングについては、OVN データベースのステータスの監視 を参照してください。
2.8. ML2/OVN でのカスタムロールのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
デフォルトの Red Hat OpenStack (RHOSP) デプロイメントでは、ML2/OVN コンポーザブルサービスはコントローラーノード上で実行されます。以下の例のように、サポートされているカスタムロールをオプションで使用できます。
- Networker
- 専用のネットワーカーノードで OVN コンポーザブルサービスを実行します。
- Networker と SR-IOV の組み合わせ
- SR-IOV と共に専用のネットワークノードで OVN コンポーザブルサービスを実行します。
- Controller と SR-IOV の組み合わせ
- SR-IOV 対応のコントローラーノードで OVN コンポーザブルサービスを実行します。
独自のカスタムロールを生成することもできます。
制限事項
このリリースでは、ML2/OVN デプロイメントで SR-IOV とネイティブ OVN DHCP の組み合わせを使用する場合、以下の制限が適用されます。
- すべてのポートに対して HA シャーシグループが 1 つしかないため、すべての外部ポートは単一のゲートウェイノード上でスケジュールされる。
- 外部ポートは論理ルーターのゲートウェイポートと共存しないため、VLAN テナントネットワークでは、VF (直接) ポートでの North-South ルーティングは SR-IOV では機能しない。Bug #1875852 を参照してください。
前提条件
カスタムロールのデプロイ方法を理解している。
詳細は、Red Hat OpenStack Platform デプロイメントのカスタマイズ ガイドの コンポーザブルサービスとカスタムロール を参照してください。
手順
アンダークラウドホストに
stackユーザーとしてログインし、source コマンドでstackrcファイルを読み込みます。source stackrc
$ source stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow デプロイメントに適したカスタムロールファイルを選択します。そのままでご自分のニーズに適する場合には、直接デプロイコマンドで使用します。あるいは、他のカスタムロールファイルを組み合わせる独自のカスタムロールファイルを生成することもできます。
Expand デプロイメント ロール ロールファイル Networker ロール
Networker
Networker.yamlNetworker ロールと SR-IOV の組み合わせ
NetworkerSriov
NetworkerSriov.yaml共存する control および networker と SR-IOV の組み合わせ
ControllerSriov
ControllerSriov.yaml(オプション) 前述のカスタムロールファイルの 1 つを他のカスタムロールファイルと組み合わせた、新しいカスタムロールデータファイルを生成します。
Red Hat OpenStack Platform デプロイメントのカスタマイズ ガイドの roles_data ファイルの作成 の手順に従ってください。デプロイメントに応じて、適切なソースロールファイルを含めます。
(オプション) ロール用の特定のノードを特定するには、特定のハードウェアフレーバーを作成して特定のノードにフレーバーを割り当てることができます。次に、環境ファイルを使用してロールのフレーバーを定義し、ノード数を指定します。
詳細は、Red Hat OpenStack Platform デプロイメントのカスタマイズ ガイドの 新しいロールの作成 の例を参照してください。
デプロイメントに適した環境ファイルを作成します。
Expand デプロイメント 環境ファイルのサンプル Networker ロール
neutron-ovn-dvr-ha.yaml
Networker ロールと SR-IOV の組み合わせ
ovn-sriov.yaml
デプロイメントに適するように、以下の設定を含めます。
Expand デプロイメント 設定 Networker ロール
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Networker ロールと SR-IOV の組み合わせ
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 共存する control および networker と SR-IOV の組み合わせ
Copy to Clipboard Copied! Toggle word wrap Toggle overflow デプロイコマンドを実行し、
-rオプションを使用してデプロイコマンドにコア Heat テンプレート、その他の環境ファイル、およびカスタムロールデータファイルを含めます。重要後で実行される環境ファイルで定義されているパラメーターとリソースが優先されることになるため、環境ファイルの順序は重要となります。
例
openstack overcloud deploy --templates <core_heat_templates> \ -e <other_environment_files> \ -e /home/stack/templates/my-neutron-environment.yaml
$ openstack overcloud deploy --templates <core_heat_templates> \ -e <other_environment_files> \ -e /home/stack/templates/my-neutron-environment.yaml -r mycustom_roles_file.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証手順
tripleo-adminユーザーとして Controller ノードまたは Networker ノードにログインします。例
ssh tripleo-admin@controller-0
ssh tripleo-admin@controller-0Copy to Clipboard Copied! Toggle word wrap Toggle overflow ovn_metadata_agentが実行されていることを確認します。sudo podman ps | grep ovn_metadata
$ sudo podman ps | grep ovn_metadataCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
a65125d9588d undercloud-0.ctlplane.localdomain:8787/rh-osbs ... openstack-neutron-metadata-agent-ovn ... kolla_start 23 hours ago Up 21 hours ago ovn_metadata_agent
a65125d9588d undercloud-0.ctlplane.localdomain:8787/rh-osbs ... openstack-neutron-metadata-agent-ovn ... kolla_start 23 hours ago Up 21 hours ago ovn_metadata_agentCopy to Clipboard Copied! Toggle word wrap Toggle overflow OVN サービスが設定されたコントローラーノードまたは専用のネットワーカーノードが OVS のゲートウェイとして設定されていることを確認します。
sudo ovs-vsctl get Open_Vswitch . external_ids:ovn-cms-options
$ sudo ovs-vsctl get Open_Vswitch . external_ids:ovn-cms-optionsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
enable-chassis-as-gw
enable-chassis-as-gwCopy to Clipboard Copied! Toggle word wrap Toggle overflow
SR-IOV デプロイメントの追加検証手順
tripleo-adminユーザーとして Compute ノードにログインします。例
ssh tripleo-admin@compute-0
ssh tripleo-admin@compute-0Copy to Clipboard Copied! Toggle word wrap Toggle overflow neutron_sriov_agentが Compute ノード上で実行されていることを確認します。sudo podman ps | grep neutron_sriov_agent
sudo podman ps | grep neutron_sriov_agentCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
f54cbbf4523a undercloud-0.ctlplane.localdomain:8787 ... openstack-neutron-sriov-agent ... kolla_start 23 hours ago Up 21 hours ago neutron_sriov_agent
f54cbbf4523a undercloud-0.ctlplane.localdomain:8787 ... openstack-neutron-sriov-agent ... kolla_start 23 hours ago Up 21 hours ago neutron_sriov_agentCopy to Clipboard Copied! Toggle word wrap Toggle overflow ネットワークに接続された SR-IOV NIC が正常に検出されていることを確認します。
sudo podman exec -uroot galera-bundle-podman-0 mysql nova \ -e 'select hypervisor_hostname,pci_stats from compute_nodes;'
$ sudo podman exec -uroot galera-bundle-podman-0 mysql nova \ -e 'select hypervisor_hostname,pci_stats from compute_nodes;'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.9. ML2/OVN デプロイメントにおける SR-IOV とネイティブ OVN DHCP の組み合わせ リンクのコピーリンクがクリップボードにコピーされました!
カスタムロールをデプロイして、ML2/OVN デプロイメントにおいて SR-IOV とネイティブ OVN DHCP の組み合わせを使用することができます。「ML2/OVN でのカスタムロールのデプロイ」を参照してください。
- 制限事項
このリリースでは、ML2/OVN デプロイメントで SR-IOV とネイティブ OVN DHCP の組み合わせを使用する場合、以下の制限が適用されます。
- すべてのポートに対して HA シャーシグループが 1 つしかないため、すべての外部ポートは単一のゲートウェイノード上でスケジュールされる。
- 外部ポートは論理ルーターのゲートウェイポートと共存しないため、VLAN テナントネットワークでは、VF (直接) ポートでの North-South ルーティングは SR-IOV では機能しない。Bug #1875852 を参照してください。
第3章 プロジェクトネットワークの管理 リンクのコピーリンクがクリップボードにコピーされました!
プロジェクトネットワークは、クラウドコンピューティングのネットワークトラフィックを分離するのに役立ちます。プロジェクトネットワークの作成手順には、ネットワークのプランニングと作成、サブネットおよびルーターの追加が含まれます。
3.1. VLAN のプランニング リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenStack Platform のデプロイメントを計画する際は、個々の IP アドレスの確保元となるサブネットの数を把握することから始めます。複数のサブネットを使用する場合、システム間のトラフィックを VLAN に分割することができます。
たとえば、管理または API トラフィックは、Web トラフィックに対応するシステムと同じネットワーク上に置かないことが理想的です。VLAN 間のトラフィックはルーターを通過するので、ファイアウォールを実装してトラフィックフローを管理することができます。
VLAN は、全体計画 (トラフィックの分離、高可用性、およびデプロイメント内のさまざまな種類の仮想ネットワークリソースに対する IP アドレスの使用状況などが含まれます) の一部としてプランニングする必要があります。
1 つのネットワーク、あるいはネットワークノードの 1 つの OVS エージェントに設定できる VLAN の最大数は 4094 です。最大数を超える VLAN が必要な場合は、複数のプロバイダーネットワーク (VXLAN ネットワーク) および複数のネットワークノードを作成することができます。それぞれのノードには、最大で 4094 のプライベートネットワークを設定することができます。
3.2. ネットワークトラフィックの種別 リンクのコピーリンクがクリップボードにコピーされました!
異種のネットワークトラフィックをホストする場合は、別個の VLAN をトラフィックに割り当てます。たとえば、各種ネットワークごとに別の VLAN を指定することができます。外部ネットワークだけは、外部の物理ネットワークへのルーティングを可能にする必要があります。本リリースでは、director により DHCP サービスが提供されます。
すべての OpenStack デプロイメントで、このセクションのすべての分離 VLAN が必要なわけではありません。たとえば、クラウドユーザーがアドホックの仮想ネットワークをオンデマンドで作成しない場合には、プロジェクトネットワークは必要ない可能性があります。各仮想マシンを他の物理システムと同じスイッチに直接接続する場合には、Compute ノードを直接プロバイダーネットワークに接続し、インスタンスが直接そのプロバイダーネットワークを使用するように設定します。
- プロビジョニングネットワーク: この VLAN は、PXE ブートで director を使用して新規ノードをデプロイするためだけに特化されています。OpenStack Orchestration (heat) は、OpenStack をオーバークラウドのベアメタルサーバーにインストールします。これらのサーバーは物理ネットワークにアタッチされ、アンダークラウドのインフラストラクチャーからこのプラットフォームのインストールイメージを取得します。
内部 API ネットワーク: OpenStack のサービスは、API 通信、RPC メッセージ、データベース通信などの通信に内部 API ネットワークを使用します。さらに、このネットワークは、コントローラーノード間の稼働メッセージの通信にも使用されます。IP アドレスの割り当てを計画する際には、各 API サービスには独自の IP アドレスが必要である点を念頭に置いてください。具体的には、以下のサービスごとに IP アドレスの割当てを計画する必要があります。
- vip-msg (ampq)
- vip-keystone-int
- vip-glance-int
- vip-cinder-int
- vip-nova-int
- vip-neutron-int
- vip-horizon-int
- vip-heat-int
- vip-ceilometer-int
- vip-swift-int
- vip-keystone-pub
- vip-glance-pub
- vip-cinder-pub
- vip-nova-pub
- vip-neutron-pub
- vip-horizon-pub
- vip-heat-pub
- vip-ceilometer-pub
- vip-swift-pub
- ストレージ: Block Storage、NFS、iSCSI、およびその他のストレージサービス。パフォーマンス上の理由から、このネットワークを別の物理イーサネットリンクに分離します。
- Storage Management: OpenStack Object Storage (swift) は、参加するレプリカノード間でデータオブジェクトを同期するために、このネットワークを使用します。プロキシーサービスは、ユーザー要求と下層のストレージレイヤーの間の仲介インターフェイスとして機能します。プロキシーは、入着要求を受け取り、必要なレプリカの位置を特定して要求データを取得します。Ceph バックエンドを使用するサービスは、Ceph と直接対話せずにフロントエンドのサービスを使用するため、Storage Management ネットワーク経由で接続を確立します。RBD ドライバーは例外で、このトラフィックは直接 Ceph に接続する点に注意してください。
- プロジェクトネットワーク: Neutron は、VLAN 分離 (各プロジェクトネットワークがネットワーク VLAN) または VXLAN か GRE によるトンネリングを使用した独自のネットワークを各プロジェクトに提供します。ネットワークトラフィックは、プロジェクトのネットワークごとに分離されます。それぞれのプロジェクトネットワークには IP サブネットが割り当てられ、複数のプロジェクトネットワークが同じアドレスを使用する場合があります。
- 外部: 外部ネットワークは、パブリック API エンドポイントと Dashboard (horizon) への接続をホストします。このネットワークを SNAT に使用することもできます。実稼働環境のデプロイでは、大抵の場合、Floating IP アドレスと NAT に別のネットワークが使用されます。
- プロバイダーネットワーク: 既存のネットワークインフラストラクチャーにインスタンスをアタッチするには、プロバイダーネットワークを使用します。フラットネットワークまたは VLAN タグでデータセンターの既存の物理ネットワークに直接マッピングするために、プロバイダーネットワークを使用することができます。これにより、インスタンスは、OpenStack Networking インフラストラクチャー外部のシステムと同じレイヤー 2 ネットワークを共有することができます。
3.3. IP アドレスの消費 リンクのコピーリンクがクリップボードにコピーされました!
以下のシステムは割り当てられた範囲からの IP アドレスを消費します。
- 物理ノード: 物理 NIC ごとに IP アドレスが 1 つ必要です。物理 NIC に固有の機能を割り当てるのが一般的な慣習です。たとえば、管理トラフィックと NFS トラフィックを、それぞれ別の物理 NIC に割り当てます (冗長化の目的で、異なるスイッチに接続された複数の NIC が使用される場合があります)。
- 高可用性の仮想 IP (VIP): コントローラーノード間で共有されるネットワーク 1 つにつき、1 - 3 つの仮想 IP を割り当てる計画としてください。
3.4. 仮想ネットワーク リンクのコピーリンクがクリップボードにコピーされました!
以下に示す仮想リソースは、OpenStack Networking の IP アドレスを消費します。これらのリソースはクラウドインフラストラクチャーではローカルとみなされ、外部の物理ネットワークにあるシステムから到達可能である必要はありません。
- プロジェクトネットワーク: 各プロジェクトネットワークには、サブネットが必要です。このサブネットを使用して、IP アドレスをインスタンスに割り当てることができます。
- 仮想ルーター: サブネットに結線する各ルーターのインターフェイスには、IP アドレスが 1 つ必要です。DHCP を使用する場合は、各ルーターのインターフェイスに 2 つの IP アドレスが必要です。
- インスタンス: 各インスタンスには、インスタンスをホストするプロジェクトサブネットからのアドレスが必要です。受信トラフィックが必要な場合には、指定の外部ネットワークからインスタンスに Floating IP アドレスを確保する必要があります。
- 管理トラフィック: OpenStack サービスと API トラフィックを含みます。すべてのサービスが、少数の仮想 IP アドレスを共有します。API、RPC、およびデータベースサービスは、内部 API の仮想 IP アドレスで通信します。
3.5. ネットワークルーティングの追加 リンクのコピーリンクがクリップボードにコピーされました!
新規ネットワークからのトラフィックのルーティングを許可するには、そのサブネットを既存の仮想ルーターへのインターフェイスとして追加する必要があります。
- ダッシュボードで、Project > Network > Routers を選択します。
Routers リストで仮想ルーターの名前を選択し、Add Interface をクリックします。
サブネットリストで、新規サブネットの名前を選択します。インターフェイスの IP アドレスを任意で指定することができます。
送信 をクリックします。
ネットワーク上のインスタンスが、サブネット外部のシステムと通信できるようになりました。
3.6. ネットワークプランの例 リンクのコピーリンクがクリップボードにコピーされました!
以下の例には、複数のサブネットに対応する、さまざまなネットワークを示しています。各サブネットには IP アドレスの範囲が 1 つ割り当てられます。
- 例:サブネットプラン
| サブネット名 | アドレス範囲 | アドレス数 | サブネットマスク |
|---|---|---|---|
| プロビジョニングネットワーク | 192.168.100.1 - 192.168.100.250 | 250 | 255.255.255.0 |
| 内部 API ネットワーク | 172.16.1.10 - 172.16.1.250 | 241 | 255.255.255.0 |
| ストレージ | 172.16.2.10 - 172.16.2.250 | 241 | 255.255.255.0 |
| ストレージ管理 | 172.16.3.10 - 172.16.3.250 | 241 | 255.255.255.0 |
| テナントネットワーク (GRE/VXLAN) | 172.16.4.10 - 172.16.4.250 | 241 | 255.255.255.0 |
| 外部ネットワーク (Floating IP など) | 10.1.2.10 - 10.1.3.222 | 469 | 255.255.254.0 |
| プロバイダーネットワーク (インフラストラクチャー) | 10.10.3.10 - 10.10.3.250 | 241 | 255.255.252.0 |
3.7. ネットワークの作成 リンクのコピーリンクがクリップボードにコピーされました!
インスタンスが相互に通信し DHCP を使用して IP アドレスを受け取ることができるように、ネットワークを作成します。外部ネットワークの接続に関する詳細は、物理ネットワークのブリッジを参照してください。
ネットワークの作成時には、ネットワークで複数のサブネットをホスト可能である点を認識しておくことが重要です。これは、まったく異なるシステムを同じネットワークでホストし、それらのシステムを分離する必要がある場合に役立ちます。たとえば、1 つのサブネットでは Web サーバーのトラフィックだけが伝送されるようにする一方で、別のサブネットはデータベースのトラフィックが通過するように指定することができます。サブネットは相互に分離され、別のサブネットと通信する必要のあるインスタンスのトラフィックは、ルーターによって転送する必要があります。大量のトラフィックを必要とする複数のシステムを、同じサブネットに配置すると、ルーティングの必要がなく、ルーティングに伴うレイテンシーや負荷を回避することができます。
- ダッシュボードで、Project > Network > Networks を選択します。
+Create Network をクリックし、次の値を指定します。
Expand フィールド 説明 ネットワーク名
そのネットワークが果たすロールに基づいた説明的な名前。ネットワークを外部の VLAN と統合する場合には、名前に VLAN ID 番号を追記することを検討してください。たとえば、このサブネットで HTTP Web サーバーをホストし、VLAN タグが
122の場合にはwebservers_122とします。また、ネットワークトラフィックをプライベートにして、ネットワークを外部ネットワークと統合しない場合には、internal-onlyとします。管理状態有効
このオプションにより、ネットワークを即時に利用可能にするかどうかを制御することができます。ネットワークを Down の状態で作成するには、このフィールドを使用します。その場合、そのネットワークは論理的には存在しますが、アクティブではありません。このような設定は、そのネットワークを直ちに稼働させない場合に有用です。
サブネットの作成
サブネットを作成するかどうかを決定します。たとえば、ネットワーク接続のないプレースホルダーとしてこのネットワークを維持する場合には、サブネットを作成しない方がよいでしょう。
次へ ボタンをクリックして、サブネット タブで以下の値を指定します。
Expand フィールド 説明 サブネット名
サブネットの説明的な名前を入力します。
ネットワークアドレス
IP アドレス範囲とサブネットマスクが 1 つの値としてまとめられた CIDR 形式でアドレスを入力します。アドレスを判断するには、サブネットマスクでマスキングされたビット数を算出して、IP アドレス範囲の値に追記します。たとえば、サブネットマスク 255.255.255.0 でマスクされるビット数は 24 です。このマスクを IPv4 アドレス範囲 192.168.122.0 に使用するには、アドレスを 192.168.122.0/24 と指定します。
IP バージョン
インターネットプロトコルバージョンを指定します (有効なタイプは IPv4 または IPv6)。ネットワークアドレスフィールドの IP アドレスの範囲は、選択したバージョンと一致する必要があります。
ゲートウェイ IP
デフォルトゲートウェイに指定したルーターのインターフェイスの IP アドレス。このアドレスは、外部ロケーションを宛先とするトラフィックルーティングの次のホップとなり、ネットワークアドレスフィールドで指定した範囲内でなければなりません。たとえば、CIDR 形式のネットワークアドレスが 192.168.122.0/24 の場合には、通常デフォルトのゲートウェイは 192.168.122.1 となります。
ゲートウェイなし
転送を無効にして、サブネットを分離します。
次へ をクリックして DHCP オプションを指定します。
- DHCP 有効: そのサブネットの DHCP サービスを有効にします。DHCP を使用して、インスタンスへの IP 設定の割り当てを自動化することができます。
IPv6 アドレス設定モード : IPv6 ネットワークを作成する際の設定モード。IPv6 ネットワークを作成する場合には、IPv6 アドレスと追加の情報をどのように割り当てるかを指定する必要があります。
- オプション指定なし: IP アドレスを手動で設定する場合または OpenStack が対応していない方法を使用してアドレスを割り当てる場合には、このオプションを選択します。
- SLAAC (Stateless Address Autoconfiguration): インスタンスは、ルーターから送信されるルーター広告 (RA) メッセージに基づいて IPv6 アドレスを生成します。OpenStack Networking ルーターオプションまたは外部ルーターオプションを選択します。ra_mode が slaac に、address_mode が slaac に設定された OpenStack Networking サブネットを作成するには、この設定を使用します。
- DHCPv6 stateful: インスタンスは、OpenStack Networking DHCPv6 サービスから、IPv6 アドレスや追加のオプション (例: DNS) を受信します。ra_mode が dhcpv6-stateful に、address_mode が dhcpv6-stateful に設定されたサブネットを作成するには、この設定を使用します。
- DHCPv6 stateless: インスタンスは、OpenStack Networking ルーターから送信されるルーター広告 (RA) メッセージに基づいて IPv6 アドレスを生成します。追加のオプション (例: DNS) は、OpenStack Networking DHCPv6 サービスから割り当てられます。ra_mode が dhcpv6-stateless に、address_mode が dhcpv6-stateless に設定されたサブネットを作成するには、この設定を使用します。
- IP アドレス割り当てプール: DHCP によって割り当てられる IP アドレスの範囲。たとえば、192.168.22.100,192.168.22.150 という値を指定すると、その範囲内で使用可能なアドレスはすべて割り当ての対象として考慮されます。
DNS サーバー: ネットワーク上で利用可能な DNS サーバーの IP アドレス。DHCP はこれらの IP アドレスをインスタンスに割り当てて名前解決します。
重要DNS 等の重要なサービスの場合、クラウド上ではホストしないことがベストプラクティスです。たとえば、クラウドで DNS をホストしている場合にクラウドが正常に動作しなくなると、DNS は利用できず、クラウドコンポーネントは互いに検索することができなくなります。
- 追加のルート設定: 静的ホストルート。まず CIDR 形式で宛先のネットワークを指定し、その後にルーティングに使用する次のホップを指定します (例: 192.168.23.0/24, 10.1.31.1)。静的ルートをインスタンスに分散する必要がある場合には、この値を指定します。
Create をクリックします。
作成が完了したネットワークは、ネットワーク タブに表示されます。必要に応じて、ネットワークの編集 をクリックしてオプションを変更することもできます。インスタンスの作成時には、そのサブネットを使用するように設定できるようになりました。指定した DHCP オプションがインスタンスに適用されます。
3.8. サブネットの使用 リンクのコピーリンクがクリップボードにコピーされました!
サブネットを使用して、インスタンスにネットワーク接続を付与します。インスタンスの作成プロセスの一環として、各インスタンスはサブネットに割り当てられるため、最適なインスタンスの配置を考慮してインスタンスの接続性の要件に対応することが重要です。
既存のネットワークに対してのみ、サブネットを作成することができます。OpenStack Networking のプロジェクトネットワークでは、複数のサブネットをホストできることを念頭に入れておいてください。これは、まったく異なるシステムを同じネットワークでホストし、それらのシステムを分離する必要がある場合に役立ちます。
たとえば、1 つのサブネットでは Web サーバーのトラフィックだけが伝送されるようにする一方で、別のサブネットはデータベースのトラフィックが通過するように指定することができます。
サブネットは相互に分離され、別のサブネットと通信する必要のあるインスタンスのトラフィックは、ルーターによって転送する必要があります。したがって、互いに大量のトラフィックを送受信する必要があるシステムを同じサブネットにグルーピングすることで、ネットワークレイテンシーおよび負荷を軽減することができます。
3.9. サブネットの作成 リンクのコピーリンクがクリップボードにコピーされました!
サブネットを作成するには、以下の手順に従います。
- Dashboard で プロジェクト > ネットワーク > ネットワーク を選択して、ネットワーク ビューで対象のネットワークの名前をクリックします。
サブネットの作成 をクリックして、以下の値を指定します。
Expand フィールド 説明 サブネット名
サブネットの説明的な名前
ネットワークアドレス
IP アドレス範囲とサブネットマスクが 1 つの値としてまとめられた CIDR 形式のアドレス。CIDR 形式のアドレスを決定するには、サブネットマスクでマスキングされたビット数を算出して、IP アドレス範囲の値に追記します。たとえば、サブネットマスク 255.255.255.0 でマスクされるビット数は 24 です。このマスクを IPv4 アドレス範囲 192.168.122.0 に使用するには、アドレスを 192.168.122.0/24 と指定します。
IP バージョン
インターネットプロトコルバージョン (有効なタイプは IPv4 または IPv6)。ネットワークアドレスフィールドの IP アドレスの範囲は、選択したプロトコルバージョンと一致する必要があります。
ゲートウェイ IP
デフォルトゲートウェイに指定したルーターのインターフェイスの IP アドレス。このアドレスは、外部ロケーションを宛先とするトラフィックルーティングの次のホップとなり、ネットワークアドレスフィールドで指定した範囲内でなければなりません。たとえば、CIDR 形式のネットワークアドレスが 192.168.122.0/24 の場合には、通常デフォルトのゲートウェイは 192.168.122.1 となります。
ゲートウェイなし
転送を無効にして、サブネットを分離します。
次へ をクリックして DHCP オプションを指定します。
- DHCP 有効: そのサブネットの DHCP サービスを有効にします。DHCP を使用して、インスタンスへの IP 設定の割り当てを自動化することができます。
IPv6 アドレス設定モード : IPv6 ネットワークを作成する際の設定モード。IPv6 ネットワークを作成する場合には、IPv6 アドレスと追加の情報をどのように割り当てるかを指定する必要があります。
- オプション指定なし: IP アドレスを手動で設定する場合または OpenStack が対応していない方法を使用してアドレスを割り当てる場合には、このオプションを選択します。
- SLAAC (Stateless Address Autoconfiguration): インスタンスは、ルーターから送信されるルーター広告 (RA) メッセージに基づいて IPv6 アドレスを生成します。OpenStack Networking ルーターオプションまたは外部ルーターオプションを選択します。ra_mode が slaac に、address_mode が slaac に設定された OpenStack Networking サブネットを作成するには、この設定を使用します。
- DHCPv6 stateful: インスタンスは、OpenStack Networking DHCPv6 サービスから、IPv6 アドレスや追加のオプション (例: DNS) を受信します。ra_mode が dhcpv6-stateful に、address_mode が dhcpv6-stateful に設定されたサブネットを作成するには、この設定を使用します。
- DHCPv6 stateless: インスタンスは、OpenStack Networking ルーターから送信されるルーター広告 (RA) メッセージに基づいて IPv6 アドレスを生成します。追加のオプション (例: DNS) は、OpenStack Networking DHCPv6 サービスから割り当てられます。ra_mode が dhcpv6-stateless に、address_mode が dhcpv6-stateless に設定されたサブネットを作成するには、この設定を使用します。
- IP アドレス割り当てプール: DHCP によって割り当てられる IP アドレスの範囲。たとえば、192.168.22.100,192.168.22.150 という値を指定すると、その範囲内で使用可能なアドレスはすべて割り当ての対象として考慮されます。
- DNS サーバー: ネットワーク上で利用可能な DNS サーバーの IP アドレス。DHCP はこれらの IP アドレスをインスタンスに割り当てて名前解決します。
- 追加のルート設定: 静的ホストルート。まず CIDR 形式で宛先のネットワークを指定し、その後にルーティングに使用する次のホップを指定します (例: 192.168.23.0/24, 10.1.31.1)。静的ルートをインスタンスに分散する必要がある場合には、この値を指定します。
Create をクリックします。
サブネットは、サブネット のリストに表示されます。必要に応じて、ネットワークの編集 をクリックしてオプションを変更することもできます。インスタンスの作成時には、そのサブネットを使用するように設定できるようになりました。指定した DHCP オプションがインスタンスに適用されます。
3.10. ルーターの追加 リンクのコピーリンクがクリップボードにコピーされました!
OpenStack Networking は、SDN をベースとする仮想ルーターを使用したルーティングサービスを提供します。インスタンスが外部のサブネット (物理ネットワーク内のサブネットを含む) と通信するには、ルーターは必須です。ルーターとサブネットはインターフェイスを使用して接続します。各サブネットにはルーターに接続するための独自のインターフェイスが必要です。
ルーターのデフォルトゲートウェイは、そのルーターが受信するトラフィックの次のホップを定義します。そのネットワークは通常、仮想ブリッジを使用して、外部の物理ネットワークにトラフィックをルーティングするように設定されます。
ルーターを作成するには、以下の手順を実施します。
- Dashboard で プロジェクト > ネットワーク > ルーター を選択し、ルーターの作成 をクリックします。
- 新規ルーターの説明的な名前を入力し、ルーターの作成 をクリックします。
- ルーター リストに新たに追加されたルーターのエントリーの横にある ゲートウェイの設定 をクリックします。
- 外部ネットワーク のリストで、外部ロケーション宛のトラフィックを受信するネットワークを指定します。
Set Gateway をクリックします。
ルーターを追加したら、作成済みのサブネットがこのルーターを使用してトラフィックを送信するように設定しなければなりません。そのためには、サブネットとルーター間のインターフェイスを作成します。
サブネットのデフォルトルートを上書きすることはできません。サブネットのデフォルトルートが削除されると、L3 エージェントは自動的に対応するルーター名前空間のルートも削除するので、関連付けられたサブネットとの間でネットワークトラフィックの送受信ができなくなります。既存のルーター名前空間のルートが削除された場合にこの問題を解決するには、以下の手順を実施します。
- サブネット上の全 Floating IP の割り当てを解除します。
- ルーターをサブネットから切断します。
- ルーターをサブネットに再接続します。
- すべての Floating IP を再接続します。
3.11. すべてのリソースのパージおよびプロジェクトの削除 リンクのコピーリンクがクリップボードにコピーされました!
openstack project purge コマンドを使用して、特定のプロジェクトに属するすべてのリソースを削除することや、プロジェクトを削除することもできます。
手順
プロジェクトのリストを取得します。
openstack project list
$ openstack project listCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1 つ以上のプロジェクトのリソースをパージし、それらを削除します。
- 例
この例では、
test-projectプロジェクトがパージされ、削除されます。openstack project purge --project 02e501908c5b438dbc73536c10c9aac0
$ openstack project purge --project 02e501908c5b438dbc73536c10c9aac0Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.12. ルーターの削除 リンクのコピーリンクがクリップボードにコピーされました!
インターフェイスが接続されていないルーターは削除することができます。
インターフェイスの接続を解除しルーターを削除するには、以下の手順を実施します。
- Dashboard で プロジェクト > ネットワーク > ルーター を選択し、削除するルーターの名前をクリックします。
- 種別が 内部インタフェース のインターフェイスを選択し、インターフェイスの削除 をクリックします。
- ルーターリストから対象のルーターを選択して ルーターの削除 をクリックします。
3.13. サブネットの削除 リンクのコピーリンクがクリップボードにコピーされました!
使用しなくなったサブネットは削除することができます。ただし、インスタンスがまだそのサブネットを使用するように設定されている場合には、削除を試みても失敗し、Dashboard にエラーメッセージが表示されます。
ネットワーク内の特定サブネットを削除するには、以下の手順を実施します。
- ダッシュボードで、Project > Network > Networks を選択します。
- 対象のネットワークの名前をクリックします。
- 対象のサブネットを選択して、サブネットの削除 をクリックします。
3.14. ネットワークの削除 リンクのコピーリンクがクリップボードにコピーされました!
以前に作成したネットワークを削除する必要がある場合があります (例: ハウスキーピングやデコミッションプロセスの一環としての処理など)。ネットワークを正常に削除するには、まず始めにまだネットワークが使用されているインターフェイスを削除または切断する必要があります。
関連するインターフェイスと共にプロジェクト内のネットワークを削除するには、以下の手順を実施します。
ダッシュボードで、Project > Network > Networks を選択します。
対象のネットワークサブネットに関連付けられたルーターインターフェイスをすべて削除します。
インターフェイスを削除するには、ネットワーク リストで対象のネットワークをクリックして ID フィールドを確認し、削除するネットワークの ID 番号を特定します。このネットワークに関連付けられたすべてのサブネットの ネットワーク ID フィールドには、この値が使用されます。
プロジェクト > ネットワーク > ルーター に移動し、ルーター リストで対象の仮想ルーターの名前をクリックし、削除するサブネットに接続されているインターフェイスを特定します。
ゲートウェイ IP として機能していた IP アドレスで、削除するサブネットと他のサブネットを区別することができます。インターフェイスのネットワーク ID が以前のステップで書き留めた ID と一致しているかどうかを確認することで、さらに確実に識別することができます。
- 削除するインターフェイスの インターフェイスの削除 ボタンをクリックします。
- プロジェクト > ネットワーク > ネットワーク を選択して、対象のネットワークの名前をクリックします。
削除するサブネットの サブネットの削除 ボタンをクリックします。
注記この時点でサブネットをまだ削除できない場合には、インスタンスがすでにそのサブネットを使用していないかどうかを確認してください。
- プロジェクト > ネットワーク > ネットワーク を選択し、削除するネットワークを選択します。
- ネットワークの削除 をクリックします。
第4章 物理ネットワークへの仮想マシンインスタンスの接続 リンクのコピーリンクがクリップボードにコピーされました!
フラットプロバイダーネットワークおよび VLAN プロバイダーネットワークを使用して、仮想マシンインスタンスを外部ネットワークに直接接続することができます。
4.1. OpenStack Networking トポロジーの概要 リンクのコピーリンクがクリップボードにコピーされました!
OpenStack Networking (neutron) には、さまざまなノード種別に分散される 2 種類のサービスがあります。
- Neutron サーバー: このサービスは、エンドユーザーとサービスが OpenStack Networking と対話するための API を提供する OpenStack Networking API サーバーを実行します。このサーバーは、下層のデータベースと統合して、プロジェクトネットワーク、ルーター、ロードバランサーの詳細などを保管します。
Neutron エージェント: これらは、OpenStack Networking のネットワーク機能を実行するサービスです。
-
neutron-dhcp-agent: プロジェクトプライベートネットワークの DHCP IP アドレスを管理します。 -
neutron-l3-agent: プロジェクトプライベートネットワーク、外部ネットワークなどの間のレイヤー 3 ルーティングを実行します。
-
-
Compute ノード: このノードは、仮想マシン (別称: インスタンス) を実行するハイパーバイザーをホストします。Compute ノードは、インスタンスに外部への接続を提供するために、ネットワークに有線で直接接続する必要があります。このノードは通常、
neutron-openvswitch-agentなどの L2 エージェントが実行される場所です。
4.2. OpenStack Networking サービスの配置 リンクのコピーリンクがクリップボードにコピーされました!
OpenStack Networking サービスは、同じ物理サーバーまたは別の専用サーバー (ロールによって名前が付けられる) で実行することができます。
- コントローラーノード: API サービスを実行するサーバー
- ネットワークノード: OpenStack Networking エージェントを実行するサーバー
- Compute ノード: インスタンスをホストするハイパーバイザー
この章の以下の手順は、これらの 3 つのノード種別が含まれる環境に適用されます。お使いのデプロイメントで、同じ物理ノードがコントローラーノードとネットワークノードの両方のロールを果たしている場合には、そのサーバーで両ノードのセクションの手順を実行する必要があります。これは、3 つの全ノードにおいてコントローラーノードおよびネットワークノードサービスが HA で実行されている高可用性 (HA) 環境にも適用されます。そのため、3 つすべてのノードで、コントローラーノードおよびネットワークノードに該当するセクションの手順を実行する必要があります。
4.3. フラットプロバイダーネットワークの設定 リンクのコピーリンクがクリップボードにコピーされました!
フラットプロバイダーネットワークを使用してインスタンスを直接外部ネットワークに接続することができます。これは、複数の物理ネットワークおよびそれぞれ別の物理インターフェイスがあり、各 Compute ノードとネットワークノードをこれらの外部ネットワークに接続する場合に役立ちます。
前提条件
複数の物理ネットワークがある。
以下の例では、
physnet1およびphysnet2という物理ネットワークをそれぞれ使用します。独立した物理インターフェイスがある。
この例では、それぞれ別の物理インターフェイス
eth0とeth1を使用します。
手順
アンダークラウドホストに stack ユーザーとしてログインして、カスタム YAML 環境ファイルを作成します。
例
vi /home/stack/templates/my-modules-environment.yaml
$ vi /home/stack/templates/my-modules-environment.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow ヒントRed Hat OpenStack Platform Orchestration サービス (heat) は、テンプレート と呼ばれるプランのセットを使用して環境をインストールおよび設定します。カスタム環境ファイル を使用して、オーバークラウドの要素をカスタマイズすることができます。このファイルは、orchestration テンプレートをカスタマイズするための特別な種別のテンプレートです。
YAML 環境ファイルの
parameter_defaultsセクションで、NeutronBridgeMappingsを使用して外部ネットワークへのアクセスに使用する OVS ブリッジを指定します。例
parameter_defaults: NeutronBridgeMappings: 'physnet1:br-net1,physnet2:br-net2'
parameter_defaults: NeutronBridgeMappings: 'physnet1:br-net1,physnet2:br-net2'Copy to Clipboard Copied! Toggle word wrap Toggle overflow Controller ノードおよび Compute ノードのカスタム NIC 設定テンプレートで、インターフェイスがアタッチされたブリッジを設定します。
例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow openstack overcloud deployコマンドを実行し、変更したカスタム NIC テンプレートおよび新しい環境ファイルを含む、テンプレートおよび環境ファイルを追加します。重要後で実行される環境ファイルで定義されているパラメーターとリソースが優先されることになるため、環境ファイルの順序は重要となります。
例
openstack overcloud deploy --templates \ -e [your-environment-files] \ -e /usr/share/openstack-tripleo-heat-templates/environments/services/my-neutron-environment.yaml
$ openstack overcloud deploy --templates \ -e [your-environment-files] \ -e /usr/share/openstack-tripleo-heat-templates/environments/services/my-neutron-environment.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
フラットネットワークとして外部ネットワーク (
public1) を作成し、設定済みの物理ネットワーク (physnet1) に関連付けます。このネットワークを共有ネットワークとして設定し (
--shareを使用)、他のユーザーが外部ネットワークに直接接続された仮想マシンインスタンスを作成できるようにします。- 例
openstack network create --share --provider-network-type flat --provider-physical-network physnet1 --external public01
$ openstack network create --share --provider-network-type flat --provider-physical-network physnet1 --external public01Copy to Clipboard Copied! Toggle word wrap Toggle overflow
openstack subnet createコマンドを使用して、サブネット (public_subnet) を作成します。- 例
openstack subnet create --no-dhcp --allocation-pool start=192.168.100.20,end=192.168.100.100 --gateway 192.168.100.1 --network public01 public_subnet
$ openstack subnet create --no-dhcp --allocation-pool start=192.168.100.20,end=192.168.100.100 --gateway 192.168.100.1 --network public01 public_subnetCopy to Clipboard Copied! Toggle word wrap Toggle overflow
仮想マシンインスタンスを作成し、それを新たに作成した外部ネットワークに直接接続します。
- 例
openstack server create --image rhel --flavor my_flavor --network public01 my_instance
$ openstack server create --image rhel --flavor my_flavor --network public01 my_instanceCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.4. フラットプロバイダーネットワークのパケットフローが機能する仕組み リンクのコピーリンクがクリップボードにコピーされました!
このセクションでは、フラットプロバイダーネットワークが設定された状況で、インスタンスに対するトラフィックがどのように送付されるかについて詳しく説明します。
- フラットプロバイダーネットワークでの送信トラフィックのフロー
-
以下の図で、インスタンスから送信され直接外部ネットワークに到達するトラフィックのパケットフローを説明します。
br-ex外部ブリッジを設定した後に、物理インターフェイスをブリッジに追加してインスタンスを Compute ノードに作成すると、得られるインターフェイスとブリッジの設定は、以下の図のようになります (iptables_hybridファイアウォールドライバーを使用する場合)。
-
パケットはインスタンスの
eth0インターフェイスから送信され、linux ブリッジqbr-xxに到達します。 -
ブリッジ
qbr-xxは、veth ペアqvb-xx <-> qvo-xxxを使用してbr-intに接続されます。これは、セキュリティーグループによって定義されている受信/送信のファイアウォールルールの適用にブリッジが使用されるためです。 インターフェイス
qvb-xxはqbr-xxlinux ブリッジに、qvo-xxはbr-intOpen vSwitch (OVS) ブリッジに接続されています。- 'qbr-xx'Linux ブリッジの設定例
brctl show
$ brctl show
qbr269d4d73-e7 8000.061943266ebb no qvb269d4d73-e7
tap269d4d73-e7
br-int上のqvo-xxの設定
ポート qvo-xx は、フラットなプロバイダーネットワークに関連付けられた内部 VLAN タグでタグ付けされます。この例では VLAN タグは 5 です。パケットが qvo-xx に到達する際に、VLAN タグがパケットのヘッダーに追加されます。
次にこのパケットは、パッチピア int-br-ex <-> phy-br-ex を使用して br-ex OVS ブリッジに移動します。
br-int でのパッチピアの設定例を以下に示します。
br-ex でのパッチピアの設定例
このパケットが br-ex の phy-br-ex に到達すると、br-ex 内の OVS フローにより VLAN タグ (5) が取り除かれ、物理インターフェイスに転送されます。
以下の出力例では、phy-br-ex のポート番号は 2 となっています。
以下の出力例では、VLAN タグが 5 (dl_vlan=5) の phy-br-ex (in_port=2) に到達するパケットを示しています。また、br-ex の OVS フローにより VLAN タグが取り除かれ、パケットが物理インターフェイスに転送されます。
ovs-ofctl dump-flows br-ex
$ ovs-ofctl dump-flows br-ex
NXST_FLOW reply (xid=0x4):
cookie=0x0, duration=4703.491s, table=0, n_packets=3620, n_bytes=333744, idle_age=0, priority=1 actions=NORMAL
cookie=0x0, duration=3890.038s, table=0, n_packets=13, n_bytes=1714, idle_age=3764, priority=4,in_port=2,dl_vlan=5 actions=strip_vlan,NORMAL
cookie=0x0, duration=4702.644s, table=0, n_packets=10650, n_bytes=447632, idle_age=0, priority=2,in_port=2 actions=drop
物理インターフェイスが別の VLAN タグ付けされたインターフェイスの場合、その物理インターフェイスはパケットにタグを追加します。
- フラットプロバイダーネットワークでの受信トラフィックのフロー
- このセクションでは、外部ネットワークからの受信トラフィックがインスタンスのインターフェイスに到達するまでのフローを説明します。
-
受信トラフィックは、物理ノードの
eth1に到達します。 -
パケットは
br-exブリッジに移動します。 -
このパケットは、パッチピア
phy-br-ex <--> int-br-exを通じてbr-intに移動します。
以下の例では、int-br-ex はポート番号 15 を使用します。15(int-br-ex) が含まれるエントリーに注目してください。
- br-int のトラフィックフローの確認
-
パケットが
int-br-exに到達すると、br-intブリッジ内の OVS フロールールにより、内部 VLAN タグ5を追加するようにパケットが変更されます。actions=mod_vlan_vid:5のエントリーを参照してください。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
2 番目のルールは、VLAN タグのない (vlan_tci=0x0000) int-br-ex (in_port=15) に到達するパケットを管理します。このルールにより、パケットに VLAN タグ 5 が追加され (
actions=mod_vlan_vid:5,NORMAL)、qvoxxxに転送されます。 -
qvoxxxは、VLAN タグを削除した後に、パケットを受け入れてqvbxxに転送します。 - 最終的にパケットはインスタンスに到達します。
-
パケットが
VLAN tag 5 は、フラットプロバイダーネットワークを使用するテスト用 Compute ノードで使用したサンプルの VLAN です。この値は neutron-openvswitch-agent により自動的に割り当てられました。この値は、お使いのフラットプロバイダーネットワークの値とは異なる可能性があり、2 つの異なる Compute ノード上にある同じネットワークにおいても異なる可能性があります。
4.5. フラットプロバイダーネットワーク上での、インスタンス/物理ネットワーク間の接続のトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
フラットプロバイダーネットワークのパケットフローが機能する仕組みで提供される出力で、フラットプロバイダーネットワークで問題が発生した場合にトラブルシューティングを行うのに十分なデバッグ情報が得られます。以下の手順で、トラブルシューティングのプロセスについてさらに詳しく説明します。
手順
bridge_mappingsを確認します。使用する物理ネットワーク名が
bridge_mapping設定の内容と一致していることを確認してください。- 例
この例では、物理ネットワーク名は
physnet1です。openstack network show provider-flat
$ openstack network show provider-flatCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
... | provider:physical_network | physnet1 ...
... | provider:physical_network | physnet1 ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 例
この例では、
bridge_mapping設定の内容もphysnet1です。grep bridge_mapping /etc/neutron/plugins/ml2/openvswitch_agent.ini
$ grep bridge_mapping /etc/neutron/plugins/ml2/openvswitch_agent.iniCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
bridge_mappings = physnet1:br-ex
bridge_mappings = physnet1:br-exCopy to Clipboard Copied! Toggle word wrap Toggle overflow
ネットワークの設定を確認します。
ネットワークが
externalとして作成され、flatの種別が使用されていることを確認します。- 例
この例では、ネットワーク
provider-flatに関する詳細が照会されます。openstack network show provider-flat
$ openstack network show provider-flatCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
... | provider:network_type | flat | | router:external | True | ...
... | provider:network_type | flat | | router:external | True | ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow
パッチピアを確認します。
パッチピア
int-br-ex <--> phy-br-exを使用して、br-intとbr-exが接続されていることを確認します。ovs-vsctl show
$ ovs-vsctl showCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
br-exでのパッチピアの設定:Copy to Clipboard Copied! Toggle word wrap Toggle overflow /etc/neutron/plugins/ml2/openvswitch_agent.iniのbridge_mappingが正しく設定されていれば、この接続はneutron-openvswitch-agentサービスを再起動する際に作成されます。サービスを再起動してもこの接続が作成されない場合には、
bridge_mappingの設定を再確認してください。
ネットワークフローを確認します。
ovs-ofctl dump-flows br-exとovs-ofctl dump-flows br-intを実行して、フローにより送信パケットの内部 VLAN ID が削除されたかどうかを確認します。まず、このフローは、特定の Compute ノード上のこのネットワークにインスタンスを作成すると追加されます。-
インスタンスの起動後にこのフローが作成されなかった場合には、ネットワークが
flatとして作成されていて、externalであることと、physical_networkの名前が正しいことを確認します。また、bridge_mappingの設定を確認してください。 最後に
ifcfg-br-exとifcfg-ethxの設定を確認します。ethXがbr-ex内のポートとして追加されていること、およびip aの出力でifcfg-br-exおよびifcfg-ethxにUPフラグが表示されることを確認します。- 出力例
以下の出力では、
eth1がbr-exのポートであることが分かります。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 例
以下の例では
eth1は OVS ポートとして設定されていて、カーネルはこのインターフェイスからのパケットをすべて転送して OVS ブリッジbr-exに送信することを認識していることが分かります。これは、master ovs-systemのエントリーで確認することができます。ip a
$ ip a 5: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master ovs-system state UP qlen 1000Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
インスタンスの起動後にこのフローが作成されなかった場合には、ネットワークが
4.6. VLAN プロバイダーネットワークの設定 リンクのコピーリンクがクリップボードにコピーされました!
単一の NIC 上の VLAN タグ付けされた複数のインターフェイスを複数のプロバイダーネットワークに接続する場合、これらの新しい VLAN プロバイダーネットワークは仮想マシンインスタンスを直接外部ネットワークに接続できます。
前提条件
VLAN 範囲を持つ物理ネットワークがある。
以下の例では、VLAN 範囲が
171-172のphysnet1と呼ばれる物理ネットワークを使用します。ネットワークノードと Compute ノードが、物理インターフェイスを使用して物理ネットワークに接続されている。
以下の例では、物理インターフェイス
eth1を使用して物理ネットワークphysnet1に接続されているネットワークノードと Compute ノードを使用します。- これらのインターフェイスを接続するスイッチポートは、必要な VLAN 範囲をトランク接続するように設定する必要があります。
手順
アンダークラウドホストに stack ユーザーとしてログインして、カスタム YAML 環境ファイルを作成します。
例
vi /home/stack/templates/my-modules-environment.yaml
$ vi /home/stack/templates/my-modules-environment.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow ヒントRed Hat OpenStack Platform Orchestration サービス (heat) は、テンプレート と呼ばれるプランのセットを使用して環境をインストールおよび設定します。カスタム環境ファイル を使用して、オーバークラウドの要素をカスタマイズすることができます。このファイルは、orchestration テンプレートをカスタマイズするための特別な種別のテンプレートです。
YAML 環境ファイルの
parameter_defaultsセクションで、NeutronTypeDriversを使用してネットワーク種別ドライバーを指定します。例
parameter_defaults: NeutronTypeDrivers: vxlan,flat,vlan
parameter_defaults: NeutronTypeDrivers: vxlan,flat,vlanCopy to Clipboard Copied! Toggle word wrap Toggle overflow NeutronNetworkVLANRangesの設定を行い、使用する物理ネットワークおよび VLAN 範囲を反映します。例
parameter_defaults: NeutronTypeDrivers: 'vxlan,flat,vlan' NeutronNetworkVLANRanges: 'physnet1:171:172'
parameter_defaults: NeutronTypeDrivers: 'vxlan,flat,vlan' NeutronNetworkVLANRanges: 'physnet1:171:172'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 外部ネットワークブリッジ (br-ex) を作成し、ポート (eth1) をそのブリッジに関連付けます。
以下の例では、eth1 が br-ex を使用するように設定します。
例
parameter_defaults: NeutronTypeDrivers: 'vxlan,flat,vlan' NeutronNetworkVLANRanges: 'physnet1:171:172' NeutronBridgeMappings: 'datacentre:br-ex,tenant:br-int'
parameter_defaults: NeutronTypeDrivers: 'vxlan,flat,vlan' NeutronNetworkVLANRanges: 'physnet1:171:172' NeutronBridgeMappings: 'datacentre:br-ex,tenant:br-int'Copy to Clipboard Copied! Toggle word wrap Toggle overflow コアテンプレートおよびこの新しい環境ファイルを含む環境ファイルを指定して、
openstack overcloud deployコマンドを実行します。重要後で実行される環境ファイルで定義されているパラメーターとリソースが優先されることになるため、環境ファイルの順序は重要となります。
例
openstack overcloud deploy --templates \ -e [your-environment-files] \ -e /usr/share/openstack-tripleo-heat-templates/environments/services/my-neutron-environment.yaml
$ openstack overcloud deploy --templates \ -e [your-environment-files] \ -e /usr/share/openstack-tripleo-heat-templates/environments/services/my-neutron-environment.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
外部ネットワークを種別
vlanとして作成して、設定済みのphysical_networkに関連付けます。以下のサンプルコマンドを実行して、2 つのネットワーク (VLAN 171 用および VLAN 172 用) を作成します。
例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 複数のサブネットを作成して、外部ネットワークを使用するように設定します。
openstack subnet createまたは Dashboard のどちらかを使用して、これらのサブネットを作成することができます。ネットワーク管理者から取得した外部サブネットの詳細が、正しく各 VLAN に関連付けられるようにします。以下の例では、VLAN 171 はサブネット
10.65.217.0/24を、VLAN 172 は10.65.218.0/24を、それぞれ使用しています。例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.7. VLAN プロバイダーネットワークのパケットフローが機能する仕組み リンクのコピーリンクがクリップボードにコピーされました!
このセクションでは、VLAN プロバイダーネットワークが設定された状況で、インスタンスに対するトラフィックがどのように送付されるかについて詳しく説明します。
- VLAN プロバイダーネットワークでの送信トラフィックのフロー
- 以下の図で、インスタンスから送信され直接 VLAN プロバイダー外部ネットワークに到達するトラフィックのパケットフローを説明します。この例では、2 つの VLAN ネットワーク (171 および 172) にアタッチされた 2 つのインスタンスを使用します。br-ex を設定した後に、物理インターフェイスをブリッジに追加してインスタンスを Compute ノードに作成すると、得られるインターフェイスとブリッジの設定は、以下の図のようになります。
- インスタンスの eth0 インターフェイスから送信されたパケットは、インスタンスに接続された linux ブリッジ qbr-xx に到達します。
- qbr-xx は、veth ペア qvbxx <→ qvoxxx を使用して br-int に接続されます。
qvbxx は linux ブリッジ qbr-xx に、qvoxx は Open vSwitch ブリッジ br-int に接続されています。
- Linux ブリッジ上の qbr-xx の設定例
- 以下の例には、2 つのインスタンスおよびこれに対応する 2 つの linux ブリッジが表示されています。
- br-int上の qvoxx の設定
-
qvoxxには、VLAN プロバイダーネットワークが関連付けられた内部 VLAN のタグが付けられます。この例では、内部 VLAN タグ 2 には VLAN プロバイダーネットワークprovider-171、VLAN タグ 3 には VLAN プロバイダーネットワークprovider-172が関連付けられます。パケットが qvoxx に到達すると、この VLAN タグがパケットのヘッダーに追加されます。 -
パケットは次に、パッチピア
int-br-ex<→phy-br-exを使用して br-ex OVS ブリッジに移動します。br-int 上のパッチピアの例を以下に示します。
br-ex 上のパッチピアの設定例を以下に示します。
- このパケットが br-ex 上の phy-br-ex に到達すると、br-ex 内の OVS フローが内部 VLAN タグを VLAN プロバイダーネットワークに関連付けられた実際の VLAN タグに置き換えます。
以下のコマンドの出力では、phy-br-ex のポート番号は 4 となっています。
ovs-ofctl show br-ex
$ ovs-ofctl show br-ex
4(phy-br-ex): addr:32:e7:a1:6b:90:3e
config: 0
state: 0
speed: 0 Mbps now, 0 Mbps max
以下のコマンドでは、VLAN タグ 2 (dl_vlan=2) の付いた phy-br-ex (in_port=4) に到達するパケットが表示されます。Open vSwitch は VLAN タグを 171 に置き換え (actions=mod_vlan_vid:171,NORMAL)、パケットを物理インターフェイスに転送します。このコマンドでは、VLAN タグ 3 (dl_vlan=3) の付いた phy-br-ex (in_port=4) に到達するパケットも表示されます。Open vSwitch は VLAN タグを 172 に置き換え (actions=mod_vlan_vid:172,NORMAL)、パケットを物理インターフェイスに転送します。neutron-openvswitch-agent は、これらのルールを追加します。
このパケットは、次に物理インターフェイス eth1 に転送されます。
- VLAN プロバイダーネットワークでの受信トラフィックのフロー
- 以下のフローは、プロバイダーネットワーク provider-171 に VLAN タグ 2 を使用し、プロバイダーネットワーク provider-172 に VLAN タグ 3 を使用して、Compute ノードでテストを行った際の例です。フローは、統合ブリッジ br-int のポート 18 を使用します。
実際の VLAN プロバイダーネットワークでは、異なる設定が必要な場合があります。また、ネットワークの設定要件は、2 つの別個の Compute ノード間で異なる場合があります。
以下のコマンドの出力には、ポート番号 18 を使用する int-br-ex が表示されます。
ovs-ofctl show br-int
$ ovs-ofctl show br-int
18(int-br-ex): addr:fe:b7:cb:03:c5:c1
config: 0
state: 0
speed: 0 Mbps now, 0 Mbps max
以下のコマンドの出力には、br-int のフローのルールが表示されます。
- 受信フローの例
- この例では、次の br-int OVS フローを示します。
cookie=0x0, duration=3181.679s, table=0, n_packets=2605, n_bytes=246456, idle_age=0, priority=3,in_port=18,dl_vlan=172 actions=mod_vlan_vid:3,NORMAL
cookie=0x0, duration=3181.679s, table=0, n_packets=2605, n_bytes=246456, idle_age=0,
priority=3,in_port=18,dl_vlan=172 actions=mod_vlan_vid:3,NORMAL
- VLAN タグ 172 の付いた外部ネットワークからのパケットが、物理ノード上の eth1 から br-ex ブリッジに到達します。
-
このパケットは、パッチピア
phy-br-ex <-> int-br-exを通じて br-int に移動します。 -
パケットは、フローの条件 (
in_port=18,dl_vlan=172) を満たします。 -
フローのアクション (
actions=mod_vlan_vid:3,NORMAL) は VLAN タグ 172 を内部 VLAN タグ 3 に置き換え、通常のレイヤー 2 処理でパケットをインスタンスに転送します。
4.8. VLAN プロバイダーネットワーク上での、インスタンス/物理ネットワーク間の接続のトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
VLAN プロバイダーネットワークの接続についてトラブルシューティングを行う場合は、VLAN プロバイダーネットワークのパケットフローが機能する仕組みに記載のパケットフローを参照してください。さらに、以下の設定オプションを確認してください。
手順
bridge_mapping設定で使用される物理ネットワーク名が物理ネットワーク名と一致することを確認します。例
openstack network show provider-vlan171
$ openstack network show provider-vlan171Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
... | provider:physical_network | physnet1 ...
... | provider:physical_network | physnet1 ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例
grep bridge_mapping /etc/neutron/plugins/ml2/openvswitch_agent.ini
$ grep bridge_mapping /etc/neutron/plugins/ml2/openvswitch_agent.iniCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
この出力例では、物理ネットワーク名
physnet1がbridge_mapping設定で使用されている名前と一致しています。bridge_mappings = physnet1:br-ex
bridge_mappings = physnet1:br-exCopy to Clipboard Copied! Toggle word wrap Toggle overflow
ネットワークが
externalとしてvlanの種別で作成され、正しいsegmentation_idの値が使用されていることを確認します。例
openstack network show provider-vlan171
$ openstack network show provider-vlan171Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
... | provider:network_type | vlan | | provider:physical_network | physnet1 | | provider:segmentation_id | 171 | ...
... | provider:network_type | vlan | | provider:physical_network | physnet1 | | provider:segmentation_id | 171 | ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow
パッチピアを確認します。
パッチピア
int-br-ex <--> phy-br-exを使用して、br-intとbr-exが接続されていることを確認します。ovs-vsctl show
$ ovs-vsctl showCopy to Clipboard Copied! Toggle word wrap Toggle overflow この接続は、
/etc/neutron/plugins/ml2/openvswitch_agent.iniでbridge_mappingが正しく設定されていることを前提として、neutron-openvswitch-agentの再起動の後に作成されます。サービスを再起動してもこの接続が作成されない場合には
bridge_mappingの設定を再確認してください。ネットワークフローを確認します。
-
送信パケットのフローを確認するには、
ovs-ofctl dump-flows br-exおよびovs-ofctl dump-flows br-intを実行して、このフローにより VLAN ID が外部 VLAN id (segmentation_id) にマッピングされていることを確認します。 受信パケットには、外部 VLAN ID が内部 VLAN ID にマッピングされます。
このフローは、このネットワークに初めてインスタンスを作成した場合に neutron OVS エージェントにより追加されます。
-
インスタンスの起動後にこのフローが作成されなかった場合には、ネットワークが
vlanとして作成されていて、externalであることと、physical_networkの名前が正しいことを確認します。また、bridge_mappingの設定を再確認してください。 最後に、
ifcfg-br-exとifcfg-ethxの設定を再確認します。br-exにポートethXが含まれていること、およびip aコマンドの出力でifcfg-br-exとifcfg- ethxの両方にUPフラグが表示されることを確認します。例
ovs-vsctl show
$ ovs-vsctl showCopy to Clipboard Copied! Toggle word wrap Toggle overflow この出力例では、
eth1はbr-exのポートです。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例
ip a
$ ip aCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
この出力例では、
eth1がポートとして追加されており、カーネルがすべてのパケットをインターフェイスから OVS ブリッジbr-exに移動するように設定されています。これは、エントリーmaster ovs-systemで確認できます。5: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master ovs-system state UP qlen 1000
5: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master ovs-system state UP qlen 1000Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
送信パケットのフローを確認するには、
4.9. ML2/OVS デプロイメントでのプロバイダーネットワーク用マルチキャストスヌーピングの有効化 リンクのコピーリンクがクリップボードにコピーされました!
マルチキャストパケットが Red Hat OpenStack Platform (RHOSP) プロバイダーネットワーク内の全ポートにあふれるのを防ぐには、マルチキャストスヌーピングを有効にする必要があります。Modular Layer 2 プラグインと Open vSwitch メカニズムドライバーの組み合わせ (ML2/OVS) を使用する RHOSP デプロイメントでは、YAML 形式の環境ファイルで RHOSP Orchestration (heat) NeutronEnableIgmpSnooping パラメーターを宣言してこれを行います。
マルチキャストスヌーピングの設定を実稼働環境に適用する前に、設定を綿密にテストして理解する必要があります。設定が間違っていると、マルチキャストが中断したり、誤ったネットワーク動作を引き起こしたりする可能性があります。
前提条件
- ML2/OVS プロバイダーネットワークのみを使用する設定にする必要があります。
物理ルーターでも IGMP スヌーピングを有効にする必要があります。
つまり、OVS (および物理ネットワーク用) でスヌーピングキャッシュを維持するために、物理ルーターはプロバイダーネットワーク上で IGMP クエリーパケットを送信して、マルチキャストグループメンバーからの通常の IGMP レポートを要求する必要があります。
仮想マシンインスタンスへの受信 IGMP を許可する (あるいは、ポートセキュリティーを無効にする) には、RHOSP Networking サービスのセキュリティーグループルールを設定する必要があります。
以下の例では、
ping_sshセキュリティーグループに対してルールが作成されます。- 例
openstack security group rule create --protocol igmp --ingress ping_ssh
$ openstack security group rule create --protocol igmp --ingress ping_ssh
手順
アンダークラウドホストに stack ユーザーとしてログインして、カスタム YAML 環境ファイルを作成します。
- 例
vi /home/stack/templates/my-ovs-environment.yaml
$ vi /home/stack/templates/my-ovs-environment.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow ヒントOrchestration サービス (heat) は、テンプレートと呼ばれるプランのセットを使用して環境をインストールおよび設定します。カスタム環境ファイルを使用して、オーバークラウドの要素をカスタマイズすることができます。このファイルは、heat テンプレートをカスタマイズするための特別な種別のテンプレートです。
YAML 環境ファイルの
parameter_defaultsセクションで、NeutronEnableIgmpSnoopingを true に設定します。parameter_defaults: NeutronEnableIgmpSnooping: true ...parameter_defaults: NeutronEnableIgmpSnooping: true ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要コロン (:) と
trueの間に空白文字を追加するようにしてください。コア heat テンプレート、環境ファイル、およびこの新しいカスタム環境ファイルを指定して、
openstack overcloud deployコマンドを実行します。重要後で実行される環境ファイルで定義されているパラメーターとリソースが優先されることになるため、環境ファイルの順序は重要となります。
- 例
openstack overcloud deploy --templates \ -e [your-environment-files] \ -e /usr/share/openstack-tripleo-heat-templates/environments/services/my-ovs-environment.yaml
$ openstack overcloud deploy --templates \ -e [your-environment-files] \ -e /usr/share/openstack-tripleo-heat-templates/environments/services/my-ovs-environment.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
マルチキャストスヌーピングが有効であることを確認します。
- 例
sudo ovs-vsctl list bridge br-int
$ sudo ovs-vsctl list bridge br-intCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
... mcast_snooping_enable: true ... other_config: {mac-table-size="50000", mcast-snooping-disable-flood-unregistered=True} ...... mcast_snooping_enable: true ... other_config: {mac-table-size="50000", mcast-snooping-disable-flood-unregistered=True} ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.10. ML2/OVN デプロイメントでのマルチキャストの有効化 リンクのコピーリンクがクリップボードにコピーされました!
マルチキャストトラフィックをサポートするには、マルチキャストトラフィックがマルチキャストグループ内の仮想マシン (VM) インスタンスに到達できるように、デプロイメントのセキュリティー設定を変更します。マルチキャストトラフィックのフラッディングを防ぐには、IGMP スヌーピングを有効にします。
マルチキャストスヌーピングの設定をテストして十分に理解してから、設定を実稼働環境に適用してください。設定が間違っていると、マルチキャストが中断したり、誤ったネットワーク動作を引き起こしたりする可能性があります。
前提条件
- ML2/OVN メカニズムドライバーを使用する OpenStack デプロイメント
手順
セキュリティーを設定し、適切な仮想マシンインスタンスへのマルチキャストトラフィックを許可します。たとえば、セキュリティーグループルールのペアを作成し、IGMP クエリーアーからの IGMP トラフィックが仮想マシンインスタンスに到達/発進するのを許可し、3 番目のルールでマルチキャストトラフィックを許可します。
- 例
セキュリティーグループ mySG により、IGMP トラフィックが仮想マシンインスタンスに到達/発進するのを許可します。
openstack security group rule create --protocol igmp --ingress mySG openstack security group rule create --protocol igmp --egress mySG
openstack security group rule create --protocol igmp --ingress mySG openstack security group rule create --protocol igmp --egress mySGCopy to Clipboard Copied! Toggle word wrap Toggle overflow 別のルールにより、マルチキャストトラフィックが仮想マシンインスタンスに到達するのを許可します。
openstack security group rule create --protocol udp mySG
openstack security group rule create --protocol udp mySGCopy to Clipboard Copied! Toggle word wrap Toggle overflow セキュリティーグループルールを設定する代わりに、オペレーターはネットワーク上のポートセキュリティーを選択的に無効にすることもできます。ポートセキュリティーを無効にする場合は、関連するセキュリティーリスクについて検討し、対応を計画してください。
アンダークラウドノードの環境ファイルで heat パラメーター
NeutronEnableIgmpSnooping: Trueを設定します。たとえば、以下の行を ovn-extras.yaml に追加します。- 例
parameter_defaults: NeutronEnableIgmpSnooping: Trueparameter_defaults: NeutronEnableIgmpSnooping: TrueCopy to Clipboard Copied! Toggle word wrap Toggle overflow
この環境ファイルをご自分の環境に該当するその他の環境ファイルと共に
openstack overcloud deployコマンドに追加して、オーバークラウドをデプロイします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow <other_overcloud_environment_files>を既存のデプロイメントに含まれる環境ファイルのリストに置き換えます。
検証
マルチキャストスヌーピングが有効であることを確認します。ノースバウンドデータベースの Logical_Switch テーブルをリスト表示します。
ovn-nbctl list Logical_Switch
$ ovn-nbctl list Logical_SwitchCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
_uuid : d6a2fbcd-aaa4-4b9e-8274-184238d66a15
other_config : {mcast_flood_unregistered="false", mcast_snoop="true"}
...
_uuid : d6a2fbcd-aaa4-4b9e-8274-184238d66a15
other_config : {mcast_flood_unregistered="false", mcast_snoop="true"}
...
+ Networking サービス(neutron)の igmp_snooping_enable 設定は、OVN ノースバウンドデータベースの Logical_Switch テーブルの other_config 列で設定される mcast_snoop オプションに変換されます。mcast_flood_unregistered は常に false である点に注意してください。IGMP グループを表示します。
+
ovn-sbctl list IGMP_group
$ ovn-sbctl list IGMP_group
+ 出力例:
4.11. コンピュートのメタデータアクセスの有効化(ML2/OVS) リンクのコピーリンクがクリップボードにコピーされました!
本章で説明する仮想マシンインスタンスの接続は、プロバイダー外部ネットワークに直接アタッチされ、外部ルーターがデフォルトゲートウェイとして設定されます。OpenStack Networking (neutron) ルーターは使用されません。
OVS メカニズムドライバーを使用する環境では、neutron ルーターを使用してインスタンスから nova-metadata サーバーにメタデータ要求をプロキシー化できないため、cloud-init の実行中にエラーが発生する可能性があります。ただし、この問題は、DHCP エージェントをメタデータ要求をプロキシー化するように設定することで解決できます。この機能は、/etc/neutron/dhcp_agent.ini で有効にすることができます。以下に例を示します。
enable_isolated_metadata = True
enable_isolated_metadata = True
OVN メカニズムドライブを使用する環境には、neutron ルーターに対するこの制限がありません。OVS とは異なり、OVN には分散 DHCP サービスが含まれており、neutron ルーターを使用してインスタンスから nova-metadata サーバーにメタデータ要求をプロキシー化することができます。
4.12. Floating IP アドレス リンクのコピーリンクがクリップボードにコピーされました!
Floating IP がすでにプライベートネットワークに割り当てられている場合でも、同じネットワークを使用して Floating IP アドレスをインスタンスに確保することができます。このネットワークから Floating IP として確保するアドレスは、ネットワークノードの qrouter-xxx の名前空間にバインドされ、割り当てられたプライベート IP アドレスに DNAT-SNAT を実行します。反対に、直接外部ネットワークにアクセスできるように確保する IP アドレスはインスタンス内に直接バインドされ、インスタンスが外部ネットワークと直接通信できるようになります。
第5章 Floating IP アドレスの管理 リンクのコピーリンクがクリップボードにコピーされました!
プライベートの Fixed IP アドレスを持つことに加え、仮想マシンインスタンスには、他のネットワークと通信するためのパブリックまたは Floating IP アドレスを持たせることができます。このセクションでは、Red Hat OpenStack Platform (RHOSP) Networking サービス (neutron) で Floating IP を作成し、管理する方法を説明します。
5.1. Floating IP アドレスプールの作成 リンクのコピーリンクがクリップボードにコピーされました!
Floating IP アドレスを使用して、ネットワークの受信ネットワークトラフィックを OpenStack インスタンスに転送することができます。まず適切にルーティング可能な外部 IP アドレスのプールを定義する必要があります。その後、それらの IP アドレスをインスタンスに動的に割り当てることができます。OpenStack Networking は、特定の Floating IP アドレス宛の受信トラフィックを、すべてその Floating IP アドレスを割り当てたインスタンスにルーティングします。
OpenStack Networking は、同じ IP 範囲 (CIDR 形式) から全プロジェクト (テナント) に Floating IP アドレスを確保します。これにより、すべてのプロジェクトが全 Floating IP サブネットからの Floating IP を使用できることができます。この動作は、個別のプロジェクトごとのクォータを使用することで管理できます。たとえば、ProjectA と ProjectB のクォータのデフォルトを 10 に設定する一方、ProjectC のクォータを 0 に設定することができます。
手順
外部サブネットを作成する際に、Floating IP 確保用プールを定義することもできます。
openstack subnet create --no-dhcp --allocation-pool start=IP_ADDRESS,end=IP_ADDRESS --gateway IP_ADDRESS --network SUBNET_RANGE NETWORK_NAME
$ openstack subnet create --no-dhcp --allocation-pool start=IP_ADDRESS,end=IP_ADDRESS --gateway IP_ADDRESS --network SUBNET_RANGE NETWORK_NAMECopy to Clipboard Copied! Toggle word wrap Toggle overflow サブネットが Floating IP アドレスのみをホストする場合には、
openstack subnet createコマンドで--no-dhcpオプションを指定して、DHCP による割り当てを無効にすることを検討してください。例
openstack subnet create --no-dhcp --allocation_pool start=192.168.100.20,end=192.168.100.100 --gateway 192.168.100.1 --network 192.168.100.0/24 public
$ openstack subnet create --no-dhcp --allocation_pool start=192.168.100.20,end=192.168.100.100 --gateway 192.168.100.1 --network 192.168.100.0/24 publicCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
- インスタンスにランダムな Floating IP を割り当てることで、プールが適切に設定されていることを確認できます。(下記のリンクを参照してください。)
5.2. 特定の Floating IP アドレスの割り当て リンクのコピーリンクがクリップボードにコピーされました!
特定の Floating IP アドレスを仮想マシンインスタンスに割り当てることが可能です。
手順
openstack server add floating ipコマンドを使用して、Floating IP アドレスをインスタンスに確保します。- 例
openstack server add floating ip prod-serv1 192.0.2.200
$ openstack server add floating ip prod-serv1 192.0.2.200Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
openstack server showコマンドを使用して、Floating IP がインスタンスに割り当てられていることを確認します。- 例
openstack server show prod-serv1
$ openstack server show prod-serv1Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.3. 高度なネットワークの作成 リンクのコピーリンクがクリップボードにコピーされました!
管理者は、管理 の画面から Dashboard でネットワークを作成する際に高度なネットワークオプションを使用することができます。プロジェクトを指定し使用するネットワーク種別を定義するには、これらのオプションを使用します。
手順
- Dashboard で、管理 > ネットワーク > ネットワーク > ネットワークの作成 > プロジェクト を選択します。
- プロジェクト ドロップダウンリストを使用して、新規ネットワークをホストするプロジェクトを選択します。
プロバイダーネットワーク種別 でオプションを確認します。
- ローカル: トラフィックはローカルの Compute ホストに残り、実質的には外部のネットワークから分離されます。
- フラット: トラフィックは単一のネットワーク上に残り、ホストと共有することも可能となります。VLAN タグ付けやその他のネットワーク分離は行われません。
- VLAN: 物理ネットワークに存在する VLAN に対応した VLAN ID を使用してネットワークを作成します。このオプションを選択すると、インスタンスは同じレイヤー 2 VLAN 上のシステムと通信することができます。
- GRE: 複数のノードにまたがるネットワークオーバーレイを使用して、インスタンス間のプライベート通信を行います。オーバーレイの外部に送信されるトラフィックは、ルーティングする必要があります。
- VXLAN: GRE と同様に、複数のノードにまたがるネットワークオーバーレイを使用して、インスタンス間のプライベート通信を行います。オーバーレイの外部に送信されるトラフィックは、ルーティングする必要があります。
Create Network をクリックします。
プロジェクトのネットワークトポロジーをチェックして、ネットワークが適切に作成されたことを確認します。
5.4. Floating IP アドレスの無作為な割り当て リンクのコピーリンクがクリップボードにコピーされました!
外部 IP アドレスのプールから、仮想マシンインスタンスに Floating IP アドレスを動的に確保することができます。
前提条件
ルーティング可能な外部 IP アドレスのプール
詳細は、「Floating IP アドレスプールの作成」 を参照してください。
手順
以下のコマンドを入力して、プールから Floating IP アドレスを確保します。以下の例では、ネットワークは
publicという名前です。- 例
openstack floating ip create public
$ openstack floating ip create publicCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
以下の例では、新たに確保された Floating IP は
192.0.2.200です。これをインスタンスに割り当てることができます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
以下のコマンドを入力して、インスタンスを探します。
openstack server list
$ openstack server listCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
インスタンス名または ID を Floating IP に関連付けます。
- 例
openstack server add floating ip prod-serv1 192.0.2.200
$ openstack server add floating ip prod-serv1 192.0.2.200Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
以下のコマンドを入力して、Floating IP がインスタンスに割り当てられていることを確認します。
- 例
openstack server show prod-serv1
$ openstack server show prod-serv1Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.5. 複数の Floating IP アドレスプールの作成 リンクのコピーリンクがクリップボードにコピーされました!
OpenStack Networking は、それぞれの L3 エージェントごとに 1 つの Floating IP プールをサポートします。したがって、追加の Floating IP プールを作成するには、L3 エージェントをスケールアウトする必要があります。
手順
-
/var/lib/config-data/puppet-generated/neutron/etc/neutron/neutron.confで、属性handle_internal_only_routersの値が環境内の 1 つの L3 エージェントに対してのみTrueに設定されていることを確認します。このオプションにより、L3 エージェントは外部ルーター以外だけを管理するようになります。
5.6. Floating IP ポート転送の設定 リンクのコピーリンクがクリップボードにコピーされました!
ユーザーが Floating IP のポート転送をセットアップできるようにするには、Red Hat OpenStack Platform (RHOSP) Networking service (neutron) port_forwarding` サービスプラグインを有効にする必要があります。
前提条件
- RHOSP 管理者権限が必要です。
-
port_forwardingサービスプラグインを使用するには、routerサービスプラグインも設定する必要があります。
手順
- アンダークラウドホストに stack ユーザーとしてログインします。
stackrc アンダークラウド認証情報ファイルを入手します。
source ~/stackrc
$ source ~/stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow カスタム環境の YAML ファイルで、
port_forwardingサービスプラグインを設定します。parameter_defaults: NeutronPluginExtensions: "router,port_forwarding"
parameter_defaults: NeutronPluginExtensions: "router,port_forwarding"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記port_forwardingサービスプラグインを使用するには、routerサービスプラグインも設定する必要があります。Networking サービスで ML2/OVS メカニズムドライバーを使用する場合は、OVS L3 エージェントの
port_forwardingエクステンションも設定する必要があります。parameter_defaults: NeutronPluginExtensions: "router,port_forwarding" NeutronL3AgentExtensions: "port_forwarding"
parameter_defaults: NeutronPluginExtensions: "router,port_forwarding" NeutronL3AgentExtensions: "port_forwarding"Copy to Clipboard Copied! Toggle word wrap Toggle overflow オーバークラウドをデプロイし、コア Heat テンプレート、環境ファイル、およびこの新しいカスタム環境ファイルを含めます。
重要後で実行される環境ファイルで定義されているパラメーターとリソースが優先されることになるため、環境ファイルの順序は重要となります。
openstack overcloud deploy --templates \ -e <your_environment_files> \ -e /home/stack/templates/my-environment.yaml
$ openstack overcloud deploy --templates \ -e <your_environment_files> \ -e /home/stack/templates/my-environment.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow RHOSP ユーザーは、Floating IP のポート転送をセットアップできるようになりました。詳細は、「Floating IP のポート転送の作成」 を参照してください。
検証
オーバークラウド認証情報ファイルを取得します。
例
source ~/overcloudrc
$ source ~/overcloudrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow Networking サービスが
port_forwardingおよびrouterサービスプラグインを正常にロードしたことを確認します。openstack extension list --network -c Name -c Alias --max-width 74 | \ grep -i -e 'Neutron L3 Router' -i -e floating-ip-port-forwarding
$ openstack extension list --network -c Name -c Alias --max-width 74 | \ grep -i -e 'Neutron L3 Router' -i -e floating-ip-port-forwardingCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
検証が成功すると、次のような出力が生成されます。
| Floating IP Port Forwarding | floating-ip-port-forwarding | | Neutron L3 Router | router |
| Floating IP Port Forwarding | floating-ip-port-forwarding | | Neutron L3 Router | router |Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.7. Floating IP のポート転送の作成 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenStack Platform Networking サービス (neutron) を使用して、Floating IP のポート転送をセットアップできます。
前提条件
Networking サービスは、
port_forwardingサービスプラグインがロードされた状態で実行される必要があります。詳細は、「Floating IP ポート転送の設定」 を参照してください。
手順
Source コマンドで認証情報ファイルを読み込みます。
例
source ~/overcloudrc
$ source ~/overcloudrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを使用して、Floating IP のポート転送を作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <internal-ip-address>を、内部の宛先 IP アドレスに置き換えます。これは、アプリケーションが実行されているインスタンスに関連付けられた IP アドレスです。
-
<port>を、インスタンスがアタッチされている Networking サービスポートの名前または ID に置き換えます。 --internal-protocol-portの<port-number>を、内部の宛先ポート番号に置き換えます。これは、インスタンス内で実行されているアプリケーションが使用するポート番号です。
--external-protocol-portの<port-number>を、外部の送信元ポート番号に置き換えます。これは、RHOSP クラウドの外部で実行されているアプリケーションが使用するポート番号です。
-
<protocol>を、ポート転送トラフィックを受信するアプリケーションによって使用される TCP や UDP などのプロトコルに置き換えます。 <floating-ip>を、指定したポートトラフィックを転送する Floating IP に置き換えます。- 例
この例では、Floating IP
198.51.100.47にアタッチされたインスタンスのポート転送を作成します。Floating IP は、Networking サービスポート1adfdb09-e8c6-4708-b5aa-11f50fc22d62を使用します。Networking サービスは、198.51.100.47:80宛ての受信外部トラフィックを検出すると、そのトラフィックを TCP ポート8080上の内部 IP アドレス203.0.113.107に転送します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
Networking サービスが Floating IP ポートの転送を確立していることを確認します。
- 例
次の例では、Floating IP
198.51.100.47のポート転送が成功したことを確認します。openstack floating ip port forwarding list 198.51.100.47 --max-width 74
$ openstack floating ip port forwarding list 198.51.100.47 --max-width 74Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
この出力は、TCP ポート 80 の Floating IP
198.51.100.47に送信されたトラフィックが、内部アドレス203.0.113.107を持つインスタンスのポート8080に転送されることを示しています。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.8. 物理ネットワークのブリッジ リンクのコピーリンクがクリップボードにコピーされました!
仮想インスタンスの送受信接続を可能にするには、仮想ネットワークと物理ネットワーク間をブリッジングします。
以下の手順では、例として示した物理インターフェイス eth0 はブリッジ br-ex にマッピングされます。この仮想ブリッジは、物理ネットワークと仮想ネットワーク間を中継する機能を果たします。
これにより、eth0 を通過するすべてのトラフィックは、設定した Open vSwitch を使用してインスタンスに到達します。
物理 NIC を仮想 Open vSwitch ブリッジにマッピングするには、以下の手順を実施します。
手順
テキストエディターで
/etc/sysconfig/network-scripts/ifcfg-eth0を開き、以下のパラメーターをご自分のサイトのネットワークに適した値で更新します。- IPADDR
- NETMASK GATEWAY
DNS1 (ネームサーバー)
以下に例を示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
テキストエディターで
/etc/sysconfig/network-scripts/ifcfg-br-exを開き、前のステップで eth0 に確保した IP アドレスの値で仮想ブリッジのパラメーターを更新します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow インスタンスに Floating IP アドレスを割り当てて、物理ネットワークが利用できるようにすることができます。
5.9. インターフェイスの追加 リンクのコピーリンクがクリップボードにコピーされました!
ルーターとサブネットを橋渡しするインターフェイスを使用することにより、ルーターはインスタンスが送信したトラフィックを中継サブネット外部の宛先に転送することができます。
ルーターのインターフェイスを追加して、新しいインターフェイスをサブネットに接続するには、以下の手順を実施します。
以下の手順では、ネットワークトポロジー機能を使用します。この機能を使用することで、ネットワーク管理タスクを実施する際に、全仮想ルーターおよびネットワークをグラフィカルに表した図を表示することができます。
- Dashboard で プロジェクト > ネットワーク > ネットワークトポロジー を選択します。
- 管理するルーターを特定してその上にカーソルを移動し、インターフェイスの追加 をクリックします。
ルーターに接続するサブネットを指定します。
IP アドレスを指定することもできます。インターフェイスに対して ping を実行して成功した場合には、トラフィックのルーティングが想定通りに機能していることが確認できるので、このアドレスを指定しておくとテストやトラブルシューティングに役立ちます。
Add interface をクリックします。
ネットワークトポロジーの図が自動的に更新され、ルーターとサブネットの間の新規インターフェイス接続が反映されます。
5.10. インターフェイスの削除 リンクのコピーリンクがクリップボードにコピーされました!
ルーターがサブネットのトラフィックを転送する必要がなくなった場合には、サブネットへのインターフェイスを削除することができます。
インターフェイスを削除するには、以下の手順を実施します。
- ダッシュボードで、Project > Network > Routers を選択します。
- 削除するインターフェイスをホストしているルーターの名前をクリックします。
- インターフェイス種別 (内部インタフェース) を選択し、インターフェイスの削除 をクリックします。
第6章 ネットワークの監視とトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenStack Platform のネットワークの接続性をトラブルシューティングする診断プロセスは、物理ネットワークのモニタリングおよび診断プロセスとよく似ています。VLAN を使用する場合は、仮想インフラストラクチャーは、全く別の環境ではなく、物理ネットワークのトランク接続による広帯域化と考えることができます。ML2/OVS ネットワークとデフォルトの ML2/OVN ネットワークのトラブルシューティングには、いくつかの違いがあります。
6.1. 基本的な ping 送信テスト リンクのコピーリンクがクリップボードにコピーされました!
ping コマンドは、ネットワーク接続の問題解析に役立つツールです。ping コマンドで返される結果は、ネットワーク接続に関する基本的な指標として機能しますが、実際のアプリケーショントラフィックをブロックするファイアウォールなど、すべての接続性の問題を完全に除外する訳ではありません。ping コマンドは、特定の宛先にトラフィックを送信し、次に ping 送信の試行に問題がなかったかどうかを報告します。
ping コマンドは ICMP プロトコルを使用した操作です。ping を使用するには、ICMP トラフィックが中間ファイアウォールを通過するのを許可する必要があります。
ping テストは、ネットワークの問題が発生しているマシンから実行すると最も有効です。そのため、マシンが完全にオフラインの場合には、VNC 管理コンソール経由でコマンドラインに接続する必要がある場合があります。
たとえば、以下に示す ping テストコマンドが成功するためには、複数のネットワークインフラストラクチャー層が検証されます。つまり、名前の解決、IP ルーティング、およびネットワークスイッチのすべてが正常に機能していなければなりません。
ping コマンドの結果のサマリーが表示されたら、Ctrl+c で ping コマンドを終了することができます。パケットロスがゼロパーセントであれば、接続が安定し、タイムアウトが発生しなかったことを示しています。
--- e1890.b.akamaiedge.net ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2003ms rtt min/avg/max/mdev = 13.461/13.498/13.541/0.100 ms
--- e1890.b.akamaiedge.net ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 13.461/13.498/13.541/0.100 ms
ping テストの送信先によっては、テストの結果は非常に明確な場合があります。たとえば、以下の図では、VM1 において何らかの接続性の問題が発生しています。ping 送信可能な宛先を青の番号で示しています。また、成功結果または失敗結果から導かれた結論を記載しています。
インターネット: 一般的な最初のステップは、www.example.com などのインターネットロケーションに ping テストを送信することです。
- 成功: このテストは、マシンとインターネットの間にあるさまざまなネットワークポイントすべてが正常に機能していることを示します。これには、仮想/物理インフラストラクチャーが含まれます。
- 失敗: 遠隔にあるインターネットロケーションへの ping テストは、さまざまな部分で失敗する可能性があります。ネットワーク上の他のマシンがインターネットに正常に ping 送信できる場合には、インターネット接続は機能していることが分かり、問題は概ねローカルマシンの設定にあると考えられます。
物理ルーター: これは、外部の送信先にトラフィックを転送するために、ネットワーク管理者が指定するルーターインターフェイスです。
- 成功: 物理ルーターに ping テストを行って、ローカルネットワークと基盤のスイッチが機能しているかどうかを検証することができます。このパケットは、ルーターを通過しないため、デフォルトのゲートウェイにルーティングの問題があるかどうかは分かりません。
- 失敗: これは、VM1 とデフォルトゲートウェイの間で問題があることを示しています。ルーター/スイッチがダウンしているか、不正なデフォルトゲートウェイを使用している可能性があります。正常に機能していることを確認済みの別のサーバーと、設定内容を比較してください。また、ローカルネットワーク上の別のサーバーに ping 送信を試行してみてください。
Neutron ルーター: これは、Red Hat OpenStack Platform が仮想マシントラフィックの転送に使用する仮想 SDN (ソフトウェア定義ネットワーク) ルーターです。
- 成功: ファイアウォールが ICMP トラフィックを許可し、ネットワークノードがオンラインの状態です。
- 失敗: インスタンスのセキュリティーグループで、ICMP トラフィックが許可されているかどうかを確認してください。また、ネットワークノードがオンラインで、必要なサービスすべてが実行中であることをチェックし、L3 エージェントのログ (/var/log/neutron/l3-agent.log) を確認してください。
物理スイッチ: 物理スイッチは、同じ物理ネットワーク上にあるノード間のトラフィックを管理します。
- 成功: 仮想マシンが物理スイッチへ送信したトラフィックは、仮想ネットワークインフラストラクチャーを通過する必要があります。つまり、このセグメントが正常に機能していることが分かります。
- 失敗: 必要な VLAN をトランク接続するように物理スイッチポートが設定されていることを確認してください。
VM2: 同じ Compute ノード上にある、同じサブネットの仮想マシンに ping 送信を試行します。
- 成功: VM1 上の NIC ドライバーと基本的な IP 設定が機能しています。
- 失敗: VM1 のネットワーク設定を検証します。問題がない場合には、VM2 のファイアウォールが単に ping トラフィックをブロックしている可能性があります。また、仮想スイッチの設定を検証し、Open vSwitch のログファイルを確認します。
6.2. ポートの現在のステータスの表示 リンクのコピーリンクがクリップボードにコピーされました!
基本的なトラブルシューティングタスクでは、ルーターに接続されたすべてのポートのインベントリーを作成し、ポートのステータス (DOWN または ACTIVE) を判断します。
手順
r1 という名前のルーターに接続されたすべてのポートを表示するには、以下のコマンドを実行します。
openstack port list --router r1
$ openstack port list --router r1Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
各ポートの詳細を表示するには、以下のコマンドを実行します。表示するポートのポート ID を指定します。コマンドの出力にはポートのステータスが含まれており、以下の例では状態が
ACTIVEであることが分かります。openstack port show b58d26f0-cc03-43c1-ab23-ccdb1018252a
$ openstack port show b58d26f0-cc03-43c1-ab23-ccdb1018252aCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- ポートごとにステップ 2 を実施して、ステータスを判断します。
6.3. VLAN プロバイダーネットワークへの接続に関するトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
OpenStack Networking は、VLAN ネットワークをトランク接続して SDN スイッチに到達することができます。VLAN タグ付けされたプロバイダーネットワークに対するサポートがあると、仮想インスタンスを物理ネットワークにあるサーバーのサブネットと統合することができます。
手順
ping <gateway-IP-address>コマンドを使用して、ゲートウェイに ping 送信を行います。以下のコマンドで作成されたネットワークを例にして説明します。
openstack network create --provider-network-type vlan --provider-physical-network phy-eno1 --provider-segment 120 provider
$ openstack network create --provider-network-type vlan --provider-physical-network phy-eno1 --provider-segment 120 providerCopy to Clipboard Copied! Toggle word wrap Toggle overflow
openstack subnet create --no-dhcp --allocation-pool start=192.168.120.1,end=192.168.120.153 --gateway 192.168.120.254 --network provider public_subnet
$ openstack subnet create --no-dhcp --allocation-pool start=192.168.120.1,end=192.168.120.153 --gateway 192.168.120.254 --network provider public_subnet
+ この例では、ゲートウェイの IP アドレスは 192.168.120.254 です。
+
ping 192.168.120.254
$ ping 192.168.120.254
+ .ping 送信に失敗する場合は、以下の項目を確認します。
関連付けられた VLAN へのネットワークフローがあることを確認する。
VLAN ID が設定されていない可能性があります。上記の例では、OpenStack Networking は VLAN 120 をプロバイダーネットワークにトランク接続するように設定されています。(例のステップ 1 の view
--provider:segmentation_id=120)。コマンド
ovs-ofctl dump-flows <bridge-name>を使用して、ブリッジインターフェイスの VLAN フローを確認する。以下の例では、ブリッジは
br-exという名前です。- 例
ovs-ofctl dump-flows br-ex
$ ovs-ofctl dump-flows br-exCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
NXST_FLOW reply (xid=0x4): cookie=0x0, duration=987.521s, table=0, n_packets=67897, n_bytes=14065247, idle_age=0, priority=1 actions=NORMAL cookie=0x0, duration=986.979s, table=0, n_packets=8, n_bytes=648, idle_age=977, priority=2,in_port=12 actions=drop
NXST_FLOW reply (xid=0x4): cookie=0x0, duration=987.521s, table=0, n_packets=67897, n_bytes=14065247, idle_age=0, priority=1 actions=NORMAL cookie=0x0, duration=986.979s, table=0, n_packets=8, n_bytes=648, idle_age=977, priority=2,in_port=12 actions=dropCopy to Clipboard Copied! Toggle word wrap Toggle overflow
6.4. VLAN 設定とログファイルの確認 リンクのコピーリンクがクリップボードにコピーされました!
デプロイメントの検証またはトラブルシューティングに役立つように、以下を実行できます。
- Red Hat Openstack Platform (RHOSP) Networking サービス (neutron) エージェントの登録およびステータスを確認する。
- VLAN 範囲などのネットワーク設定値を検証する。
手順
openstack network agent listコマンドを使用して、RHOSP Networking サービスのエージェントが稼働し、正しいホスト名前で登録されていることを確認します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
/var/log/containers/neutron/openvswitch-agent.logを確認します。作成プロセスでovs-ofctlコマンドを使用して VLAN のトランク接続が設定されたことを確認します。 -
/etc/neutron/l3_agent.iniファイルでexternal_network_bridgeを確認します。external_network_bridgeパラメーターにハードコードされた値がある場合、L3 エージェントと共にプロバイダーネットワークを使用することができず、必要なフローを作成することはできません。external_network_bridgeの値は、external_network_bridge = "" の形式でなければなりません。 -
/etc/neutron/plugin.iniファイルでnetwork_vlan_rangesの値を確認します。プロバイダーネットワークの場合には、数字の VLAN ID を指定しないでください。VLAN を分離したプロジェクトネットワークを使用している場合に限り、ID を指定します。 -
OVS エージェントの設定ファイルのブリッジマッピングを検証し、phy-eno1にマッピングされているブリッジが存在することと、eno1に適切に接続されていることを確認します。
6.5. ML2/OVN 名前空間内での基本的な ICMP テストの実行 リンクのコピーリンクがクリップボードにコピーされました!
基本的なトラブルシューティングステップとして、同じレイヤー 2 ネットワーク上にある OVN メタデータインターフェイスからインスタンスに ping 送信を試みることができます。
前提条件
- Networking サービス (neutron) のデフォルトメカニズムドライバーとして ML2/OVN を使用する RHOSP デプロイメント。
手順
- Red Hat OpenStack Platform の認証情報を使用してオーバークラウドにログインします。
-
openstack server listコマンドを実行して、仮想マシンインスタンスの名前を取得します。 openstack server showコマンドを実行して、インスタンスを実行している Compute ノードを確認します。- 例
openstack server show my_instance -c OS-EXT-SRV-ATTR:host \ -c addresses
$ openstack server show my_instance -c OS-EXT-SRV-ATTR:host \ -c addressesCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Compute ノードホストにログインします。
- 例
ssh tripleo-admin@compute0.ctlplane
$ ssh tripleo-admin@compute0.ctlplaneCopy to Clipboard Copied! Toggle word wrap Toggle overflow
ip netns listコマンドを実行して、OVN メタデータ名前空間を表示します。- 出力例
ovnmeta-07384836-6ab1-4539-b23a-c581cf072011 (id: 1) ovnmeta-df9c28ea-c93a-4a60-b913-1e611d6f15aa (id: 0)
ovnmeta-07384836-6ab1-4539-b23a-c581cf072011 (id: 1) ovnmeta-df9c28ea-c93a-4a60-b913-1e611d6f15aa (id: 0)Copy to Clipboard Copied! Toggle word wrap Toggle overflow
メタデータ名前空間を使用して、
ip netns execコマンドを実行して、関連付けられたネットワークに ping を実行します。- 例
sudo ip netns exec ovnmeta-df9c28ea-c93a-4a60-b913-1e611d6f15aa \ ping 192.0.2.2
$ sudo ip netns exec ovnmeta-df9c28ea-c93a-4a60-b913-1e611d6f15aa \ ping 192.0.2.2Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.6. プロジェクトネットワーク (ML2/OVS) 内からのトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Openstack Platform (RHOSP) ML2/OVS ネットワークでは、プロジェクトが互いに干渉を生じさせることなくネットワークを設定できるように、すべてのプロジェクトトラフィックはネットワークの名前空間に含まれます。たとえば、ネットワークの名前空間を使用することで、異なるプロジェクトが 192.168.1.1/24 の同じサブネット範囲を指定しても、テナント間で干渉は生じません。
前提条件
- Networking サービス (neutron) のデフォルトメカニズムドライバーとして ML2/OVS を使用する RHOSP デプロイメント。
手順
openstack network listコマンドを使用して、すべてのプロジェクトネットワークをリスト表示して、ネットワークがどのネットワーク名前空間に含まれているかを確認します。openstack network list
$ openstack network listCopy to Clipboard Copied! Toggle word wrap Toggle overflow この出力では、
web-serversネットワークの ID (9cb32fe0-d7fb-432c-b116-f483c6497b08) に注意してください。このコマンドは、ネットワーク ID をネットワーク名前空間に追加します。これにより、次のステップで名前空間を特定できます。- 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
ip netns listコマンドを使用して、ネットワークの名前空間をすべてリスト表示します。ip netns list
$ ip netns listCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力に、
web-serversのネットワーク ID と一致する名前空間が表示されます。以下の例では、名前空間は
qdhcp-9cb32fe0-d7fb-432c-b116-f483c6497b08です。- 出力例
qdhcp-9cb32fe0-d7fb-432c-b116-f483c6497b08 qrouter-31680a1c-9b3e-4906-bd69-cb39ed5faa01 qrouter-62ed467e-abae-4ab4-87f4-13a9937fbd6b qdhcp-a0cc8cdd-575f-4788-a3e3-5df8c6d0dd81 qrouter-e9281608-52a6-4576-86a6-92955df46f56
qdhcp-9cb32fe0-d7fb-432c-b116-f483c6497b08 qrouter-31680a1c-9b3e-4906-bd69-cb39ed5faa01 qrouter-62ed467e-abae-4ab4-87f4-13a9937fbd6b qdhcp-a0cc8cdd-575f-4788-a3e3-5df8c6d0dd81 qrouter-e9281608-52a6-4576-86a6-92955df46f56Copy to Clipboard Copied! Toggle word wrap Toggle overflow
名前空間内でトラブルシューティングのコマンド
ip netns exec <namespace>を実行し、web-serversネットワークの設定を検証します。以下の例では、
route -nコマンドを使用しています。- 例
ip netns exec qrouter-62ed467e-abae-4ab4-87f4-13a9937fbd6b route -n
$ ip netns exec qrouter-62ed467e-abae-4ab4-87f4-13a9937fbd6b route -nCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 172.24.4.225 0.0.0.0 UG 0 0 0 qg-8d128f89-87 172.24.4.224 0.0.0.0 255.255.255.240 U 0 0 0 qg-8d128f89-87 192.168.200.0 0.0.0.0 255.255.255.0 U 0 0 0 qr-8efd6357-96
Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 172.24.4.225 0.0.0.0 UG 0 0 0 qg-8d128f89-87 172.24.4.224 0.0.0.0 255.255.255.240 U 0 0 0 qg-8d128f89-87 192.168.200.0 0.0.0.0 255.255.255.0 U 0 0 0 qr-8efd6357-96Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.7. 名前空間内での高度な ICMP テストの実行 (ML2/OVS) リンクのコピーリンクがクリップボードにコピーされました!
tcpdump と ping コマンドの組み合わせを使用して、Red Hat Openstack Platform (RHOSP) ML2/OVS ネットワークのトラブルシューティングを行うことができます。
前提条件
- Networking サービス (neutron) のデフォルトメカニズムドライバーとして ML2/OVS を使用する RHOSP デプロイメント。
手順
tcpdumpコマンドを使用して、ICMP トラフィックを取得します。- 例
ip netns exec qrouter-62ed467e-abae-4ab4-87f4-13a9937fbd6b tcpdump -qnntpi any icmp
$ ip netns exec qrouter-62ed467e-abae-4ab4-87f4-13a9937fbd6b tcpdump -qnntpi any icmpCopy to Clipboard Copied! Toggle word wrap Toggle overflow
別のコマンドラインウィンドウで、外部ネットワークへの ping テストを実行します。
- 例
ip netns exec qrouter-62ed467e-abae-4ab4-87f4-13a9937fbd6b ping www.example.com
$ ip netns exec qrouter-62ed467e-abae-4ab4-87f4-13a9937fbd6b ping www.example.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow
tcpdump セッションを実行中のターミナルで、ping テストの結果の詳細を確認します。
- 出力例
tcpdump: listening on any, link-type LINUX_SLL (Linux cooked), capture size 65535 bytes IP (tos 0xc0, ttl 64, id 55447, offset 0, flags [none], proto ICMP (1), length 88) 172.24.4.228 > 172.24.4.228: ICMP host 192.168.200.20 unreachable, length 68 IP (tos 0x0, ttl 64, id 22976, offset 0, flags [DF], proto UDP (17), length 60) 172.24.4.228.40278 > 192.168.200.21: [bad udp cksum 0xfa7b -> 0xe235!] UDP, length 32tcpdump: listening on any, link-type LINUX_SLL (Linux cooked), capture size 65535 bytes IP (tos 0xc0, ttl 64, id 55447, offset 0, flags [none], proto ICMP (1), length 88) 172.24.4.228 > 172.24.4.228: ICMP host 192.168.200.20 unreachable, length 68 IP (tos 0x0, ttl 64, id 22976, offset 0, flags [DF], proto UDP (17), length 60) 172.24.4.228.40278 > 192.168.200.21: [bad udp cksum 0xfa7b -> 0xe235!] UDP, length 32Copy to Clipboard Copied! Toggle word wrap Toggle overflow
トラフィックの tcpdump 分析を実行すると、仮想マシンインスタンスではなくルーターインターフェイス方向の応答パケットが表示されます。qrouter によりリターンパケットで Destination Network Address Translation (DNAT) が実行されるので、これは想定どおりの動作です。
6.8. OVN トラブルシューティングコマンドのエイリアスの作成 リンクのコピーリンクがクリップボードにコピーされました!
ovn_controller コンテナーで ovn-nbctl show などの OVN コマンドを実行します。コンテナーはコントローラーノードおよび Compute ノードで実行します。コマンドへのアクセスを簡素化するには、エイリアスを定義するスクリプトを作成し source コマンドでスクリプトファイルを読み込みます。
前提条件
- デフォルトのメカニズムドライバーとして ML2/OVN を使用する Red Hat OpenStack Platform のデプロイメント
手順
OVN コンテナーにアクセスするために必要な権限を持つユーザーとしてコントローラーホストにログインします。以下に例を示します。
ssh tripleo-admin@controller-0.ctlplane
$ ssh tripleo-admin@controller-0.ctlplaneCopy to Clipboard Copied! Toggle word wrap Toggle overflow 実行する
ovnコマンドが含まれるシェルスクリプトファイルを作成します。以下に例を示します。vi ~/bin/ovn-alias.sh
vi ~/bin/ovn-alias.shCopy to Clipboard Copied! Toggle word wrap Toggle overflow ovnコマンドを追加して、スクリプトファイルを保存します。以下に例を示します。この例では、
ovn-sbctlコマンド、ovn-nbctlコマンド、およびovn-traceコマンドが、TLS-e が有効になっていない環境のエイリアスファイルに追加されています。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の例を、TLS-e が有効になっている環境のモデルとして使用します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Compute ホストで、この手順のステップを繰り返します。
検証
source コマンドでスクリプトファイルを読み込みます。以下に例を示します。
source ovn-alias.sh
$ source ovn-alias.shCopy to Clipboard Copied! Toggle word wrap Toggle overflow コマンドを実行して、スクリプトファイルが正しく動作することを確認します。以下に例を示します。
ovn-nbctl show
$ ovn-nbctl showCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の出力例のような出力が表示されるはずです。
6.9. OVN の論理フローのモニタリング リンクのコピーリンクがクリップボードにコピーされました!
OVN は論理フローを使用します。これは、優先度、マッチング、アクションで設定されるフローのテーブルです。これらの論理フローは、各 Red Hat Openstack Platform (RHOSP) Compute ノード上で実行される ovn-controller に分散されます。コントローラーノード上で ovn-sbctl lflow-list コマンドを使用して、論理フローの完全なセットを表示します。
前提条件
- Networking サービス (neutron) のデフォルトメカニズムドライバーとして ML2/OVN を使用する RHOSP デプロイメント。
OVN データベースコマンドのエイリアスファイルを作成します。
「OVN トラブルシューティングコマンドのエイリアスの作成」 を参照してください。
手順
OVN コンテナーにアクセスするために必要な権限を持つユーザーとしてコントローラーホストにログインします。
- 例
ssh tripleo-admin@controller-0.ctlplane
$ ssh tripleo-admin@controller-0.ctlplaneCopy to Clipboard Copied! Toggle word wrap Toggle overflow
OVN データベースコマンドのエイリアスファイルを入手します。
詳細は、「OVN トラブルシューティングコマンドのエイリアスの作成」 を参照してください。
- 例
source ~/ovn-alias.sh
source ~/ovn-alias.shCopy to Clipboard Copied! Toggle word wrap Toggle overflow
論理フローを表示します。
ovn-sbctl lflow-list
$ ovn-sbctl lflow-listCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力を確認します。
- 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow OVN と OpenFlow には、主に以下のような相違点があります。
- OVN ポートは、ネットワーク内にある論理エンティティーで、単一のスイッチ上にある物理ポートではありません。
- OVN により、パイプライン内の各テーブルには番号に加えて名前が付けられます。名前は、パイプライン内のそのステージの目的を示します。
- OVN の match 構文は、複雑なブール表現をサポートしています。
- OVN の論理フローでは、OpenFlow よりも幅広いアクションをサポートしています。OVN の論理フローの構文で DHCP などの高度な機能を実装することができます。
OVN トレースを実行します。
ovn-traceコマンドを使用して、パケットが OVN の論理フローをどのように通過するかシミュレーションしたり、パケットがドロップする原因を特定するのに役立てたりすることができます。ovn-traceコマンドには、以下のパラメーターを指定して実行してください。- DATAPATH
- シミュレーションされるパケットの送信が開始される場所の論理スイッチまたは論理ルーター。
- MICROFLOW
-
シミュレーションされるパケット。
ovn-sbデータベースで使用される構文で指定します。 - 例
この例では、シミュレーションされるパケットに
--minimalの出力オプションが示されており、そのパケットが宛先に到達したことを表しています。ovn-trace --minimal sw0 'inport == "sw0-port1" && eth.src == 00:00:00:00:00:01 && eth.dst == 00:00:00:00:00:02'
$ ovn-trace --minimal sw0 'inport == "sw0-port1" && eth.src == 00:00:00:00:00:01 && eth.dst == 00:00:00:00:00:02'Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
reg14=0x1,vlan_tci=0x0000,dl_src=00:00:00:00:00:01,dl_dst=00:00:00:00:00:02,dl_type=0x0000
$ reg14=0x1,vlan_tci=0x0000,dl_src=00:00:00:00:00:01,dl_dst=00:00:00:00:00:02,dl_type=0x0000 output("sw0-port2");Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 例
さらに詳しい情報を表示するには、シミュレーションされる同じパケットの
--summary出力に完全な実行パイプラインが表示されます。ovn-trace --summary sw0 'inport == "sw0-port1" && eth.src == 00:00:00:00:00:01 && eth.dst == 00:00:00:00:00:02'
$ ovn-trace --summary sw0 'inport == "sw0-port1" && eth.src == 00:00:00:00:00:01 && eth.dst == 00:00:00:00:00:02'Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
出力例は次のとおりです。
-
パケットは
sw0-port1ポートからsw0ネットワークに入り、受信のパイプラインを通過します。 -
outport変数がsw0-port2に設定されているのは、このパケットの宛先がsw0-port2に指定されていることを意味します。 -
パケットは受信のパイプラインから出力されます。このパイプラインは、
outport変数がsw0-port2に設定されたsw0の送信パイプラインにパケットを送ります。 出力のアクションは、送信のパイプラインで実行されます。このパイプラインでは、パケットが
outport変数の現在の値であるsw0-port2に出力されます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
パケットは
6.10. OpenFlows のモニタリング リンクのコピーリンクがクリップボードにコピーされました!
ovs-ofctl dump-flows コマンドを使用して、Red Hat Openstack Platform (RHOSP) ネットワーク内の論理スイッチ上の OpenFlow のフローをモニタリングすることができます。
前提条件
- Networking サービス (neutron) のデフォルトメカニズムドライバーとして ML2/OVN を使用する RHOSP デプロイメント。
手順
OVN コンテナーにアクセスするために必要な権限を持つユーザーとしてコントローラーホストにログインします。
例
ssh tripleo-admin@controller-0.ctlplane
$ ssh tripleo-admin@controller-0.ctlplaneCopy to Clipboard Copied! Toggle word wrap Toggle overflow ovs-ofctl dump-flowsコマンドを実行します。例
sudo ovs-ofctl dump-flows br-int
$ sudo ovs-ofctl dump-flows br-intCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力を確認します。出力は以下のようになります。
- 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.11. OVN データベースステータスのモニタリング リンクのコピーリンクがクリップボードにコピーされました!
ovs-appctl コマンドを使用して、OVN データベースサーバー間の接続を監視できます。
前提条件
- Networking サービス (neutron) のデフォルトメカニズムドライバーとして ML2/OVN を使用する RHOSP デプロイメント。
手順
OVN コンテナーにアクセスするために必要な権限を持つユーザーとしてコントローラーホストにログインします。
単一のコントローラーホスト上のサーバーから監視すると、クラスターの基本的な健全性を確認し、さまざまな種類の問題を診断するために必要な情報が得られます。徹底的に分析を行うには、すべてのコントローラーでこの手順を実行します。
- 例
ssh tripleo-admin@compute-0
$ ssh tripleo-admin@compute-0Copy to Clipboard Copied! Toggle word wrap Toggle overflow
ovs-appctlコマンドを実行します。- 例: ノースバウンドデータベース
ovs-appctl -t /var/lib/openvswitch/ovn/ovnnb_db.ctl cluster/status OVN_Northbound
$ ovs-appctl -t /var/lib/openvswitch/ovn/ovnnb_db.ctl cluster/status OVN_NorthboundCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 例: サウスバウンドデータベース
ovs-appctl -t /var/lib/openvswitch/ovn/ovnsb_db.ctl cluster/status OVN_Southbound
ovs-appctl -t /var/lib/openvswitch/ovn/ovnsb_db.ctl cluster/status OVN_SouthboundCopy to Clipboard Copied! Toggle word wrap Toggle overflow
出力を確認します。出力は以下のようになります。
- 出力例: サウスバウンドデータベース
このサンプル出力は、その時点でフォロワーであったサーバー 1114 で生成されました。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - サンプル出力の診断表示
- 右向きの矢印 (→) は、このサーバーから別のサーバーへの送信接続を表します。左向きの矢印 (←) は、別のサーバーからこのサーバーへの受信接続を表します。
- すべてのサーバーがアクティブで接続されています
Connections: ->ca6e ->0f90 <-ca6e <-0f90この 3 ノードのクラスターは正常に見えます。サーバー 1114 には、ca6e および 0f90 の他の 2 つのサーバーとの受信および送信接続があります。
- サーバーがクラスターから切断されました
Connections: ->ca6e (->0f90) <-ca6eサーバー 0f90 からの着信接続はリストに表示されません。発信接続を囲む括弧は、0f90 への発信メッセージが失敗したことを示します。ほとんどの場合、クラスター内の任意のサーバーに接続すると、クラスターに問題があるかどうかを判断するのに十分な情報が得られます。すべてのサーバーで診断を実行すると、より詳細な情報が提供され、単一のサーバーからは検出できない問題が検出される可能性があります。
- クラスターがクォーラムを失いました
Role: candidate ... Leader: unknown
Role: candidate ... Leader: unknownCopy to Clipboard Copied! Toggle word wrap Toggle overflow このサーバーはリーダー候補であり、リーダーは不明です。
- ovsdb-server はこのノード上でダウンしています
2024-03-27T22:10:28Z|00001|unixctl|WARN|failed to connect to /var/lib/openvswitch/ovn/ovnsb_db.ctl ovs-appctl: cannot connect to "/var/lib/openvswitch/ovn/ovnsb_db.ctl" (Connection refused) <exits with non-zero status>
2024-03-27T22:10:28Z|00001|unixctl|WARN|failed to connect to /var/lib/openvswitch/ovn/ovnsb_db.ctl ovs-appctl: cannot connect to "/var/lib/openvswitch/ovn/ovnsb_db.ctl" (Connection refused) <exits with non-zero status>Copy to Clipboard Copied! Toggle word wrap Toggle overflow この場合、必要なすべての情報を単一のサーバーから取得することはできません。たとえば、他のサーバーが実行されているかどうかを判断できません。サーバーがダウンしている場合は、別のサーバーで ovs-appctl を実行します。
- 各フォロワーからリーダーへの最後のメッセージからの経過時間 (リーダーについてのみ更新)
Servers: 1114 (1114 at tcp:[fd00:fd00:fd00:2000::4a]:6644) next_index=51737 match_index=51736 last msg 224 ms ago ca6e (ca6e at tcp:[fd00:fd00:fd00:2000::18f]:6644) (self) next_index=51470 match_index=51736 0f90 (0f90 at tcp:[fd00:fd00:fd00:2000::2e0]:6644) next_index=51737 match_index=51736 last msg 224 ms agoServers: 1114 (1114 at tcp:[fd00:fd00:fd00:2000::4a]:6644) next_index=51737 match_index=51736 last msg 224 ms ago ca6e (ca6e at tcp:[fd00:fd00:fd00:2000::18f]:6644) (self) next_index=51470 match_index=51736 0f90 (0f90 at tcp:[fd00:fd00:fd00:2000::2e0]:6644) next_index=51737 match_index=51736 last msg 224 ms agoCopy to Clipboard Copied! Toggle word wrap Toggle overflow クラスターリーダーホストにログオンし、ovs-appctl を実行します。新しいリーダーはいつでも選出できることに注意してください。
6.12. ML2/OVN デプロイメントの検証 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenStack Platform (RHOSP) デプロイメントの ML2/OVN ネットワークを検証するには、テストネットワークとサブネットを作成し、特定のコンテナーが実行中であることを検証するなどの診断タスクを実行します。
前提条件
- Networking サービス (neutron) のデフォルトメカニズムドライバーとして ML2/OVN を使用する RHOSP の新規デプロイメント
OVN データベースコマンドのエイリアスファイルを作成します。
「OVN トラブルシューティングコマンドのエイリアスの作成」 を参照してください。
手順
テストネットワークおよびサブネットを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow エラーが発生した場合は、以下の手順を実行します。
関連するコンテナーがコントローラーホストで実行していることを確認します。
OVN コンテナーにアクセスするために必要な権限を持つユーザーとしてコントローラーホストにログインします。
- 例
ssh tripleo-admin@controller-0.ctlplane
$ ssh tripleo-admin@controller-0.ctlplaneCopy to Clipboard Copied! Toggle word wrap Toggle overflow
以下のコマンドを入力します。
sudo podman ps -a --format="{{.Names}}"|grep ovn$ sudo podman ps -a --format="{{.Names}}"|grep ovnCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のサンプルに示すように、出力には OVN コンテナーが一覧表示されます。
- 出力例
container-puppet-ovn_controller ovn_cluster_north_db_server ovn_cluster_south_db_server ovn_cluster_northd ovn_controller
container-puppet-ovn_controller ovn_cluster_north_db_server ovn_cluster_south_db_server ovn_cluster_northd ovn_controllerCopy to Clipboard Copied! Toggle word wrap Toggle overflow
関連するコンテナーが Compute ホストで実行していることを確認します。
OVN コンテナーにアクセスするために必要な権限を持つユーザーとして Compute ホストにログインします。
- 例
ssh tripleo-admin@compute-0.ctlplane
$ ssh tripleo-admin@compute-0.ctlplaneCopy to Clipboard Copied! Toggle word wrap Toggle overflow
以下のコマンドを入力します。
sudo podman ps -a --format="{{.Names}}"|grep ovn$ sudo podman ps -a --format="{{.Names}}"|grep ovnCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のサンプルに示すように、出力には OVN コンテナーが一覧表示されます。
- 出力例
container-puppet-ovn_controller ovn_metadata_agent ovn_controller
container-puppet-ovn_controller ovn_metadata_agent ovn_controllerCopy to Clipboard Copied! Toggle word wrap Toggle overflow
ログファイルでエラーメッセージの有無を確認します。
grep -r ERR /var/log/containers/openvswitch/ /var/log/containers/neutron/
grep -r ERR /var/log/containers/openvswitch/ /var/log/containers/neutron/Copy to Clipboard Copied! Toggle word wrap Toggle overflow エイリアスファイルを読み込んで、OVN データベースコマンドを実行します。
詳細は、「OVN トラブルシューティングコマンドのエイリアスの作成」 を参照してください。
- 例
source ~/ovn-alias.sh
$ source ~/ovn-alias.shCopy to Clipboard Copied! Toggle word wrap Toggle overflow
ノースバウンドデータベースおよびサウスバウンドデータベースをクエリーして応答するかどうかを確認します。
ovn-nbctl show ovn-sbctl show
$ ovn-nbctl show $ ovn-sbctl showCopy to Clipboard Copied! Toggle word wrap Toggle overflow 同じレイヤー 2 ネットワーク上にある OVN メタデータインターフェイスからインスタンスに ping 送信を試みます。
詳細は、「ML2/OVN 名前空間内での基本的な ICMP テストの実行」 を参照してください。
- サポートのために Red Hat に問い合わせる必要がある場合は、Red Hat ソリューション How to collect all required logs for Red Hat Support to investigate an OpenStack issue に記載されている手順を実施します。
6.13. ML2/OVN のロギングモードの設定 リンクのコピーリンクがクリップボードにコピーされました!
追加のトラブルシューティング情報を取得するために、ML2/OVN ロギングを debug モードに設定します。追加のデバッグ情報が必要ない場合は、ロギングを info モードに戻して、ディスク領域の使用量を減らします。
前提条件
- デフォルトのメカニズムドライバーとして ML2/OVN を使用する Red Hat OpenStack Platform のデプロイメント
手順
ロギングモードを設定する Controller または Compute ノードに、OVN コンテナーにアクセスするために必要な権限を持つユーザーとしてログインします。
例
ssh tripleo-admin@controller-0.ctlplane
$ ssh tripleo-admin@controller-0.ctlplaneCopy to Clipboard Copied! Toggle word wrap Toggle overflow ML2/OVN ロギングモードを設定します。
- デバッグロギングモード
sudo podman exec -it ovn_controller ovn-appctl -t ovn-controller vlog/set dbg
$ sudo podman exec -it ovn_controller ovn-appctl -t ovn-controller vlog/set dbgCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 情報ロギングモード
sudo podman exec -it ovn_controller ovn-appctl -t ovn-controller vlog/set info
$ sudo podman exec -it ovn_controller ovn-appctl -t ovn-controller vlog/set infoCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
ovn-controllerコンテナーログにデバッグメッセージが含まれていることを確認します。sudo grep DBG /var/log/containers/openvswitch/ovn-controller.log
$ sudo grep DBG /var/log/containers/openvswitch/ovn-controller.logCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
文字列
|DBG|を含む最近のログメッセージが表示されるはずです。2022-09-29T20:52:54.638Z|00170|vconn(ovn_pinctrl0)|DBG|unix:/var/run/openvswitch/br-int.mgmt: received: OFPT_ECHO_REQUEST (OF1.5) (xid=0x0): 0 bytes of payload 2022-09-29T20:52:54.638Z|00171|vconn(ovn_pinctrl0)|DBG|unix:/var/run/openvswitch/br-int.mgmt: sent (Success): OFPT_ECHO_REPLY (OF1.5) (xid=0x0): 0 bytes of payload
2022-09-29T20:52:54.638Z|00170|vconn(ovn_pinctrl0)|DBG|unix:/var/run/openvswitch/br-int.mgmt: received: OFPT_ECHO_REQUEST (OF1.5) (xid=0x0): 0 bytes of payload 2022-09-29T20:52:54.638Z|00171|vconn(ovn_pinctrl0)|DBG|unix:/var/run/openvswitch/br-int.mgmt: sent (Success): OFPT_ECHO_REPLY (OF1.5) (xid=0x0): 0 bytes of payloadCopy to Clipboard Copied! Toggle word wrap Toggle overflow
ovn-controller コンテナーログに次のような文字列が含まれていることを確認します。
...received request vlog/set["info"], id=0
...received request vlog/set["info"], id=0Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.14. エッジサイトへの登録に失敗する OVN コントローラーの修正 リンクのコピーリンクがクリップボードにコピーされました!
- 問題
Red Hat OpenStack Platform (RHOSP) エッジサイトの OVN コントローラーが登録に失敗します。
注記このエラーは、以前 の RHOSP バージョン (RHOSP 16.1.7 以前または RHOSP 16.2.0) から更新された RHOSP 17.1 ML2/OVN デプロイメントで発生する可能性があります。
- サンプルエラー
発生したエラーは次のようなものです。
2021-04-12T09:14:48.994Z|04754|ovsdb_idl|WARN|transaction error: {"details":"Transaction causes multiple rows in \"Encap\" table to have identical values (geneve and \"10.14.2.7\") for index on columns \"type\" and \"ip\". First row, with UUID 3973cad5-eb8a-4f29-85c3-c105d861c0e0, was inserted by this transaction. Second row, with UUID f06b71a8-4162-475b-8542-d27db3a9097a, existed in the database before this transaction and was not modified by the transaction.","error":"constraint violation"}2021-04-12T09:14:48.994Z|04754|ovsdb_idl|WARN|transaction error: {"details":"Transaction causes multiple rows in \"Encap\" table to have identical values (geneve and \"10.14.2.7\") for index on columns \"type\" and \"ip\". First row, with UUID 3973cad5-eb8a-4f29-85c3-c105d861c0e0, was inserted by this transaction. Second row, with UUID f06b71a8-4162-475b-8542-d27db3a9097a, existed in the database before this transaction and was not modified by the transaction.","error":"constraint violation"}Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 原因
-
ovn-controllerプロセスがホスト名を置き換える場合は、別の encap エントリーを含む別のシャーシエントリーを登録します。詳細は、BZ#1948472 を参照してください。 - 解決方法
問題を解決するには、次の手順に従います。
まだ作成していない場合は、この手順で、後で使用する必要な OVN データベースコマンドのエイリアスを作成します。
詳細は、OVN トラブルシューティングコマンドのエイリアスの作成 を参照してください。
OVN コンテナーにアクセスするために必要な権限を持つユーザーとしてコントローラーホストにログインします。
例
ssh tripleo-admin@controller-0.ctlplane
$ ssh tripleo-admin@controller-0.ctlplaneCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
/var/log/containers/openvswitch/ovn-controller.logから IP アドレスを取得します。 IP アドレスが正しいことを確認します。
ovn-sbctl list encap |grep -a3 <IP address from ovn-controller.log>
ovn-sbctl list encap |grep -a3 <IP address from ovn-controller.log>Copy to Clipboard Copied! Toggle word wrap Toggle overflow IP アドレスを含むシャーシを削除します。
ovn-sbctl chassis-del <chassis-id>
ovn-sbctl chassis-del <chassis-id>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Chassis_Privateテーブルをチェックして、シャーシが削除されたことを確認します。ovn-sbctl find Chassis_private chassis="[]"
ovn-sbctl find Chassis_private chassis="[]"Copy to Clipboard Copied! Toggle word wrap Toggle overflow エントリーが報告された場合は、次のコマンドでそれらを削除します。
ovn-sbctl destroy Chassis_Private <listed_id>
$ ovn-sbctl destroy Chassis_Private <listed_id>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコンテナーを再起動します。
-
tripleo_ovn_controller tripleo_ovn_metadata_agentsudo systemctl restart tripleo_ovn_controller sudo systemctl restart tripleo_ovn_metadata_agent
$ sudo systemctl restart tripleo_ovn_controller $ sudo systemctl restart tripleo_ovn_metadata_agentCopy to Clipboard Copied! Toggle word wrap Toggle overflow
-
検証
OVN エージェントが実行していることを確認します。
openstack network agent list -c "Agent Type" -c State -c Binary -c Alive
$ openstack network agent list -c "Agent Type" -c State -c Binary -c AliveCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.15. ML2/OVN ログファイル リンクのコピーリンクがクリップボードにコピーされました!
ログファイルは、ML2/OVN メカニズムドライバーのデプロイメントと操作に関連するイベントを追跡します。
| ノード | Log | パス /var/log/containers/openvswitch... |
|---|---|---|
| コントローラー、コンピュート、ネットワーク | OVS ノースバウンドデータベースサーバー |
|
| Controller | OVS ノースバウンドデータベースサーバー |
|
| Controller | OVS サウスバウンドデータベースサーバー |
|
| Controller | OVN ノースバウンドデータベースサーバー |
|
第7章 OpenStack Networking での物理スイッチの設定 リンクのコピーリンクがクリップボードにコピーされました!
この章では、OpenStack Networking に必要な一般的な物理スイッチの設定手順を説明します。特定のスイッチに関するベンダー固有の設定を記載しています。
7.1. 物理ネットワーク環境のプランニング リンクのコピーリンクがクリップボードにコピーされました!
OpenStack ノード内の物理ネットワークアダプターは、異なる種別のネットワークトラフィックを伝送します。これには、インスタンストラフィック、ストレージデータ、および認証要求が含まれます。これらの NIC が伝送するトラフィックの種別によって、物理スイッチ上のポートの設定方法が異なります。
まず、Compute ノード上のどの物理 NIC でどのトラフィック種別を伝送するかを決定する必要があります。次に、NIC が物理スイッチポートに接続される際に、そのスイッチポートがトランクトラフィックまたは一般のトラフィックを許可するように設定する必要があります。
たとえば、以下の図は、eth0 と eth1 の 2 つの NIC を搭載した Compute ノードを示しています。各 NIC は、物理スイッチ上のギガビットイーサネットポートに接続され、eth0 がインスタンストラフィックを伝送し、eth1 が OpenStack サービスの接続性を提供します。
図7.1 ネットワークレイアウト例
この図には、耐障害性に必要な追加の冗長 NIC は含まれていません。
7.2. Cisco Catalyst スイッチの設定 リンクのコピーリンクがクリップボードにコピーされました!
7.2.1. トランクポートについて リンクのコピーリンクがクリップボードにコピーされました!
OpenStack Networking により、インスタンスを物理ネットワーク上にすでに存在する VLAN に接続することができます。トランク という用語は、単一のポートで複数 VLAN の通過を許可することを意味します。これらのポートを使用することで、VLAN は仮想スイッチを含む複数のスイッチ間にまたがることができます。たとえば、物理ネットワークで VLAN110 のタグが付いたトラフィックが Compute ノードに到達すると、タグの付いたトラフィックが 8021q モジュールによって vSwitch 上の適切な VLAN に転送されます。
7.2.2. Cisco Catalyst スイッチでのトランクポートの設定 リンクのコピーリンクがクリップボードにコピーされました!
Cisco Catalyst スイッチのトランクポートを設定する場合は、次の項目を考慮してください。
Cisco IOS を実行する Cisco Catalyst スイッチを使用する場合には、以下の設定構文を使用して、VLAN 110 と 111 のトラフィックがインスタンスに到達できるように設定することが可能です。
この設定では、物理ノードがイーサネットケーブルにより物理スイッチポート (インターフェイス GigabitEthernet1/0/12) に接続されていることを前提としています。
重要以下に示す値は、例として提示しています。この例で使用している値を、実際の環境に合わせて変更する必要があります。これらの値を調整せずにコピーしてご自分のスイッチ設定に貼り付けると、予期せぬ機能停止を招く可能性があります。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のリストを使用して、上記のパラメーターを説明します。
Expand フィールド 説明 interface GigabitEthernet1/0/12X ノードの NIC の接続先となるスイッチポート。
GigabitEthernet1/0/12の値を、実際の環境の正しいポートの値で置き換えるようにしてください。ポートのリストを表示するには、show interface コマンドを使用します。description Trunk to Compute Nodeこのインターフェイスを識別するのに使用する一意の説明的な値。
spanning-tree portfast trunk環境で STP が使用される場合には、この値を設定して Port Fast に対してこのポートがトランクトラフィックに使用されることを指示します。
switchport trunk encapsulation dot1q802.1q のトランク標準 (ISL ではなく) を有効にします。この値は、スイッチがサポートする設定によって異なります。
switchport mode trunkこのポートは、アクセスポートではなく、トランクポートとして設定します。これで VLAN トラフィックが仮想スイッチに到達できるようになります。
switchport trunk native vlan 2ネイティブ VLAN を設定して、タグの付いていない (VLAN 以外の) トラフィックの送信先をスイッチに指示します。
switchport trunk allowed vlan 2,110,111トランクを通過できる VLAN を定義します。
7.2.3. アクセスポートについて リンクのコピーリンクがクリップボードにコピーされました!
Compute ノード上の全 NIC がインスタンスのトラフィックを伝送する訳ではないので、すべての NIC で複数の VLAN が通過できるように設定する必要はありません。アクセスポートに必要なのは 1 つの VLAN だけで、管理トラフィックやブロックストレージデータの転送などの、他の運用上の要件を満たす可能性があります。これらのポートは一般的にアクセスポートと呼ばれ、必要な設定は通常、トランクポートよりも簡単です。
7.2.4. Cisco Catalyst スイッチでのアクセスポートの設定 リンクのコピーリンクがクリップボードにコピーされました!
Cisco Catalyst スイッチのアクセスポートを設定するには、次の手順に従います。
図7.1「ネットワークレイアウト例」の図に示した例を使用して、GigabitEthernet1/0/13 (Cisco Catalyst スイッチ上) を
eth1のアクセスポートとして設定します。この設定では、物理ノードがイーサネットケーブルにより物理スイッチポート (インターフェイス GigabitEthernet1/0/12) に接続されています。
重要以下に示す値は、例として提示しています。この例で使用している値を、実際の環境に合わせて変更する必要があります。これらの値を調整せずにコピーしてご自分のスイッチ設定に貼り付けると、予期せぬ機能停止を招く可能性があります。
interface GigabitEthernet1/0/13 description Access port for Compute Node switchport mode access switchport access vlan 200 spanning-tree portfast
interface GigabitEthernet1/0/13 description Access port for Compute Node switchport mode access switchport access vlan 200 spanning-tree portfastCopy to Clipboard Copied! Toggle word wrap Toggle overflow これらの設定の説明を以下に記載します。
Expand フィールド 説明 interface GigabitEthernet1/0/13X ノードの NIC の接続先となるスイッチポート。
GigabitEthernet1/0/12の値を、実際の環境の正しいポートの値で置き換えるようにしてください。ポートのリストを表示するには、show interface コマンドを使用します。description Access port for Compute Nodeこのインターフェイスを識別するのに使用する一意の説明的な値。
switchport mode accessこのポートは、トランクポートとしてではなく、アクセスポートとして設定します。
switchport access vlan 200VLAN 200 上でトラフィックを許可するポートを設定します。Compute ノードには、この VLAN からの IP アドレスを設定する必要があります。
spanning-tree portfastSTP を使用する場合には、この値を設定し、STP がこのポートをトランクとして初期化を試みないように指示します。これにより、初回接続時 (例: サーバーのリブート時など) のポートハンドシェイクをより迅速に行うことができます。
7.2.5. LACP ポートアグリゲーションについて リンクのコピーリンクがクリップボードにコピーされました!
リンクアグリゲーション制御プロトコル (LACP) を使用して、複数の物理 NIC をバンドルし、単一の論理チャネルを形成できます。LACP は 802.3ad (または、Linux ではボンディングモード 4) としても知られており、負荷分散と耐障害性のための動的なボンディングを作成します。LACP は、物理 NIC と物理スイッチポートの両方の物理エンドで設定する必要があります。
7.2.6. 物理 NIC 上での LACP の設定 リンクのコピーリンクがクリップボードにコピーされました!
物理 NIC でリンクアグリゲーション制御プロトコル (LACP) を設定できます。
手順
/home/stack/network-environment.yaml ファイルを編集します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Open vSwitch ブリッジが LACP を使用するように設定します。
BondInterfaceOvsOptions: "mode=802.3ad"BondInterfaceOvsOptions: "mode=802.3ad"Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.2.7. Cisco Catalyst スイッチでの LACP の設定 リンクのコピーリンクがクリップボードにコピーされました!
以下の例では、Compute ノードに VLAN 100 を使用する NIC が 2 つあります。
手順
- Compute ノードの NIC を共に物理的にスイッチ (例: ポート 12 と 13) に接続します。
LACP ポートチャネルを作成します。
interface port-channel1 switchport access vlan 100 switchport mode access spanning-tree guard root
interface port-channel1 switchport access vlan 100 switchport mode access spanning-tree guard rootCopy to Clipboard Copied! Toggle word wrap Toggle overflow スイッチポート 12 (Gi1/0/12) および 13 (Gi1/0/13) を設定します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 新しいポートチャネルを確認します。出力には、新規ポートチャネル
Po1と、メンバーポートのGi1/0/12およびGi1/0/13が表示されます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記copy running-config startup-configコマンドを実行して running-config を startup-config にコピーし、変更を適用するのを忘れないようにしてください。
7.2.8. MTU 設定について リンクのコピーリンクがクリップボードにコピーされました!
特定のネットワークトラフィック種別に対して、MTU サイズを調整する必要があります。たとえば、特定の NFS または iSCSI のトラフィックでは、ジャンボフレーム (9000 バイト) が必要になります。
MTU の設定は、エンドツーエンド (トラフィックが通過すると想定される全ホップ) で変更する必要があります。これには、仮想スイッチが含まれます。
7.2.9. Cisco Catalyst スイッチでの MTU の設定 リンクのコピーリンクがクリップボードにコピーされました!
Cisco Catalyst 3750 スイッチでジャンボフレームを有効にするには、以下の例に示す手順を実施します。
現在の MTU 設定を確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 3750 のスイッチでは、MTU 設定はインターフェイスごとではなく、スイッチ全体で変更されます。以下のコマンドを実行して、スイッチが 9000 バイトのジャンボフレームを使用するように設定します。お使いのスイッチがインターフェイスごとの MTU 設定をサポートしていれば、この機能を使用する方が望ましい場合があります。
config t
$ config t Enter configuration commands, one per line. End with CNTL/Z. (config)$ system mtu jumbo 9000 Changes to the system jumbo MTU will not take effect until the next reload is doneCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記copy running-config startup-configコマンドを実行して running-config を startup-config にコピーし、変更を保存するのを忘れないようにしてください。スイッチを再読み込みして変更を適用します。
重要スイッチを再読み込みすると、そのスイッチに依存しているデバイスでネットワークが停止することになります。したがって、計画的なメンテナンス期間中にのみスイッチの再読込みを行ってください。
reload
$ reload Proceed with reload? [confirm]Copy to Clipboard Copied! Toggle word wrap Toggle overflow スイッチが再読み込みされたら、新しいジャンボ MTU のサイズを確認します。
スイッチのモデルによって実際の出力は異なる場合があります。たとえば、System MTU がギガビット非対応のインターフェイスに適用され、Jumbo MTU は全ギガビット対応インターフェイスを記述する可能性があります。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.2.10. LLDP ディスカバリーについて リンクのコピーリンクがクリップボードにコピーされました!
ironic-python-agent サービスは、接続されたスイッチからの LLDP パケットをリッスンします。収集される情報には、スイッチ名、ポートの詳細、利用可能な VLAN を含めることができます。Cisco Discovery Protocol (CDP) と同様に、LLDP は、director のイントロスペクションプロセス中の物理ハードウェア検出を補助します。
7.2.11. Cisco Catalyst スイッチでの LLDP の設定 リンクのコピーリンクがクリップボードにコピーされました!
Cisco Catalyst スイッチに LLDP を設定するには、次の手順に従います。
手順
lldp runコマンドを実行して、Cisco Catalyst スイッチで LLDP をグローバルに有効にします。config t
$ config t Enter configuration commands, one per line. End with CNTL/Z. (config)$ lldp runCopy to Clipboard Copied! Toggle word wrap Toggle overflow 隣接する LLDP 対応デバイスを表示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
copy running-config startup-config コマンドを実行して running-config を startup-config にコピーし、変更を保存するのを忘れないようにしてください。
7.3. Cisco Nexus スイッチの設定 リンクのコピーリンクがクリップボードにコピーされました!
7.3.1. トランクポートについて リンクのコピーリンクがクリップボードにコピーされました!
OpenStack Networking により、インスタンスを物理ネットワーク上にすでに存在する VLAN に接続することができます。トランク という用語は、単一のポートで複数 VLAN の通過を許可することを意味します。これらのポートを使用することで、VLAN は仮想スイッチを含む複数のスイッチ間にまたがることができます。たとえば、物理ネットワークで VLAN110 のタグが付いたトラフィックが Compute ノードに到達すると、タグの付いたトラフィックが 8021q モジュールによって vSwitch 上の適切な VLAN に転送されます。
7.3.2. Cisco Nexus スイッチでのトランクポートの設定 リンクのコピーリンクがクリップボードにコピーされました!
Cisco Nexus スイッチのトランクポートを設定するには、以下の例を検討してください。
Cisco Nexus を使用する場合には、以下の設定構文を使用して、VLAN 110 と 111 のトラフィックがインスタンスに到達できるように設定することが可能です。
この設定では、物理ノードがイーサネットケーブルにより物理スイッチポート (インターフェイス
Ethernet1/12) に接続されていることを前提としています。重要以下に示す値は、例として提示しています。この例で使用している値を、実際の環境に合わせて変更する必要があります。これらの値を調整せずにコピーしてご自分のスイッチ設定に貼り付けると、予期せぬ機能停止を招く可能性があります。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.3.3. アクセスポートについて リンクのコピーリンクがクリップボードにコピーされました!
Compute ノード上の全 NIC がインスタンスのトラフィックを伝送する訳ではないので、すべての NIC で複数の VLAN が通過できるように設定する必要はありません。アクセスポートに必要なのは 1 つの VLAN だけで、管理トラフィックやブロックストレージデータの転送などの、他の運用上の要件を満たす可能性があります。これらのポートは一般的にアクセスポートと呼ばれ、必要な設定は通常、トランクポートよりも簡単です。
7.3.4. Cisco Nexus スイッチでのアクセスポートの設定 リンクのコピーリンクがクリップボードにコピーされました!
Cisco Nexus スイッチのアクセスポートを設定するには、以下の例を検討してください。
手順
図7.1「ネットワークレイアウト例」の図に示した例を使用して、Ethernet1/13 (Cisco Nexus スイッチ上) を
eth1のアクセスポートとして設定します。この設定では、物理ノードがイーサネットケーブルにより物理スイッチポート (インターフェイスEthernet1/13) に接続されていることを前提としています。重要以下に示す値は、例として提示しています。この例で使用している値を、実際の環境に合わせて変更する必要があります。これらの値を調整せずにコピーしてご自分のスイッチ設定に貼り付けると、予期せぬ機能停止を招く可能性があります。
interface Ethernet1/13 description Access port for Compute Node switchport mode access switchport access vlan 200
interface Ethernet1/13 description Access port for Compute Node switchport mode access switchport access vlan 200Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.3.5. LACP ポートアグリゲーションについて リンクのコピーリンクがクリップボードにコピーされました!
リンクアグリゲーション制御プロトコル (LACP) を使用して、複数の物理 NIC をバンドルし、単一の論理チャネルを形成できます。LACP は 802.3ad (または、Linux ではボンディングモード 4) としても知られており、負荷分散と耐障害性のための動的なボンディングを作成します。LACP は、物理 NIC と物理スイッチポートの両方の物理エンドで設定する必要があります。
7.3.6. 物理 NIC 上での LACP の設定 リンクのコピーリンクがクリップボードにコピーされました!
物理 NIC でリンクアグリゲーション制御プロトコル (LACP) を設定できます。
手順
/home/stack/network-environment.yaml ファイルを編集します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Open vSwitch ブリッジが LACP を使用するように設定します。
BondInterfaceOvsOptions: "mode=802.3ad"BondInterfaceOvsOptions: "mode=802.3ad"Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.3.7. Cisco Nexus スイッチでの LACP の設定 リンクのコピーリンクがクリップボードにコピーされました!
以下の例では、Compute ノードに VLAN 100 を使用する NIC が 2 つあります。
手順
- Compute ノードの NIC を物理的にスイッチ (例: ポート 12 と 13) に接続します。
LACP が有効なことを確認します。
show feature | include lacp
(config)$ show feature | include lacp lacp 1 enabledCopy to Clipboard Copied! Toggle word wrap Toggle overflow ポート 1/12 と 1/13 をアクセスポートおよびチャネルグループのメンバーとして設定します。
デプロイメントによっては、アクセスインターフェイスの代わりにトランクインターフェイスをデプロイすることができます。
たとえば、Cisco UCI の場合には、NIC は仮想インターフェイスなので、アクセスポートだけを設定する方が望ましい場合があります。多くの場合、これらのインターフェイスには VLAN タグ付けが設定されています。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
PXE を使用して Cisco スイッチ上のノードをプロビジョニングする場合、ポートを立ち上げてサーバーを起動するために、オプション no lacp graceful-convergence および no lacp suspend-individual を設定する必要がある場合があります。詳細は、Cisco スイッチのドキュメントを参照してください。
7.3.8. MTU 設定について リンクのコピーリンクがクリップボードにコピーされました!
特定のネットワークトラフィック種別に対して、MTU サイズを調整する必要があります。たとえば、特定の NFS または iSCSI のトラフィックでは、ジャンボフレーム (9000 バイト) が必要になります。
MTU の設定は、エンドツーエンド (トラフィックが通過すると想定される全ホップ) で変更する必要があります。これには、仮想スイッチが含まれます。
7.3.9. Cisco Nexus 7000 スイッチでの MTU の設定 リンクのコピーリンクがクリップボードにコピーされました!
7000 シリーズのスイッチ上の単一のインターフェイスに、MTU の設定を適用します。
手順
以下のコマンドを実行して、インターフェイス 1/12 が 9000 バイトのジャンボフレームを使用するように設定します。
interface ethernet 1/12 mtu 9216 exit
interface ethernet 1/12 mtu 9216 exitCopy to Clipboard Copied! Toggle word wrap Toggle overflow
7.3.10. LLDP ディスカバリーについて リンクのコピーリンクがクリップボードにコピーされました!
ironic-python-agent サービスは、接続されたスイッチからの LLDP パケットをリッスンします。収集される情報には、スイッチ名、ポートの詳細、利用可能な VLAN を含めることができます。Cisco Discovery Protocol (CDP) と同様に、LLDP は、director のイントロスペクションプロセス中の物理ハードウェア検出を補助します。
7.3.11. Cisco Nexus 7000 スイッチでの LLDP の設定 リンクのコピーリンクがクリップボードにコピーされました!
Cisco Nexus スイッチ用に LLDP を設定するには、以下の例を考慮してください。
手順
Cisco Nexus 7000 シリーズスイッチ上の個別のインターフェイスに対して、LLDP を有効にすることができます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
copy running-config startup-config コマンドを実行して running-config を startup-config にコピーし、変更を保存するのを忘れないようにしてください。
7.4. Cumulus Linux スイッチの設定 リンクのコピーリンクがクリップボードにコピーされました!
7.4.1. トランクポートについて リンクのコピーリンクがクリップボードにコピーされました!
OpenStack Networking により、インスタンスを物理ネットワーク上にすでに存在する VLAN に接続することができます。トランク という用語は、単一のポートで複数 VLAN の通過を許可することを意味します。これらのポートを使用することで、VLAN は仮想スイッチを含む複数のスイッチ間にまたがることができます。たとえば、物理ネットワークで VLAN110 のタグが付いたトラフィックが Compute ノードに到達すると、タグの付いたトラフィックが 8021q モジュールによって vSwitch 上の適切な VLAN に転送されます。
7.4.2. Cumulus Linux スイッチでのトランクポートの設定 リンクのコピーリンクがクリップボードにコピーされました!
この設定では、物理ノードのトランシーバーが物理スイッチポート (swp1 および swp2) に接続されていることを前提としています。
以下に示す値は、例として提示しています。この例で使用している値を、実際の環境に合わせて変更する必要があります。これらの値を調整せずにコピーしてご自分のスイッチ設定に貼り付けると、予期せぬ機能停止を招く可能性があります。
手順
以下の設定構文を使用して、VLAN 100 と 200 のトラフィックがインスタンスに到達できるように設定します。
auto bridge iface bridge bridge-vlan-aware yes bridge-ports glob swp1-2 bridge-vids 100 200
auto bridge iface bridge bridge-vlan-aware yes bridge-ports glob swp1-2 bridge-vids 100 200Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.4.3. アクセスポートについて リンクのコピーリンクがクリップボードにコピーされました!
Compute ノード上の全 NIC がインスタンスのトラフィックを伝送する訳ではないので、すべての NIC で複数の VLAN が通過できるように設定する必要はありません。アクセスポートに必要なのは 1 つの VLAN だけで、管理トラフィックやブロックストレージデータの転送などの、他の運用上の要件を満たす可能性があります。これらのポートは一般的にアクセスポートと呼ばれ、必要な設定は通常、トランクポートよりも簡単です。
7.4.4. Cumulus Linux スイッチでのアクセスポートの設定 リンクのコピーリンクがクリップボードにコピーされました!
この設定では、物理ノードがイーサネットケーブルにより物理スイッチのインターフェイスに接続されていることを前提としています。Cumulus Linux スイッチは、管理インターフェイスに eth を、アクセス/トランクポートに swp を使用します。
以下に示す値は、例として提示しています。この例で使用している値を、実際の環境に合わせて変更する必要があります。これらの値を調整せずにコピーしてご自分のスイッチ設定に貼り付けると、予期せぬ機能停止を招く可能性があります。
手順
図7.1「ネットワークレイアウト例」の図に示した例を使用して、
swp1(Cumulus Linux スイッチ上) をアクセスポートとして設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.4.5. LACP ポートアグリゲーションについて リンクのコピーリンクがクリップボードにコピーされました!
リンクアグリゲーション制御プロトコル (LACP) を使用して、複数の物理 NIC をバンドルし、単一の論理チャネルを形成できます。LACP は 802.3ad (または、Linux ではボンディングモード 4) としても知られており、負荷分散と耐障害性のための動的なボンディングを作成します。LACP は、物理 NIC と物理スイッチポートの両方の物理エンドで設定する必要があります。
7.4.6. MTU 設定について リンクのコピーリンクがクリップボードにコピーされました!
特定のネットワークトラフィック種別に対して、MTU サイズを調整する必要があります。たとえば、特定の NFS または iSCSI のトラフィックでは、ジャンボフレーム (9000 バイト) が必要になります。
MTU の設定は、エンドツーエンド (トラフィックが通過すると想定される全ホップ) で変更する必要があります。これには、仮想スイッチが含まれます。
7.4.7. Cumulus Linux スイッチでの MTU の設定 リンクのコピーリンクがクリップボードにコピーされました!
Cumulus Linux スイッチの MTU 設定を設定する場合は、sudo ifreload -a コマンドを使用して更新された設定を再読み込みして、変更を適用します。
手順
以下の例では、Cumulus Linux スイッチでジャンボフレームを有効にします。
auto swp1 iface swp1 mtu 9000
auto swp1 iface swp1 mtu 9000Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.4.8. LLDP ディスカバリーについて リンクのコピーリンクがクリップボードにコピーされました!
ironic-python-agent サービスは、接続されたスイッチからの LLDP パケットをリッスンします。収集される情報には、スイッチ名、ポートの詳細、利用可能な VLAN を含めることができます。Cisco Discovery Protocol (CDP) と同様に、LLDP は、director のイントロスペクションプロセス中の物理ハードウェア検出を補助します。
7.4.9. Cumulus Linux スイッチでの LLDP の設定 リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、LLDP サービスはデーモン lldpd として実行され、スイッチのブート時に起動します。
手順
全ポート/インターフェイスの LLDP 隣接デバイスをすべて表示するには、以下のコマンドを実行します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.5. Extreme Exos スイッチの設定 リンクのコピーリンクがクリップボードにコピーされました!
7.5.1. トランクポートについて リンクのコピーリンクがクリップボードにコピーされました!
OpenStack Networking により、インスタンスを物理ネットワーク上にすでに存在する VLAN に接続することができます。トランク という用語は、単一のポートで複数 VLAN の通過を許可することを意味します。これらのポートを使用することで、VLAN は仮想スイッチを含む複数のスイッチ間にまたがることができます。たとえば、物理ネットワークで VLAN110 のタグが付いたトラフィックが Compute ノードに到達すると、タグの付いたトラフィックが 8021q モジュールによって vSwitch 上の適切な VLAN に転送されます。
7.5.2. Extreme Networks EXOS スイッチでのトランクポートの設定 リンクのコピーリンクがクリップボードにコピーされました!
X-670 シリーズのスイッチを使用する場合には、以下の例を参考にして、VLAN 110 と 111 のトラフィックがインスタンスに到達できるように設定します。
以下に示す値は、例として提示しています。この例で使用している値を、実際の環境に合わせて変更する必要があります。これらの値を調整せずにコピーしてご自分のスイッチ設定に貼り付けると、予期せぬ機能停止を招く可能性があります。
手順
この設定では、物理ノードがイーサネットケーブルにより物理スイッチポート (インターフェイス 24) に接続されていることを前提としています。この例では、DATA と MNGT が VLAN 名です。
#create vlan DATA tag 110 #create vlan MNGT tag 111 #configure vlan DATA add ports 24 tagged #configure vlan MNGT add ports 24 tagged
#create vlan DATA tag 110 #create vlan MNGT tag 111 #configure vlan DATA add ports 24 tagged #configure vlan MNGT add ports 24 taggedCopy to Clipboard Copied! Toggle word wrap Toggle overflow
7.5.3. アクセスポートについて リンクのコピーリンクがクリップボードにコピーされました!
Compute ノード上の全 NIC がインスタンスのトラフィックを伝送する訳ではないので、すべての NIC で複数の VLAN が通過できるように設定する必要はありません。アクセスポートに必要なのは 1 つの VLAN だけで、管理トラフィックやブロックストレージデータの転送などの、他の運用上の要件を満たす可能性があります。これらのポートは一般的にアクセスポートと呼ばれ、必要な設定は通常、トランクポートよりも簡単です。
7.5.4. Extreme Networks EXOS スイッチでのアクセスポートの設定 リンクのコピーリンクがクリップボードにコピーされました!
この設定では、物理ノードがイーサネットケーブルにより物理スイッチポート (インターフェイス 10) に接続されていることを前提としています。
以下に示す値は、例として提示しています。この例で使用している値を、実際の環境に合わせて変更する必要があります。これらの値を調整せずにコピーしてご自分のスイッチ設定に貼り付けると、予期せぬ機能停止を招く可能性があります。
手順
以下の設定例では、Extreme Networks X-670 シリーズでは、
eth1のアクセスポートとして10が使用されています。create vlan VLANNAME tag NUMBER configure vlan Default delete ports PORTSTRING configure vlan VLANNAME add ports PORTSTRING untagged
create vlan VLANNAME tag NUMBER configure vlan Default delete ports PORTSTRING configure vlan VLANNAME add ports PORTSTRING untaggedCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下に例を示します。
#create vlan DATA tag 110 #configure vlan Default delete ports 10 #configure vlan DATA add ports 10 untagged
#create vlan DATA tag 110 #configure vlan Default delete ports 10 #configure vlan DATA add ports 10 untaggedCopy to Clipboard Copied! Toggle word wrap Toggle overflow
7.5.5. LACP ポートアグリゲーションについて リンクのコピーリンクがクリップボードにコピーされました!
リンクアグリゲーション制御プロトコル (LACP) を使用して、複数の物理 NIC をバンドルし、単一の論理チャネルを形成できます。LACP は 802.3ad (または、Linux ではボンディングモード 4) としても知られており、負荷分散と耐障害性のための動的なボンディングを作成します。LACP は、物理 NIC と物理スイッチポートの両方の物理エンドで設定する必要があります。
7.5.6. 物理 NIC 上での LACP の設定 リンクのコピーリンクがクリップボードにコピーされました!
物理 NIC でリンクアグリゲーション制御プロトコル (LACP) を設定できます。
手順
/home/stack/network-environment.yaml ファイルを編集します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Open vSwitch ブリッジが LACP を使用するように設定します。
BondInterfaceOvsOptions: "mode=802.3ad"BondInterfaceOvsOptions: "mode=802.3ad"Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.5.7. Extreme Networks EXOS スイッチでの LACP の設定 リンクのコピーリンクがクリップボードにコピーされました!
Extreme Networks EXOS スイッチ上で LACP を設定する例を以下に示します。
手順
以下の例では、Compute ノードに VLAN 100 を使用する NIC が 2 つあります。
enable sharing MASTERPORT grouping ALL_LAG_PORTS lacp configure vlan VLANNAME add ports PORTSTRING tagged
enable sharing MASTERPORT grouping ALL_LAG_PORTS lacp configure vlan VLANNAME add ports PORTSTRING taggedCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下に例を示します。
#enable sharing 11 grouping 11,12 lacp #configure vlan DATA add port 11 untagged
#enable sharing 11 grouping 11,12 lacp #configure vlan DATA add port 11 untaggedCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記LACP ネゴシエーションスクリプトでタイムアウトの期間を修正する必要がある場合があります。詳細は、LACP configured ports interfere with PXE/DHCP on servers を参照してください。
7.5.8. MTU 設定について リンクのコピーリンクがクリップボードにコピーされました!
特定のネットワークトラフィック種別に対して、MTU サイズを調整する必要があります。たとえば、特定の NFS または iSCSI のトラフィックでは、ジャンボフレーム (9000 バイト) が必要になります。
MTU の設定は、エンドツーエンド (トラフィックが通過すると想定される全ホップ) で変更する必要があります。これには、仮想スイッチが含まれます。
7.5.9. Extreme Networks EXOS スイッチでの MTU の設定 リンクのコピーリンクがクリップボードにコピーされました!
Extreme Networks EXOS スイッチで MTU 設定を設定する例を以下に示します。
手順
以下の例に示すコマンドを実行して、Extreme Networks EXOS スイッチでジャンボフレームを有効にし、9000 バイトでの IP パケット転送のサポートを設定します。
enable jumbo-frame ports PORTSTRING configure ip-mtu 9000 vlan VLANNAME
enable jumbo-frame ports PORTSTRING configure ip-mtu 9000 vlan VLANNAMECopy to Clipboard Copied! Toggle word wrap Toggle overflow - 例
enable jumbo-frame ports 11 configure ip-mtu 9000 vlan DATA
$ enable jumbo-frame ports 11 $ configure ip-mtu 9000 vlan DATACopy to Clipboard Copied! Toggle word wrap Toggle overflow
7.5.10. LLDP ディスカバリーについて リンクのコピーリンクがクリップボードにコピーされました!
ironic-python-agent サービスは、接続されたスイッチからの LLDP パケットをリッスンします。収集される情報には、スイッチ名、ポートの詳細、利用可能な VLAN を含めることができます。Cisco Discovery Protocol (CDP) と同様に、LLDP は、director のイントロスペクションプロセス中の物理ハードウェア検出を補助します。
7.5.11. Extreme Networks EXOS スイッチでの LLDP の設定 リンクのコピーリンクがクリップボードにコピーされました!
Extreme Networks EXOS スイッチで LLDP を設定する例を以下に示します。
手順
-
以下の例では、Extreme Networks EXOS スイッチで LLDP を有効にします。
11はポート文字列を表します。
enable lldp ports 11
enable lldp ports 11
7.6. Juniper EX シリーズスイッチの設定 リンクのコピーリンクがクリップボードにコピーされました!
7.6.1. トランクポートについて リンクのコピーリンクがクリップボードにコピーされました!
OpenStack Networking により、インスタンスを物理ネットワーク上にすでに存在する VLAN に接続することができます。トランク という用語は、単一のポートで複数 VLAN の通過を許可することを意味します。これらのポートを使用することで、VLAN は仮想スイッチを含む複数のスイッチ間にまたがることができます。たとえば、物理ネットワークで VLAN110 のタグが付いたトラフィックが Compute ノードに到達すると、タグの付いたトラフィックが 8021q モジュールによって vSwitch 上の適切な VLAN に転送されます。
7.6.2. Juniper EX シリーズスイッチでのトランクポートの設定 リンクのコピーリンクがクリップボードにコピーされました!
Juniper EX シリーズスイッチのトランクポートを設定する例を以下に示します。
手順
Juniper JunOS を実行する Juniper EX シリーズのスイッチを使用する場合には、以下の設定構文を使用して、VLAN 110 と 111 のトラフィックがインスタンスに到達できるように設定します。
この設定では、物理ノードがイーサネットケーブルにより物理スイッチポート (インターフェイス ge-1/0/12) に接続されていることを前提としています。
重要以下に示す値は、例として提示しています。この例で使用している値を、実際の環境に合わせて変更する必要があります。これらの値を調整せずにコピーしてご自分のスイッチ設定に貼り付けると、予期せぬ機能停止を招く可能性があります。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.6.3. アクセスポートについて リンクのコピーリンクがクリップボードにコピーされました!
Compute ノード上の全 NIC がインスタンスのトラフィックを伝送する訳ではないので、すべての NIC で複数の VLAN が通過できるように設定する必要はありません。アクセスポートに必要なのは 1 つの VLAN だけで、管理トラフィックやブロックストレージデータの転送などの、他の運用上の要件を満たす可能性があります。これらのポートは一般的にアクセスポートと呼ばれ、必要な設定は通常、トランクポートよりも簡単です。
7.6.4. Juniper EX シリーズスイッチでのアクセスポートの設定 リンクのコピーリンクがクリップボードにコピーされました!
Juniper EX シリーズに関する以下の例では、ge-1/0/13 が eth1 のアクセスポートとして示されています。
以下に示す値は、例として提示しています。この例で使用している値を、実際の環境に合わせて変更する必要があります。これらの値を調整せずにコピーしてご自分のスイッチ設定に貼り付けると、予期せぬ機能停止を招く可能性があります。
手順
この設定では、物理ノードがイーサネットケーブルにより物理スイッチポート (インターフェイス ge-1/0/13) に接続されていることを前提としています。
+
7.6.5. LACP ポートアグリゲーションについて リンクのコピーリンクがクリップボードにコピーされました!
リンクアグリゲーション制御プロトコル (LACP) を使用して、複数の物理 NIC をバンドルし、単一の論理チャネルを形成できます。LACP は 802.3ad (または、Linux ではボンディングモード 4) としても知られており、負荷分散と耐障害性のための動的なボンディングを作成します。LACP は、物理 NIC と物理スイッチポートの両方の物理エンドで設定する必要があります。
7.6.6. 物理 NIC 上での LACP の設定 リンクのコピーリンクがクリップボードにコピーされました!
物理 NIC でリンクアグリゲーション制御プロトコル (LACP) を設定できます。
手順
/home/stack/network-environment.yaml ファイルを編集します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Open vSwitch ブリッジが LACP を使用するように設定します。
BondInterfaceOvsOptions: "mode=802.3ad"BondInterfaceOvsOptions: "mode=802.3ad"Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.6.7. Juniper EX シリーズスイッチでの LACP の設定 リンクのコピーリンクがクリップボードにコピーされました!
以下の例では、Compute ノードに VLAN 100 を使用する NIC が 2 つあります。
手順
- Compute ノードの 2 つの NIC を物理的にスイッチ (例: ポート 12 と 13) に接続します。
ポートアグリゲートを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow スイッチポート 12 (ge-1/0/12) と 13 (ge-1/0/13) を設定して、ポートアグリゲート
ae1のメンバーに入れます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記Red Hat OpenStack Platform director を使用したデプロイメントの場合、ボンディングから PXE ブートするには、ボンディングのメンバーのいずれかを lacp force-up として設定する必要があります。これにより、イントロスペクションと初回ブート時には 1 つのボンディングメンバーのみが稼働状態になります。lacp force-up を設定するボンディングメンバーは、instackenv.json で指定する MAC アドレスを持つボンディングメンバーでなければなりません (ironic に認識される MAC アドレスは、force-up が設定される MAC アドレスと同じでなければなりません)。
ポートアグリゲート
ae1で LACP を有効にします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow アグリゲート
ae1を VLAN 100 に追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 新しいポートチャネルを確認します。出力には、新規ポートアグリゲート
ae1と、メンバーポートのge-1/0/12およびge-1/0/13が表示されます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記commitコマンドを実行して変更を適用するのを忘れないようにしてください。
7.6.8. MTU 設定について リンクのコピーリンクがクリップボードにコピーされました!
特定のネットワークトラフィック種別に対して、MTU サイズを調整する必要があります。たとえば、特定の NFS または iSCSI のトラフィックでは、ジャンボフレーム (9000 バイト) が必要になります。
MTU の設定は、エンドツーエンド (トラフィックが通過すると想定される全ホップ) で変更する必要があります。これには、仮想スイッチが含まれます。
7.6.9. Juniper EX シリーズスイッチでの MTU の設定 リンクのコピーリンクがクリップボードにコピーされました!
以下の例では、Juniper EX4200 スイッチでジャンボフレームを有効にします。
MTU 値の計算は、Juniper と Cisco のどちらのデバイスを使用しているかによって異なります。たとえば、Juniper の 9216 は、Cisco の 9202 に相当します。追加のバイトが L2 ヘッダーに使用され、Cisco はこれを指定された MTU 値に自動的に追加しますが、Juniper を使用する場合には、使用可能な MTU は指定値よりも 14 バイト少なくなります。したがって、VLAN で MTU 値 9000 をサポートするには、Juniper で MTU 値を 9014 に設定する必要があります。
手順
Juniper EX シリーズスイッチの場合は、インターフェイスごとに MTU の設定を実行します。以下のコマンドは、
ge-1/0/14およびge-1/0/15ポート上のジャンボフレームを設定します。set interfaces ge-1/0/14 mtu 9216 set interfaces ge-1/0/15 mtu 9216
set interfaces ge-1/0/14 mtu 9216 set interfaces ge-1/0/15 mtu 9216Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記commitコマンドを実行して変更を保存するのを忘れないようにしてください。LACP アグリゲートを使用する場合には、メンバーの NIC ではなく、そのアグリゲートで MTU サイズを設定する必要があります。たとえば、以下のコマンドを実行すると、ae1 アグリゲートの MTU サイズが設定されます。
set interfaces ae1 mtu 9216
set interfaces ae1 mtu 9216Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.6.10. LLDP ディスカバリーについて リンクのコピーリンクがクリップボードにコピーされました!
ironic-python-agent サービスは、接続されたスイッチからの LLDP パケットをリッスンします。収集される情報には、スイッチ名、ポートの詳細、利用可能な VLAN を含めることができます。Cisco Discovery Protocol (CDP) と同様に、LLDP は、director のイントロスペクションプロセス中の物理ハードウェア検出を補助します。
7.6.11. Juniper EX シリーズスイッチでの LLDP の設定 リンクのコピーリンクがクリップボードにコピーされました!
LLDP は、全インターフェイスでローバルに有効にすることや、特定のインターフェイスでのみ有効にすることができます。
手順
LLDP を Juniper EX 4200 スイッチでグローバルに有効にするには、以下の設定を使用します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow LLDP を単一のインターフェイス
ge-1/0/14で有効にするには、以下の設定を使用します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記commitコマンドを実行して変更を適用するのを忘れないようにしてください。
第8章 最大伝送単位 (MTU) 設定の定義 リンクのコピーリンクがクリップボードにコピーされました!
8.1. MTU の概要 リンクのコピーリンクがクリップボードにコピーされました!
OpenStack Networking は、インスタンスに安全に適用できる最大伝送単位 (MTU) サイズの最大値を計算することができます。MTU の値は、単一のネットワークパケットで転送できる最大データ量を指定します。この数は、アプリケーションに最も適したサイズによって変わります。たとえば、NFS 共有で必要な MTU サイズは VoIP アプリケーションで必要なサイズとは異なる場合があります。
openstack network show <network_name> コマンドを使用して、OpenStack Networking が計算する MTU の最大値を表示することができます。net-mtu は neutron API の拡張機能なので、一部の実装には含まれていない可能性があります。インスタンスがサポートしている場合には、必要な MTU 値を DHCPv4 クライアントに通知して自動設定を行うことが可能です。また、ルーター広告 (RA) パケットを使用して IPv6 クライアントに通知することも可能です。ルーター広告を送信するには、ネットワークがルーターに接続されている必要があります。
MTU 設定は、エンドツーエンドで一貫して設定する必要があります。つまり、MTU 設定は、仮想マシン、仮想ネットワークのインフラストラクチャー、物理ネットワーク、送信先のサーバーなど、パケットが通過するすべてのポイントで同じでなければなりません。
たとえば、以下の図の丸印は、インスタンスと物理サーバーの間のトラフィックに合わせて MTU 値を調節する必要があるポイントを示しています。特定の MTU サイズのパケットに対応するように、ネットワークトラフィックを処理する全インターフェイスの MTU 値を変更する必要があります。トラフィックがインスタンス 192.168.200.15 から物理サーバー 10.20.15.25 に伝送される場合には、この変更が必要です。
MTU 値に一貫性がないと、ネットワークにさまざまな問題が発生します。最も一般的な問題は、ランダムなパケットロスにより接続が中断して、ネットワークのパフォーマンスが低下することです。このような問題は、トラブルシューティングが困難です。正しい MTU 値が間違いなく設定されるように、考え得るすべてのネットワークポイントを特定して確認する必要があるためです。
8.2. director での MTU 設定の定義 リンクのコピーリンクがクリップボードにコピーされました!
以下の例では、NIC 設定テンプレートを使用した MTU の設定方法を説明します。ブリッジ、ボンディング (該当する場合)、インターフェイス、および VLAN で MTU を設定する必要があります。
8.3. MTU 計算結果の確認 リンクのコピーリンクがクリップボードにコピーされました!
インスタンスが使用可能な MTU の最大値として計算された MTU 値を確認することができます。計算されたこの MTU 値を使用して、ネットワークトラフィックのパスとなる全インターフェイスを設定します。
openstack network show <network>
$ openstack network show <network>
第9章 Quality of Service (QoS) ポリシーを使用したデータトラフィックの管理 リンクのコピーリンクがクリップボードにコピーされました!
サービスの品質 (QoS) ポリシーを使用して、Red Hat OpenStack Platform (RHOSP) ネットワークの Egress および Ingress トラフィックにレート制限を適用することで、VM インスタンスにさまざまなサービスレベルを提供できます。
個々のポートに QoS ポリシーを適用することも、特定のポリシーがアタッチされていないポートがポリシーを継承するプロジェクトネットワークに QoS ポリシーを適用することもできます。
DHCP や内部ルーターポート等の内部ネットワークが所有するポートは、ネットワークポリシーの適用から除外されます。
QoS ポリシーは、動的に適用、変更、削除することができます。ただし、最小帯域幅を確保する QoS ポリシーについては、ポリシーが割り当てられたポートを使用するインスタンスがない場合に限り、変更を適用することができます。
9.1. QoS ルール リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenStack Platform (RHOSP) Networking サービス (neutron) でサービス品質 (QoS) ポリシーを定義するために、以下のルールタイプを設定することができます。
- 最小帯域幅 (
minimum_bandwidth) - 特定のトラフィック種別での最小帯域幅の制約を提供します。このルール種別を実装すると、ルールが適用される各ポートに指定した最小帯域幅を提供するための最大限の努力が行われます。
- 帯域幅の制限 (
bandwidth_limit) - ネットワーク、ポート、フローティング IP (FIP)、およびルーターゲートウェイ IP の帯域幅制限を提供します。このルール種別を実装すると、指定したレートを超過するトラフィックはすべてドロップされます。
- DSCP マーキング (
dscp_marking) - ネットワークトラフィックに Differentiated Services Code Point (DSCP) 値をマーキングします。
QoS ポリシーは、仮想マシンインスタンスの配置、Floating IP の割り当て、ゲートウェイ IP の割り当てなど、さまざまなコンテキストで実施することができます。
実施する際のコンテキストと使用するメカニズムドライバーに応じて、QoS ルールは、送信トラフィック (インスタンスからのアップロード)、受信トラフィック (インスタンスへのダウンロード)、またはその両方に影響します。
Red Hat OpenStack Platform (RHOSP) 17.1 以降、ML2/OVN デプロイメントでは、ハードウェアオフロードポートの最小帯域幅および帯域幅制限 egress ポリシーを有効にできます。ハードウェアオフロードポートの ingress ポリシーは有効にできません。詳細は、「QoS ポリシーの Networking サービスの設定」 を参照してください。
| ルール [7] | メカニズムドライバーでサポートされているトラフィックの方向 | ||
| ML2/OVS | ML2/SR-IOV | ML2/OVN | |
| 最小帯域幅 | 送信のみ [4][5] | Egress のみ | RHOSP 17.1 ではサポートされない |
| 帯域幅の制限 | 送信 [1][2] および受信 | 送信のみ [3] | Egress および Ingress |
| DSCP マーキング | Egress のみ | 該当なし | 送信のみ [6] |
[1] OVS の送信帯域幅制限は TAP インターフェイスで行われ、トラフィックポリシングであり、トラフィックシェーピングではありません。
[2] RHOSP 16.2.2 以降では、ip link コマンドを使用してネットワークインターフェイスに QoS ポリシーを適用することにより、ハードウェアオフロードポートで OVS の送信帯域幅制限に対応します。
[3] メカニズムドライバーは max-burst-kbits パラメーターをサポートしていないため、これを無視します。
[4] トンネル化されていないネットワーク (フラットと VLAN) にのみ適用されるルールです。
[5] ip link コマンドを使用してネットワークインターフェイスに QoS ポリシーを適用することにより、ハードウェアオフロードポートで OVS の送信最小帯域幅制限に対応します。
[6] ML2/OVN は、トンネリングされたプロトコルでの DSCP マーキングをサポートしていません。
[7] RHOSP は、トランクポートの QoS をサポートしていません。
| 適用タイプ | 方向メカニズムドライバーでサポートされているトラフィック | ||
| ML2/OVS | ML2/SR-IOV | ML2/OVN | |
| Placement | Egress および Ingress | Egress および Ingress | 現在、対応なし |
| 適用タイプ | メカニズムドライバーでサポートされているトラフィックの方向 | |
| ML2/OVS | ML2/OVN | |
| Floating IP | Egress および Ingress | Egress および Ingress |
| ゲートウェイ IP | Egress および Ingress | 送信および受信 [1] |
[1] RHOSP 17.1 のテクノロジープレビュー機能。BZ 2088291 を参照してください。
9.2. QoS ポリシーの Networking サービスの設定 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenStack Platform (RHOSP) Networking サービス (neutron) のサービス品質機能は、qos サービスプラグインを通じて提供されます。ML2/OVS および ML2/OVN メカニズムドライバーでは、デフォルトで qos が読み込まれます。ただし、これは ML2/SR-IOV には当てはまりません。
ML2/OVS および ML2/SR-IOV メカニズムドライバーで qos サービスプラグインを使用する場合は、それぞれのエージェントに qos 拡張機能もロードする必要があります。
次のリストは、Networking サービスを QoS 用に設定するために実行する必要があるタスクをまとめたものです。タスクの詳細は、次のリストの後に続きます。
すべてのタイプの QoS ポリシーの場合:
-
qosサービスプラグインを追加します。 -
エージェントの
qos拡張機能を追加します (OVS および SR-IOV のみ)。
-
- ML2/OVN デプロイメントでは、ハードウェアオフロードポートの最小帯域幅および帯域幅の制限 egress ポリシーを有効にできます。ハードウェアオフロードポートの Ingress ポリシーは有効にできません。
最小帯域幅ポリシーのみを使用して VM インスタンスをスケジュールするための追加タスク:
- Compute サービス (nova) が使用する名前と異なる場合は、ハイパーバイザー名を指定します。
- 各 Compute ノードで、関連するエージェントのリソースプロバイダーの入力帯域幅と出力帯域幅を設定します。
-
(オプション)
vnic_typesをサポート対象外としてマークします。
トンネリングのみで ML/OVS を使用するシステムでの DSCP マーキングポリシーの追加タスク:
-
dscp_inheritをtrueに設定します。
-
前提条件
-
アンダークラウドホストへのアクセスと
stackユーザーの認証情報。
手順
オーバークラウドで以下のコマンドを実行して、
qosサービスプラグインがまだロードされていないことを確認します。openstack network qos policy list
$ openstack network qos policy listCopy to Clipboard Copied! Toggle word wrap Toggle overflow qosサービスプラグインがロードされていない場合、ResourceNotFoundエラーが発生します。エラーが発生しない場合は、プラグインがロードされており、このトピックの手順を実行する必要はありません。-
アンダークラウドホストに
stackユーザーとしてログインします。 source コマンドでアンダークラウドの認証情報ファイルを読み込みます。
source ~/stackrc
$ source ~/stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow YAML カスタム環境ファイルを作成します。
例
vi /home/stack/templates/my-neutron-environment.yaml
$ vi /home/stack/templates/my-neutron-environment.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow ご自分の環境ファイルには、
parameter_defaultsというキーワードを含める必要があります。parameter_defaultsの下の新しい行で、NeutronServicePluginsパラメーターにqosを追加します。parameter_defaults: NeutronServicePlugins: "qos"
parameter_defaults: NeutronServicePlugins: "qos"Copy to Clipboard Copied! Toggle word wrap Toggle overflow ML2/OVS および ML2/SR-IOV メカニズムドライバーを使用する場合は、それぞれ
NeutronAgentExtensionsまたはNeutronSriovAgentExtensions変数を使用して、エージェントにqos拡張機能もロードする必要があります。ML2/OVS
parameter_defaults: NeutronServicePlugins: "qos" NeutronAgentExtensions: "qos"
parameter_defaults: NeutronServicePlugins: "qos" NeutronAgentExtensions: "qos"Copy to Clipboard Copied! Toggle word wrap Toggle overflow ML2/SR-IOV
parameter_defaults: NeutronServicePlugins: "qos" NeutronSriovAgentExtensions: "qos"
parameter_defaults: NeutronServicePlugins: "qos" NeutronSriovAgentExtensions: "qos"Copy to Clipboard Copied! Toggle word wrap Toggle overflow
ML2/OVN デプロイメントでは、ハードウェアオフロードポートの egress 最小帯域幅および最大帯域幅のポリシーを有効にできます。これを行うには、
OvnHardwareOffloadedQosパラメーターをtrueに設定します。parameter_defaults: NeutronServicePlugins: "qos" OvnHardwareOffloadedQos: true
parameter_defaults: NeutronServicePlugins: "qos" OvnHardwareOffloadedQos: trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow 最小帯域幅 QoS ポリシーを使用して VM インスタンスをスケジュールする場合は、次のことも行う必要があります。
プラグインのリストに
placementを追加し、リストにqosも含まれていることを確認します。parameter_defaults: NeutronServicePlugins: "qos,placement"
parameter_defaults: NeutronServicePlugins: "qos,placement"Copy to Clipboard Copied! Toggle word wrap Toggle overflow ハイパーバイザー名が 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')}parameter_defaults: NeutronServicePlugins: "qos,placement" ExtraConfig: Neutron::agents::ml2::ovs::resource_provider_default_hypervisor: %{hiera('fqdn_canonical')}Copy to Clipboard Copied! Toggle word wrap Toggle overflow ML2/SR-IOV
parameter_defaults: NeutronServicePlugins: "qos,placement" ExtraConfig: Neutron::agents::ml2::sriov::resource_provider_default_hypervisor: %{hiera('fqdn_canonical')}parameter_defaults: NeutronServicePlugins: "qos,placement" ExtraConfig: Neutron::agents::ml2::sriov::resource_provider_default_hypervisor: %{hiera('fqdn_canonical')}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要代替ハイパーバイザー名を設定する別の方法は、
resource_provider_hypervisorを使用することです。ML2/OVS
parameter_defaults: ExtraConfig: Neutron::agents::ml2::ovs::resource_provider_hypervisors:"ens5:%{hiera('fqdn_canonical')},ens6:%{hiera('fqdn_canonical')}"parameter_defaults: ExtraConfig: Neutron::agents::ml2::ovs::resource_provider_hypervisors:"ens5:%{hiera('fqdn_canonical')},ens6:%{hiera('fqdn_canonical')}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow ML2/SR-IOV
parameter_defaults: ExtraConfig: Neutron::agents::ml2::sriov::resource_provider_hypervisors: "ens5:%{hiera('fqdn_canonical')},ens6:%{hiera('fqdn_canonical')}"parameter_defaults: ExtraConfig: Neutron::agents::ml2::sriov::resource_provider_hypervisors: "ens5:%{hiera('fqdn_canonical')},ens6:%{hiera('fqdn_canonical')}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow
最小帯域幅を提供する必要のある各 Compute ノードの該当するエージェントに対して、リソースプロバイダーの受信および送信帯域幅を設定します。
次の形式を使用して、送信、受信、またはその両方を設定できます。
送信帯域幅だけを設定する場合 (kbps 単位):
NeutronOvsResourceProviderBandwidths: <bridge0>:<egress_kbps>:,<bridge1>:<egress_kbps>:,...,<bridgeN>:<egress_kbps>:
NeutronOvsResourceProviderBandwidths: <bridge0>:<egress_kbps>:,<bridge1>:<egress_kbps>:,...,<bridgeN>:<egress_kbps>:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 受信帯域幅だけを設定する場合 (kbps 単位):
NeutronOvsResourceProviderBandwidths: <bridge0>::<ingress_kbps>,<bridge1>::<ingress_kbps>,...,<bridgeN>::<ingress_kbps>
NeutronOvsResourceProviderBandwidths: <bridge0>::<ingress_kbps>,<bridge1>::<ingress_kbps>,...,<bridgeN>::<ingress_kbps>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 送信および受信帯域幅の両方を設定する場合 (kbps 単位):
NeutronOvsResourceProviderBandwidths: <bridge0>:<egress_kbps>:<ingress_kbps>,<bridge1>:<egress_kbps>:<ingress_kbps>,...,<bridgeN>:<egress_kbps>:<ingress_kbps>
NeutronOvsResourceProviderBandwidths: <bridge0>:<egress_kbps>:<ingress_kbps>,<bridge1>:<egress_kbps>:<ingress_kbps>,...,<bridgeN>:<egress_kbps>:<ingress_kbps>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 例 - OVS エージェント
OVS エージェント用にリソースプロバイダーの受信および送信帯域幅を設定するには、ネットワーク環境ファイルに以下の設定を追加します。
parameter_defaults: ... NeutronBridgeMappings: physnet0:br-physnet0 NeutronOvsResourceProviderBandwidths: br-physnet0:10000000:10000000
parameter_defaults: ... NeutronBridgeMappings: physnet0:br-physnet0 NeutronOvsResourceProviderBandwidths: br-physnet0:10000000:10000000Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 例 - SRIOV エージェント
SRIOV エージェント用にリソースプロバイダーの受信および送信帯域幅を設定するには、ネットワーク環境ファイルに以下の設定を追加します。
parameter_defaults: ... NeutronML2PhysicalNetworkMtus: physnet0:1500,physnet1:1500 NeutronSriovResourceProviderBandwidths: ens5:40000000:40000000,ens6:40000000:40000000
parameter_defaults: ... NeutronML2PhysicalNetworkMtus: physnet0:1500,physnet1:1500 NeutronSriovResourceProviderBandwidths: ens5:40000000:40000000,ens6:40000000:40000000Copy to Clipboard Copied! Toggle word wrap Toggle overflow
オプション:
vnic_typesをサポート対象外として識別するには (複数の ML2 メカニズムドライバーがデフォルトでサポートし、複数のエージェントが Placement サービスで追跡されている場合)、環境ファイルに以下の設定を追加します。- 例 - OVS エージェント
parameter_defaults: ... NeutronOvsVnicTypeBlacklist: direct
parameter_defaults: ... NeutronOvsVnicTypeBlacklist: directCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 例 - SRIOV エージェント
parameter_defaults: ... NeutronSriovVnicTypeBlacklist: direct
parameter_defaults: ... NeutronSriovVnicTypeBlacklist: directCopy to Clipboard Copied! Toggle word wrap Toggle overflow
DSCP マーキングポリシーを作成し、トンネリングプロトコル (VXLAN または GRE) で ML2/OVS を使用する場合は、
NeutronAgentExtensionsの下に次の行を追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow dscp_inheritがtrueの場合、Networking サービスは内部ヘッダーの DSCP 値を外部ヘッダーにコピーします。コア heat テンプレート、その他の環境ファイル、およびこの新しいカスタム環境ファイルを指定して、deployment コマンドを実行します。
重要後で実行される環境ファイルで定義されているパラメーターとリソースが優先されることになるため、環境ファイルの順序は重要となります。
- 例
openstack overcloud deploy --templates \ -e <other_environment_files> \ -e /home/stack/templates/my-neutron-environment.yaml
$ openstack overcloud deploy --templates \ -e <other_environment_files> \ -e /home/stack/templates/my-neutron-environment.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
qosサービスプラグインがロードされていることを確認します。openstack network qos policy list
$ openstack network qos policy listCopy to Clipboard Copied! Toggle word wrap Toggle overflow qosサービスプラグインがロードされている場合、ResourceNotFoundエラーは発生しません。
9.3. QoS ポリシーを使用した最小帯域幅の制御 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenStack Platform (RHOSP) Networking サービス (neutron) の場合、Networking サービスのバックエンドの適用とリソース割り当てのスケジューリングの 2 つの異なるコンテキストで保証された最小帯域幅の QoS ルールを適用できます。
ネットワークバックエンド、ML2/OVS または ML2/SR-IOV は、ルールが適用される各ポートが指定されたネットワーク帯域幅以上であることを保証しようとします。
リソース割り当てスケジューリング帯域幅強制を使用すると、Compute サービス (nova) は最小帯域幅をサポートするホストにのみ VM インスタンスを配置します。
Networking サービスバックエンドの適用、リソース割り当てスケジュールの適用、またはその両方を使用して、QoS 最小帯域幅ルールを適用できます。
次の表は、最小帯域幅の QoS ポリシーをサポートする Modular Layer2(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サービスプラグインがロードされている必要があります。(これがデフォルトです)。 同じ物理インターフェイス上で、帯域幅が保証されているポートと保証されていないポートを混在させないでください。これにより、保証のないポートで必要なリソースが拒否される (枯渇する) 可能性があります。
ヒントホストアグリゲートを作成して、帯域幅が保証されているポートと帯域幅が保証されていないポートを分離します。
手順
Source コマンドで認証情報ファイルを読み込みます。
- 例
source ~/overcloudrc
$ source ~/overcloudrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow
qosサービスプラグインが Networking サービスにロードされていることを確認します。openstack network qos policy list
$ openstack network qos policy listCopy to Clipboard Copied! Toggle word wrap Toggle overflow qosサービスプラグインがロードされていない場合は、ResourceNotFoundエラーが発生します。続行するにはqosサービスプラグインをロードする必要があります。詳細は、「QoS ポリシーの Networking サービスの設定」 を参照してください。QoS ポリシーを作成するプロジェクトの ID を特定します。
openstack project list
$ openstack project listCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
前の手順のプロジェクト ID を使用して、プロジェクトの QoS ポリシーを作成します。
- 例
この例では、
guaranteed_min_bwという名前の QoS ポリシーがadminプロジェクト用に作成されています。openstack network qos policy create --share \ --project 98a2f53c20ce4d50a40dac4a38016c69 guaranteed_min_bw
$ openstack network qos policy create --share \ --project 98a2f53c20ce4d50a40dac4a38016c69 guaranteed_min_bwCopy to Clipboard Copied! Toggle word wrap Toggle overflow
ポリシーのルールを設定します。
- 例
この例では、
guaranteed_min_bwという名前のポリシーに対して、最小帯域幅が40000000kbps の入力および出力の QoS ルールが作成されます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
ポリシーを適用するポートを設定します。
- 例
この例では、
guaranteed_min_bwポリシーがポート56x9aiw1-2v74-144x-c2q8-ed8w423a6s12に適用されます。openstack port set --qos-policy guaranteed_min_bw \ 56x9aiw1-2v74-144x-c2q8-ed8w423a6s12
$ openstack port set --qos-policy guaranteed_min_bw \ 56x9aiw1-2v74-144x-c2q8-ed8w423a6s12Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
- ML2/SR-IOV
- ルートアクセスを使用して、Compute ノードにログインし、物理関数で保持されている仮想関数の詳細を表示します。
- 例
ip -details link show enp4s0f1
$ ip -details link show enp4s0f1Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - ML2/OVS
-
ルートアクセスを使用して、Compute ノードにログインし、物理ブリッジインターフェイスに
tcルールとクラスを表示します。 - 例
tc class show dev mx-bond
$ tc class show dev mx-bondCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
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
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 8589bCopy to Clipboard Copied! Toggle word wrap Toggle overflow
9.3.2. 最小帯域幅の QoS ポリシーを使用したインスタンスのスケジューリング リンクのコピーリンクがクリップボードにコピーされました!
最小帯域幅の QoS ポリシーをポートに適用して、Red Hat OpenStack Platform (RHOSP) VM インスタンスが生成されるホストに最小のネットワーク帯域幅があることを保証できます。
前提条件
-
RHOSP Networking サービス (neutron) には、
qosおよびplacementサービスのプラグインがロードされている必要があります。qosサービスプラグインはデフォルトでロードされます。 Networking サービスは、次の API 拡張機能をサポートする必要があります。
-
agent-resources-synced -
port-resource-request -
qos-bw-minimum-ingress
-
- ML2/OVS または ML2/SR-IOV メカニズムドライバーを使用する必要がある。
- 最小帯域幅を確保する QoS ポリシーを変更できるのは、ポリシーが割り当てられたポートを使用するインスタンスがない場合に限る。ポートがバインドされている場合、Networking サービスは配置 API の使用情報を更新できない。
- Placement サービスは、マイクロバージョン 1.29 をサポートする必要があります。
- Compute サービス (nova) はマイクロバージョン 2.72 をサポートする必要があります。
手順
Source コマンドで認証情報ファイルを読み込みます。
- 例
source ~/overcloudrc
$ source ~/overcloudrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow
qosサービスプラグインが Networking サービスにロードされていることを確認します。openstack network qos policy list
$ openstack network qos policy listCopy to Clipboard Copied! Toggle word wrap Toggle overflow qosサービスプラグインがロードされていない場合は、ResourceNotFoundエラーが発生します。続行するにはqosサービスプラグインをロードする必要があります。詳細は、「QoS ポリシーの Networking サービスの設定」 を参照してください。QoS ポリシーを作成するプロジェクトの ID を特定します。
openstack project list
$ openstack project listCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
前の手順のプロジェクト ID を使用して、プロジェクトの QoS ポリシーを作成します。
- 例
この例では、
guaranteed_min_bwという名前の QoS ポリシーがadminプロジェクト用に作成されています。openstack network qos policy create --share \ --project 98a2f53c20ce4d50a40dac4a38016c69 guaranteed_min_bw
$ openstack network qos policy create --share \ --project 98a2f53c20ce4d50a40dac4a38016c69 guaranteed_min_bwCopy to Clipboard Copied! Toggle word wrap Toggle overflow
ポリシーのルールを設定します。
- 例
この例では、
guaranteed_min_bwという名前のポリシーに対して、最小帯域幅が40000000kbps の入力および出力の QoS ルールが作成されます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
ポリシーを適用するポートを設定します。
- 例
この例では、
guaranteed_min_bwポリシーがポート56x9aiw1-2v74-144x-c2q8-ed8w423a6s12に適用されます。openstack port set --qos-policy guaranteed_min_bw \ 56x9aiw1-2v74-144x-c2q8-ed8w423a6s12
$ openstack port set --qos-policy guaranteed_min_bw \ 56x9aiw1-2v74-144x-c2q8-ed8w423a6s12Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
- アンダークラウドホストに stack ユーザーとしてログインします。
source コマンドでアンダークラウドの認証情報ファイルを読み込みます。
source ~/stackrc
$ source ~/stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 利用可能なすべてのリソースプロバイダーをリスト表示します。
openstack --os-placement-api-version 1.17 resource provider list
$ openstack --os-placement-api-version 1.17 resource provider listCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
特定のリソースが提供する帯域幅を確認します。
openstack --os-placement-api-version 1.17 \ resource provider inventory list <rp_uuid>
(undercloud)$ openstack --os-placement-api-version 1.17 \ resource provider inventory list <rp_uuid>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 例
この例では、リソースプロバイダー UUID、
e518d381-d590-5767-8f34-c20def34b252を使用して、ホストdell-r730-014のインターフェイスenp6s0f1によって提供される帯域幅がチェックされます。openstack --os-placement-api-version 1.17 \ resource provider inventory list e518d381-d590-5767-8f34-c20def34b252
[stack@dell-r730-014 nova]$ openstack --os-placement-api-version 1.17 \ resource provider inventory list e518d381-d590-5767-8f34-c20def34b252Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
インスタンス実行時のリソースプロバイダーに対する要求を確認するには、以下のコマンドを実行します。
openstack --os-placement-api-version 1.17 \ resource provider show --allocations <rp_uuid>
(undercloud)$ openstack --os-placement-api-version 1.17 \ resource provider show --allocations <rp_uuid>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 例
この例では、リソースプロバイダーに対するクレームは、リソースプロバイダー UUID
e518d381-d590-5767-8f34-c20def34b252を使用して、ホストdell-r730-014でチェックされます。openstack --os-placement-api-version 1.17 resource provider show --allocations e518d381-d590-5767-8f34-c20def34b252 -f value -c allocations
[stack@dell-r730-014 nova]$ openstack --os-placement-api-version 1.17 resource provider show --allocations e518d381-d590-5767-8f34-c20def34b252 -f value -c allocationsCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
{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}}}{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}}}Copy to Clipboard Copied! Toggle word wrap Toggle overflow
9.4. QoS ポリシーを使用したネットワークトラフィックの制限 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenStack Platform (RHOSP) Networking サービス (neutron) のサービス品質 (QoS) ポリシーを作成して、RHOSP ネットワーク、ポート、または Floating IP の帯域幅を制限し、指定のレートを超えるトラフィックをドロップできます。
前提条件
-
Networking サービスには、
qosサービスプラグインがロードされている必要があります。(プラグインはデフォルトでロードされます。)
手順
Source コマンドで認証情報ファイルを読み込みます。
例
source ~/overcloudrc
$ source ~/overcloudrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow qosサービスプラグインが Networking サービスにロードされていることを確認します。openstack network qos policy list
$ openstack network qos policy listCopy to Clipboard Copied! Toggle word wrap Toggle overflow qosサービスプラグインがロードされていない場合は、ResourceNotFoundエラーが発生します。続行するにはqosサービスプラグインをロードする必要があります。詳細は、「QoS ポリシーの Networking サービスの設定」 を参照してください。QoS ポリシーを作成するプロジェクトの ID を特定します。
openstack project list
$ openstack project listCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
前の手順のプロジェクト ID を使用して、プロジェクトの QoS ポリシーを作成します。
- 例
この例では、
adminプロジェクト用にbw-limiterという名前の QoS ポリシーが作成されます。openstack network qos policy create --share --project 98a2f53c20ce4d50a40dac4a38016c69 bw-limiter
$ openstack network qos policy create --share --project 98a2f53c20ce4d50a40dac4a38016c69 bw-limiterCopy to Clipboard Copied! Toggle word wrap Toggle overflow
ポリシーのルールを設定します。
注記各ルールのタイプまたは方向が異なる限り、複数のルールをポリシーに追加できます。たとえば、1 つを送信方向、もう 1 つを受信方向に設定して 2 つの bandwidth-limit ルールを指定できます。
- 例
この例では、
50000kbps の帯域幅制限と50000kbps の最大バーストサイズで、bw-limiterという名前のポリシーに対して QoS Ingress ルールと Egress ルールが作成されます。openstack network qos rule create --type bandwidth-limit \ --max-kbps 50000 --max-burst-kbits 50000 --ingress bw-limiter openstack network qos rule create --type bandwidth-limit \ --max-kbps 50000 --max-burst-kbits 50000 --egress bw-limiter$ openstack network qos rule create --type bandwidth-limit \ --max-kbps 50000 --max-burst-kbits 50000 --ingress bw-limiter $ openstack network qos rule create --type bandwidth-limit \ --max-kbps 50000 --max-burst-kbits 50000 --egress bw-limiterCopy to Clipboard Copied! Toggle word wrap Toggle overflow
ポリシーがアタッチされたポートを作成するか、既存のポートにポリシーをアタッチできます。
- 例
- ポリシーが割り当てられたポートを作成します。
この例では、ポリシー
bw-limiterがポートport2に関連付けられています。openstack port create --qos-policy bw-limiter --network private port2
$ openstack port create --qos-policy bw-limiter --network private port2Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 例
- ポリシーを既存のポートにアタッチします。
この例では、ポリシー
bw-limiterがport1に関連付けられています。openstack port set --qos-policy bw-limiter port1
$ openstack port set --qos-policy bw-limiter port1Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
ポートに帯域制限ポリシーが適用されていることを確認します。
ポリシー ID を取得します。
- 例
この例では、QoS ポリシー
bw-limiterが照会されます。openstack network qos policy show bw-limiter
$ openstack network qos policy show bw-limiterCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
ポートを照会し、そのポリシー ID が前の手順で取得したものと一致することを確認します。
- 例
この例では、
port1が照会されます。openstack port show port1
$ openstack port show port1Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
9.5. DSCP マーキング QoS ポリシーを使用したネットワークトラフィックの優先順位付け リンクのコピーリンクがクリップボードにコピーされました!
differentiated services code point (DSCP) を使用すると、IP ヘッダーに関連の値を埋め込むことで、Red Hat OpenStack Platform (RHOSP) ネットワーク上に quality-of-service (QoS) ポリシーを実装することができます。RHOSP Networking service (neutron) QoS ポリシーは、DSCP マーキングを使用して、neutron ポートとネットワーク上で送信トラフィックだけを管理することができます。
前提条件
-
Networking サービスには、
qosサービスプラグインがロードされている必要があります。(これがデフォルトです)。 - ML2/OVS または ML2/OVN メカニズムドライバーを使用する必要があります。
手順
Source コマンドで認証情報ファイルを読み込みます。
例
source ~/overcloudrc
$ source ~/overcloudrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow qosサービスプラグインが Networking サービスにロードされていることを確認します。openstack network qos policy list
$ openstack network qos policy listCopy to Clipboard Copied! Toggle word wrap Toggle overflow qosサービスプラグインがロードされていない場合は、ResourceNotFoundエラーが発生します。続行する前に Networking サービスを設定する必要があります。詳細は、「QoS ポリシーの Networking サービスの設定」 を参照してください。QoS ポリシーを作成するプロジェクトの ID を特定します。
openstack project list
$ openstack project listCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
前の手順のプロジェクト ID を使用して、プロジェクトの QoS ポリシーを作成します。
- 例
この例では、
adminプロジェクトにqos-web-serversという名前の QoS ポリシーが作成されます。openstack network qos policy create --project 98a2f53c20ce4d50a40dac4a38016c69 qos-web-servers
openstack network qos policy create --project 98a2f53c20ce4d50a40dac4a38016c69 qos-web-serversCopy to Clipboard Copied! Toggle word wrap Toggle overflow
DSCP ルールを作成し、それをポリシーに適用します。
- 例
この例では、DSCP ルールは DSCP マーク
18を使用して作成され、qos-web-serversポリシーに適用されます。openstack network qos rule create --type dscp-marking --dscp-mark 18 qos-web-servers
openstack network qos rule create --type dscp-marking --dscp-mark 18 qos-web-serversCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
ルールに割り当てられている DSCP 値を変更できます。
- 例
この例では、
qos-web-serversポリシーのルールd7f976ec-7fab-4e60-af70-f59bf88198e6の DSCP マーク値が 22 に変更されます。openstack network qos rule set --dscp-mark 22 qos-web-servers d7f976ec-7fab-4e60-af70-f59bf88198e6
$ openstack network qos rule set --dscp-mark 22 qos-web-servers d7f976ec-7fab-4e60-af70-f59bf88198e6Copy to Clipboard Copied! Toggle word wrap Toggle overflow
DSCP ルールを削除できます。
- 例
この例では、
qos-web-serversポリシーの DSCP ルールd7f976ec-7fab-4e60-af70-f59bf88198e6が削除されます。openstack network qos rule delete qos-web-servers d7f976ec-7fab-4e60-af70-f59bf88198e6
$ openstack network qos rule delete qos-web-servers d7f976ec-7fab-4e60-af70-f59bf88198e6Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
QoS ポリシーに DSCP ルールが適用されていることを確認します。
- 例
-
DSCP ルール (
d7f976ec-7fab-4e60-af70-f59bf88198e6) が QoS ポリシー (qos-web-servers) に適用されていることを確認します。
openstack network qos rule list qos-web-servers
$ openstack network qos rule list qos-web-serversCopy to Clipboard Copied! Toggle word wrap Toggle overflow +
- 出力例
+-----------+--------------------------------------+ | dscp_mark | id | +-----------+--------------------------------------+ | 18 | d7f976ec-7fab-4e60-af70-f59bf88198e6 | +-----------+--------------------------------------+
+-----------+--------------------------------------+ | dscp_mark | id | +-----------+--------------------------------------+ | 18 | d7f976ec-7fab-4e60-af70-f59bf88198e6 | +-----------+--------------------------------------+Copy to Clipboard Copied! Toggle word wrap Toggle overflow
9.6. Networking サービス RBAC を使用したプロジェクトへの QoS ポリシーの適用 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenStack Platform (RHOSP) Networking サービス (neutron) を使用すると、サービス品質 (QoS) ポリシー用のロールベースのアクセス制御 (RBAC) を追加できます。その結果、個々のプロジェクトに QoS ポリシーを適用できます。
前提条件
- 1 つ以上の QoS ポリシーを使用できる。
手順
特定の QoS ポリシーに関連付けられた RHOSP Networking サービス RBAC ポリシーを作成し、特定のプロジェクトに割り当てます。
openstack network rbac create --type qos_policy --target-project \ <project_name | project_ID> --action access_as_shared \ <QoS_policy_name | QoS_policy_ID>
$ openstack network rbac create --type qos_policy --target-project \ <project_name | project_ID> --action access_as_shared \ <QoS_policy_name | QoS_policy_ID>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 例
たとえば、
bw-limiterという名前の優先度の低いネットワークトラフィックを許可する QoS ポリシーがあるとします。RHOSP Networking サービスの RBAC ポリシーを使用して、特定のプロジェクトに QoS ポリシーを適用できます。openstack network rbac create --type qos_policy --target-project 80bf5732752a41128e612fe615c886c6 --action access_as_shared bw-limiter
$ openstack network rbac create --type qos_policy --target-project 80bf5732752a41128e612fe615c886c6 --action access_as_shared bw-limiterCopy to Clipboard Copied! Toggle word wrap Toggle overflow
第10章 ブリッジマッピングの設定 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenStack Platform (RHOSP) では、ブリッジマッピングは物理ネットワーク名 (インターフェイスラベル) を Modular Layer 2 プラグインメカニズムドライバーの Open vSwitch (OVS) または Open Virtual Network (OVN) で作成されたブリッジに関連付けます。RHOSP Networking サービス (neutron) は、ブリッジマッピングを使用して、プロバイダーのネットワークトラフィックが物理ネットワークに到達できるようにします。
このセクションに含まれるトピックは次のとおりです。
10.1. ブリッジマッピングの概要 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenStack Platform (RHOSP) Networking サービス (neutron) では、ブリッジマッピングを使用して、プロバイダーのネットワークトラフィックが物理ネットワークに到達できるようにします。トラフィックはルーターの qg-xxx インターフェイスからプロバイダーネットワークを離れ、中間ブリッジ (br-int) に到着します。
データパスの次の部分は、展開で使用するメカニズムドライバーによって異なります。
-
ML2/OVS:
br-intとbr-exの間のパッチポートにより、トラフィックはプロバイダーネットワークのブリッジを通過し、物理ネットワークに出ます。 - ML2/OVN: ネットワーキングサービスは、ハイパーバイザーにバインドされた VM があり、VM がポートを必要とする場合にのみ、ハイパーバイザーにパッチポートを作成します。
ルーターがスケジュールされているネットワークノードに、ブリッジマッピングを設定します。ルータートラフィックは、正しい物理ネットワーク (プロバイダーネットワーク) を使用して外部に送信されます。
Networking サービスは、各物理ネットワークに対して 1 つのブリッジのみをサポートします。同じブリッジに複数の物理ネットワークをマッピングしないでください。
10.2. トラフィックの流れ リンクのコピーリンクがクリップボードにコピーされました!
それぞれの外部ネットワークは内部 VLAN ID で表され、ルーターの qg-xxx ポートにタグ付けされます。パケットが phy-br-ex に到達すると、br-ex ポートは VLAN タグを取り除き、このパケットを物理インターフェイス、その後に外部ネットワークに移動します。
外部ネットワークからのリターンパケットは br-ex に到達し、phy-br-ex <-> int-br-ex を使用して br-int に移動します。パケットが br-ex から br-int に移動するとき、パケットの外部 VLAN ID は br-int の内部 VLAN タグに置き換えられ、これにより qg-xxx はパケットを受け入れることができます。
出力パケットの場合、パケットの内部 VLAN タグは、br-ex (または NeutronNetworkVLANRanges パラメーターで定義された外部ブリッジ) で外部 VLAN タグに置き換えられます。
10.3. ブリッジマッピングの設定 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenStack Platform (RHOSP) Networking サービス (neutron) がプロバイダーのネットワークトラフィックを物理ネットワークに接続するために使用するブリッジマッピングを変更するには、必要な heat パラメーターを変更して、オーバークラウドを再デプロイします。
前提条件
-
の下にあるホストに
stackユーザーとしてアクセスできる必要があります。 - ルーターがスケジュールされているネットワークノードに、ブリッジマッピングを設定する必要があります。
- また、Compute ノードのブリッジマッピングを設定する必要もあります。
手順
- アンダークラウドホストに stack ユーザーとしてログインします。
source コマンドでアンダークラウドの認証情報ファイルを読み込みます。
source ~/stackrc
$ source ~/stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow カスタム YAML 環境ファイルを作成します。
例
vi /home/stack/templates/my_bridge_mappings.yaml
$ vi /home/stack/templates/my_bridge_mappings.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow ご自分の環境ファイルには、
parameter_defaultsというキーワードを含める必要があります。parameter_defaultsキーワードの後に、サイトに適した値を持つNeutronBridgeMappingsheat パラメーターを追加します。- 例
この例では、
NeutronBridgeMappingsパラメーターは、物理名datacentreとtenant、ブリッジbr-exとbr-tenant をそれぞれ関連付けます。parameter_defaults: NeutronBridgeMappings: "datacentre:br-ex,tenant:br-tenant"
parameter_defaults: NeutronBridgeMappings: "datacentre:br-ex,tenant:br-tenant"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記NeutronBridgeMappingsパラメーターを使用しないと、デフォルトではホストの外部ブリッジ (br-ex) を物理名 (datacentre) にマッピングします。
フラットネットワークを使用している場合は、
NeutronFlatNetworksパラメーターを使用してその名前を追加します。- 例
この例では、パラメーターは物理名
datacentreをブリッジbr-exに関連付け、物理名tenantをブリッジ br-tenant に関連付けます。parameter_defaults: NeutronBridgeMappings: "datacentre:br-ex,tenant:br-tenant" NeutronFlatNetworks: "my_flat_network"
parameter_defaults: NeutronBridgeMappings: "datacentre:br-ex,tenant:br-tenant" NeutronFlatNetworks: "my_flat_network"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記NeutronFlatNetworksパラメーターが使用されていない場合、デフォルトはdatacentreです。
VLAN ネットワークを使用している場合は、
NeutronNetworkVLANRangesパラメーターを使用して、アクセスする VLAN の範囲とともにネットワーク名を指定します。- 例
この例では、
NeutronNetworkVLANRangesパラメーターは、tenantネットワークの VLAN 範囲を1 - 1000で指定します。parameter_defaults: NeutronBridgeMappings: "datacentre:br-ex,tenant:br-tenant" NeutronNetworkVLANRanges: "tenant:1:1000"
parameter_defaults: NeutronBridgeMappings: "datacentre:br-ex,tenant:br-tenant" NeutronNetworkVLANRanges: "tenant:1:1000"Copy to Clipboard Copied! Toggle word wrap Toggle overflow
コア heat テンプレート、環境ファイル、およびこの新しいカスタム環境ファイルを指定して、deployment コマンドを実行します。
openstack overcloud deploy --templates \ -e <your_environment_files> \ -e /home/stack/templates/my_bridge_mappings.yaml
$ openstack overcloud deploy --templates \ -e <your_environment_files> \ -e /home/stack/templates/my_bridge_mappings.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の手順を実行します。
- ネットワークの VLAN 範囲を使用して、対応する外部ネットワークを表すプロバイダーネットワークを作成します。(neutron プロバイダーネットワークまたは Floating IP ネットワークを作成する際には、物理名を使用します。)
- ルーターインターフェイスを使用して、外部ネットワークをプロジェクトネットワークに接続します。
10.4. OVS ブリッジマッピングのメンテナンス リンクのコピーリンクがクリップボードにコピーされました!
OVS ブリッジマッピングを削除したら、引き続きクリーンアップ操作を行い、ブリッジ設定から関連付けられたパッチポートのエントリーが消去されている状態にする必要があります。この操作は以下の手順により実施することができます。
- 手動ポートクリーンアップ: 不要なパッチポートを慎重に削除する必要があります。ネットワーク接続を停止する必要はありません。
- 自動ポートクリーンアップ: クリーンアップが自動で実行されますが、ネットワーク接続を停止する必要があります。また、必要なブリッジマッピングを再度追加する必要があります。ネットワーク接続の停止を許容できる場合には、計画的なメンテナンス期間中にこのオプションを選択します。
OVN ブリッジマッピングが削除されると、OVN コントローラーは自動的に関連付けられたパッチポートのクリーンアップを行います。
10.4.1. OVS パッチポートの手動クリーンアップ リンクのコピーリンクがクリップボードにコピーされました!
OVS ブリッジマッピングを削除したら、関連付けられたパッチポートも削除する必要があります。
前提条件
- クリーンアップを行うパッチポートは、Open Virtual Switch (OVS) ポートでなければなりません。
- パッチポートの手動クリーンアップを行うのに、システムを停止する必要は ありません。
クリーンアップを行うパッチポートは、命名規則により特定することができます。
-
br-$external_bridgeでは、パッチポートはphy-<external bridge name>と命名されます (例: phy-br-ex2)。 -
br-intでは、パッチポートはint-<external bridge name>と命名されます (例:int-br-ex2)。
-
手順
ovs-vsctlを使用して、削除したブリッジマッピングのエントリーに関連付けられた OVS パッチポートを削除します。ovs-vsctl del-port br-ex2 datacentre ovs-vsctl del-port br-tenant tenant
$ ovs-vsctl del-port br-ex2 datacentre $ ovs-vsctl del-port br-tenant tenantCopy to Clipboard Copied! Toggle word wrap Toggle overflow neutron-openvswitch-agentを再起動します。service neutron-openvswitch-agent restart
$ service neutron-openvswitch-agent restartCopy to Clipboard Copied! Toggle word wrap Toggle overflow
10.4.2. OVS パッチポートの自動クリーンアップ リンクのコピーリンクがクリップボードにコピーされました!
OVS ブリッジマッピングを削除したら、関連付けられたパッチポートも削除する必要があります。
OVN ブリッジマッピングが削除されると、OVN コントローラーは自動的に関連付けられたパッチポートのクリーンアップを行います。
前提条件
- クリーンアップを行うパッチポートは、Open Virtual Switch (OVS) ポートでなければなりません。
-
neutron-ovs-cleanupコマンドでパッチポートの自動クリーンアップを行うと、ネットワーク接続が停止します。したがって、この操作は計画的なメンテナンス期間中にのみ実施する必要があります。 -
--ovs_all_portsフラグを使用してbr-intから全パッチポートを削除すると、br-tunからトンネルエンドが、またブリッジ間からはパッチポートがクリーンアップされます。 -
neutron-ovs-cleanupコマンドは、すべての OVS ブリッジから全パッチポート (インスタンス、qdhcp/qrouter 等) を抜線します。
手順
--ovs_all_portsフラグを指定してneutron-ovs-cleanupコマンドを実行します。重要このステップを実施すると、ネットワーク接続が完全に停止されます。
/usr/bin/neutron-ovs-cleanup
$ /usr/bin/neutron-ovs-cleanup --config-file /etc/neutron/plugins/ml2/openvswitch_agent.ini --log-file /var/log/neutron/ovs-cleanup.log --ovs_all_portsCopy to Clipboard Copied! Toggle word wrap Toggle overflow オーバークラウドを再デプロイして接続を回復します。
openstack overcloud deployコマンドを再実行すると、ブリッジマッピングの値が再適用されます。注記再起動後、OVS エージェントは bridge_mappings に存在しない接続に干渉しません。したがって、
br-intがbr-ex2に接続され、br-ex2にフローがある場合、bridge_mappings 設定からbr-intを削除しても、OVS エージェントまたはノードの再起動時に 2 つのブリッジが切断されることはありません。
第11章 VLAN 対応のインスタンス リンクのコピーリンクがクリップボードにコピーされました!
11.1. VLAN トランクおよび VLAN 透過ネットワーク リンクのコピーリンクがクリップボードにコピーされました!
VM インスタンスは、単一の仮想 NIC を使用して、VLAN タグ付けされたトラフィックを送受信することができます。このことは、特に VLAN タグ付けされたトラフィックを想定する NFV アプリケーション (VNF) に役立ちます。単一の仮想 NIC で複数の顧客/サービスに対応することができるためです。
ML2/OVN のデプロイメントでは、VLAN 透過ネットワークを使用して VLAN 対応のインスタンスをサポートすることができます。これとは別に、ML2/OVN または ML2/OVS のデプロイメントでは、トランクを使用して VLAN 対応のインスタンスをサポートすることができます。
VLAN 透過ネットワークでは、仮想マシンインスタンスで VLAN タグ付けを設定します。VLAN タグはネットワークを通じて転送され、同じ VLAN のインスタンスにより消費され、他のインスタンスやデバイスでは無視されます。VLAN 透過ネットワークでは、VLAN はインスタンスで管理されます。OpenStack Networking サービス (neutron) で VLAN を設定する必要はありません。
VLAN トランクは、複数の VLAN を 1 つのトランクポートに結び付けて、VLAN 対応のインスタンスをサポートします。たとえば、プロジェクトのデータネットワークは VLAN またはトンネリング (VXLAN、GRE、または Geneve) の分割を使用できますが、インスタンスからは VLAN ID がタグ付けされたトラフィックが見えます。ネットワークパケットは、ネットワーク全体でタグ付けされる必要はなく、インスタンスに注入される直前にタグ付けされます。
特定の機能について、VLAN 透過ネットワークと VLAN トランクの比較を以下の表にまとめます。
| 透過 | トランク | |
|---|---|---|
| メカニズムドライバーのサポート | ML2/OVN | ML2/OVN、ML2/OVS |
| VLAN 設定の管理 | 仮想マシンインスタンスによる | OpenStack Networking サービス (neutron) による |
| IP 割り当て | 仮想マシンインスタンスでの設定 | DHCP による割り当て |
| VLAN ID | 柔軟。インスタンスで VLAN ID を設定することが可能。 | 固定。インスタンスは、トランクで設定した VLAN ID を使用する必要がある。 |
11.2. ML2/OVN デプロイメントでの VLAN 透過性の有効化 リンクのコピーリンクがクリップボードにコピーされました!
仮想マシン (VM) インスタンス間で VLAN タグ付けされたトラフィックを送信する必要がある場合は、VLAN の透過性を有効にします。VLAN 透過ネットワークでは、neutron で VLAN を設定するのではなく、直接仮想マシンで設定することができます。
前提条件
- メカニズムドライバーとして ML2/OVN を使用する Red Hat OpenStack Platform 16.1 以降のデプロイメント
- 種別 VLAN または Geneve のプロバイダーネットワーク。フラット種別のプロバイダーネットワークのデプロイメントでは、VLAN の透過性を使用しないでください。
- 両方の VLAN において、外部スイッチが ethertype 0x8100 を使用する 802.1q VLAN スタックをサポートするようにします。OVN VLAN の透過性は、0x88A8 または 0x9100 に設定された外部プロバイダー VLAN ethertype を使用する 802.1ad QinQ をサポートしません。
- RHOSP 管理者権限が必要です。
手順
- アンダークラウドホストに stack ユーザーとしてログインします。
stackrc アンダークラウド認証情報ファイルを入手します。
source ~/stackrc
$ source ~/stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow アンダークラウドノードの環境ファイルで、
EnableVLANTransparencyパラメーターをtrueに設定します。たとえば、次の行をovn-extras.yamlに追加します。parameter_defaults: EnableVLANTransparency: trueparameter_defaults: EnableVLANTransparency: trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow この環境ファイルをご自分の環境に該当するその他の環境ファイルと共に
openstack overcloud deployコマンドに追加して、オーバークラウドをデプロイします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow <other_overcloud_environment_files>を既存のデプロイメントに含まれる環境ファイルのリストに置き換えます。--transparent-vlan引数を使用してネットワークを作成します。- 例
openstack network create network-name --transparent-vlan
$ openstack network create network-name --transparent-vlan
参加するそれぞれの仮想マシンに VLAN インターフェイスを設定します。
VLAN の透過性に必要な追加のタグ付けに対応するために、インターフェイスの MTU を下層のネットワークの MTU より 4 バイト少ない値に設定します。たとえば、下層のネットワークの MTU が 1500 の場合は、インターフェイスの MTU を 1496 に設定します。
次のコマンド例では、MTU が 1496 の VLAN インターフェイスを
eth0に追加します。VLAN は 50 で、インターフェイス名はvlan50です。- 例
ip link add link eth0 name vlan50 type vlan id 50 mtu 1496 ip link set vlan50 up ip addr add 192.128.111.3/24 dev vlan50
$ ip link add link eth0 name vlan50 type vlan id 50 mtu 1496
$ ip link set vlan50 up
$ ip addr add 192.128.111.3/24 dev vlan50
手順 4 で仮想マシン内の VLAN インターフェイス上に作成した IP アドレスとして、次のいずれかを選択します。
仮想マシンポートに許可されたアドレスペアを設定します。
- 例
次の例では、
192.128.111.3を使用し、オプションで MAC アドレス00:40:96:a8:45:c4を追加することにより、ポートfv82gwk3-qq2e-yu93-go31-56w7sf476mm0に許可されたアドレスペアを設定します。openstack port set --allowed-address \ ip-address=192.128.111.3,mac-address=00:40:96:a8:45:c4 \ fv82gwk3-qq2e-yu93-go31-56w7sf476mm0
$ openstack port set --allowed-address \ ip-address=192.128.111.3,mac-address=00:40:96:a8:45:c4 \ fv82gwk3-qq2e-yu93-go31-56w7sf476mm0Copy to Clipboard Copied! Toggle word wrap Toggle overflow
ポートのポートセキュリティーを無効にします。
ポートセキュリティーを無効にすることは、許可されたアドレスペアの可能な組み合わせをすべてリストすることができない場合の実用的な代替手段となります。
- 例
次の例では、ポート
fv82gwk3-qq2e-yu93-go31-56w7sf476mm0のポートセキュリティーを無効にします。openstack port set --no-security-group \ --disable-port-security \ fv82gwk3-qq2e-yu93-go31-56w7sf476mm0
$ openstack port set --no-security-group \ --disable-port-security \ fv82gwk3-qq2e-yu93-go31-56w7sf476mm0Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
- vlan50 の IP アドレスを使用して VLAN 上の 2 つの仮想マシン間で ping を送信します。
-
eth0でtcpdumpを使用して、VLAN タグが付いたままパケットが到達するかどうかを確認します。
11.3. トランクプラグインのレビュー リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenStack のデプロイメント時に、トランクプラグインがデフォルトで有効になっています。コントローラーノードで設定をレビューすることができます。
コントローラーノード上で、/var/lib/config-data/puppet-generated/neutron/etc/neutron/neutron.conf ファイルでトランクプラグインが有効であることを確認します。
service_plugins=router,qos,trunk
service_plugins=router,qos,trunkCopy to Clipboard Copied! Toggle word wrap Toggle overflow
11.4. トランク接続の作成 リンクのコピーリンクがクリップボードにコピーされました!
VLAN タグ付けされたトラフィック用のトランクを実装するには、親ポートを作成して、新しいポートを既存の neutron ネットワークにアタッチします。新しいポートをアタッチすると、OpenStack Networking は作成した親ポートにトランク接続を追加します。次にサブポートを作成します。これらのサブポートは VLAN とインスタンスを接続し、トランクへの接続を確立することができます。インスタンスのオペレーティングシステム内で、サブポートに関連付けられた VLAN のトラフィックをタグ付けするサブインターフェイスも作成する必要があります。
トランキングされた VLAN へのアクセスを必要とするインスタンスが含まれるネットワークを特定します。以下の例では、このネットワークは public ネットワークです。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 親のトランクポートを作成して、インスタンスの接続先ネットワークにアタッチします。以下の例では、public ネットワーク上に parent-trunk-port という名前の neutron ポートを作成します。このトランクは、サブポート の作成に使用することができるので、親 ポートです。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ステップ 2 で作成したポートを使用してトランクを作成します。以下の例では、トランクは
parent-trunkという名前です。Copy to Clipboard Copied! Toggle word wrap Toggle overflow トランクの接続を確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow トランク接続の詳細を表示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
11.5. トランクへのサブポートの追加 リンクのコピーリンクがクリップボードにコピーされました!
トランクにサブポートを追加するには、以下の手順に従います。
neutron ポートを作成します。
このポートは、トランクへのサブポート接続です。親ポートに割り当てた MAC アドレスも指定する必要があります。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記HttpException: Conflictのエラーが発生した場合には、親のトランクポートのあるネットワークとは異なるネットワークで、サブポートを作成していることを確認してください。この例では、親トランクポートにパブリックネットワークを、サブポートにはプライベートネットワークを使用しています。トランク (
parent-trunk) とポートを関連付けて、VLAN ID (55) を指定します。openstack network trunk set --subport port=subport-trunk-port,segmentation-type=vlan,segmentation-id=55 parent-trunk
openstack network trunk set --subport port=subport-trunk-port,segmentation-type=vlan,segmentation-id=55 parent-trunkCopy to Clipboard Copied! Toggle word wrap Toggle overflow
11.6. トランクを使用するためのインスタンスの設定 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenStack Platform (RHOSP) Networking サービス (neutron) がサブポートに割り当てた MAC アドレスを使用するには、仮想マシンインスタンスのオペレーティングシステムを設定する必要があります。サブポートの作成ステップ中に、特定の MAC アドレスを使用するようにサブポートを設定することもできます。
前提条件
Compute ノードのライブマイグレーションを実行している場合は、RHOSP Networking サービスの RPC 応答タイムアウトが RHOSP デプロイメントに対して適切に設定されていることを確認します。RPC のレスポンスタイムアウト値はサイトごとに異なり、システムの速度によって異なります。一般的な推奨値は、100 トランクポートごとに 120 秒以上です。
ベストプラクティスは、RHOSP デプロイメントのトランクポートバインドプロセスの時間を測定してから、RHOSP Networking サービスの RPC 応答タイムアウトを適切に設定することです。RPC のレスポンスタイムアウト値を低く維持してみてください。ただし、RHOSP Networking サービスが RPC の応答を受け取る時間を十分に取ってください。詳細は、「Networking サービスの RPC タイムアウトの設定」 を参照してください。
手順
network trunkコマンドを使用して、ネットワークトランクの設定を確認します。例
openstack network trunk list
$ openstack network trunk listCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
+ 例
+
openstack network trunk show parent-trunk
$ openstack network trunk show parent-trunk
+ 出力例:
親
port-idを仮想 NIC として使用するインスタンスを作成します。例
openstack server create --image cirros --flavor m1.tiny --security-group default --key-name sshaccess --nic port-id=20b6fdf8-0d43-475a-a0f1-ec8f757a4a39 testInstance
openstack server create --image cirros --flavor m1.tiny --security-group default --key-name sshaccess --nic port-id=20b6fdf8-0d43-475a-a0f1-ec8f757a4a39 testInstanceCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
11.7. Networking サービスの RPC タイムアウトの設定 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenStack Platform (RHOSP) Networking サービス (neutron) の RPC 応答タイムアウトを変更する必要がある場合もあります。たとえば、タイムアウト値が低すぎると、トランクポートを使用する Compute ノードのライブマイグレーションが失敗する可能性があります。
RPC のレスポンスタイムアウト値はサイトごとに異なり、システムの速度によって異なります。一般的な推奨値は、100 トランクポートごとに 120 秒以上です。
お使いのサイトでトランクポートを使用している場合、ベストプラクティスは、RHOSP デプロイメントのトランクポートバインドプロセスの時間を測定してから、RHOSP Networking サービスの RPC 応答タイムアウトを適切に設定することです。RPC のレスポンスタイムアウト値を低く維持してみてください。ただし、RHOSP Networking サービスが RPC の応答を受け取る時間を十分に取ってください。
手動の hieradata オーバーライド rpc_response_timeout を使用して、RHOSP Networking サービスの RPC 応答タイムアウト値を設定することができます。
手順
アンダークラウドホストに stack ユーザーとしてログインして、カスタム YAML 環境ファイルを作成します。
例
vi /home/stack/templates/my-modules-environment.yaml
$ vi /home/stack/templates/my-modules-environment.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow ヒントRHOSP Orchestration サービス (heat) は、テンプレートと呼ばれるプランのセットを使用して環境をインストールおよび設定します。カスタム環境ファイル を使用して、オーバークラウドの要素をカスタマイズすることができます。このファイルは、heat テンプレートをカスタマイズするための特別な種別のテンプレートです。
ExtraConfig下の YAML 環境ファイルで、rpc_response_timeoutに適切な値 (秒単位) を設定します。(デフォルト値は 60 秒です。)例
parameter_defaults: ExtraConfig: neutron::rpc_response_timeout: 120parameter_defaults: ExtraConfig: neutron::rpc_response_timeout: 120Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記RHOSP Orchestration サービス (heat) は、カスタムの環境ファイルで設定した値ですべての RHOSP ノードを更新しますが、この値は RHOSP Networking コンポーネントにのみ影響します。
コア heat テンプレート、環境ファイル、およびこの新しいカスタム環境ファイルを指定して、
openstack overcloud deployコマンドを実行します。重要後で実行される環境ファイルで定義されているパラメーターとリソースが優先されることになるため、環境ファイルの順序は重要となります。
例
openstack overcloud deploy --templates \ -e [your-environment-files] \ -e /usr/share/openstack-tripleo-heat-templates/environments/services/my-modules-environment.yaml
$ openstack overcloud deploy --templates \ -e [your-environment-files] \ -e /usr/share/openstack-tripleo-heat-templates/environments/services/my-modules-environment.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
11.8. トランクの状態について リンクのコピーリンクがクリップボードにコピーされました!
トランクの状態を以下に示します。
-
ACTIVE: トランクは想定通りに機能しており、現在要求はありません。 -
DOWN: トランクの仮想/物理リソースが同期されていません。これは、ネゴシエーション中の一時的な状態である場合があります。 -
BUILD: 要求があり、リソースがプロビジョニングされています。プロビジョニングが正常に完了すると、トランクはACTIVEに戻ります。 -
DEGRADED: プロビジョニング要求が完了しなかったため、トランクは一部のみプロビジョニングされました。サブポートを削除して操作を再試行することを推奨します。 -
ERROR: プロビジョニング要求は成功しませんでした。エラーの原因となったリソースを削除して、トランクを正常な状態に戻します。ERROR状態の間には、それ以上サブポートを追加しないでください。問題がさらに発生する原因となる可能性があります。
第12章 RBAC ポリシーの設定 リンクのコピーリンクがクリップボードにコピーされました!
12.1. RBAC ポリシーの概要 リンクのコピーリンクがクリップボードにコピーされました!
OpenStack Networking のロールベースアクセス制御 (RBAC) ポリシーにより、細かな粒度で neutron 共有ネットワークを制御することができます。OpenStack Networking は RBAC テーブルを使用してプロジェクト間における neutron ネットワークの共有を制御します。これにより、管理者はインスタンスをネットワークにアタッチする権限が付与されるプロジェクトを管理することができます。
その結果、クラウド管理者は、一部のプロジェクトからネットワーク作成機能を削除することや、逆にそのプロジェクトに対応した既存ネットワークへの接続を許可することが可能です。
12.2. RBAC ポリシーの作成 リンクのコピーリンクがクリップボードにコピーされました!
以下の手順では、ロールベースのアクセス制御 (RBAC) ポリシーを使用して、プロジェクトに共有ネットワークへのアクセスを許可する方法の実例を紹介します。
利用可能なネットワークのリストを表示します。
openstack network list
$ openstack network listCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
プロジェクトのリストを表示します。
openstack project list
$ openstack project listCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
web-serversネットワークの RBAC エントリーを作成し、auditors プロジェクト (4b0b98f8c6c040f38ba4f7146e8680f5) にアクセスを許可します。- 例
openstack network rbac create --type network --target-project 4b0b98f8c6c040f38ba4f7146e8680f5 --action access_as_shared web-servers
$ openstack network rbac create --type network --target-project 4b0b98f8c6c040f38ba4f7146e8680f5 --action access_as_shared web-serversCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
これにより、auditors プロジェクトのユーザーは、インスタンスを web-servers ネットワークに接続することができます。
12.3. RBAC ポリシーの確認 リンクのコピーリンクがクリップボードにコピーされました!
RBAC ポリシーを確認するには、以下の手順に従います。
手順
openstack network rbac listコマンドを実行して、既存のロールベースアクセス制御 (RBAC) ポリシーの ID を取得します。openstack network rbac list
$ openstack network rbac listCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
openstack network rbac-showコマンドを実行して、特定の RBAC エントリーの詳細を表示します。- 例
openstack network rbac show 314004d0-2261-4d5e-bda7-0181fcf40709
$ openstack network rbac show 314004d0-2261-4d5e-bda7-0181fcf40709Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
12.4. RBAC ポリシーの削除 リンクのコピーリンクがクリップボードにコピーされました!
RBAC ポリシーを削除するには、以下の手順に従います。
openstack network rbac listコマンドを実行して、既存のロールベースアクセス制御 (RBAC) ポリシーの ID を取得します。openstack network rbac list
$ openstack network rbac listCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
削除する RBAC の ID を指定して
openstack network rbac deleteコマンドを実行し、RBAC を削除します。- 例
openstack network rbac delete 314004d0-2261-4d5e-bda7-0181fcf40709
$ openstack network rbac delete 314004d0-2261-4d5e-bda7-0181fcf40709 Deleted rbac_policy: 314004d0-2261-4d5e-bda7-0181fcf40709Copy to Clipboard Copied! Toggle word wrap Toggle overflow
12.5. 外部ネットワークへの RBAC ポリシーアクセスの付与 リンクのコピーリンクがクリップボードにコピーされました!
--action access_as_external パラメーターを使用して、外部ネットワーク (ゲートウェイインターフェイスがアタッチされているネットワーク) へのロールベースアクセス制御 (RBAC) ポリシーによるアクセスを許可することができます。
web-servers ネットワークの RBAC を作成し、エンジニアリングプロジェクト (c717f263785d4679b16a122516247deb) にアクセスを許可するには、以下の手順例のステップを実行します。
--action access_as_externalオプションを使用して、新しい RBAC ポリシーを作成します。- 例
openstack network rbac create --type network --target-project \ c717f263785d4679b16a122516247deb --action access_as_external \ web-servers
$ openstack network rbac create --type network --target-project \ c717f263785d4679b16a122516247deb --action access_as_external \ web-serversCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 上記のコマンドを実行した結果、エンジニアリングプロジェクトのユーザーは、ネットワークの表示やそのネットワークへのインスタンスの接続が可能になります。
openstack network list
$ openstack network listCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
+--------------------------------------+-------------+------------------------------------------------------+ | id | name | subnets | +--------------------------------------+-------------+------------------------------------------------------+ | 6e437ff0-d20f-4483-b627-c3749399bdca | web-servers | fa273245-1eff-4830-b40c-57eaeac9b904 192.168.10.0/24 | +--------------------------------------+-------------+------------------------------------------------------+
+--------------------------------------+-------------+------------------------------------------------------+ | id | name | subnets | +--------------------------------------+-------------+------------------------------------------------------+ | 6e437ff0-d20f-4483-b627-c3749399bdca | web-servers | fa273245-1eff-4830-b40c-57eaeac9b904 192.168.10.0/24 | +--------------------------------------+-------------+------------------------------------------------------+Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第13章 分散仮想ルーター (DVR) の設定 リンクのコピーリンクがクリップボードにコピーされました!
13.1. 分散仮想ルーター (DVR) について リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenStack Platform をデプロイする場合、集中ルーティングモデルまたは DVR のどちらかを選択することができます。
それぞれのモデルには短所と長所があります。このセクションを使用して、集中ルーティングと DVR のどちらがよりニーズに適しているかを慎重に検討してください。
新たなデフォルトの RHOSP デプロイメントでは、DVR および Modular Layer 2 プラグインと Open Virtual Network メカニズムドライバーの組み合わせ (ML2/OVN) が使用されます。
ML2/OVS のデプロイメントでは、DVR はデフォルトで無効になっています。
13.1.1. レイヤー 3 ルーティングの概要 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenStack Platform Networking サービス (neutron) は、プロジェクトネットワークにルーティングサービスを提供します。ルーターがない場合には、プロジェクトネットワーク内の仮想マシンインスタンスは、共有 L2 ブロードキャストドメインを通じて他のインスタンスと通信することができます。ルーターを作成して、プロジェクトネットワークに割り当てると、そのネットワークのインスタンスが他のプロジェクトネットワークやアップストリームと通信することができます (外部ゲートウェイがルーターに定義されている場合)。
13.1.2. フローのルーティング リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenStack Platform (RHOSP) のルーティングサービスは主に、3 つのフローに分類できます。
- East-West ルーティング: 同じプロジェクト内の異なるネットワーク間のトラフィックのルーティング。このトラフィックは RHOSP デプロイメント外には出ません。この定義は、IPv4 と IPv6 のサブネット両方に適用されます。
- Floating IP を使用した North-South ルーティング: Floating IP のアドレス指定は 1 対 1 のネットワークアドレス変換 (NAT) で、変更およびインスタンス間の移動が可能です。Floating IP は、Floating IP と Networking サービス (neutron) ポートの間での 1 対 1 の関連付けとしてモデル化されていますが、Floating IP は NAT の変換を実行する Networking サービスルーターとの関連付けで実装されています。Floating IP 自体は、ルーターに外部接続を提供するアップリンクネットワークから取得されます。したがって、インスタンスと (インターネット上のエンドポイントなど) 外部のリソースとの間の通信が可能です。Floating IP は IPv4 の概念で、IPv6 には適用されません。プロジェクトが使用する IPv6 のアドレス指定は、プロジェクト全体で重複のないグローバルユニキャストアドレス (GUA) を使用することが前提であるため、NAT なしにルーティングが可能です。
- Floating IP なしの North-South ルーティング (別名: SNAT): Networking サービスは、Floating IP が割り当てられていないインスタンスに、デフォルトのポートアドレス変換 (PAT) サービスを提供します。このサービスを使用すると、インスタンスはルーター経由で外部のエンドポイントと通信ができますが、外部のエンドポイントからはインスタンスへは通信ができません。たとえば、インスタンスはインターネット上の Web サイトにアクセスすることができますが、外部の Web ブラウザーはこのインスタンス内でホストされている Web サイトにアクセスすることができません。SNAT は、IPv4 トラフィックにのみ適用されます。さらに、GUA 接頭辞が割り当てられた Networking サービスのネットワークでは、外部にアクセスするために Networking サービスルーターの外部ゲートウェイポート上に NAT は必要ありません。
13.1.3. 集中ルーティング リンクのコピーリンクがクリップボードにコピーされました!
Networking サービス (neutron) は当初、集中ルーティングモデルで設計されました。このモデルでは、neutron L3 エージェントで管理されるプロジェクトの仮想ルーターはすべて専用のノードまたはデプロイ、導入ノードのクラスター (ネットワークノードまたはコントローラーノード) にデプロイされます。したがって、ルーティングの機能が必要となる度に (East/West、Floating IP または SNAT)、トラフィックはトポロジー内の専用のノードを経由します。そのため、複数の課題が発生し、トラフィックフローは最適な状態ではありませんでした。以下に例を示します。
- コントローラーノード経由で伝送されるインスタンス間のトラフィック: L3 を使用して 2 つのインスタンス間で通信する必要がある場合に、トラフィックはコントローラーノードを経由する必要があります。同じ Compute ノードでインスタンスがそれぞれスケジューリングされている場合でも、トラフィックは Compute ノードを離れてからコントローラーを通過して、Compute ノードに戻ってくる必要があります。このことが、パフォーマンスに悪影響を与えます。
- コントローラーノード経由でパケットを送受信するインスタンス (Floating IP を使用): 外部ネットワークのゲートウェイインターフェイスはコントローラーノードでのみ利用できるので、トラフィックはインスタンスから開始される場合でも、外部ネットワークにあるインスタンスを宛先とする場合でも、トラフィックはコントローラーノードを経由する必要があります。その結果、大規模な環境では、コントローラーノードにかかるトラフィックの負荷が高くなります。そのため、パフォーマンスやスケーラビリティーに影響を及ぼします。また、外部ネットワークのゲートウェイインターフェイスで十分な帯域幅を確保できるように慎重に計画する必要があります。SNAT トラフィックにも同じ要件が適用されます。
L3 エージェントのスケーリングを改善するには、Networking サービスで複数のノードに仮想ルーターを分散する L3 HA の機能を使用することができます。コントローラーノードが失われた場合には、HA ルーターは別のノードのスタンバイにフェイルオーバーして、HA ルーターのフェイルオーバーが完了するまではパケットが失われます。
13.2. DVR の概要 リンクのコピーリンクがクリップボードにコピーされました!
分散仮想ルーティング (DVR) は、集中ルーティングとは別のルーティング設計を提供します。DVR は、Controller ノードの障害のあるドメインを分離して、L3 エージェントをデプロイしてネットワークトラフィックを最適化し、全 Compute ノードにルーターをスケジューリングします。DVR には以下の特徴があります。
- East-West トラフィックは分散されて、Compute ノード上で直接ルーティングされます。
- Floating IP を持つインスタンスの North-South トラフィックは、分散されて、Compute ノードにルーティングされます。そのためには、外部ネットワークを全 Compute ノードに接続する必要があります。
- Floating IP を持たないインスタンスの North-South トラフィックは分散されず、依然として専用のコントローラーノードが必要です。
-
ノードが SNAT トラフィックだけに対応するように、コントローラーノード上の L3 エージェントは
dvr_snatモードを使用します。 - neutron のメタデータエージェントは分散され、全 Compute ノード上にデプロイされます。このメタデータのプロキシーサービスは、すべての分散ルーター上でホストされます。
13.3. DVR に関する既知の問題および注意 リンクのコピーリンクがクリップボードにコピーされました!
DVR の既知の問題と注意事項を以下に示します。
- DVR のサポートは、ML2 のコアプラグインと Open vSwitch (OVS) メカニズムドライバーの組み合わせまたは ML2/OVN メカニズムドライバーに制限されます。他のバックエンドはサポートされません。
- ML2/OVS DVR のデプロイメントでは、Red Hat OpenStack Platform Load-balancing サービス (octavia) のネットワークトラフィックは、コンピュートノードではなく Controller ノードおよびネットワークノードを通過します。
ML2/OVS メカニズムドライバーネットワークバックエンドおよび DVR を使用すると、仮想 IP を作成することができます。ただし、
allowed_address_pairsを使用するバインドポートに割り当てられる IP アドレスは、仮想ポートの IP アドレス (/32) と一致する必要があります。バインドポート
allowed_address_pairsに CIDR 形式の IP アドレスを使用する場合には、ポート転送はバックエンドで設定されず、バインドされた IP ポートに到達できる必要のある CIDR の IP でトラフィックが失敗します。- DVR が有効であっても、SNAT (送信元ネットワークアドレス変換) トラフィックは分散されません。SNAT は機能しますが、すべての送信/受信トラフィックは中央のコントローラーノードを経由する必要があります。
ML2/OVS デプロイメントでは、DVR が有効な場合でも IPv6 トラフィックは分散されません。すべての送信/受信トラフィックは、中央のコントローラーノードを通過します。ML2/OVS と共に IPv6 ルーティングを広範囲に渡って使用する場合は、DVR を使用しないでください。
ML2/OVN デプロイメントでは、すべての East/West トラフィックは常に分散され、North/South トラフィックは DVR が設定されている場合に分散される点に注意してください。
-
ML2/OVS デプロイメントでは、DVR は、L3 HA を使用する場合にはサポートされません。Red Hat OpenStack Platform 17.1 director で DVR を使用すると、L3 HA は無効になります。つまり、ルーターはこれまでどおりネットワークノードでスケジューリングされ (また L3 エージェント間で負荷が共有され) ますが、エージェントの 1 つが機能しなくなると、このエージェントがホストするすべてのルーターも機能しなくなります。この影響を受けるのは SNAT トラフィックだけです。このような場合には、1 つのネットワークノードに障害が発生してもルーターが別のノードに再スケジュールされるように、
allow_automatic_l3agent_failover機能を使用することが推奨されます。 - ML2/OVS 環境の場合、DHCP サーバーは分散されず、Controller ノードにデプロイされます。DHCP サーバーを管理する ML2/OVS neutron DCHP エージェントは、ルーティング設計 (集中ルーティングまたは DVR) に関係なく、高可用性設定で Controller ノードにデプロイされます。
- Compute ノードには、外部ブリッジに接続された外部ネットワーク上のインターフェイスが必要です。このインターフェイスを使用して、外部ルーターゲートウェイの VLAN またはフラットネットワークに接続し、Floating IP をホストし、Floating IP を使用する VM の SNAT を実行します。
- ML2/OVS のデプロイメントでは、各 Compute ノードに追加の IP アドレスが 1 つ必要です。これは、外部ゲートウェイポートの実装と Floating IP ネットワークの名前空間が原因です。
- プロジェクトデータの分離において、VLAN、GRE、VXLAN のすべてがサポートされます。GRE または VXLAN を使用する場合は、L2 Population 機能を有効にする必要があります。Red Hat OpenStack Platform director は、インストール時に L2 Population を強制的に有効にします。
13.4. サポートされているルーティングアーキテクチャー リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenStack Platform (RHOSP) は、以下にリストされている RHOSP バージョンで、集中型の高可用性 (HA) ルーティングと分散仮想ルーター (DVR) の両方をサポートします。
- RHOSP 集中型 HA ルーティングサポートは、RHOSP 8 で開始されました。
- RHOSP 分散ルーティングのサポートは RHOSP12 で開始されました。
13.5. 集中ルーティングから分散ルーティングへの移行 リンクのコピーリンクがクリップボードにコピーされました!
このセクションでは、L3 HA 集中ルーティングを使用する Red Hat OpenStack Platform デプロイメントの分散ルーティングへのアップグレードを説明します。
手順
- デプロイメントをアップグレードして、正しく機能していることを確認します。
- director のスタック更新を実行して DVR を設定します。
- 既存のルーターでルーティングが正常に機能していることを確認します。
- L3 HA ルーターを直接 分散型 に移行することはできません。代わりに、各ルーターで L3 HA オプションを無効にしてから、分散型のオプションを有効にします。
ルーターを無効にします。
例
openstack router set --disable router1
$ openstack router set --disable router1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 高可用性の設定を無効にします。
例
openstack router set --no-ha router1
$ openstack router set --no-ha router1Copy to Clipboard Copied! Toggle word wrap Toggle overflow ルーターが DVR を使用するように設定します。
例
openstack router set --distributed router1
$ openstack router set --distributed router1Copy to Clipboard Copied! Toggle word wrap Toggle overflow ルーターを有効にします。
例
openstack router set --enable router1
$ openstack router set --enable router1Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 分散ルーティングが正常に機能していることを確認します。
13.6. 分散仮想ルーター (DVR) が無効になっている ML2/OVN OpenStack のデプロイ リンクのコピーリンクがクリップボードにコピーされました!
Open Virtual Network メカニズムドライバー (ML2/OVN) および DVR を使用する neutron Modular Layer 2 プラグインに、新たな Red Hat OpenStack Platform (RHOSP) デプロイメントのデフォルト。
DVR トポロジーでは、Floating IP アドレスを持つコンピュートノードは、仮想マシンインスタンスとルーターに外部接続 (north-south トラフィック) を提供するネットワーク間のトラフィックをルーティングします。インスタンス間のトラフィック (east-west トラフィック) も分散されます。
必要に応じて、DVR を無効にしてデプロイできます。これにより、north-south DVR が無効になり、north-south トラフィックでコントローラーまたはネットワークノードを通過する必要があります。DVR が無効であっても、east-west ルーティングは常に ML2/OVN デプロイメントで分散されます。
前提条件
- RHOSP 17.1 ディストリビューションでカスタマイズとデプロイメントの準備が完了している。
手順
カスタム環境ファイルを作成して、以下の設定を追加します。
parameter_defaults: NeutronEnableDVR: false
parameter_defaults: NeutronEnableDVR: falseCopy to Clipboard Copied! Toggle word wrap Toggle overflow この設定を適用するには、その他の環境ファイルと共にカスタム環境ファイルをスタックに追加して、オーバークラウドをデプロイします。以下に例を示します。
(undercloud) $ openstack overcloud deploy --templates \ -e [your environment files] -e /home/stack/templates/<custom-environment-file>.yaml
(undercloud) $ openstack overcloud deploy --templates \ -e [your environment files] -e /home/stack/templates/<custom-environment-file>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
第14章 IPv6 を使用したプロジェクトネットワーク リンクのコピーリンクがクリップボードにコピーされました!
14.1. IPv6 サブネットのオプション リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenStack Platform (RHOSP) プロジェクトネットワークに IPv6 サブネットを作成する場合、アドレスモードおよびルーター広告モードを指定して、以下の表に示す特定の結果を得ることができます。
ML2/OVN デプロイメントでは、RHOSP は外部エンティティーからの IPv6 接頭辞の委譲をサポートしません。外部接頭辞委譲ルーターからグローバルユニキャストアドレス接頭辞を取得し、IPv6 サブネットの作成時に subnet-range 引数を使用して設定する必要があります。
以下に例を示します。
| RA モード | アドレスモード | 結果 |
|---|---|---|
| ipv6_ra_mode=not set | ipv6-address-mode=slaac | インスタンスは、ステートレスアドレス自動設定 (SLAAC) を使用して外部ルーター (OpenStack Networking で管理されていないルーター) から IPv6 アドレスを受信します。 注記 OpenStack Networking は、SLAAC には EUI-64 IPv6 アドレスの割り当てのみをサポートします。これにより、ホストは Base 64 ビットと MAC アドレスに基づいて自らアドレスを割り当てるため、IPv6 ネットワークが簡素化されます。異なるネットマスクおよび SLAAC の address_assign_type を使用してサブネットを作成することはできません。 |
| ipv6_ra_mode=not set | ipv6-address-mode=dhcpv6-stateful | インスタンスは、DHCPv6 stateful を使用して、OpenStack Networking (dnsmasq) から IPv6 アドレスとオプションの情報を受信します。 |
| ipv6_ra_mode=not set | ipv6-address-mode=dhcpv6-stateless | インスタンスは、SLAAC を使用して外部ルーターから IPv6 アドレスを受信し、DHCPv6 stateless を使用して OpenStack Networking (dnsmasq) からオプションの情報を受信します。 |
| ipv6_ra_mode=slaac | ipv6-address-mode=not-set | インスタンスは、SLAAC を使用して OpenStack Networking (radvd) から IPv6 アドレスを受信します。 |
| ipv6_ra_mode=dhcpv6-stateful | ipv6-address-mode=not-set | インスタンスは、DHCPv6 stateful を使用して、外部の DHCPv6 サーバーから IPv6 アドレスとオプションの情報を受信します。 |
| ipv6_ra_mode=dhcpv6-stateless | ipv6-address-mode=not-set | インスタンスは、SLAAC を使用して OpenStack Networking (radvd) から IPv6 アドレスを受信し、DHCPv6 stateless を使用して外部 DHCPv6 サーバーからオプションの情報を受信します。 |
| ipv6_ra_mode=slaac | ipv6-address-mode=slaac | インスタンスは、SLAAC を使用して OpenStack Networking (radvd) から IPv6 アドレスを受信します。 |
| ipv6_ra_mode=dhcpv6-stateful | ipv6-address-mode=dhcpv6-stateful | インスタンスは、DHCPv6 stateful を使用して OpenStack Networking (dnsmasq) から IPv6 アドレスを受信し、DHCPv6 stateful を使用して OpenStack Networking (dnsmasq) からオプションの情報を受信します。 |
| ipv6_ra_mode=dhcpv6-stateless | ipv6-address-mode=dhcpv6-stateless | インスタンスは、SLAAC を使用して OpenStack Networking (radvd) から IPv6 アドレスを受信し、DHCPv6 stateless を使用して OpenStack Networking (dnsmasq) からオプションの情報を受信します。 |
14.2. ステートフル DHCPv6 を使用した IPv6 サブネットの作成 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenStack Platform (RHOSP) プロジェクトネットワークに IPv6 サブネットを作成することができます。
たとえば、QA という名前のプロジェクトの database-servers という名前のネットワークに、ステートフル DHCPv6 を使用して IPv6 サブネットを作成することができます。
手順
IPv6 サブネットを作成するプロジェクトのプロジェクト ID を取得します。
openstack project list
$ openstack project listCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
OpenStack Networking (neutron) 内の全ネットワークのリストを取得し、IPv6 サブネットをホストするネットワークの名前を書き留めておきます。
openstack network list
$ openstack network listCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
openstack subnet createコマンドで、プロジェクト ID、ネットワーク名、および ipv6 アドレスモードを指定します。openstack subnet create --ip-version 6 --ipv6-address-mode \ dhcpv6-stateful --project 25837c567ed5458fbb441d39862e1399 \ --network database-servers --subnet-range fdf8:f53b:82e4::53/125 \ subnet_name
$ openstack subnet create --ip-version 6 --ipv6-address-mode \ dhcpv6-stateful --project 25837c567ed5458fbb441d39862e1399 \ --network database-servers --subnet-range fdf8:f53b:82e4::53/125 \ subnet_nameCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
ネットワークの一覧を確認して、この設定を検証します。
openstack network list
$ openstack network listCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
database-servers のエントリーには新規作成された IPv6 サブネットが反映されている点に注意してください。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 結果
この設定により、QA プロジェクトの作成するインスタンスが database-servers サブネットに追加されると、DHCP IPv6 アドレスを取得できるようになります。
openstack server list
$ openstack server listCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
+--------------------------------------+------------+--------+------------+-------------+-------------------------------------+ | ID | Name | Status | Task State | Power State | Networks | +--------------------------------------+------------+--------+------------+-------------+-------------------------------------+ | fad04b7a-75b5-4f96-aed9-b40654b56e03 | corp-vm-01 | ACTIVE | - | Running | database-servers=fdf8:f53b:82e4::52 | +--------------------------------------+------------+--------+------------+-------------+-------------------------------------+
+--------------------------------------+------------+--------+------------+-------------+-------------------------------------+ | ID | Name | Status | Task State | Power State | Networks | +--------------------------------------+------------+--------+------------+-------------+-------------------------------------+ | fad04b7a-75b5-4f96-aed9-b40654b56e03 | corp-vm-01 | ACTIVE | - | Running | database-servers=fdf8:f53b:82e4::52 | +--------------------------------------+------------+--------+------------+-------------+-------------------------------------+Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第15章 プロジェクトクォータの管理 リンクのコピーリンクがクリップボードにコピーされました!
15.1. プロジェクトクォータの設定 リンクのコピーリンクがクリップボードにコピーされました!
OpenStack Networking (neutron) は、テナント/プロジェクトが作成するリソースの数を制限するクォータの使用をサポートします。
手順
/var/lib/config-data/puppet-generated/neutron/etc/neutron/neutron.conf ファイルで、さまざまなネットワークコンポーネントのプロジェクトクォータを設定することができます。
たとえば、プロジェクトが作成することのできるルーターの数を制限するには、
quota_routerの値を変更します。quota_router = 10
quota_router = 10Copy to Clipboard Copied! Toggle word wrap Toggle overflow この例では、各プロジェクトのルーター数は最大 10 に制限されます。
クォータ設定のリストは、すぐ後のセクションを参照してください。
15.2. L3 のクォータオプション リンクのコピーリンクがクリップボードにコピーされました!
レイヤー 3 (L3) ネットワークで使用できるクォータオプションを以下に示します。
- quota_floatingip: プロジェクトで利用可能な Floating IP の数
- quota_network: プロジェクトで利用可能なネットワークの数
- quota_port: プロジェクトで利用可能なポートの数
- quota_router: プロジェクトで利用可能なルーターの数
- quota_subnet: プロジェクトで利用可能なサブネットの数
- quota_vip: プロジェクトで利用可能な仮想 IP アドレスの数
15.3. ファイアウォールのクォータオプション リンクのコピーリンクがクリップボードにコピーされました!
プロジェクトファイアウォールの管理に使用できるクォータオプションを以下に示します。
- quota_firewall: プロジェクトで利用可能なファイアウォールの数
- quota_firewall_policy: プロジェクトで利用可能なファイアウォールポリシーの数
- quota_firewall_rule: プロジェクトで利用可能なファイアウォールルールの数
15.4. セキュリティーグループのクォータオプション リンクのコピーリンクがクリップボードにコピーされました!
Networking サービスクォータエンジンは、セキュリティーグループおよびセキュリティーグループルールを管理し、デフォルトのセキュリティーグループ (および IPv4 および IPv6 のすべての送信トラフィックを許可する 2 つのデフォルトのセキュリティーグループルール) を作成する前にすべてのクォータをゼロに設定することはできません。新規プロジェクトの作成時に、ネットワークまたはポートが作成されるまで、またはセキュリティーグループもしくはセキュリティーグループルールをリスト表示するまで、Networking サービスはデフォルトのセキュリティーグループを作成しません。
プロジェクトが作成することのできるセキュリティーグループ数の管理に使用できるクォータオプションを以下に示します。
- quota_security_group: プロジェクトで利用可能なセキュリティーグループの数
- quota_security_group_rule: プロジェクトで利用可能なセキュリティーグループルールの数
15.5. 管理用のクォータオプション リンクのコピーリンクがクリップボードにコピーされました!
管理者がプロジェクトのクォータを管理する際に使用できる追加のオプションを以下に示します。
- default_quota*: プロジェクトで利用可能なデフォルトのリソース数
quota_health_monitor*: プロジェクトで利用可能なヘルスモニターの数
ヘルスモニターはリソースを消費しませんが、OpenStack Networking はヘルスモニターをリソースのコンシューマーとみなすため、クォータオプションが利用可能です。
quota_member: プロジェクトで利用可能なプールメンバーの数
プールメンバーはリソースを消費しませんが、OpenStack Networking はプールメンバーをリソースのコンシューマーとみなすため、クォータオプションが利用可能です。
- quota_pool: プロジェクトで利用可能なプールの数
第16章 ルーティング対応プロバイダーネットワークのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
16.1. ルーティング対応プロバイダーネットワークのメリット リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenStack Platform (RHOSP) では、管理者はルーティング対応プロバイダーネットワークを作成できます。ルーティング対応プロバイダーネットワークは通常エッジデプロイメントで使用され、1 つのセグメントしか持たない従来のネットワークとは異なり、複数のレイヤー 2 ネットワークセグメントに基づきます。
エンドユーザー向けには 1 つのネットワークしか表示されないので、ルーティング対応プロバイダーネットワークによりクラウドが単純化されます。管理者には、ルーティング対応プロバイダーネットワークによりスケーラビリティーおよび耐障害性が提供されます。たとえば、重大なエラーが発生した場合でも、1 つのセグメントしか影響を受けず、ネットワーク全体で障害が発生することはありません。
ルーティング対応プロバイダーネットワークが導入される前は、管理者は通常、次のアーキテクチャーのいずれかを選択する必要がありました。
- 単一の大規模レイヤー 2 ネットワーク
- 複数の小規模レイヤー 2 ネットワーク
単一の大規模レイヤー 2 ネットワークの場合、スケーリングによりネットワークが複雑になり、耐障害性が低下します (障害ドメインの数が増えます)。
複数の小規模レイヤー 2 ネットワークの場合、スケーリングへの対応は良好で障害ドメインの数は減りますが、エンドユーザーにとっては複雑になる可能性があります。
RHOSP 16.2 以降、Modular Layer 2 プラグインと Open Virtual Network メカニズムドライバーの組み合わせ (ML2/OVN) を使用して、ルーティング対応プロバイダーネットワークをデプロイできます。(ML2/Open vSwitch (OVS) および SR-IOV メカニズムドライバーに対するルーティング対応プロバイダーネットワークのサポートは、RHOSP 16.1.1 で導入されました。)
16.2. ルーティング対応プロバイダーネットワークの概要 リンクのコピーリンクがクリップボードにコピーされました!
ネットワークサブネットとセグメント間の 1 対 1 の関連付けが原因で、ルーティング対応プロバイダーネットワークは他の種別のネットワークとは異なります。以前のバージョンでは、Red Hat OpenStack (RHOSP) Networking サービスはルーティング対応プロバイダーネットワークをサポートしていませんでした。Networking サービスでは、すべてのサブネットが同じセグメントに属するか、あるいはいずれのセグメントにも属さない必要があったためです。
ルーティング対応プロバイダーネットワークでは、仮想マシン (VM) インスタンスが利用可能な IP アドレスは、特定のコンピュートノードで利用可能なネットワークのセグメントによって異なります。Networking サービスのポートは、1 つのネットワークセグメントにのみ関連付けることができます。
従来のネットワーク設定と同様に、レイヤー 2 (スイッチング) は同じネットワークセグメント上のポート間のトラフィックの移動を処理し、レイヤー 3 (ルーティング) はセグメント間のトラフィックの移動を処理します。
Networking サービスは、セグメント間のレイヤー 3 サービスを提供しません。その代わりに、サブネットをルーティングするのに物理ネットワークインフラストラクチャーに依存します。したがって、従来のプロバイダーネットワークと同様に、Networking サービスおよび物理ネットワークインフラストラクチャーには、ルーティング対応プロバイダーネットワークの設定が含まれている必要があります。
Compute スケジューラーを、ルーティングされたネットワークセグメントとのアフィニティーを持つ Compute ノードをフィルタリングするように設定できます。これにより、スケジューラーは、必要なルーティング対応プロバイダーのネットワークセグメントにある Compute ノードにのみインスタンスを配置します。
DHCP-metadata サービスが必要な場合は、それぞれのエッジサイトまたはネットワークセグメントにアベイラビリティーゾーンを定義し、ローカル DHCP エージェントがデプロイされるようにする必要があります。
16.3. ルーティング対応プロバイダーネットワークの制限 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenStack Platform でのルーティング対応プロバイダーネットワークに関する既知の制約には以下が含まれます。
- 中央 SNAT または Floating IP を使用した North-south ルーティングはサポートされません。
- SR-IOV または PCI パススルーを使用する場合、物理ネットワーク (physnet) の名前は中央サイトおよびリモートサイトまたはセグメントで同一でなければなりません。セグメント ID を再利用することはできません。
16.4. ルーティング対応プロバイダーネットワークの準備 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenStack Platform (RHOSP) でルーテッドプロバイダーネットワークを作成するには、まずネットワークの作成に必要なネットワーク情報を収集する必要があります。ネットワークセグメントを含む Compute ノードに RHOSP Networking サービス (neutron) メタデータエージェントをデプロイするカスタムロールを作成するように、オーバークラウドを設定する必要があります。ML2/OVS メカニズムドライバーを使用する環境では、メタデータエージェントに加え、Compute ノードに NeutronDhcpAgent サービスも追加する必要があります。コンピューティングスケジューラーサービスを実行しているコントローラーでは、ルーティング対応プロバイダーネットワークのスケジューリングサポートを有効にする必要があります。
前提条件
-
adminロールを持つ RHOSP ユーザーである。
手順
ルーティング対応プロバイダーネットワークを作成するネットワークの
tripleo-heat-templates/network_data.yamlファイルから VLAN ID を収集し、ルーティング対応プロバイダーネットワーク上に作成する各セグメントに一意の物理ネットワーク名を割り当てます。これにより、サブネット間で同じセグメンテーション情報を再利用できます。参照テーブルを作成して、VLAN ID、セグメント、および物理ネットワーク名の関係を可視化します。
- 例 - ルーティング対応プロバイダーネットワークセグメント定義
Expand ルーティング対応プロバイダーネットワーク VLAN ID Segment 物理ネットワーク multisegment1
128
segment1
provider1
multisegment1
129
segment2
provider2
セグメント間のルーティングを計画します。
セグメント上の各サブネットには、その特定のサブネット上のルーターインターフェイスのゲートウェイアドレスが含まれている必要があります。サブネットアドレスは、IPv4 と IPv6 の両方の形式で必要です。
- 例 - ルーティング対応プロバイダーネットワークセグメントのルーティング計画
Expand ルーティング対応プロバイダーネットワーク Segment サブネットアドレス ゲートウェイアドレス multisegment1
segment1 (IPv4)
203.0.113.0/24
203.0.113.1
multisegment1
segment1 (IPv6)
fd00:203:0:113::/64
fd00:203:0:113::1
multisegment1
segment2 (IPv4)
198.51.100.0/24
198.51.100.1
multisegment1
segment2 (IPv6)
fd00:198:51:100::/64
fd00:198:51:100::1
ルーティング対応プロバイダーネットワークでは、Compute ノードが異なるセグメントに存在している必要があります。
templates/overcloud-baremetal-deployed.yamlファイルをチェックして、ルーティング対応プロバイダーネットワーク内のすべての Compute ホストがそのセグメントのいずれかに直接接続されていることを確認します。詳細は、director を使用した Red Hat OpenStack Platform のインストールと管理 ガイドの オーバークラウドのベアメタルノードのプロビジョニング を参照してください。
NeutronMetadataAgentサービスが、そのセグメントが含まれる Compute ノードのtemplates/roles_data-custom.yamlに含まれていることを確認します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 詳細は、Red Hat OpenStack Platform デプロイメントのカスタマイズ ガイドの コンポーザブルサービスとカスタムロール を参照してください。
ML2/OVS メカニズムドライバーを使用する場合は、セグメントが含まれる Compute ノードの
templates/roles_data-custom.yamlに、NeutronMetadataAgentサービスに加えてNeutronDhcpAgentサービスも含まれていることを確認してください。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ヒント従来のプロバイダーネットワークとは異なり、DHCP エージェントはネットワーク内で複数のセグメントをサポートすることができません。ノード数を減らすために、ネットワークノードにではなくセグメントが含まれる Compute ノードに DHCP エージェントをデプロイします。
-
ルーティング対応プロバイダーネットワーク環境ファイル (
rpn_env.yamlなど) を作成します。 分離されたネットワーク上でメタデータのサポートを有効にするように DHCP を設定します。
parameter_defaults: NeutronEnableIsolatedMetadata: true
parameter_defaults: NeutronEnableIsolatedMetadata: trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow segmentsサービスプラグインがネットワークサービスにロードされていることを確認します。openstack extension list --network --max-width 80 | grep -E "Segment"
$ openstack extension list --network --max-width 80 | grep -E "Segment"Copy to Clipboard Copied! Toggle word wrap Toggle overflow segmentsプラグインがない場合は、NeutronServicePluginsパラメーターに追加します。例
parameter_defaults: NeutronEnableIsolatedMetadata: true NeutronServicePlugins: 'router,qos,segments,trunk,placement'
parameter_defaults: NeutronEnableIsolatedMetadata: true NeutronServicePlugins: 'router,qos,segments,trunk,placement'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要NeutronServicePluginsパラメーターに新しい値を追加すると、RHOSP director は、以前に宣言された値を追加する値で上書きします。したがって、segmentsを追加するときは、以前に宣言された Networking サービスプラグインも含める必要があります。ホストでインスタンスをスケジュールする前に Placement サービスでネットワークを検証するには、Compute スケジューラーサービスを実行しているコントローラー上のルーティング対応プロバイダーネットワークのスケジューリングサポートを有効にします。
例
parameter_defaults: NeutronEnableIsolatedMetadata: true NeutronServicePlugins: 'router,qos,segments,trunk,placement' NovaSchedulerQueryPlacementForRoutedNetworkAggregates: true
parameter_defaults: NeutronEnableIsolatedMetadata: true NeutronServicePlugins: 'router,qos,segments,trunk,placement' NovaSchedulerQueryPlacementForRoutedNetworkAggregates: trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow ルーティング対応プロバイダーネットワークの環境ファイルを他の環境ファイルと一緒にスタックに追加して、オーバークラウドをデプロイします。
openstack overcloud deploy --templates \ -e <your_environment_files> \ -e /home/stack/templates/rpn_env.yaml
$ openstack overcloud deploy --templates \ -e <your_environment_files> \ -e /home/stack/templates/rpn_env.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
次のステップ
16.5. ルーティング対応プロバイダーネットワークの作成 リンクのコピーリンクがクリップボードにコピーされました!
エンドユーザー向けには 1 つのネットワークしか表示されないので、ルーティング対応プロバイダーネットワークにより Red Hat OpenStack Platform (RHOSP) クラウドが単純化されます。管理者には、ルーティング対応プロバイダーネットワークによりスケーラビリティーおよび耐障害性が提供されます。
以下の手順を実施すると、2 つのネットワークセグメントを持つルーティング対応プロバイダーネットワークが作成されます。それぞれのセグメントには、1 つの IPv4 サブネットおよび 1 つの IPv6 サブネットが含まれます。
前提条件
- 「ルーティング対応プロバイダーネットワークの準備」の手順が完了している。
-
adminロールを持つ RHOSP ユーザーである。
手順
デフォルトのセグメントが含まれる VLAN プロバイダーネットワークを作成します。
以下の例では、VLAN プロバイダーネットワークは
multisegment1という名前で、provider1という名前の物理ネットワークおよび ID が128の VLAN を使用します。例
openstack network create --share --provider-physical-network provider1 \ --provider-network-type vlan --provider-segment 128 multisegment1
$ openstack network create --share --provider-physical-network provider1 \ --provider-network-type vlan --provider-segment 128 multisegment1Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
デフォルトのネットワークセグメントの名前を
segment1に変更します。セグメント ID を取得します。
openstack network segment list --network multisegment1
$ openstack network segment list --network multisegment1Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
+--------------------------------------+----------+--------------------------------------+--------------+---------+ | ID | Name | Network | Network Type | Segment | +--------------------------------------+----------+--------------------------------------+--------------+---------+ | 43e16869-ad31-48e4-87ce-acf756709e18 | None | 6ab19caa-dda9-4b3d-abc4-5b8f435b98d9 | vlan | 128 | +--------------------------------------+----------+--------------------------------------+--------------+---------+
+--------------------------------------+----------+--------------------------------------+--------------+---------+ | ID | Name | Network | Network Type | Segment | +--------------------------------------+----------+--------------------------------------+--------------+---------+ | 43e16869-ad31-48e4-87ce-acf756709e18 | None | 6ab19caa-dda9-4b3d-abc4-5b8f435b98d9 | vlan | 128 | +--------------------------------------+----------+--------------------------------------+--------------+---------+Copy to Clipboard Copied! Toggle word wrap Toggle overflow
セグメント ID を使用して、ネットワークセグメントの名前を
segment1に変更します。openstack network segment set --name segment1 43e16869-ad31-48e4-87ce-acf756709e18
$ openstack network segment set --name segment1 43e16869-ad31-48e4-87ce-acf756709e18Copy to Clipboard Copied! Toggle word wrap Toggle overflow
プロバイダーネットワーク上に 2 番目のセグメントを作成します。
以下の例では、ネットワークセグメントは
provider2という名前の物理ネットワークおよび ID が129の VLAN を使用します。例
openstack network segment create --physical-network provider2 \ --network-type vlan --segment 129 --network multisegment1 segment2
$ openstack network segment create --physical-network provider2 \ --network-type vlan --segment 129 --network multisegment1 segment2Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
ネットワークに
segment1およびsegment2のセグメントが含まれていることを確認します。openstack network segment list --network multisegment1
$ openstack network segment list --network multisegment1Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
segment1セグメント上に、IPv4 サブネットおよび IPv6 サブネットをそれぞれ 1 つ作成します。以下の例では、IPv4 サブネットは
203.0.113.0/24を使用します。例
openstack subnet create \ --network multisegment1 --network-segment segment1 \ --ip-version 4 --subnet-range 203.0.113.0/24 \ multisegment1-segment1-v4
$ openstack subnet create \ --network multisegment1 --network-segment segment1 \ --ip-version 4 --subnet-range 203.0.113.0/24 \ multisegment1-segment1-v4Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の例では、IPv6 サブネットは
fd00:203:0:113::/64を使用します。例
openstack subnet create \ --network multisegment1 --network-segment segment1 \ --ip-version 6 --subnet-range fd00:203:0:113::/64 \ --ipv6-address-mode slaac multisegment1-segment1-v6
$ openstack subnet create \ --network multisegment1 --network-segment segment1 \ --ip-version 6 --subnet-range fd00:203:0:113::/64 \ --ipv6-address-mode slaac multisegment1-segment1-v6Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記デフォルトでは、プロバイダーネットワーク上の IPv6 サブネットは、ステートレスアドレス自動設定 (SLAAC) およびルーター広告の物理ネットワークインフラストラクチャーに基づきます。
segment2セグメント上に、IPv4 サブネットおよび IPv6 サブネットをそれぞれ 1 つ作成します。以下の例では、IPv4 サブネットは
198.51.100.0/24を使用します。例
openstack subnet create \ --network multisegment1 --network-segment segment2 \ --ip-version 4 --subnet-range 198.51.100.0/24 \ multisegment1-segment2-v4
$ openstack subnet create \ --network multisegment1 --network-segment segment2 \ --ip-version 4 --subnet-range 198.51.100.0/24 \ multisegment1-segment2-v4Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の例では、IPv6 サブネットは
fd00:198:51:100::/64を使用します。例
openstack subnet create \ --network multisegment1 --network-segment segment2 \ --ip-version 6 --subnet-range fd00:198:51:100::/64 \ --ipv6-address-mode slaac multisegment1-segment2-v6
$ openstack subnet create \ --network multisegment1 --network-segment segment2 \ --ip-version 6 --subnet-range fd00:198:51:100::/64 \ --ipv6-address-mode slaac multisegment1-segment2-v6Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
それぞれの IPv4 サブネットが少なくとも 1 つの DHCP エージェントと関連付けられていることを確認します。
openstack network agent list --agent-type dhcp --network multisegment1
$ openstack network agent list --agent-type dhcp --network multisegment1Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Compute サービスの配置 API の各セグメントの IPv4 サブネットにインベントリーが作成されたことを確認します。
すべてのセグメント ID に対して、以下のコマンドを実行します。
SEGMENT_ID=053b7925-9a89-4489-9992-e164c8cc8763 openstack resource provider inventory list $SEGMENT_ID
$ SEGMENT_ID=053b7925-9a89-4489-9992-e164c8cc8763 $ openstack resource provider inventory list $SEGMENT_IDCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
この出力例では、セグメントのうち 1 つだけが表示されています。
+----------------+------------------+----------+----------+-----------+----------+-------+ | resource_class | allocation_ratio | max_unit | reserved | step_size | min_unit | total | +----------------+------------------+----------+----------+-----------+----------+-------+ | IPV4_ADDRESS | 1.0 | 1 | 2 | 1 | 1 | 30 | +----------------+------------------+----------+----------+-----------+----------+-------+
+----------------+------------------+----------+----------+-----------+----------+-------+ | resource_class | allocation_ratio | max_unit | reserved | step_size | min_unit | total | +----------------+------------------+----------+----------+-----------+----------+-------+ | IPV4_ADDRESS | 1.0 | 1 | 2 | 1 | 1 | 30 | +----------------+------------------+----------+----------+-----------+----------+-------+Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Compute サービスの各セグメントにホストアグリゲートが作成されたことを確認します。
openstack aggregate list
$ openstack aggregate listCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
以下の例では、1 つのセグメントだけが示されています。
+----+---------------------------------------------------------+-------------------+ | Id | Name | Availability Zone | +----+---------------------------------------------------------+-------------------+ | 10 | Neutron segment id 053b7925-9a89-4489-9992-e164c8cc8763 | None | +----+---------------------------------------------------------+-------------------+
+----+---------------------------------------------------------+-------------------+ | Id | Name | Availability Zone | +----+---------------------------------------------------------+-------------------+ | 10 | Neutron segment id 053b7925-9a89-4489-9992-e164c8cc8763 | None | +----+---------------------------------------------------------+-------------------+Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1 つまたは複数のインスタンスを起動します。それぞれのインスタンスは、特定のコンピュートノードで使用するセグメントに従って IP アドレスを取得します。
注記ユーザーがポート作成要求で Fixed IP を指定すると、その特定の IP が直ちにポートに割り当てられます。ただし、ポートを作成してインスタンスに渡した際の動作は、従来のネットワークとは異なります。ポート作成要求で Fixed IP が指定されていない場合、特定のコンピュートノードが明確になるまで Networking サービスは IP アドレスをポートに割り当てません。たとえば、以下のコマンドを実行した場合:
openstack port create --network multisegment1 port1
$ openstack port create --network multisegment1 port1Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
16.6. ルーティング非対応からルーティング対応プロバイダーネットワークへの移行 リンクのコピーリンクがクリップボードにコピーされました!
ネットワークのサブネットをネットワークセグメントの ID に関連付けることにより、ルーティングに対応しないネットワークをルーティング対応プロバイダーネットワークに移行できます。
前提条件
移行するルーティングされていないネットワークには、1 つのセグメント のみ と 1 つのサブネット のみ が含まれている必要があります。
重要複数のサブネットまたはネットワークセグメントが含まれるルーティング非対応プロバイダーネットワークの場合、ルーティング対応プロバイダーネットワークに安全に移行できません。ルーティング非対応のネットワークでは、サブネット割り当てプールからのアドレスは、ポートがバインドされるネットワークセグメントを考慮せずにポートに割り当てられます。
手順
移行されるネットワークについて、現在のネットワークセグメントの ID を取得します。
- 例
openstack network segment list --network my_network
$ openstack network segment list --network my_networkCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
+--------------------------------------+------+--------------------------------------+--------------+---------+ | ID | Name | Network | Network Type | Segment | +--------------------------------------+------+--------------------------------------+--------------+---------+ | 81e5453d-4c9f-43a5-8ddf-feaf3937e8c7 | None | 45e84575-2918-471c-95c0-018b961a2984 | flat | None | +--------------------------------------+------+--------------------------------------+--------------+---------+
+--------------------------------------+------+--------------------------------------+--------------+---------+ | ID | Name | Network | Network Type | Segment | +--------------------------------------+------+--------------------------------------+--------------+---------+ | 81e5453d-4c9f-43a5-8ddf-feaf3937e8c7 | None | 45e84575-2918-471c-95c0-018b961a2984 | flat | None | +--------------------------------------+------+--------------------------------------+--------------+---------+Copy to Clipboard Copied! Toggle word wrap Toggle overflow
移行されるネットワークについて、現在のサブネットの ID を取得します。
- 例
openstack network segment list --network my_network
$ openstack network segment list --network my_networkCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
+--------------------------------------+-----------+--------------------------------------+---------------+ | ID | Name | Network | Subnet | +--------------------------------------+-----------+--------------------------------------+---------------+ | 71d931d2-0328-46ae-93bc-126caf794307 | my_subnet | 45e84575-2918-471c-95c0-018b961a2984 | 172.24.4.0/24 | +--------------------------------------+-----------+--------------------------------------+---------------+
+--------------------------------------+-----------+--------------------------------------+---------------+ | ID | Name | Network | Subnet | +--------------------------------------+-----------+--------------------------------------+---------------+ | 71d931d2-0328-46ae-93bc-126caf794307 | my_subnet | 45e84575-2918-471c-95c0-018b961a2984 | 172.24.4.0/24 | +--------------------------------------+-----------+--------------------------------------+---------------+Copy to Clipboard Copied! Toggle word wrap Toggle overflow
サブネットの現在の
segment_idの値がNoneであることを確認します。- 例
openstack subnet show my_subnet --c segment_id
$ openstack subnet show my_subnet --c segment_idCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
+------------+-------+ | Field | Value | +------------+-------+ | segment_id | None | +------------+-------+
+------------+-------+ | Field | Value | +------------+-------+ | segment_id | None | +------------+-------+Copy to Clipboard Copied! Toggle word wrap Toggle overflow
サブネットの
segment_idの値をネットワークセグメント ID に変更します。以下に例を示します。
openstack subnet set --network-segment 81e5453d-4c9f-43a5-8ddf-feaf3937e8c7 my_subnet
$ openstack subnet set --network-segment 81e5453d-4c9f-43a5-8ddf-feaf3937e8c7 my_subnetCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
サブネットが希望のネットワークセグメントに関連付けられていることを確認します。
- 例
openstack subnet show my_subnet --c segment_id
$ openstack subnet show my_subnet --c segment_idCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
+------------+--------------------------------------+ | Field | Value | +------------+--------------------------------------+ | segment_id | 81e5453d-4c9f-43a5-8ddf-feaf3937e8c7 | +------------+--------------------------------------+
+------------+--------------------------------------+ | Field | Value | +------------+--------------------------------------+ | segment_id | 81e5453d-4c9f-43a5-8ddf-feaf3937e8c7 | +------------+--------------------------------------+Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第17章 ルーターフレーバーを使用したカスタム仮想ルーターの作成 リンクのコピーリンクがクリップボードにコピーされました!
このセクションの以下のコンテンツは、今回のリリースでは テクノロジープレビュー としての利用となるため、Red Hat によって完全にはサポートされません。これは、テスト用途にのみご利用いただく機能です。実稼働環境にはデプロイしないでください。詳細は、テクノロジープレビュー を参照してください。
ルーターフレーバーを使用して、Red Hat OpenStack Platform (RHOSP) ML2/OVN 環境にカスタムの仮想ルーターをデプロイできます。RHOSP 管理者がルーターフレーバー機能を有効にし、ルーターフレーバーを作成すると、ユーザーはルーターフレーバーを使用してカスタムルーターを作成できます。
RHOSP デプロイメント内では、ルーターフレーバーに基づく仮想カスタムルーターとデフォルトの OVN タイプのルーターを組み合わせることができます。
ルーターフレーバーを使用しても、デフォルトの OVN ルーターの動作には影響しません。ルーターフレーバーを使用すると、デフォルトの OVN ルーターがデフォルトのルーターフレーバーとして扱われ、その設定や操作には影響しません。
ルーターのフレーバーを設定し、カスタムルーターを作成するには、次の一般的な手順を実行します。
管理者は必要な RHOSP ネットワークサービス (neutron) プラグインをロードし、サービスプロバイダーを指定します。
「ルーターフレーバーの有効化とサービスプロバイダーの作成」を参照してください。
管理者がルーターのフレーバーを作成します。
「ルーターフレーバーの作成」を参照してください。
ユーザーは、ルーターフレーバーの 1 つを使用してカスタムルーターを作成します。
「カスタム仮想ルーターの作成」を参照してください。
17.1. ルーターフレーバーの有効化とサービスプロバイダーの作成 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenStack Platform (RHOSP) 管理者がルーターのフレーバーを作成する前に、管理者はまず必要な RHOSP Networking サービス (neutron) プラグインをロードし、サービスプロバイダーを指定する必要があります。
管理者は、Networking サービスディレクトリー内のモジュールにサービスプロバイダーコードを展開する必要があります。Red Hat では、neutron.services.ovn_l3.service_providers.user_defined モジュールを推奨しています。
neutron.services.ovn_l3.service_providers.user_defined モジュールには、UserDefined という名前のサービスプロバイダーのサンプルがあります。
以下の手順では、コントローラーノード上の .conf ファイルを直接編集します。Red Hat は、この直接編集方法に代わる heat テンプレート方法と OpenStack コマンドを開発しています。
前提条件
- Networking サービスメカニズムドライバーは ML2/OVN である必要があります。
- デプロイメント用にルーターフレーバーサービスプロバイダーが作成されている。
- RHOSP コントローラーノードにアクセスでき、設定ファイルを更新するパーミッションがある。
手順
-
コントローラーノードの 1 つで、
/var/lib/config-data/puppet-generated/neutron/etc/neutron/neutron.confファイルを開きます。 service_pluginsリストで、ovn-routersをovn-router-flavors-haに変更します。[DEFAULT] service_plugins = qos,ovn-router-flavors-ha,trunk,segments,port_forwarding,log
[DEFAULT] service_plugins = qos,ovn-router-flavors-ha,trunk,segments,port_forwarding,logCopy to Clipboard Copied! Toggle word wrap Toggle overflow service_providersセクションを作成し、使用する予定のルーターフレーバーごとにサービスプロバイダー定義を追加します。- 例
この例では、サービスプロバイダー
user_defined_1が追加されます。... [service_providers] service_provider = L3_ROUTER_NAT:user_defined_1:neutron.services.ovn_l3.service_providers.user_defined.UserDefined1
... [service_providers] service_provider = L3_ROUTER_NAT:user_defined_1:neutron.services.ovn_l3.service_providers.user_defined.UserDefined1Copy to Clipboard Copied! Toggle word wrap Toggle overflow ルーターフレーバーサービスプロバイダーの定義には以下の要素があります。
- サービスプロバイダーの定数
- L3_ROUTER_NAT
- 名前
2 つのコロン文字間のわかりやすい文字列であるサービスプロバイダーの名前。
たとえば、
:user_defined_1:です。名前は環境内で一意である必要があります。- Path
-
Red Hat では、
neutron.services.ovn_l3.service_providers.user_definedパスの使用を推奨しています。 - Class
サービスプロバイダーの python クラス名。
各プロバイダーには独自のクラスがあります。たとえば、
UserDefined1です。注記このクラス名とそのパスを保持します。後でルーターのフレーバーを作成するときに必要になります。
Networking サービス (neutron) を再起動します。
sudo podman restart neutron_api
$ sudo podman restart neutron_apiCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 残りの RHOSP コントローラーノードで手順 1 - 4 を実行します。
検証
Networking サービスがユーザー定義のサービスプロバイダーを読み込んだことを確認します。
openstack network service provider list
$ openstack network service provider listCopy to Clipboard Copied! Toggle word wrap Toggle overflow 手順が正常に実行されると、新しいサービスが一覧に表示されます。
- 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
17.2. ルーターフレーバーの作成 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenStack Platform (RHOSP) 管理者は、ユーザーが RHOSP ML2/OVN 環境でカスタム仮想ルーターを作成するときに指定する必要があるルーターフレーバーを作成できます。管理者が Networking サービス (neutron) ovn-router-flavors-ha プラグインをロードし、サービスプロバイダーを指定した後、ルーターフレーバーを作成するための残りの手順は次のとおりです。
- ルーターフレーバーのサービスプロファイルを作成します。
- ルーターフレーバーを作成します。
- ルーターのフレーバーにサービスプロファイルを追加します。
前提条件
- Networking サービスメカニズムドライバーは ML2/OVN である必要があります。
-
adminロールを持つ RHOSP ユーザーである。 -
Networking サービスには
ovn-router-flavors-haプラグインがロードされています。 ルーターフレーバーサービスプロバイダーが作成され、そのクラスの名前とパスがわかっています。
詳細は、「ルーターフレーバーの有効化とサービスプロバイダーの作成」 を参照してください。
手順
-
adminロールを割り当てるオーバークラウド認証情報ファイルを読み込みます。 サービスプロバイダークラスとそのパスを使用して、ルーターフレーバーのサービスプロファイルを作成します。
後の手順で必要になるため、プロファイル ID を保持しておきます。
- 例
この例では、ドライバークラス名は
UserDefined1で、パスはneutron.services.ovn_l3.service_providers.user_definedです。openstack network flavor profile create \ --description "User-defined router flavor profile" \ --enable --driver \ neutron.services.ovn_l3.service_providers.user_defined.UserDefined1
$ openstack network flavor profile create \ --description "User-defined router flavor profile" \ --enable --driver \ neutron.services.ovn_l3.service_providers.user_defined.UserDefined1Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
ルーターフレーバーを作成します。
openstack network flavor create \ --service-type L3_ROUTER_NAT \ --description "User-defined flavor for routers" \ user-defined-router-flavor
$ openstack network flavor create \ --service-type L3_ROUTER_NAT \ --description "User-defined flavor for routers" \ user-defined-router-flavorCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
前の手順のプロファイル ID を使用して、サービスプロファイルをルーターのフレーバーに追加します。
- 例
openstack network flavor add profile user-defined-router-flavor \ a717c92c-63f7-47e8-9efb-6ad0d61c4875
$ openstack network flavor add profile user-defined-router-flavor \ a717c92c-63f7-47e8-9efb-6ad0d61c4875Copy to Clipboard Copied! Toggle word wrap Toggle overflow
17.3. カスタム仮想ルーターの作成 リンクのコピーリンクがクリップボードにコピーされました!
RHOSP 管理者が提供するルーターフレーバーを使用して、Red Hat OpenStack Platform (RHOSP) 環境にカスタム仮想ルーターを作成できます。
前提条件
- RHOSP 管理者がルーターフレーバーを作成している。
- Networking サービス (neutron) メカニズムドライバーは ML2/OVN である必要があります。
手順
- Source コマンドで認証情報ファイルを読み込みます。
カスタムルーターを作成するために使用するルーターフレーバーの ID を取得します。
openstack network flavor list -c ID -c Name
$ openstack network flavor list -c ID -c NameCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
+--------------------------------------+-------------------------------+ | ID | Name | +--------------------------------------+-------------------------------+ | 4b37f895-e78e-49df-a96b-1916550f9116 | user-defined-router-flavor | +--------------------------------------+-------------------------------+
+--------------------------------------+-------------------------------+ | ID | Name | +--------------------------------------+-------------------------------+ | 4b37f895-e78e-49df-a96b-1916550f9116 | user-defined-router-flavor | +--------------------------------------+-------------------------------+Copy to Clipboard Copied! Toggle word wrap Toggle overflow
ルーターのフレーバー ID を使用して、カスタムルーターを作成します。
- 例
この例では、
user-defined-router-flavorのフレーバー ID を使用して、user-defined-routerが作成されます。openstack router create \ --flavor-id 4b37f895-e78e-49df-a96b-1916550f9116 user-defined-router
$ openstack router create \ --flavor-id 4b37f895-e78e-49df-a96b-1916550f9116 user-defined-routerCopy to Clipboard Copied! Toggle word wrap Toggle overflow --flavor-id引数を使用しない場合、openstack router createコマンドはデフォルトの OVN ルーターを作成します。
デプロイメントのルーターを一覧表示し、ルーターの作成を確認します。
openstack router list -c ID -c Name -c Status -c HA
$ openstack router list -c ID -c Name -c Status -c HACopy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第18章 許可するアドレスペアの設定 リンクのコピーリンクがクリップボードにコピーされました!
18.1. 許可するアドレスペアの概要 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenStack Platform (RHOSP) ネットワーク環境では、許可するアドレスペア は、特定の MAC アドレス、IP アドレス、またはその両方を指定して、サブネットに関係なくネットワークトラフィックがポートを通過できるようにする際に設定します。許可するアドレスペアを定義すると、Virtual Router Redundancy Protocol (VRRP) などのプロトコルを使用できます。このプロトコルでは、2 つの仮想マシンインスタンス間で IP アドレスをフローティングして、迅速なデータプレーンのフェイルオーバーが可能となります。IP アドレスが別のポートの許可するアドレスペアのメンバーであるポートは、仮想ポート (vport) と呼ばれます。
RHOSP のネットワーク環境では、仮想マシンインスタンスを作成する際に、インスタンスを仮想ポート (vport) にバインドしないでください。代わりに、IP アドレスが別のポートの許可するアドレスペアのメンバーではないポートを使用します。
vport をインスタンスにバインドすると、インスタンスが生成されなくなり、次のようなエラーメッセージが表示されます。
WARNING nova.virt.libvirt.driver [req-XXXX - - - default default] [instance: XXXXXXXXX] Timeout waiting for [('network-vif-plugged', 'XXXXXXXXXX')] for instance with vm_state building and task_state spawning.: eventlet.timeout.Timeout: 300 seconds
WARNING nova.virt.libvirt.driver [req-XXXX - - - default default] [instance: XXXXXXXXX] Timeout waiting for [('network-vif-plugged', 'XXXXXXXXXX')] for instance with vm_state building and task_state spawning.: eventlet.timeout.Timeout: 300 seconds
Red Hat OpenStack Platform コマンドラインクライアントの openstack port コマンドを使用して、許可するアドレスペアを定義します。
許可するアドレスペアでは、より広い IP アドレス範囲を持つデフォルトのセキュリティーグループを使用しないように注意してください。そうしないと、1 つのポートが同じネットワーク内の他のすべてのポートのセキュリティーグループをバイパスできてしまいます。
たとえば、以下のコマンドはネットワーク内のすべてのポートに影響を与え、すべてのセキュリティーグループをバイパスします。
openstack port set --allowed-address mac-address=3e:37:09:4b,ip-address=0.0.0.0/0 9e67d44eab334f07bf82fa1b17d824b6
$ openstack port set --allowed-address mac-address=3e:37:09:4b,ip-address=0.0.0.0/0 9e67d44eab334f07bf82fa1b17d824b6
ML2/OVN メカニズムドライバーネットワークバックエンドを使用すると、仮想 IP を作成することができます。ただし、allowed_address_pairs を使用するバインドポートに割り当てられる IP アドレスは、仮想ポートの IP アドレス (/32) と一致する必要があります。
バインドポート allowed_address_pairs に CIDR 形式の IP アドレスを使用する場合には、ポート転送はバックエンドで設定されず、バインドされた IP ポートに到達できる必要のある CIDR の IP でトラフィックが失敗します。
18.2. ポートの作成および 1 つのアドレスペアの許可 リンクのコピーリンクがクリップボードにコピーされました!
ポートを作成して許可するアドレスペアを設定すると、ネットワークトラフィックはサブネットに関係なくポートを通過して流れることができます。
許可するアドレスペアでは、より広い IP アドレス範囲を持つデフォルトのセキュリティーグループを使用しないでください。そうしないと、1 つのポートが同じネットワーク内の他のすべてのポートのセキュリティーグループをバイパスできてしまいます。
手順
以下のコマンドを使用して、ポートを作成して 1 つのアドレスペアを許可します。
openstack port create --network <network> --allowed-address mac-address=<mac_address>,ip-address=<ip_cidr> <port_name>
$ openstack port create --network <network> --allowed-address mac-address=<mac_address>,ip-address=<ip_cidr> <port_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
18.3. 許可するアドレスペアの追加 リンクのコピーリンクがクリップボードにコピーされました!
ポートに許可するアドレスペアを設定して、ネットワークトラフィックがサブネットに関係なくポートを通過して流れるのを許可することができます。
許可するアドレスペアでは、より広い IP アドレス範囲を持つデフォルトのセキュリティーグループを使用しないでください。そうしないと、1 つのポートが同じネットワーク内の他のすべてのポートのセキュリティーグループをバイパスできてしまいます。
手順
以下のコマンドを使用して、許可するアドレスペアを追加します。
openstack port set --allowed-address mac-address=<mac_address>,ip-address=<ip_cidr> <port>
$ openstack port set --allowed-address mac-address=<mac_address>,ip-address=<ip_cidr> <port>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記ポートの
mac_addressとip_addressが一致する allowed-address-pair を設定することはできません。その理由は、mac_addressとip_addressが一致するトラフィックはすでにポートを通過できるので、このような設定をしても効果がないためです。
第19章 セキュリティーグループの設定 リンクのコピーリンクがクリップボードにコピーされました!
セキュリティーグループとは、インスタンスへの/からのネットワークおよびプロトコルアクセスを制御する IP フィルタールールのセットで、たとえば、ICMP によりインスタンスへの ping 送信が可能で、SSH によりインスタンスへの接続が可能となります。セキュリティーグループルールは、プロジェクト内のすべてのインスタンスに適用されます。
すべてのプロジェクトには、default という名前のデフォルトセキュリティーグループがあり、これは、インスタンスにセキュリティーグループを指定しない場合に使用されます。デフォルトでは、デフォルトのセキュリティーグループは、すべての送信トラフィックを許可し、同じセキュリティーグループのインスタンス以外のソースからの着信トラフィックをすべて拒否します。デフォルトのセキュリティーグループにルールを追加するか、プロジェクト用に新規セキュリティーグループを作成できます。インスタンスの作成時に 1 つ以上のセキュリティーグループをインスタンスに適用できます。セキュリティーグループを実行中のインスタンスに適用するには、セキュリティーグループをインスタンスに接続されているポートに適用します。
セキュリティーグループの作成時に、ML2/OVN デプロイメントでステートフルまたはステートレスを選択できます。
ML2/OVS デプロイメントでは、ステートレスセキュリティーグループはサポートされません。
セキュリティーグループはデフォルトでステートフルであり、ほとんどの場合、ステートフルセキュリティーグループはより少ない管理オーバーヘッドでより適切な制御を提供します。
ステートレスセキュリティーグループは、基盤となるファイアウォールでの接続追跡をバイパスするため、パフォーマンスに大きな利点をもたらします。ただし、ステートレスセキュリティーグループには、ステートフルセキュリティーグループよりも多くのセキュリティーグループルールが必要です。ステートレスセキュリティーグループは、場合によっては粒度が低くなります。
- ステートレスセキュリティーグループのメリット
- ステートレスセキュリティーグループはステートフルセキュリティーグループより高速になる可能性があります。
- ステートレスセキュリティーグループは、OpenFlow アクションをハードウェアにオフロードするアプリケーションでは、唯一の実行可能なセキュリティーグループオプションです。
- ステートレスセキュリティーグループのデメリット
- ステートレスセキュリティーグループルールでは、戻りトラフィックは自動的に許可されません。たとえば、ステートレスセキュリティーグループにあるポートからの送信 TCP トラフィックを許可するルールを作成する場合は、受信応答を許可するルールも作成する必要があります。ステートフルセキュリティーグループは、受信応答を自動的に許可します。
- このような受信応答の制御は、ステートフルなセキュリティーグループによって提供される制御ほどの粒度にはならない場合があります。
通常、アプリケーションがパフォーマンスに対して敏感である場合や、OpenFlow アクションのハードウェアオフロードを使用している場合を除き、デフォルトのステートフルセキュリティーグループタイプを使用します。
インスタンスの作成中に、ロールベースのアクセス制御 (RBAC) 共有セキュリティーグループをインスタンスに直接適用することはできません。RBAC 共有セキュリティーグループをインスタンスに適用するには、最初にポートを作成し、共有セキュリティーグループをそのポートに適用してから、そのポートをインスタンスに割り当てる必要があります。セキュリティーグループのポートへの追加 を参照してください。
19.1. セキュリティーグループの作成 リンクのコピーリンクがクリップボードにコピーされました!
新規セキュリティーグループを作成して、プロジェクト内のインスタンスおよびポートに適用できます。
手順
(オプション) 必要なセキュリティーグループが存在しないことを確認するには、利用可能なセキュリティーグループとそのルールを確認します。
openstack security group list openstack security group rule list <sec_group>
$ openstack security group list $ openstack security group rule list <sec_group>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
<sec_group>を、利用可能なセキュリティーグループのリストから取得したセキュリティーグループの名前または ID に置き換えてください。
-
.セキュリティーグループを作成します。
openstack security group create [--stateless] mySecGroup
$ openstack security group create [--stateless] mySecGroupCopy to Clipboard Copied! Toggle word wrap Toggle overflow オプション:
--statelessオプションを追加して、ステートレスセキュリティーグループを作成します。デフォルトでは、セキュリティーグループはステートフルです。注記ML2/OVN デプロイメントのみがステートレスセキュリティーグループをサポートします。
セキュリティーグループにルールを追加します。
openstack security group rule create --protocol <protocol> \ [--dst-port <port-range>] \ [--remote-ip <ip-address> | --remote-group <group>] \ [--ingress | --egress] mySecGroup
$ openstack security group rule create --protocol <protocol> \ [--dst-port <port-range>] \ [--remote-ip <ip-address> | --remote-group <group>] \ [--ingress | --egress] mySecGroupCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
<protocol>を、インスタンスとの通信に許可するプロトコルの名前に置き換えます。 -
(オプション)
<port-range>を、プロトコル用に開く送信先ポートまたはポート範囲に置き換えます。IP プロトコル (TCP、UDP、および SCTP) には必須です。指定されたプロトコルに対するすべてのポートを許可するには、-1に設定します。ポート範囲の値はコロンで区切ります。 -
(オプション) 指定した IP アドレスからのアクセスのみを許可するには、
--remote-ipを使用してリモート IP アドレスブロックを指定するか、--remote-groupを使用して、ルールがリモートグループのメンバーであるインターフェイスからのパケットにのみ適用されることを指定します。--remote-ipを使用する場合は、<ip-address>をリモート IP アドレスブロックに置き換えます。CIDR 表記を使用できます。--remote-groupを使用する場合は、<group>を既存のセキュリティーグループの名前または ID に置き換えてください。いずれのオプションも指定されない場合は、リモート IP アクセス範囲のデフォルトは IPv4 が0.0.0.0/0、IPv6 が::/0なので、すべてのアドレスにアクセスが許可されます。 プロトコルルールが適用されるネットワークトラフィックの方向、つまり受信 (
ingress) または送信 (egress) のいずれかを指定します。指定されない場合、デフォルトはingressに設定されます。注記ステートレスセキュリティーグループを作成し、ステートレスセキュリティーグループにあるポートからの送信 TCP トラフィックを許可するルールを作成した場合は、受信応答を許可するルールも作成する必要があります。
-
インスタンスへのアクセスを許可するすべてのプロトコルに対してルールが作成されるまで、ステップ 3 を繰り返します。以下の例では、セキュリティーグループ
mySecGroupのインスタンスへの SSH 接続を許可するルールを作成します。openstack security group rule create --protocol tcp \ --dst-port 22 mySecGroup
$ openstack security group rule create --protocol tcp \ --dst-port 22 mySecGroupCopy to Clipboard Copied! Toggle word wrap Toggle overflow
19.2. セキュリティーグループルールの更新 リンクのコピーリンクがクリップボードにコピーされました!
アクセス可能なセキュリティーグループのルールを更新できます。
手順
ルールを更新するセキュリティーグループの名前または ID を取得します。
openstack security group list
$ openstack security group listCopy to Clipboard Copied! Toggle word wrap Toggle overflow - セキュリティーグループに適用する必要があるルールを決定します。
セキュリティーグループにルールを追加します。
openstack security group rule create --protocol <protocol> \ [--dst-port <port-range>] \ [--remote-ip <ip-address> | --remote-group <group>] \ [--ingress | --egress] <group_name>
$ openstack security group rule create --protocol <protocol> \ [--dst-port <port-range>] \ [--remote-ip <ip-address> | --remote-group <group>] \ [--ingress | --egress] <group_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
<protocol>を、インスタンスとの通信に許可するプロトコルの名前に置き換えます。 -
(オプション)
<port-range>を、プロトコル用に開く送信先ポートまたはポート範囲に置き換えます。IP プロトコル (TCP、UDP、および SCTP) には必須です。指定されたプロトコルのポートをすべて許可するには、-1に設定します。ポート範囲の値はコロンで区切ります。 -
(オプション) 指定した IP アドレスからのアクセスのみを許可するには、
--remote-ipを使用してリモート IP アドレスブロックを指定するか、--remote-groupを使用して、ルールがリモートグループのメンバーであるインターフェイスからのパケットにのみ適用されることを指定します。--remote-ipを使用する場合は、<ip-address>をリモート IP アドレスブロックに置き換えます。CIDR 表記を使用できます。--remote-groupを使用する場合は、<group>を既存のセキュリティーグループの名前または ID に置き換えてください。いずれのオプションも指定されない場合は、リモート IP アクセス範囲のデフォルトは IPv4 が0.0.0.0/0、IPv6 が::/0なので、すべてのアドレスにアクセスが許可されます。 -
プロトコルルールが適用されるネットワークトラフィックの方向、つまり受信 (
ingress) または送信 (egress) のいずれかを指定します。指定されない場合、デフォルトはingressに設定されます。 -
<group_name>を、ルールを適用するセキュリティーグループの名前または ID に置き換えてください。
-
インスタンスへのアクセスを許可するすべてのプロトコルに対してルールが作成されるまで、ステップ 3 を繰り返します。以下の例では、セキュリティーグループ
mySecGroupのインスタンスへの SSH 接続を許可するルールを作成します。openstack security group rule create --protocol tcp \ --dst-port 22 mySecGroup
$ openstack security group rule create --protocol tcp \ --dst-port 22 mySecGroupCopy to Clipboard Copied! Toggle word wrap Toggle overflow
19.3. セキュリティーグループルールの削除 リンクのコピーリンクがクリップボードにコピーされました!
セキュリティーグループからルールを削除できます。
手順
ルールが適用されるセキュリティーグループを特定します。
openstack security group list
$ openstack security group listCopy to Clipboard Copied! Toggle word wrap Toggle overflow セキュリティーグループに関連付けられたルールの ID を取得します。
openstack security group show <sec-group>
$ openstack security group show <sec-group>Copy to Clipboard Copied! Toggle word wrap Toggle overflow ルールを削除します。
openstack security group rule delete <rule> [<rule> ...]
$ openstack security group rule delete <rule> [<rule> ...]Copy to Clipboard Copied! Toggle word wrap Toggle overflow <rule>を、削除するルールの ID に置き換えます。削除するルールの ID のスペース区切りのリストを指定して、一度に複数のルールを削除できます。
19.4. セキュリティーグループの削除 リンクのコピーリンクがクリップボードにコピーされました!
ポートに関連付けられていないセキュリティーグループを削除できます。
手順
削除するセキュリティーグループの名前または ID を取得します。
openstack security group list
$ openstack security group listCopy to Clipboard Copied! Toggle word wrap Toggle overflow 利用可能なポートのリストを取得します。
openstack port list
$ openstack port listCopy to Clipboard Copied! Toggle word wrap Toggle overflow 各ポートで関連付けられたセキュリティーグループを確認します。
openstack port show <port-uuid> -c security_group_ids
$ openstack port show <port-uuid> -c security_group_idsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 削除するセキュリティーグループがポートのいずれかに関連付けられている場合は、まずポートからそのセキュリティーグループを削除する必要があります。詳細は、ポートからのセキュリティーグループの削除 を参照してください。
セキュリティーグループを削除します。
openstack security group delete <group> [<group> ...]
$ openstack security group delete <group> [<group> ...]Copy to Clipboard Copied! Toggle word wrap Toggle overflow <group>を削除するグループの ID に置き換えます。削除するグループの ID のスペース区切りのリストを指定して、一度に複数のグループを削除できます。
第20章 セキュリティーグループアクションのロギング リンクのコピーリンクがクリップボードにコピーされました!
セキュリティーグループのパケットログを作成して、仮想マシンインスタンスとの間のトラフィックフローを監視できます。各ログは、パケットフローイベントに関するデータストリームを生成し、それを仮想マシンインスタンスが起動された Compute ホスト上の共通ログファイルに追加します。
インスタンスポートを 1 つ以上のセキュリティーグループに関連付け、各セキュリティーグループに 1 つ以上のルールを定義できます。たとえば、セキュリティーグループ内の仮想マシンへの受信 SSH トラフィックを許可するルールを作成できます。同じセキュリティーグループ内に別のルールを作成し、そのグループ内の仮想マシンが ICMP (ping) メッセージを開始および応答できるようにすることができます。
その後、パケットフローイベントの組み合わせを記録するログを作成できます。たとえば、次のコマンドは、セキュリティーグループ security-group1 の ACCEPT イベントをすべてキャプチャーするログを作成します。
openstack network log create my-log1 \ --resource-type security_group \ --resource security-group1 \ --event ACCEPT
$ openstack network log create my-log1 \
--resource-type security_group \
--resource security-group1 \
--event ACCEPT
複数のログを作成して、セキュリティーグループとパケットフローイベントの特定の組み合わせに関するデータをキャプチャーできます。
次のパラメーターを設定できます。
resource-type-
この必須パラメーターを
security_groupに設定する必要があります。 resource(セキュリティーグループ名)-
オプションで、target 引数を使用して、特定のセキュリティーグループにログを限定することもできます(例:
--resource security-group1)。リソースを指定しない場合、ログはプロジェクト内の指定されたポート上のすべてのセキュリティーグループからイベントをキャプチャーします。 event(ログに記録するイベントのタイプ)次のパケットフローイベントをログに記録するように選択できます。
DROP: ドロップされた受信セッションまたは送信セッションごとに 1 つのDROPログエントリーをログに記録します。注記1 つ以上のセキュリティーグループでドロップされたトラフィックをログに記録すると、ネットワーキングサービスはすべてのセキュリティーグループでドロップされたトラフィックをログに記録します。
-
ACCEPT: セキュリティーグループが許可した新規セッションごとに 1 つのACCEPTログエントリーを記録します。 -
ALL(drop と accept): すべてのDROPおよびACCEPTイベントをログに記録します。–eventACCEPTまたは –eventDROPを設定しない場合、ネットワーキングサービスはデフォルトでALLになります。
ネットワーキングサービスは、すべてのログデータをすべての Compute ノードの同じファイル (/var/log/containers/openvswitch/ovn-controller.log) に書き込みます。
20.1. セキュリティーグループのロギングが有効になっていることの確認 リンクのコピーリンクがクリップボードにコピーされました!
ネットワークパケットロギングのデプロイメントを準備するために、ロギングサービスプラグインとロギングエクステンションが設定されていることを確認してください。
手順
- RHOSP admin ロールでオーバークラウドへのアクセスを許可する認証情報ファイルを入手します。
以下のコマンドを入力します。
openstack extension list --max-width 80 | grep logging
$ openstack extension list --max-width 80 | grep loggingCopy to Clipboard Copied! Toggle word wrap Toggle overflow ロギングサービスプラグインとエクステンションが適切に設定されている場合、出力には以下が含まれます。
| Logging API Extension | logging | Provides a logging API |
| Logging API Extension | logging | Provides a logging API |Copy to Clipboard Copied! Toggle word wrap Toggle overflow openstack extension list の出力に Logging API Extension が含まれていない場合:
環境ファイルの
NeutronPluginExtensionsパラメーターにlogを追加します。例
parameter_defaults: NeutronPluginExtensions: "qos,port_security,log"parameter_defaults: NeutronPluginExtensions: "qos,port_security,log"Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
コア Orchestration テンプレート、環境ファイル、およびこの環境ファイルを指定して、
openstack overcloud deployコマンドを実行します。
関連情報
20.2. セキュリティーグループのログオブジェクトの作成 リンクのコピーリンクがクリップボードにコピーされました!
リソース型 security_group を使用してログオブジェクトを作成します。
前提条件
- セキュリティーグループを作成している。
- セキュリティーグループのセキュリティーグループルールを作成している。
- セキュリティーグループにポートを割り当てている。
手順
- RHOSP admin ロールでオーバークラウドへのアクセスを許可する認証情報ファイルを入手します。
適切な引数セットを指定して
openstack network log createコマンドを使用し、ログを作成します。- 例:1: すべてのポートで、セキュリティーグループ
sg1からのACCEPTイベントをログに記録します openstack network log create my-log1 \ --resource-type security_group \ --resource sg1 \ –event ACCEPT
$ openstack network log create my-log1 \ --resource-type security_group \ --resource sg1 \ –event ACCEPTCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 例:2: すべてのポートのすべてのセキュリティーグループからの
ACCEPTイベントをログに記録します openstack network log create my-log3 \ --resource-type security_group \ –event ACCEPT
openstack network log create my-log3 \ --resource-type security_group \ –event ACCEPTCopy to Clipboard Copied! Toggle word wrap Toggle overflow
- 例:1: すべてのポートで、セキュリティーグループ
ログが作成されたことを確認します。
openstack network log list
$ openstack network log listCopy to Clipboard Copied! Toggle word wrap Toggle overflow
20.3. セキュリティーグループのログオブジェクトの一覧表示 リンクのコピーリンクがクリップボードにコピーされました!
セキュリティーグループのログオブジェクトをリストとして一覧表示できます。
手順
- RHOSP admin ロールでオーバークラウドへのアクセスを許可する認証情報ファイルを入手します。
プロジェクトのすべてのログオブジェクトを一覧表示するには、以下を実行します。
openstack network log list
$ openstack network log listCopy to Clipboard Copied! Toggle word wrap Toggle overflow ログオブジェクトの詳細を表示するには、以下を実行します。
openstack network log show <log_object_name>
$ openstack network log show <log_object_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow <log_object_name> をログオブジェクトの名前に置き換えます。
20.4. セキュリティーグループのログオブジェクトの有効化と無効化 リンクのコピーリンクがクリップボードにコピーされました!
ログオブジェクトを作成すると、デフォルトで有効になります。ログオブジェクトを、無効または有効にできます。
手順
- RHOSP admin ロールでオーバークラウドへのアクセスを許可する認証情報ファイルを入手します。
ログオブジェクトを無効にするには、以下のコマンドを入力します。
openstack network log set --disable <log_object_name>
$ openstack network log set --disable <log_object_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow <log_object_name> をログオブジェクトの名前に置き換えます。
ログオブジェクトを有効にするには、以下のコマンドを入力します。
openstack network log set --enable <log_object_name>
$ openstack network log set --enable <log_object_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow <log_object_name> をログオブジェクトの名前に置き換えます。
20.5. セキュリティーグループのログオブジェクト名の変更 リンクのコピーリンクがクリップボードにコピーされました!
ログオブジェクトの名前を変更できます。
手順
- RHOSP admin ロールでオーバークラウドへのアクセスを許可する認証情報ファイルを入手します。
ログオブジェクトの名前を変更するには、以下のコマンドを入力します。
openstack network log set --name <new_log_object_name> <object>
$ openstack network log set --name <new_log_object_name> <object>Copy to Clipboard Copied! Toggle word wrap Toggle overflow <new_log_object_name> をログオブジェクトの新しい名前に置き換えます。<object> をログオブジェクトの古い名前または ID に置き換えます。
20.6. セキュリティーグループのログオブジェクトの削除 リンクのコピーリンクがクリップボードにコピーされました!
ログオブジェクトを削除できます。
手順
- RHOSP admin ロールでオーバークラウドへのアクセスを許可する認証情報ファイルを入手します。
1 つ以上のログオブジェクトを削除するには、以下のコマンドを入力します。
openstack network log delete <log_object_name> [<log_object_name> ...]
$ openstack network log delete <log_object_name> [<log_object_name> ...]Copy to Clipboard Copied! Toggle word wrap Toggle overflow <log_object_name> を、削除するログオブジェクトの名前に置き換えます。複数のログオブジェクトを削除するには、ログオブジェクト名の一覧をスペースで区切って入力します。
20.7. セキュリティーグループログコンテンツへのアクセス リンクのコピーリンクがクリップボードにコピーされました!
ネットワーキングサービスは、Compute ノードホスト上の 1 つの場所にある Compute ノード上のすべての仮想マシンインスタンス (/var/log/containers/openvswitch/ovn-controller.log) からセキュリティーグループログを集計します。
ログファイルには、他のログオブジェクトが含まれます。セキュリティーグループのログエントリーには文字列 acl_log が含まれます。
20.8. セキュリティーグループのログコンテンツの例 リンクのコピーリンクがクリップボードにコピーされました!
ログコンテンツには、以下のデータが含まれます。
- パケットフローのタイムスタンプ。
-
フローのステータス:
ACCEPTまたはDROP。 - フロー発信者の表示。たとえば、イベントを生成したプロジェクトまたはログリソースなど。
- 関連付けられたインスタンスインターフェイス (Neutron ポート ID) の識別子。
レイヤー 2、3、4 の情報 (MAC、アドレス、ポート、プロトコルなど)。
- 例
- ACCEPT イベントからのログデータ:
2022-11-30T03:29:12.868Z|00111|acl_log(ovn_pinctrl1)|INFO|name="neutron-bc53f8df-2318-4d08-8e12-89e92b08deec", verdict=allow, severity=info, direction=from-lport: udp,vlan_tci=0x0000,dl_src=fa:16:3e:70:c4:45,dl_dst=fa:16:3e:66:8b:18,nw_src=192.168.100.59,nw_dst=192.168.100.1,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=68,tp_dst=67
2022-11-30T03:29:12.868Z|00111|acl_log(ovn_pinctrl1)|INFO|name="neutron-bc53f8df-2318-4d08-8e12-89e92b08deec", verdict=allow, severity=info, direction=from-lport: udp,vlan_tci=0x0000,dl_src=fa:16:3e:70:c4:45,dl_dst=fa:16:3e:66:8b:18,nw_src=192.168.100.59,nw_dst=192.168.100.1,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=68,tp_dst=67
20.9. セキュリティーグループロギングのレートおよびバースト制限の調整 リンクのコピーリンクがクリップボードにコピーされました!
ログデータの送信によるコントロールプレーンの過負荷を避けるために、ネットワーキングサービスは 1 秒あたりにログに記録される最大パケット数に制限を設定します。この制限は、NeutronOVNLoggingRateLimit パラメーターを使用して変更できます。
ログパケット送信がレート制限に達すると、ネットワーキングサービスはログに記録するパケットの過剰分をキューに入れます。NeutronOVNLoggingBurstLimit パラメーターを使用して、キューに置かれるパケットの上限を変更できます。
デフォルト値は、NeutronOVNLoggingRateLimit が 1 秒あたり 100 パケット、NeutronOVNLoggingBurstLimit がキュー内の 25 パケットです。これらは、下限値でもあります。これより低い値にすると、制限は正しく機能しません。
ロギングレートおよびバースト制限では、データトラフィック制御は制限されません。ロギングデータの送信のみが制限されます。
手順
-
アンダークラウドホストに
stackユーザーとしてログインします。 source コマンドでアンダークラウドの認証情報ファイルを読み込みます。
source ~/stackrc
$ source ~/stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow カスタム環境ファイルでパラメーターを設定します。たとえば、
sg-logging.yamlです。例
parameter_defaults: ... NeutronOVNLoggingRateLimit=450 NeutronOVNLoggingBurstLimit=50parameter_defaults: ... NeutronOVNLoggingRateLimit=450 NeutronOVNLoggingBurstLimit=50Copy to Clipboard Copied! Toggle word wrap Toggle overflow デプロイコマンドを実行し、
-rオプションを使用してデプロイコマンドにコア Heat テンプレート、その他の環境ファイル、およびカスタムロールデータファイルを含めます。重要後で実行される環境ファイルで定義されているパラメーターとリソースが優先されることになるため、環境ファイルの順序は重要となります。
例
openstack overcloud deploy --templates <core_heat_templates> \ -e <other_environment_files> \ -e /home/stack/templates/neutron-ovn-dvr-ha.yaml
$ openstack overcloud deploy --templates <core_heat_templates> \ -e <other_environment_files> \ -e /home/stack/templates/neutron-ovn-dvr-ha.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
第21章 一般的なネットワーク管理タスク リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenStack Platform Networking サービス (neutron) で、レイヤー 2 Population ドライバーの設定や内部 DNS によってポートに割り当てられた名前の指定など、管理タスクを実施しなければならない場合があります。
21.1. L2 Population ドライバーの設定 リンクのコピーリンクがクリップボードにコピーされました!
L2 Population ドライバーを Networking サービス (neutron) ML2/OVS 環境で使用すると、ブロードキャスト、マルチキャスト、およびユニキャストトラフィックを有効にして、大規模なオーバーレイネットワークでスケールアウトできます。デフォルトでは、Open vSwitch GRE および VXLAN がブロードキャストを各エージェントに複製します。これには、送信先のネットワークをホストしていないエージェントも含まれます。この設計には、多大なネットワークとプロセスのオーバーヘッドを受容する必要があります。L2 Population ドライバーにより導入される代替の設計は、ARP 解決および MAC 学習トラフィックのための部分的なメッシュを実装し、特定のネットワークをホストするノード間に、そのネットワーク用のトンネルも作成します。このトラフィックは、対象設定済みのユニキャストとしてカプセル化されることによって、必要なエージェントにのみ送信されます。
前提条件
- RHOSP 管理者権限が必要です。
- Networking サービスは、ML2/OVS メカニズムドライバーを使用する必要があります。
手順
-
アンダークラウドホストに
stackユーザーとしてログインします。 source コマンドでアンダークラウドの認証情報ファイルを読み込みます。
source ~/stackrc
$ source ~/stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow カスタム YAML 環境ファイルを作成します。
例
vi /home/stack/templates/my-environment.yaml
$ vi /home/stack/templates/my-environment.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow ご自分の環境ファイルには、
parameter_defaultsというキーワードを含める必要があります。これらのキーワードの下に、次の行を追加します。parameter_defaults: NeutronMechanismDrivers: ['openvswitch', 'l2population'] NeutronEnableL2Pop: 'True' NeutronEnableARPResponder: true
parameter_defaults: NeutronMechanismDrivers: ['openvswitch', 'l2population'] NeutronEnableL2Pop: 'True' NeutronEnableARPResponder: trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow コア heat テンプレート、環境ファイル、およびこの新しいカスタム環境ファイルを指定して、deployment コマンドを実行します。
重要後で実行される環境ファイルで定義されているパラメーターとリソースが優先されることになるため、環境ファイルの順序は重要となります。
例
openstack overcloud deploy --templates \ -e <your_environment_files> \ -e /home/stack/templates/my-environment.yaml
$ openstack overcloud deploy --templates \ -e <your_environment_files> \ -e /home/stack/templates/my-environment.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
OVS エージェントの ID を取得します。
openstack network agent list -c ID -c Binary
$ openstack network agent list -c ID -c BinaryCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
いずれかの OVS エージェントの ID を使用して、L2 Population ドライバーが OVS エージェントに設定されていることを確認します。
- 例
この例では、ID
003a8750-a6f9-468b-9321-a6c03c77aec7を使用して、neutron-openvswitch-agent上の L2 Population ドライバーの設定を検証します。openstack network agent show 003a8750-a6f9-468b-9321-a6c03c77aec7 -c configuration -f json | grep l2_population
$ openstack network agent show 003a8750-a6f9-468b-9321-a6c03c77aec7 -c configuration -f json | grep l2_populationCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
"l2_population": true,
"l2_population": true,Copy to Clipboard Copied! Toggle word wrap Toggle overflow
OVS エージェントに対して ARP レスポンダー機能が有効になっていることを確認します。
例
openstack network agent show 003a8750-a6f9-468b-9321-a6c03c77aec7 -c configuration -f json | grep arp_responder_enabled
$ openstack network agent show 003a8750-a6f9-468b-9321-a6c03c77aec7 -c configuration -f json | grep arp_responder_enabledCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
"arp_responder_enabled": true,
"arp_responder_enabled": true,Copy to Clipboard Copied! Toggle word wrap Toggle overflow
21.2. VRRP パケットロスを避けるための keepalived の調整 リンクのコピーリンクがクリップボードにコピーされました!
1 つのホスト上の高可用性 (HA) ルーターの数が大きい場合、HA ルーターのフェイルオーバーが発生すると、仮想ルーター冗長プロトコル (VRRP) メッセージで IRQ キューがオーバーフローする可能性があります。このオーバーフローにより、Open vSwitch (OVS) がそれらの VRRP メッセージに応答して転送することができなくなります。
VRRP パケットのオーバーロードを避けるには、Controller ロールの ExtraConfig セクションの ha_vrrp_advert_int パラメーターを使用して、VRRP 広告の間隔を増やす必要があります。
手順
アンダークラウドに stack ユーザーとしてログインし、source コマンドで
stackrcファイルを読み込み、director コマンドラインツールを有効にします。- 例
source ~/stackrc
$ source ~/stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow
カスタム YAML 環境ファイルを作成します。
- 例
vi /home/stack/templates/my-neutron-environment.yaml
$ vi /home/stack/templates/my-neutron-environment.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow ヒントRed Hat OpenStack Platform Orchestration サービス (heat) は、テンプレート と呼ばれるプランのセットを使用して環境をインストールおよび設定します。カスタム環境ファイル を使用して、オーバークラウドの要素をカスタマイズすることができます。このファイルは、heat テンプレートをカスタマイズするための特別な種別のテンプレートです。
YAML 環境ファイルで、実際のサイトに固有の値と共に
ha_vrrp_advert_int引数を使用して VRRP 広告の間隔を増やします。(デフォルトは2秒です)。Gratuitous ARP メッセージに値を設定することもできます。
ha_vrrp_garp_master_repeat- マスター状態への移行後に一度に送信する Gratuitous ARP メッセージの数。(デフォルトのメッセージ数は 5 です。)
ha_vrrp_garp_master_delay- 優先順位の低い広告がマスター状態で受信された後、2 番目の Gratuitous ARP メッセージセットの遅延。(デフォルトは 5 秒です。)
- 例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
コア heat テンプレート、環境ファイル、およびこの新しいカスタム環境ファイルを指定して、
openstack overcloud deployコマンドを実行します。重要後で実行される環境ファイルで定義されているパラメーターとリソースが優先されることになるため、環境ファイルの順序は重要となります。
- 例
openstack overcloud deploy --templates \ -e [your-environment-files] \ -e /usr/share/openstack-tripleo-heat-templates/environments/services/my-neutron-environment.yaml
$ openstack overcloud deploy --templates \ -e [your-environment-files] \ -e /usr/share/openstack-tripleo-heat-templates/environments/services/my-neutron-environment.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
21.3. DNS がポートに割り当てる名前の指定 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenStack Platform (RHOSP) Networking サービス (neutron) のポートエクステンション用 DNS ドメイン (dns_domain_ports) を有効にすると、内部 DNS によりポートに割り当てられる名前を指定することができます。
YAML 形式の環境ファイルで RHOSP Orchestration (heat) NeutronPluginExtensions パラメーターを宣言して、ポートエクステンション用 DNS ドメインを有効にします。対応するパラメーター NeutronDnsDomain を使用して、デフォルト値 openstacklocal をオーバーライドするドメイン名を指定します。オーバークラウドの再デプロイ後に、OpenStack Client ポートコマンド port set または port create で --dns-name を指定して、ポート名を割り当てることができます。
RHOSP 環境でポートの名前を内部的に解決するには、DNS のポートエクステンションの DNS ドメイン (dns_domain_ports) を有効にする必要があります。NeutronDnsDomain のデフォルト値 (openstacklocal) を使用する場合、Networking サービスは DNS のポート名を内部的に解決しません。
また、ポートエクステンション用 DNS ドメインを有効にすると、仮想マシンインスタンスのブート中に、Compute サービスが dns_name 属性にインスタンスの hostname 属性を自動的に設定します。ブートプロセスの最後に、dnsmasq はインスタンスのホスト名で割り当てられたポートを認識します。
手順
アンダークラウドに stack ユーザーとしてログインし、source コマンドで
stackrcファイルを読み込み、director コマンドラインツールを有効にします。- 例
source ~/stackrc
$ source ~/stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow
カスタム YAML 環境ファイル (
my-neutron-environment.yaml) を作成します。注記丸かっこ内の値は、この手順のコマンド例で使用されるサンプルの値です。これらのサンプル値を、実際のサイトに適した値に置き換えてください。
- 例
vi /home/stack/templates/my-neutron-environment.yaml
$ vi /home/stack/templates/my-neutron-environment.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow ヒントアンダークラウドには、オーバークラウドの作成プランを形作るさまざまな Orchestration サービスのテンプレートが含まれます。YAML フォーマットの環境ファイルを使用して、オーバークラウドの特性をカスタマイズすることができます。このファイルで、Orchestration サービスのコアテンプレートコレクションのパラメーターおよびリソースを上書きします。必要に応じていくつでも環境ファイルを追加することができます。
環境ファイルに
parameter_defaultsセクションを追加します。このセクションで、ポートエクステンション用 DNS ドメインdns_domain_portsを追加します。- 例
parameter_defaults: NeutronPluginExtensions: "qos,port_security,dns_domain_ports"
parameter_defaults: NeutronPluginExtensions: "qos,port_security,dns_domain_ports"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記dns_domain_portsを設定する場合は、デプロイメントで DNS Integration エクステンションdns_domainも使用しないようにしてください。これらのエクステンションは互換性がなく、両方のエクステンションを同時に定義することはできません。
また、
parameter_defaultsセクションで、NeutronDnsDomainパラメーターを使用してドメイン名 (example.com) を追加します。- 例
parameter_defaults: NeutronPluginExtensions: "qos,port_security,dns_domain_ports" NeutronDnsDomain: "example.com"parameter_defaults: NeutronPluginExtensions: "qos,port_security,dns_domain_ports" NeutronDnsDomain: "example.com"Copy to Clipboard Copied! Toggle word wrap Toggle overflow
コア Orchestration テンプレート、環境ファイル、およびこの新しい環境ファイルを指定して、
openstack overcloud deployコマンドを実行します。重要後で実行される環境ファイルで定義されているパラメーターとリソースが優先されることになるため、環境ファイルの順序は重要となります。
- 例
openstack overcloud deploy --templates \ -e [your-environment-files] \ -e /usr/share/openstack-tripleo-heat-templates/environments/services/my-neutron-environment.yaml
$ openstack overcloud deploy --templates \ -e [your-environment-files] \ -e /usr/share/openstack-tripleo-heat-templates/environments/services/my-neutron-environment.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
オーバークラウドにログインし、ネットワーク (
public) に新しいポート (new_port) を作成します。DNS 名 (my_port) をポートに割り当てます。- 例
source ~/overcloudrc openstack port create --network public --dns-name my_port new_port
$ source ~/overcloudrc $ openstack port create --network public --dns-name my_port new_portCopy to Clipboard Copied! Toggle word wrap Toggle overflow
ポート (
new_port) の詳細を表示します。- 例
openstack port show -c dns_assignment -c dns_domain -c dns_name -c name new_port
$ openstack port show -c dns_assignment -c dns_domain -c dns_name -c name new_portCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow dns_assignmentセクションにおいて、ポートの完全修飾ドメイン名 (fqdn) 値には、DNS 名 (my_port) と、前のステップでNeutronDnsDomainで設定したドメイン名 (example.com) の連結が含まれています。
作成したポート (
new_port) を使用して、新しい仮想マシンインスタンス (my_vm) を作成します。- 例
openstack server create --image rhel --flavor m1.small --port new_port my_vm
$ openstack server create --image rhel --flavor m1.small --port new_port my_vmCopy to Clipboard Copied! Toggle word wrap Toggle overflow
ポート (
new_port) の詳細を表示します。- 例
openstack port show -c dns_assignment -c dns_domain -c dns_name -c name new_port
$ openstack port show -c dns_assignment -c dns_domain -c dns_name -c name new_portCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Compute サービスは、
dns_name属性を元の値 (my_port) からポートが関連付けられたインスタンスの名前 (my_vm) に変更します。
21.4. DHCP 属性のポートへの割り当て リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Openstack Plaform (RHOSP) Networking サービス (neutron) エクステンションを使用して、ネットワーク機能を追加できます。追加の DHCP オプションエクステンション (extra_dhcp_opt) を使用して、DHCP 属性を持つ DHCP クライアントのポートを設定できます。たとえば、tftp-server、server-ip-address、bootfile-name などの PXE ブートオプションを DHCP クライアントポートに追加できます。
extra_dhcp_opt 属性の値は、DHCP オプションオブジェクトの配列であり、各オブジェクトには opt_name と opt_value が含まれています。IPv4 がデフォルトのバージョンですが、3 番目のオプションである ip-version=6 を含めることで、これを IPv6 に変更できます。
VM インスタンスが起動すると、RHOSP Networking サービスは DHCP プロトコルを使用してインスタンスにポート情報を提供します。実行中のインスタンスにすでに接続されているポートに DHCP 情報を追加した場合、インスタンスの再起動時に、新しい DHCP ポート情報のみを使用します。
より一般的な DHCP ポート属性には、bootfile-name、dns-server、domain-name、mtu、server-ip-address、および tftp-server があります。opt_name の許容値の完全なセットについては、DHCP の仕様を参照してください。
前提条件
- RHOSP 管理者権限が必要です。
手順
-
アンダークラウドホストに
stackユーザーとしてログインします。 source コマンドでアンダークラウドの認証情報ファイルを読み込みます。
source ~/stackrc
$ source ~/stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow カスタム YAML 環境ファイルを作成します。
例
vi /home/stack/templates/my-environment.yaml
$ vi /home/stack/templates/my-environment.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow ご自分の環境ファイルには、
parameter_defaultsというキーワードを含める必要があります。これらのキーワードの下に、追加の DHCP オプションエクステンンションextra_dhcp_optを追加します。例
parameter_defaults: NeutronPluginExtensions: "qos,port_security,extra_dhcp_opt"
parameter_defaults: NeutronPluginExtensions: "qos,port_security,extra_dhcp_opt"Copy to Clipboard Copied! Toggle word wrap Toggle overflow コア heat テンプレート、環境ファイル、およびこの新しいカスタム環境ファイルを指定して、deployment コマンドを実行します。
重要後で実行される環境ファイルで定義されているパラメーターとリソースが優先されることになるため、環境ファイルの順序は重要となります。
例
openstack overcloud deploy --templates \ -e <your_environment_files> \ -e /usr/share/openstack-tripleo-heat-templates/environments/services/octavia.yaml \ -e /home/stack/templates/my-environment.yaml
$ openstack overcloud deploy --templates \ -e <your_environment_files> \ -e /usr/share/openstack-tripleo-heat-templates/environments/services/octavia.yaml \ -e /home/stack/templates/my-environment.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
Source コマンドで認証情報ファイルを読み込みます。
例
source ~/overcloudrc
$ source ~/overcloudrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow ネットワーク (
public) に新しいポート (new_port) を作成します。DHCP 仕様から新しいポートに有効な属性を割り当てます。例
openstack port create --extra-dhcp-option \ name=domain-name,value=test.domain --extra-dhcp-option \ name=ntp-server,value=192.0.2.123 --network public new_port
$ openstack port create --extra-dhcp-option \ name=domain-name,value=test.domain --extra-dhcp-option \ name=ntp-server,value=192.0.2.123 --network public new_portCopy to Clipboard Copied! Toggle word wrap Toggle overflow ポート (
new_port) の詳細を表示します。例
openstack port show new_port -c extra_dhcp_opts
$ openstack port show new_port -c extra_dhcp_optsCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
21.5. ポートでの NUMA アフィニティーの有効化 リンクのコピーリンクがクリップボードにコピーされました!
ユーザーがポート上で NUMA アフィニティーを持つインスタンスを作成できるようにするには、Red Hat Openstack Plaform (RHOSP) Networking Service (neutron) 拡張機能 port_uma_affinity_policy をロードする必要があります。
前提条件
- アンダークラウドホストへのアクセスとスタックユーザーの認証情報。
手順
-
アンダークラウドホストに
stackユーザーとしてログインします。 source コマンドでアンダークラウドの認証情報ファイルを読み込みます。
source ~/stackrc
$ source ~/stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow port_uma_affinity_policy拡張機能を有効にするには、NeutronPluginExtensionsパラメーターが定義されている環境ファイルを開き、リストにport_uma_affinity_policyを追加します。parameter_defaults: NeutronPluginExtensions: "qos,port_numa_affinity_policy"
parameter_defaults: NeutronPluginExtensions: "qos,port_numa_affinity_policy"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 変更した環境ファイルを他の環境ファイルとともにスタックに追加し、オーバークラウドを再デプロイします。
重要後で実行される環境ファイルで定義されているパラメーターとリソースが優先されることになるため、環境ファイルの順序は重要となります。
openstack overcloud deploy --templates \ -e <your_environment_files> \ -e /home/stack/templates/<custom_environment_file>.yaml
$ openstack overcloud deploy --templates \ -e <your_environment_files> \ -e /home/stack/templates/<custom_environment_file>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
Source コマンドで認証情報ファイルを読み込みます。
例
source ~/overcloudrc
$ source ~/overcloudrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 新規ポートを作成します。
ポートを作成するときは、次のいずれかのオプションを使用して、ポートに適用する NUMA アフィニティーポリシーを指定します。
-
--numa-policy-required- このポートのスケジューリングに必要な NUMA アフィニティーポリシー。 -
--numa-policy-preferred- このポートのスケジューリング用に優先される NUMA アフィニティーポリシー。 --numa-policy-legacy- レガシーモードを使用してこのポートをスケジュールする NUMA アフィニティーポリシー。例
openstack port create --network public \ --numa-policy-legacy myNUMAAffinityPort
$ openstack port create --network public \ --numa-policy-legacy myNUMAAffinityPortCopy to Clipboard Copied! Toggle word wrap Toggle overflow
-
ポートの詳細を表示します。
例
openstack port show myNUMAAffinityPort -c numa_affinity_policy
$ openstack port show myNUMAAffinityPort -c numa_affinity_policyCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
拡張機能がロードされると、
Value列にはlegacy、preferred、またはrequiredが表示されます。拡張機能のロードに失敗した場合、ValueはNoneとなります。+----------------------+--------+ | Field | Value | +----------------------+--------+ | numa_affinity_policy | legacy | +----------------------+--------+
+----------------------+--------+ | Field | Value | +----------------------+--------+ | numa_affinity_policy | legacy | +----------------------+--------+Copy to Clipboard Copied! Toggle word wrap Toggle overflow
21.6. カーネルモジュールの読み込み リンクのコピーリンクがクリップボードにコピーされました!
一部の Red Hat OpenStack Platform (RHOSP) 機能には、特定のカーネルモジュールを読み込む必要があります。たとえば、OVS ファイアウォールドライバーの場合、2 つの仮想マシンインスタンス間の GRE トンネリングをサポートするには、nf_conntrack_proto_gre カーネルモジュールを読み込む必要があります。
特別な Orchestration サービス (heat) パラメーター ExtraKernelModules を使用することで、GRE トンネリング等の機能に必要なカーネルモジュールの設定情報が heat に保存されるようになります。この後、通常のモジュール管理時に、これらの必要なカーネルモジュールが読み込まれます。
手順
アンダークラウドホストに stack ユーザーとしてログインして、カスタム YAML 環境ファイルを作成します。
例
vi /home/stack/templates/my-modules-environment.yaml
$ vi /home/stack/templates/my-modules-environment.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow ヒントheat は、テンプレート と呼ばれるプランのセットを使用して環境をインストールおよび設定します。カスタム環境ファイル を使用して、オーバークラウドの要素をカスタマイズすることができます。このファイルは、heat テンプレートをカスタマイズするための特別な種別のテンプレートです。
YAML 環境ファイルの
parameter_defaultsセクションで、ExtraKernelModulesを読み込むモジュールの名前に設定します。例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow コア heat テンプレート、環境ファイル、およびこの新しいカスタム環境ファイルを指定して、
openstack overcloud deployコマンドを実行します。重要後で実行される環境ファイルで定義されているパラメーターとリソースが優先されることになるため、環境ファイルの順序は重要となります。
例
openstack overcloud deploy --templates \ -e [your-environment-files] \ -e /usr/share/openstack-tripleo-heat-templates/environments/services/my-modules-environment.yaml
$ openstack overcloud deploy --templates \ -e [your-environment-files] \ -e /usr/share/openstack-tripleo-heat-templates/environments/services/my-modules-environment.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
heat がモジュールを正しく読み込んでいれば、Compute ノードで
lsmodコマンドを実行すると、出力が表示されるはずです。例
sudo lsmod | grep nf_conntrack_proto_gre
sudo lsmod | grep nf_conntrack_proto_greCopy to Clipboard Copied! Toggle word wrap Toggle overflow
21.7. メタデータサービスへのクエリーの制限 リンクのコピーリンクがクリップボードにコピーされました!
Networking サービス (neutron) を使用すると、管理者は、仮想マシンインスタンスが Compute メタデータサービスをクエリーできる速度を制限でき、サービス拒否 (DoS) 攻撃などのサイバー脅威から RHOSP 環境を保護できます。管理者は、neutron.conf 設定ファイルの metadata_rate_limiting セクションにあるパラメーターセットに値を割り当ててこれを実施します。Networking サービスはこれらのパラメーターを使用して、レート制限を実行するように HAProxy サーバーを設定します。HAProxy サーバーは、OVS バックエンドにある L3 ルーターおよび DHCP エージェント内、および OVN バックエンドのメタデータサービス内で実行されます。
前提条件
- RHOSP Compute ノードにアクセスでき、設定ファイルを更新するパーミッションがある。
- RHOSP 環境で IPv4 ネットワークを使用している。現在、Networking サービスは、IPv6 ネットワークでのメタデータレート制限をサポートしていません。
- この手順では、OVN メタデータサービスまたは OVS メタデータエージェントを再起動する必要があります。潜在的な中断による運用への影響を最小限に抑えるために、このアクティビティーをメンテナンス時間帯にスケジュールしてください。
手順
すべてのコンピューティングノードの
/var/lib/config-data/puppet-generated/neutron/etc/neutron/neutron.confのmetadata_rate_limitingセクションで、次のパラメーターの値を設定します。rate_limit_enabled-
メタデータ要求のレートを制限できます。デフォルト値は
falseです。メタデータのレート制限を有効にするには、値をtrueに設定します。 ip_versions-
クエリーレートを制御するメタデータ IP アドレスに使用される IP バージョン
4。RHOSP は、IPv6 ネットワークのメタデータレート制限をまだサポートしていません。 base_window_duration-
クエリー要求が制限される期間 (秒単位)。デフォルト値は
10秒です。 base_query_rate_limit-
base_window_durationの実行中に許可されるリクエストの最大数。リクエストのデフォルト値は10です。 burst_window_duration-
base_window_durationよりも高い要求レートが許可される期間 (秒単位)。デフォルト値は10秒です。 burst_query_rate_limit-
burst_window_duration中に許可されるリクエストの最大数。リクエストのデフォルト値は10です。 - 例
この例では、Networking サービスは ベース 時間とレートで設定され、インスタンスが 60 秒間に IPv4 メタデータサービス IP アドレスを 6 回クエリーできるようにします。また、Networking サービスは バースト 時間とレートも設定されており、それぞれ 10 秒の短い期間中に 2 つのクエリーというより高いレートが可能になります。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
メタデータサービスを再起動します。
デプロイメントで使用される Networking サービスメカニズムドライバーに応じて、以下のいずれかを行います。
- ML2/OVN
-
Compute ノードで
tripleo_ovn_metadata_agent.serviceを再起動します。 - ML2/OVS
-
Compute ノードで
tripleo_neutron_metadata_agent.serviceを再起動します。
第22章 レイヤー 3 高可用性 (HA) の設定 リンクのコピーリンクがクリップボードにコピーされました!
22.1. 高可用性 (HA) なしの RHOSP Networking サービス リンクのコピーリンクがクリップボードにコピーされました!
高可用性 (HA) 機能が有効化されていない Red Hat OpenStack Platform (RHOSP) Networking サービスのデプロイメントは、物理ノードの障害からの影響を受けやすくなります。
一般的なデプロイメントでは、プロジェクトが仮想ルーターを作成します。この仮想ルーターは、物理 Networking サービス Layer 3 (L3) エージェントノードで実行されるようにスケジューリングされます。L3 エージェントノードがなくなると、そのノードに依存していた仮想マシンは外部ネットワークと接続できなくなります。したがって、Floating IP アドレスも利用できなくなります。また、そのルーターがホストするネットワーク間の接続が失われます。
22.2. レイヤー 3 高可用性 (HA) の概要 リンクのコピーリンクがクリップボードにコピーされました!
この active/passive の高可用性 (HA) 設定は、業界標準の VRRP (RFC 3768 で定義) を使用してプロジェクトルーターと Floating IP アドレスを保護します。ノードの 1 つを active ルーター、残りを standby ロールとして機能するように指定することで、仮想ルーターは複数の Red Hat OpenStack Platform (RHOSP) Networking サービスノードの間で無作為にスケジュールされます。
レイヤー 3 (L3) HA をデプロイするには、冗長系の Networking サービスノードにおいて、Floating IP 範囲や外部ネットワークへのアクセスなど、同様の設定を維持する必要があります。
以下の図では、アクティブな Router1 ルーターと Router2 ルーターが別個の物理 L3 Networking サービスエージェントノード上で稼働しています。L3 HA は対応するノードに仮想ルーターのバックアップをスケジュールし、物理ノードに障害が発生した場合のサービス再開に備えます。L3 エージェントノードに障害が発生すると、L3 HA は影響を受けた仮想ルーターと Floating IP アドレスを稼働中のノードに再スケジュールします。
フェイルオーバーのイベント時には、Floating IP 経由のインスタンスの TCP セッションは影響を受けず、中断なしで新しい L3 ノードに移行されます。SNAT トラフィックのみがフェイルオーバーイベントの影響を受けます。
active/active HA モードの場合には、L3 エージェントはさらに保護されます。
22.3. レイヤー 3 高可用性 (HA) のフェイルオーバー条件 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenStack Platform (RHOSP) Networking サービスのレイヤー 3 (L3) 高可用性 (HA) は、以下のイベントにおいて保護するリソースを自動的に再スケジュールします。
- Networking サービス L3 エージェントノードがシャットダウンしたか、ハードウェアの障害により電力の供給を失った場合
- L3 エージェントノードが物理ネットワークから分離され、接続が切断された場合
L3 エージェントサービスを手動で停止しても、フェイルオーバーのイベントが開始される訳ではありません。
22.4. レイヤー 3 高可用性 (HA) におけるプロジェクトの留意事項 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenStack Platform (RHOSP) Networking サービスレイヤー 3 (L3) 高可用性 (HA) 設定はバックエンドで行われており、プロジェクトがそれを認識することはありません。通常通り、プロジェクトは仮想ルーターの作成/管理を続けることができます。ただし、L3 HA の実装を設計する場合に留意すべき制限事項があります。
- L3 HA がサポートする仮想ルーターの数は、プロジェクトごとに最大で 255 個です。
- 内部の VRRP メッセージは、個別の内部ネットワーク内でトランスポートされ、プロジェクトごとに自動的にこれらのメッセージが作成されます。このプロセスは、ユーザーが意識すること無く行われます。
-
高可用性 (HA) ルーターを ML2/OVS に実装する場合、それぞれの L3 エージェントは
haproxyおよびneutron-keepalived-state-change-monitorプロセスをルーターごとに生成します。各プロセスは約 20 MB のメモリーを消費します。デフォルトでは、各 HA ルーターは 3 つの L3 エージェントにあり、各ノードのリソースを消費します。したがって、RHOSP ネットワークのサイジング時に、実装予定の HA ルーターの数をサポートするのに十分なメモリーが割り当てられているようにしてください。
22.5. RHOSP Networking サービスに対する高可用性 (HA) の変更 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenStack Platform (RHOSP) Networking サービス (neutron) API の更新により、管理者はルーターの作成時に --ha=True/False フラグを設定できるようになりました。この設定は、/var/lib/config-data/puppet-generated/neutron/etc/neutron/neutron.conf の l3_ha のデフォルト設定を上書きします。
neutron-server に加えられる高可用性 (HA) の変更:
- Networking サービスで使用されるスケジューラー (無作為または leastrouter のスケジューラー) に関わらず、レイヤー 3 (L3) HA は無作為にアクティブなロールを割り当てます。
- データベーススキーマが変更され、仮想ルーターへの仮想 IP アドレス (VIP) の確保を処理します。
- L3 HA トラフィックを転送するために、トランスポートネットワークが作成されます。
Networking サービスの L3 エージェントに加えられる HA の変更:
- 新しい keepalived のマネージャーが追加され、負荷分散と HA 機能が提供されるようになりました。
- IP アドレスが仮想 IP アドレスに変換されます。
22.6. RHOSP Networking サービスノードでのレイヤー 3 高可用性 (HA) の有効化 リンクのコピーリンクがクリップボードにコピーされました!
インストール時に、Red Hat OpenStack Platform (RHOSP) director は、RHOSP コントローラーが少なくとも 2 つあり、分散仮想ルーター (DVR) を使用しない場合に、デフォルトで仮想ルーターの高可用性 (HA) を有効化します。RHOSP Orchestration サービス (heat) パラメーター max_l3_agents_per_router を使用して、HA ルーターがスケジュールされる RHOSP Networking サービスレイヤー 3 (L3) エージェントの最大数を設定できます。
前提条件
- RHOSP デプロイメントで DVR が使用されていない。
- 2 つ以上の RHOSP コントローラーがデプロイされている。
手順
アンダークラウドに stack ユーザーとしてログインし、source コマンドで
stackrcファイルを読み込み、director コマンドラインツールを有効にします。- 例
source ~/stackrc
$ source ~/stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow
カスタム YAML 環境ファイルを作成します。
- 例
vi /home/stack/templates/my-neutron-environment.yaml
$ vi /home/stack/templates/my-neutron-environment.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow ヒントOrchestration サービス (heat) は、テンプレートと呼ばれるプランのセットを使用して環境をインストールおよび設定します。カスタム環境ファイル を使用して、オーバークラウドの要素をカスタマイズすることができます。このファイルは、heat テンプレートをカスタマイズするための特別な種別のテンプレートです。
YAML 環境ファイルで、
NeutronL3HAパラメーターをtrueに設定します。これにより、director がデフォルトで設定しなかった場合でも HA が有効になります。parameter_defaults: NeutronL3HA: 'true'
parameter_defaults: NeutronL3HA: 'true'Copy to Clipboard Copied! Toggle word wrap Toggle overflow HA ルーターがスケジュールされる L3 エージェントの最大数を設定します。
max_l3_agents_per_routerパラメーターを、デプロイメント内にあるネットワークノードの最小数と合計数の間の値に設定します。(ゼロの値は、ルーターがすべてのエージェントでスケジュールされることを意味します。)- 例
parameter_defaults: NeutronL3HA: 'true' ControllerExtraConfig: neutron::server::max_l3_agents_per_router: 2parameter_defaults: NeutronL3HA: 'true' ControllerExtraConfig: neutron::server::max_l3_agents_per_router: 2Copy to Clipboard Copied! Toggle word wrap Toggle overflow この例では、4 つの Networking サービスノードをデプロイする場合、2 つの L3 エージェントのみが各 HA 仮想ルーターを保護します (1 つはアクティブ、もう 1 つはスタンバイ)。
max_l3_agents_per_routerの値を利用可能なネットワークノードの数よりも大きく設定している場合は、新しい L3 エージェントを追加してスタンバイルーターの数をスケールアウトすることができます。デプロイする新しい L3 エージェントノードごとに、Networking サービスはmax_l3_agents_per_routerの上限に達するまで、仮想ルーターをスタンバイバージョンを追加でスケジュールします。
コア heat テンプレート、環境ファイル、およびこの新しいカスタム環境ファイルを指定して、
openstack overcloud deployコマンドを実行します。重要後で実行される環境ファイルで定義されているパラメーターとリソースが優先されることになるため、環境ファイルの順序は重要となります。
- 例
openstack overcloud deploy --templates \ -e [your-environment-files] \ -e /usr/share/openstack-tripleo-heat-templates/environments/services/my-neutron-environment.yaml
$ openstack overcloud deploy --templates \ -e [your-environment-files] \ -e /usr/share/openstack-tripleo-heat-templates/environments/services/my-neutron-environment.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記NeutronL3HAをtrueに設定すると、作成されるすべての仮想ルーターが HA ルーターにデフォルト設定されます。ルーターの作成時に、openstack router createコマンドに--no-haオプションを追加して HA オプションを上書きできます。openstack router create --no-ha
$ openstack router create --no-haCopy to Clipboard Copied! Toggle word wrap Toggle overflow
22.7. 高可用性 (HA) RHOSP Networking サービスノード設定の確認 リンクのコピーリンクがクリップボードにコピーされました!
高可用性(HA) RHOSP Networking サービスノードの設定を確認するには、以下の手順に従います。
手順
仮想ルーターの名前空間内で
ip addressコマンドを実行して、高可用性(HA)デバイスを表示します。- 例
ip netns exec qrouter-b30064f9-414e-4c98-ab42-646197c74020 ip address
$ ip netns exec qrouter-b30064f9-414e-4c98-ab42-646197c74020 ip addressCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
この出力で、HA デバイスには ha- の接頭辞が付けられます。
... 2794: ha-45249562-ec: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state DOWN group default link/ether 12:34:56:78:2b:5d brd ff:ff:ff:ff:ff:ff inet 169.254.0.2/24 brd 169.254.0.255 scope global ha-54b92d86-4f
... 2794: ha-45249562-ec: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state DOWN group default link/ether 12:34:56:78:2b:5d brd ff:ff:ff:ff:ff:ff inet 169.254.0.2/24 brd 169.254.0.255 scope global ha-54b92d86-4fCopy to Clipboard Copied! Toggle word wrap Toggle overflow
レイヤー 3 HA が有効化され、個別のノードで障害が発生した場合に、仮想ルーターと Floating IP アドレスが保護されます。
第23章 アベイラビリティーゾーンの使用によるネットワークリソースの高可用性の設定 リンクのコピーリンクがクリップボードにコピーされました!
バージョン 16.2 以降、Red Hat OpenStack Platform (RHOSP) は RHOSP Networking サービス (neutron) のアベイラビリティーゾーン (AZ) をサポートします。
AZ を使用すると、RHOSP ネットワークリソースを高可用性の設定にすることができます。異なる AZ の異なる電源ソースにアタッチされたネットワークノードを分類し、重要なサービスを個別の AZ に配置するようにスケジューリングすることができます。
多くの場合、ネットワーキングサービス AZ はコンピューティングサービス (nova) AZ と組み合わせて使用されます。これは、ワークロードが実行される物理サイトに対してローカルな特定の仮想ネットワークをお客様が確実に使用できるようにするためです。分散コンピュートノードのアーキテクチャーについて、詳細は 分散 Compute ノードアーキテクチャーのデプロイ を参照してください。
23.1. Networking サービスのアベイラビリティーゾーンについて リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenStack Platform (RHOSP) Networking サービス (neutron) のアベイラビリティーゾーン (AZ) 機能を提供するのに必要な拡張は availability_zone、router_availability_zone、および network_availability_zone です。Modular Layer 2 プラグインと Open vSwitch を組み合わせた (ML2/OVS) メカニズムドライバーは、これらの拡張機能をすべてサポートします。
Modular Layer 2 プラグインと Open Virtual Network を組み合わせた (ML2/OVN) メカニズムドライバーは、ルーターアベイラビリティーゾーンのみをサポートします。ML2/OVN には分散 DHCP サーバーがあるため、ネットワーク AZ をサポートする必要はありません。
ネットワークリソースを作成する際に、OpenStack クライアントのコマンドラインオプション --availability-zone-hint を使用して AZ を指定することができます。指定した AZ が AZ のヒントリストに追加されます。ただし、AZ 属性は、リソースがスケジュールされるまで実際には設定されません。ネットワークリソースに割り当てられる実際の AZ は、ヒントオプションで指定した AZ とは異なる場合があります。この不一致の理由は、ゾーンに障害があるか、指定のゾーンに容量が残っていないことです。
ネットワークリソースの作成時に、ユーザーが AZ を指定できない場合は、デフォルトの AZ 用に Networking サービスを設定することができます。デフォルトの AZ の設定に加えて、特定のドライバーを設定して AZ でネットワークおよびルーターをスケジュールすることもできます。
23.2. ML2/OVS のネットワークサービスのアベイラビリティーゾーンの設定 リンクのコピーリンクがクリップボードにコピーされました!
ユーザーがネットワークとルーターを作成する際に、Red Hat OpenStack Platform (RHOSP) Networking サービス (neutron) によって自動的に割り当てられる 1 つ以上のデフォルトアベイラビリティーゾーン (AZ) を設定できます。さらに、Networking サービスが各 AZ 用にこれらのリソースをスケジュールするために使用するネットワークおよびルータードライバーを設定することもできます。
分散コンピュートノード (DCN) 環境でネットワーキングサービス AZ を使用する場合、ネットワーキングサービス AZ 名と Compute サービス (nova) AZ 名が一致している。
このトピックに含まれる情報は、Module Layer 2 プラグインと Open vSwitch メカニズムドライバーの組み合わせ (ML2/OVS) を使用する RHOSP Networking サービスを実行するデプロイメント用です。
前提条件
- RHOSP 16.2 以降がデプロイされている。
ML2/OVS メカニズムドライバーを使用する RHOSP Networking サービスが実行されている。
詳しくは、分散コンピュートノードアーキテクチャーのデプロイ を参照してください。
手順
アンダークラウドに
stackユーザーとしてログインし、source コマンドでstackrcファイルを読み込み、director コマンドラインツールを有効にします。例
source ~/stackrc
$ source ~/stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow カスタム YAML 環境ファイルを作成します。
例
vi /home/stack/templates/my-neutron-environment.yaml
$ vi /home/stack/templates/my-neutron-environment.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow ヒントRed Hat OpenStack Platform Orchestration サービス (heat) は、テンプレート と呼ばれるプランのセットを使用して環境をインストールおよび設定します。カスタム環境ファイル を使用して、オーバークラウドの要素をカスタマイズすることができます。このファイルは、heat テンプレートをカスタマイズするための特別な種別のテンプレートです。
YAML 環境ファイルの
parameter_defaultsセクションで、NeutronDefaultAvailabilityZonesパラメーターおよび 1 つ以上の AZ を入力します。ネットワークまたはルーターの作成時に、ユーザーが--availability-zone-hintオプションを使用して AZ を指定できない場合は、Networking サービスはこれらの AZ を割り当てます。重要DCN 環境では、Networking サービスの AZ 名を Compute サービスの AZ 名と一致させる必要があります。
例
parameter_defaults: NeutronDefaultAvailabilityZones: 'az-central,az-datacenter2,az-datacenter1'
parameter_defaults: NeutronDefaultAvailabilityZones: 'az-central,az-datacenter2,az-datacenter1'Copy to Clipboard Copied! Toggle word wrap Toggle overflow パラメーター (
NeutronDhcpAgentAvailabilityZoneおよびNeutronL3AgentAvailabilityZone) の値を入力して、DHCP と L3 エージェントの AZ を決定します。例
parameter_defaults: NeutronDefaultAvailabilityZones: 'az-central,az-datacenter2,az-datacenter1' NeutronL3AgentAvailabilityZone: 'az-central,az-datacenter2,az-datacenter1' NeutronDhcpAgentAvailabilityZone: 'az-central,az-datacenter2,az-datacenter1'
parameter_defaults: NeutronDefaultAvailabilityZones: 'az-central,az-datacenter2,az-datacenter1' NeutronL3AgentAvailabilityZone: 'az-central,az-datacenter2,az-datacenter1' NeutronDhcpAgentAvailabilityZone: 'az-central,az-datacenter2,az-datacenter1'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要DCN 環境では、特定のエッジサイトに関連する AZ でポートがスケジュールされるように、
NeutronDhcpAgentAvailabilityZoneに対して単一の AZ を定義します。デフォルトでは、ネットワークおよびルータースケジューラーは
AZAwareWeightSchedulerおよびAZLeastRoutersSchedulerです。このいずれかまたは両方を変更する場合は、それぞれNeutronNetworkSchedulerDriverパラメーターおよびNeutronRouterSchedulerDriverパラメーターを使用して新規スケジューラーを入力します。例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow コア heat テンプレート、環境ファイル、およびこの新しいカスタム環境ファイルを指定して、
openstack overcloud deployコマンドを実行します。重要後で実行される環境ファイルで定義されているパラメーターとリソースが優先されることになるため、環境ファイルの順序は重要となります。
例
openstack overcloud deploy --templates \ -e <your-environment-files> \ -e /usr/share/openstack-tripleo-heat-templates/environments/services/\ my-neutron-environment.yaml
$ openstack overcloud deploy --templates \ -e <your-environment-files> \ -e /usr/share/openstack-tripleo-heat-templates/environments/services/\ my-neutron-environment.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
availability zone listコマンドを実行して、アベイラビリティーゾーンが正しく定義されていることを確認します。例
openstack availability zone list
$ openstack availability zone listCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
23.3. ML2/OVN のネットワークサービスのアベイラビリティーゾーンの設定 リンクのコピーリンクがクリップボードにコピーされました!
ユーザーがルーターを作成する際に、Red Hat OpenStack Platform (RHOSP) Networking サービス (neutron) によって自動的に割り当てられる 1 つ以上のデフォルトアベイラビリティーゾーン (AZ) を設定できます。さらに、Networking サービスが各 AZ 用にこれらのリソースをスケジュールするために使用するルータードライバーを設定することもできます。
このトピックで説明する情報は、Modular Layer 2 プラグインと Open Virtual Network の組み合わせ (ML2/OVN) のメカニズムドライバーを使用する RHOSP Networking サービスを実行するデプロイメント用です。
ML2/OVN メカニズムドライバーは、ルーターのアベイラビリティーゾーンのみをサポートします。ML2/OVN には分散 DHCP サーバーがあるため、ネットワーク AZ をサポートする必要はありません。
前提条件
- RHOSP 16.2 以降がデプロイされている。
- ML2/OVN メカニズムドライバーを使用する RHOSP Networking サービスが実行されている。
分散コンピュートノード (DCN) 環境でネットワーキングサービス AZ を使用する場合、ネットワーキングサービス AZ 名と Compute サービス (nova) AZ 名が一致している。
詳しくは、分散コンピュートノードアーキテクチャーのデプロイ を参照してください。
重要OVNCMSOptions: 'enable-chassis-as-gw'を設定し、OVNAvailabilityZoneパラメーターに 1 つ以上の AZ 値を指定して、すべてのルーターゲートウェイポートが必ず OpenStack コントローラーノード上に存在することを確認してください。これらのアクションを実行すると、ルーターはすべてのシャーシをルーターゲートウェイポートの潜在的なホストとしてスケジュールできなくなります。
手順
アンダークラウドに stack ユーザーとしてログインし、source コマンドで
stackrcファイルを読み込み、director コマンドラインツールを有効にします。例
source ~/stackrc
$ source ~/stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow カスタム YAML 環境ファイルを作成します。
例
vi /home/stack/templates/my-neutron-environment.yaml
$ vi /home/stack/templates/my-neutron-environment.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow ヒントRed Hat OpenStack Platform Orchestration サービス (heat) は、テンプレート と呼ばれるプランのセットを使用して環境をインストールおよび設定します。カスタム環境ファイル を使用して、オーバークラウドの要素をカスタマイズすることができます。このファイルは、heat テンプレートをカスタマイズするための特別な種別のテンプレートです。
YAML 環境ファイルの
parameter_defaultsセクションで、NeutronDefaultAvailabilityZonesパラメーターおよび 1 つ以上の AZ を入力します。重要DCN 環境では、Networking サービスの AZ 名を Compute サービスの AZ 名と一致させる必要があります。
ネットワークまたはルーターの作成時に、ユーザーが
--availability-zone-hintオプションを使用して AZ を指定できない場合は、Networking サービスはこれらの AZ を割り当てます。例
parameter_defaults: NeutronDefaultAvailabilityZones: 'az-central,az-datacenter2,az-datacenter1'
parameter_defaults: NeutronDefaultAvailabilityZones: 'az-central,az-datacenter2,az-datacenter1'Copy to Clipboard Copied! Toggle word wrap Toggle overflow パラメーター
OVNAvailabilityZoneの値を入力して、ゲートウェイノード (コントローラーおよびネットワークノード) の AZ を決定します。重要OVNAvailabilityZoneパラメーターは、OVNCMSOptionsパラメーターで使用されている AZ 値を置き換えます。OVNAvailabilityZoneパラメーターを使用する場合は、OVNCMSOptionsパラメーターに AZ 値がないことを確認してください。- 例
この例では、
az-centralAZ のコントローラーと、datacenter1およびdatacenter2AZ のネットワーク担当者に対してロールが事前定義されています。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要DCN 環境では、特定のエッジサイトに関連する AZ でポートがスケジュールされるように、
ControllerCentralParameterに対して単一の AZ を定義します。
デフォルトでは、ルータースケジューラーは
AZLeastRoutersSchedulerです。これを変更する場合は、NeutronRouterSchedulerDriverパラメーターを使用して新規スケジューラーを入力します。例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow コア heat テンプレート、環境ファイル、およびこの新しいカスタム環境ファイルを指定して、
openstack overcloud deployコマンドを実行します。重要後で実行される環境ファイルで定義されているパラメーターとリソースが優先されることになるため、環境ファイルの順序は重要となります。
例
openstack overcloud deploy --templates \ -e <your-environment-files> \ -e /usr/share/openstack-tripleo-heat-templates/environments/services/\ my-neutron-environment.yaml
$ openstack overcloud deploy --templates \ -e <your-environment-files> \ -e /usr/share/openstack-tripleo-heat-templates/environments/services/\ my-neutron-environment.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
availability zone listコマンドを実行して、アベイラビリティーゾーンが正しく定義されていることを確認します。例
openstack availability zone list
$ openstack availability zone listCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
23.4. アベイラビリティーゾーンのネットワークおよびルーターへの手動での割り当て リンクのコピーリンクがクリップボードにコピーされました!
RHOSP ネットワークまたはルーターを作成する際に、Red Hat OpenStack Platform (RHOSP) Networking サービス (neutron) のアベイラビリティーゾーン (AZ) を手動で割り当てることができます。AZ を使用すると、RHOSP ネットワークリソースを高可用性の設定にすることができます。異なる AZ の異なる電源ソースにアタッチされたネットワークノードを分類し、重要なサービスを実行するノードを個別の AZ にスケジューリングすることができます。
ネットワークまたはルーターの作成時に AZ の割り当てに失敗すると、RHOSP Networking サービスは RHOSP Orchestration サービス (heat) パラメーターに指定した値を自動的にリソースに割り当てます。NeutronDefaultAvailabilityZones に値が定義されていない場合、リソースは AZ 属性なしでスケジュールされます。
Modular Layer 2 プラグインと Open vSwitch の組み合わせ (ML2/OVS) のメカニズムドライバーを使用する RHOSP Networking サービスエージェントでは、AZ ヒントが提供されておらず、NeutronDefaultAvailabilityZones に値が指定されていない場合には、Compute サービス (nova) の AZ の値を使用してエージェントをスケジュールします。
前提条件
- RHOSP 16.2 以降がデプロイされている。
- ML2/OVS または ML2/OVN (Open Virtual Network) メカニズムドライバーのいずれかを使用する RHOSP Networking サービスの実行
手順
OpenStack クライアントを使用してオーバークラウド上にネットワークを作成する場合は、
--availability-zone-hintオプションを使用します。注記ML2/OVN メカニズムドライバーは、ルーターのアベイラビリティーゾーンのみをサポートします。ML2/OVN には分散 DHCP サーバーがあるため、ネットワーク AZ をサポートする必要はありません。
以下の例では、ネットワーク (
net1) が作成され、AZzone-1またはzone-2のいずれかに割り当てられます。- ネットワークの例
openstack network create --availability-zone-hint zone-1 \ --availability-zone-hint zone-2 net1
$ openstack network create --availability-zone-hint zone-1 \ --availability-zone-hint zone-2 net1Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
OpenStack クライアントを使用してオーバークラウドでルーターを作成する場合は、
--haおよび--availability-zone-hintオプションを使用します。以下の例では、ルーター (
router1) が作成され、AZzone-1またはzone-2のいずれかに割り当てられます。- ルーターの例
openstack router create --ha --availability-zone-hint zone-1 \ --availability-zone-hint zone-2 router1
$ openstack router create --ha --availability-zone-hint zone-1 \ --availability-zone-hint zone-2 router1Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例
+ ネットワークリソースの作成時に、実際の AZ が割り当てられていないことに注意してください。RHOSP Networking サービスは、リソースのスケジュール時に AZ を割り当てます。
検証
適切な OpenStack クライアント
showコマンドを入力して、リソースがホストされるゾーンを確認します。- 例
openstack network show net1
$ openstack network show net1Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力例