Red Hat OpenDaylight のインストールおよび設定ガイド
Red Hat OpenStack Platform を使用した OpenDaylight のインストールと設定
概要
前書き リンクのコピーリンクがクリップボードにコピーされました!
本ガイドでは、OpenDaylight のソフトウェア定義ネットワーク (SDN) コントローラーを使用するように Red Hat OpenStack Platform 13 をデプロイする方法について説明します。OpenDaylight コントローラーは、neutron ML2/OVS プラグインと、その L2 エージェントおよび L3 エージェントと互換性があり、簡単に置き換えることができます。OpenDaylight は、Red Hat OpenStack 環境内でネットワークの仮想化を提供します。
第1章 概要 リンクのコピーリンクがクリップボードにコピーされました!
1.1. OpenDaylight とは リンクのコピーリンクがクリップボードにコピーされました!
OpenDaylight プラットフォームは、Java で書かれたプログラミング可能な SDN コントローラーで、OpenStack 環境のネットワーク仮想化に使用することができます。コントローラーのアーキテクチャーは、ノースバウンドとサウスバウンドの別々のインターフェイスで設定されます。OpenStack の統合の目的においては、メインのノースバウンドインターフェイスは NeutronNorthbound プロジェクトを使用します。これは、OpenStack Networking サービス (neutron) と通信します。サウスバウンドの OpenDaylight プロジェクト、OVSDB、および OpenFlow プラグインは、Open vSwitch (OVS) コントロールおよびデータプレーンとの通信に使われます。neutron の設定をネットワーク仮想化に変換するメインの OpenDaylight プロジェクトは、NetVirt プロジェクトです。
1.2. OpenStack での OpenDaylight の機能 リンクのコピーリンクがクリップボードにコピーされました!
1.2.1. デフォルトの neutron アーキテクチャー リンクのコピーリンクがクリップボードにコピーされました!
neutron のリファレンスアーキテクチャーでは、一連のエージェントを使用して OpenStack 内のネットワークを管理します。これらのエージェントは、neutron に異なるプラグインとして提供されます。コアプラグインは、レイヤー 2 のオーバーレイテクノロジーとデータプレーンの種別の管理に使用されます。サービスプラグインは、レイヤー 3 または OSI モデルのより上位の層でのネットワーク操作 (例: ファイアウォール、DHCP、ルーティング、NAT) の管理に使用されます。
デフォルトでは、Red Hat OpenStack Platform は Modular Layer 2 (ML2) のコアプラグインを OVS メカニズムドライバーと共に使用します。これは、各コンピュートノードとコントローラーノードで OVS を設定するためのエージェントを提供します。サービスプラグイン、DHCP エージェント、メタデータエージェントは、L3 エージェントと共にコントローラー上で実行されます。
1.2.2. OpenDaylight をベースとするネットワークアーキテクチャー リンクのコピーリンクがクリップボードにコピーされました!
OpenDaylight は、networking-odl と呼ばれる独自のドライバーを提供することにより、ML2 コアプラグインと統合します。これにより、全ノードで OVS エージェントを使用する必要がなくなります。OpenDaylight は、個別のノードにエージェントを使用せずに、環境全体にわたる各 OVS インスタンスを直接プログラミングすることができます。レイヤー 3 のサービスの場合は、neutron が OpenDaylight L3 プラグインを使用するように設定されます。この方法を使用すると、データプレーンを直接プログラミングして、OpenDaylight が分散仮想ルーティング機能を処理できるため、ルーティングやネットワークアドレス変換 (NAT) を処理する複数のノード上のエージェントの数が削減されます。neutron DHCP およびメタデータエージェントは引き続き、DHCP とメタデータ (cloud-init) の要求の管理に使用されます。
OpenDaylight は DHCP サービスを提供します。ただし、現行の Red Hat OpenStack Platform director のアーキテクチャーをデプロイする場合には、neutron DHCP エージェントを使用すると高可用性 (HA) と仮想マシン (VM) インスタンスのメタデータ (cloud-init) のサポートが提供されるため、Red Hat では DHCP サービスの機能は OpenDaylight に依存せずに neutron DHCP エージェントをデプロイすることを推奨しています。
1.3. Red Hat OpenStack Platform director およびその設計について リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenStack Platform director は、完全な OpenStack 環境のインストールおよび管理を行うためのツールセットです。これは、主に OpenStack の TripleO (OpenStack-On-OpenStack) プロジェクトをベースとしています。
このプロジェクトは OpenStack コンポーネントを使用して、完全に機能する OpenStack 環境をインストールします。また、OpenStack ノードとして稼働するベアメタルシステムのプロビジョニングと制御を行う新たな OpenStack コンポーネントも含まれています。この方法で、リーンで、かつ堅牢性の高い、完全な Red Hat OpenStack Platform 環境をインストールすることができます。
Red Hat OpenStack Platform director では、アンダークラウド と オーバークラウド の 2 つの主要な概念を採用しています。アンダークラウドがオーバークラウドのインストールおよび設定を行います。Red Hat OpenStack Platform director のアーキテクチャーに関する詳細は、director のインストールと使用方法 を参照してください。
図1.1 Red Hat OpenStack Platform director: アンダークラウドとオーバークラウド
1.3.1. Red Hat OpenStack Platform director と OpenDaylight リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenStack Platform director では、コンポーザブルサービスとカスタムロールの概念が導入されています。コンポーザブルサービスにより、必要な場合にロールごとに追加/有効化することができる孤立したリソースが形成されます。カスタムロールにより、ユーザーはデフォルトのコントローラーロールとコンピュートロールに依存しない、独自のロールを作成することができます。ユーザーは、デプロイする OpenStack サービスと、それらのサービスをホストするノードを選択できます。
OpenDaylight を director に統合するために、2 つのサービスが追加されました。
- OpenDaylight SDN コントローラーを実行するための OpenDaylightApi サービス
- 各ノードで OVS を設定して OpenDaylight と適切に通信するための OpenDaylightOvs サービス
デフォルトでは、OpenDaylightApi サービスは、コントローラーロール上で実行され、OpenDaylightOvs サービスはコントローラーロールとコンピュートロールで実行されます。OpenDaylight は、OpenDaylightApi サービスのインスタンス数をスケーリングすることによって、高可用性 (HA) を提供します。デフォルトでは、コントローラーを 3 つ以上にスケーリングすると、HA が自動的に有効化されます。OpenDaylight の HA アーキテクチャーに関する詳しい情報は、OpenDaylight での高可用性とクラスターリング を参照してください。
図1.2 OpenDaylight および OpenStack: ベースアーキテクチャー
1.3.2. Red Hat OpenStack Platform director でのネットワーク分離 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenStack Platform director は、個別のサービスを特定の事前定義済みのネットワーク種別に設定することができます。このネットワークトラフィック種別には以下が含まれます。
| IPMI | ノードの電源管理ネットワーク。アンダークラウドをインストールする前に、このネットワークを設定する必要があります。 |
| Provisioning (ctlplane) | director はこのネットワークトラフィック種別を使用して、DHCP および PXE ブートで新規ノードをデプロイし、オーバークラウドのベアメタルサーバー上で OpenStack Platform のインストールをオーケストレーションします。ネットワークは、アンダークラウドのインストール前に設定する必要があります。または、ironic でオペレーティングシステムのイメージを直接デプロイすることができます。その場合には、PXE ブートは必要ありません。 |
| Internal API (internal_api) | Internal API ネットワークは、API 通信を使用した OpenStack サービス間の通信、RPC メッセージ、データベース通信やロードバランサーの背後の内部通信に使用されます。 |
| Tenant (tenant) | neutron は VLAN (各テナントネットワークがネットワーク VLAN) またはオーバーレイトンネルを使用して、各テナントに独自のネットワークを提供します。ネットワークトラフィックは、テナントのネットワークごとに分離されます。トンネリングを使用する場合には、競合は発生することなく、複数のテナントネットワークで同じ IP アドレス範囲を使用することができます。 |
Generic Routing Encapsulation (GRE) および Virtual eXtensible Local Area Network (VXLAN) は両方ともコードベースで利用可能ですが、OpenDaylight で推奨されるトンネリングプロトコルは VXLAN です。VXLAN の定義は RFC 7348 に記載されています。本ガイドではこれ以降、トンネリングが使用される場合にはいずれも VXLAN に焦点を当てています。
| Storage (storage) | Block Storage、NFS、iSCSI など。パフォーマンスを最適化するには、完全に別のスイッチファブリックに分離するのが理想的でしょう。 |
| Storage Management (storage_mgmt) | OpenStack Object Storage (swift) は、このネットワークを使用して、参加するレプリカノード間でデータオブジェクトを同期します。プロキシーサービスは、ユーザー要求と下層にあるストレージ層の間の仲介インターフェイスとして機能します。プロキシーは、受信要求を受け取り、必要なレプリカの位置を特定して要求データを取得します。Ceph バックエンドを使用するサービスは、Cephと直接対話せずにフロントエンドのサービスを使用するため、Storage Management Network 経由で接続を確立します。RBD ドライバーは例外で、このトラフィックは直接 Ceph に接続する点に注意してください。 |
| External/Public API | この API は、グラフィカルシステム管理用の OpenStack Dashboard (Horizon)、OpenStack サービス用の Public API をホストして、インスタンスへの受信トラフィック向けに SNAT を実行します。外部ネットワークがプライベート IP アドレスを使用する場合には (RFC-1918 に準拠)、インターネットからのトラフィックに対して、さらに NAT を実行する必要があります。 |
| Floating IP | テナントネットワーク内のインスタンスに割り当てられた Floating IP アドレスと Fixed IP アドレスとの間の 1 対 1 の IPv4 アドレスマッピングを使用して、受信トラフィックがインスタンスに到達できるようにします。外部と Floating IP ネットワークは、別々に維持管理するのではなく、組み合わせるのが一般的な設定です。 |
| Management | SSH アクセス、DNS トラフィック、NTP トラフィックなどのシステム管理機能を提供します。このネットワークは、コントローラー以外のノード用のゲートウェイとしても機能します。 |
一般的な Red Hat OpenStack Platform のシステム環境では通常、ネットワーク種別の数は物理ネットワークのリンク数を超えます。全ネットワークを正しいホストに接続するには、オーバークラウドは 802.1q VLAN タグ付けを使用して、1 つのインターフェイスに複数のネットワークを提供します。ネットワークの多くは、サブネットが分離されていますが、インターネットアクセスまたはインフラストラクチャーにネットワーク接続ができるようにルーティングを提供する レイヤー 3 のゲートウェイが必要です。
OpenDaylight では、関連するネットワークには Internal API および Tenant サービスが含まれ、ServiceNetMap 内の各ネットワークにマッピングされます。デフォルトでは、ServiceNetMap は、OpenDaylightApi ネットワークを Internal API ネットワークにマッピングします。この設定は、neutron へのノースバウンドトラフィックと、OVS へのサウスバウンドトラフィックが Internal API ネットワークに分離されることを意味します。
OpenDaylight は分散ルーティングアーキテクチャーを使用するので、各コンピュートノードが Floating IP ネットワークに接続されている必要があります。デフォルトでは、Red Hat OpenStack Platform director は External ネットワークが OVS ブリッジ br-ex にマッピングされた neutron の物理ネットワーク datacentre で実行されることを想定します。そのため、コンピュートノードの NIC テンプレートでは、デフォルトの設定に br-ex を含める必要があります。
図1.3 OpenDaylight と OpenStack: ネットワーク分離の例
1.3.3. ネットワークとファイアウォールの設定 リンクのコピーリンクがクリップボードにコピーされました!
ファイアウォールが厳しく制約されている場合など、一部のデプロイメントでは、OpenStack と OpenDaylight サービスのトラフィックを有効にするためにファイアウォールを手動で設定する必要のある場合があります。
デフォルトでは、OpenDaylight のノースバウンドは 8080 ポートを使用します。同じく 8080 ポートを使用する swift サービスと競合しないようにするために、Red Hat OpenStack Platform director でインストールする場合には、OpenDaylight のポートは 8081 に設定されています。Red Hat OpenDaylight のソリューションにおけるサウスバンドは、OVS インスタンスの通常の接続先となるポート 6640 と 6653 でリッスンするように設定されます。
OpenStack では通常、各サービスに独自の仮想 IP アドレス (VIP) があり、OpenDaylight も同様に動作します。HAProxy は 8081 ポートをパブリックに公開し、OpenStack にすでに存在するプレーンの仮想 IP を制御するように設定されます。仮想 IP とポートは、ML2 プラグインに提供され、neutron はそのポートを介してすべての通信を行います。OVS インスタンスは、OpenDaylight がサウスバウンド用に実行しているノードの物理 IP に直接接続します。
| サービス | プロトコル | デフォルトのポート | ネットワーク |
|---|---|---|---|
| OpenStack Neutron API | TCP | 9696 | Internal API |
| OpenStack Neutron API (SSL) | TCP | 13696 | Internal API |
| OpenDaylight ノースバウンド | TCP | 8081 | Internal API |
| OpenDaylight サウスバウンド: OVSDB | TCP | 6640 | Internal API |
| OpenDaylight サウスバウンド: OpenFlow | TCP | 6653 | Internal API |
| OpenDaylight 高可用性 | TCP | 2550 | Internal API |
| VXLAN | UDP | 4789 | Tenant |
表 1: ネットワークとファイアウォールの設定
本項では、OpenDaylight の統合に関連したサービスとプロトコルを中心とする情報を記載していますが、すべては網羅していません。Red Hat OpenStack で実行するサービスに必要なネットワークポートの全一覧は、Firewall Rules for Red Hat OpenStack Platform ガイドを参照してください。
第2章 OpenDaylight を実行するための要件 リンクのコピーリンクがクリップボードにコピーされました!
以下の項には、OpenDaylight を統合したオーバークラウドのデプロイメント要件に関する情報を記載します。Red Hat OpenDaylight を正しくインストール/実行するために十分なコンピューターリソースが必要です。以下の情報を参照して、最小要件を理解してください。
2.1. コンピュートノードの要件 リンクのコピーリンクがクリップボードにコピーされました!
コンピュートノードは、仮想マシンインスタンスが起動した後にそれらを稼働させるロールを果たします。全コンピュートノードが、ハードウェアの仮想化をサポートしている必要があります。また、ホストする仮想マシンインスタンスの要件をサポートするのに十分なメモリーとディスク容量も必要です。
| プロセッサー | Intel 64 または AMD64 CPU 拡張機能をサポートする 64 ビットのプロセッサーで、AMD-V または Intel VT のハードウェア仮想化拡張機能が有効化されていること。このプロセッサーには最小でも 4 つのコアが搭載されていることを推奨しています。 |
| メモリー | 最小で 6 GB のメモリー。仮想マシンインスタンスに割り当てるメモリー容量に応じて、追加の RAM をこの要件に加算します。 |
| ディスク領域 | 最小 40 GB の空きディスク領域 |
| ネットワークインターフェイスカード | 最小 1 枚の 1 Gbps ネットワークインターフェイスカード。ただし、実稼働環境ではネットワークインターフェイスカード (NIC) を最低でも 2 枚使用することを推奨します。タグ付けされた VLAN トラフィックを委譲する場合や、ボンディングインターフェイス向けには、追加のネットワークインターフェイスを使用します。NIC に関する詳しい情報は、ネットワークアダプターのサポート を参照してください。 |
| 電源管理 | 各コントローラーノードには、Intelligent Platform Management Interface (IPMI) 機能などのサポート対象の電源管理インターフェイスがサーバーのマザーボードに搭載されている必要があります。 |
2.2. コントローラーノードの要件 リンクのコピーリンクがクリップボードにコピーされました!
コントローラーノードは、Red Hat OpenStack Platform 環境の中核となるサービス (例: Horizon Dashboard、バックエンドのデータベースサーバー、Keystone 認証、高可用性サービスなど) をホストするロールを果たします。
| プロセッサー | Intel 64 または AMD64 CPU 拡張機能をサポートする 64 ビットのプロセッサー |
| メモリー | 最小のメモリー容量は 20 GB です。ただし、推奨のメモリー容量は、CPU のコア数により異なります。以下の計算を参考にしてください。 コントローラーの最小 RAM の計算: 1 コアあたり 1.5 GB のメモリーを使用します。たとえば、コアが 48 個あるマシンには、72 GB の RAM が必要です。 コントローラーの推奨 RAM の計算: 1 コアあたり 3 GB のメモリーを使用します。たとえば、コアが 48 個あるマシンには、144 GB の RAM が必要です。メモリーの要件に関する詳しい情報は、Red Hat カスタマーポータルで Red Hat OpenStack Platform Hardware Requirements for Highly Available Controllers を参照してください。 |
| ディスク領域 | 最小 40 GB の空きディスク領域 |
| ネットワークインターフェイスカード | 最小 2 枚の 1 Gbps ネットワークインターフェイスカード。タグ付けされた VLAN トラフィックを委譲する場合や、ボンディングインターフェイス向けには、追加のネットワークインターフェイスを使用します。 |
| 電源管理 | 各コントローラーノードには、Intelligent Platform Management Interface (IPMI) 機能などのサポート対象の電源管理インターフェイスがサーバーのマザーボードに搭載されている必要があります。 |
第3章 オーバークラウドへの OpenDaylight のインストール リンクのコピーリンクがクリップボードにコピーされました!
本ガイドには、OpenDaylight のインストールを中心とした内容のみを記載しています。OpenDaylight をデプロイする前には、アンダークラウド環境が正常に機能しており、オーバークラウドノードが物理ネットワークに接続されていることを確認する必要があります。
アンダークラウドとオーバークラウドのデプロイに必要な手順を記載した director のインストールと使用方法 ガイドの アンダークラウドのインストール および CLI ツールを使用した基本的なオーバークラウドの設定 を参照してください。
Red Hat OpenStack platform で OpenDaylight をインストールするには、いくつかの方法があります。次の章では、OpenDaylight の最も役立つシナリオとインストールの方法を紹介します。
3.1. デフォルトの設定と設定値のカスタマイズについての理解 リンクのコピーリンクがクリップボードにコピーされました!
OpenDaylight のインストールの推奨される方法は、デフォルトの環境ファイル neutron-opendaylight.yaml を使用して、そのファイルをアンダークラウドでデプロイメントコマンドに引数として渡す方法です。これにより、OpenDaylight のデフォルトのインストール環境がデプロイされます。
OpenDaylight インストールと設定のその他のシナリオは、このインストールの方法をベースとしています。デプロイメントコマンドに特定の環境ファイルを指定することによって、さまざまな異なるシナリオで OpenDaylight をデプロイすることができます。
3.1.1. デフォルトの環境ファイルについての理解 リンクのコピーリンクがクリップボードにコピーされました!
デフォルトの環境ファイルは /usr/share/openstack-tripleo-heat-templates/environments/services ディレクトリー内の neutron-opendaylight.yaml です。この環境ファイルで OpenDaylight がサポートするサービスを有効化/無効化します。また、この環境ファイルは、director がデプロイメント中に設定する必須のパラメーターを定義します。
以下のファイルは、Docker ベースのデプロイメントに使用することができる neutron-opendaylight.yaml ファイルの例です。
Red Hat OpenStack Platform director は resource_registry を使用してデプロイメント用のリソースを対応するリソース定義の yaml ファイルにマッピングします。サービスは、マッピング可能なリソース種別の 1 つです。特定のサービスを無効化する必要がある場合には、OS::Heat::None の値を設定します。デフォルトのファイルでは、OpenDaylightApi と OpenDaylightOvs のサービスが有効化されますが、neutron エージェントは、OpenDaylight がその機能を継承するため、明示的に無効化されます。
Heat パラメーターは、director を使用したデプロイメントの設定値を設定するために使用できます。デフォルト値を上書きするには、環境ファイルの parameter_defaults セクションを使用してください。
この例では、OpenDaylight を有効化するために、NeutronEnableForceMetadata、NeutronMechanismDrivers、NeutronServicePlugins のパラメーターが設定されています。
その他のサービスとそれらの設定オプションの一覧は、本ガイドの後半に記載しています。
3.1.2. OpenDaylight API サービスの設定 リンクのコピーリンクがクリップボードにコピーされました!
必要に応じて、/usr/share/openstack-tripleo-heat-templates/puppet/services/opendaylight-api.yaml ファイルのデフォルト値を変更することができます。このファイルの設定は、直接上書きしないでください。このファイルを複製して、元のファイルをバックアップ対策として保持します。複製したファイルのみを編集し、そのファイルをデプロイメントのコマンドで渡します。
後に指定する環境ファイルのパラメーターにより、前の環境ファイルのパラメーターが上書きされます。パラメーターが誤って上書きされるのを防ぐために、環境ファイルの指定順序には注意を払う必要があります。
3.1.2.1. 設定可能なオプション リンクのコピーリンクがクリップボードにコピーされました!
OpenDaylight API サービス の設定時には、いくつかのパラメーターを指定することができます。
|
|
ノースバウンドの通信に使用するポートを設定します。デフォルト値は |
|
|
OpenDaylight のログインユーザー名を設定します。デフォルト値は |
|
|
OpenDaylight のログインパスワードを設定します。デフォルト値は |
|
|
OpenDaylight を有効化して、DHCP サービスとして機能するようにします。デフォルト値は |
|
|
OpenDaylight でブートする機能のコンマ区切りのリスト。デフォルト値は |
|
|
REST のアクセスに使用する L7 プロトコルを設定します。デフォルト値は |
|
|
OpenDaylight リポジトリーを管理するかどうかを定義します。デフォルト値は |
|
|
OpenDaylight が使用する SNAT メカニズムを設定します。 |
|
|
OpenDaylight のロギングメカニズムを設定します。 |
|
|
OpenDaylight TLS キーストアのパスワードを設定します。デフォルト値は |
|
|
内部ネットワークで TLS を有効または無効にします。 |
|
|
内部ネットワーク内のサービス用に TLS を有効にする場合は、 |
TLS を使用したデプロイ方法についての詳細は、オーバークラウドの高度なカスタマイズガイドの Identity Management を使用した内部およびパブリックエンドポイントでの SSL/TLS の有効化 を参照してください。
3.1.3. OpenDaylight OVS サービスの設定 リンクのコピーリンクがクリップボードにコピーされました!
必要に応じて、/usr/share/openstack-tripleo-heat-templates/puppet/services/opendaylight-ovs.yaml ファイルのデフォルト値を変更することができます。このファイルの設定は、直接上書きしないでください。このファイルを複製して、元のファイルをバックアップ対策として保持します。複製したファイルのみを編集し、そのファイルをデプロイメントのコマンドで渡します。
後に指定する環境ファイルのパラメーターにより、前の環境ファイルのパラメーターが上書きされます。パラメーターが誤って上書きされるのを防ぐために、環境ファイルの指定順序には注意を払う必要があります。
3.1.3.1. 設定可能なオプション リンクのコピーリンクがクリップボードにコピーされました!
OpenDaylight OVS サービス の設定時には、いくつかのパラメーターを指定することができます。
|
|
OpenDaylight へのノースバウンドの通信に使用するポートを設定します。デフォルト値は |
|
|
REST アクセスに使用するレイヤー 7 プロトコル。デフォルト値は |
|
|
OpenDaylight の検証に使用する URL は、OVS が接続する前に完全に稼働します。デフォルト値は |
|
|
論理ネットワークと物理インターフェイスの間のマッピングのコンマ区切りリスト。この設定は、VLAN デプロイメントに必要です。デフォルト値は |
|
|
OpenDaylight OVS サービスのカスタムユーザー名を設定可能にします。デフォルト値は |
|
|
OpenDaylight OVS サービスのカスタムパスワードを設定可能にします。デフォルト値は |
|
|
この OVS ホストに許可されているテナントネットワーク種別を定義します。nova インスタンスとネットワークのスケジュール先となるホストを制限するために、ホストまたはロールによって異なる場合があります。デフォルトは値は |
|
|
OVS で DPDK を有効または無効にします。デフォルト値は |
|
|
vhostuser ポート作成での OVS のモードを指定します。クライアントモードでは、ハイパーバイザーが vhostuser ソケットを作成するロールを果たします。サーバーモードでは、OVS が作成します。デフォルト値は |
|
|
vhostuser ソケットに使用するディレクトリーを指定します。デフォルト値は |
|
|
OVS ハードウェアオフロードを有効または無効にします。 |
|
|
内部ネットワークで TLS を有効または無効にします。 |
|
|
内部ネットワーク内のサービス用に TLS を有効にする場合は、 |
|
|
OpenDaylight の更新レベル。 |
|
|
vhost-user ソケットディレクトリーのグループ。vhostuser がデフォルトの |
|
|
vhost-user ソケットディレクトリーのユーザー名vhostuser がデフォルトの |
3.1.4. OpenDaylight での neutron メタデータサービスの使用 リンクのコピーリンクがクリップボードにコピーされました!
OpenStack Compute サービスにより、特定のアドレス 169.254.169.254 に対して Web 要求を実行することによって、仮想マシンはそれらに関連付けられたメタデータのクエリーを行うことができます。OpenStack Networking は、分離されたネットワークまたは重複する IP アドレスを使用する複数のネットワークから要求が実行された場合でも、そのような nova-api に対する要求をプロキシーします。
メタデータサービスは、メタデータ要求への対応に neutron L3 エージェントルーターを使用するか、あるいは DHCP エージェントインスタンスを使用します。レイヤー 3 のルーティングプラグインを有効化して OpenDaylight をデプロイすると、neutron L3 エージェントが無効化されます。このため、テナントネットワークにルーターがある場合でも、メタデータは DHCP インスタンスを通過するように設定する必要があります。この機能は、デフォルトの環境ファイル neutron-opendaylight.yaml で有効化されます。無効にするには、NeutronEnableForceMetadata を false に設定してください。
仮想マシンインスタンスには、169.254.169.254/32 に DHCP オプション 121 を使用する静的なホストルートがインストールされます。この静的なルートが配置されていると、169.254.169.254:80 へのメタデータ要求は、DHCP ネットワーク名前空間内のメタデータ名前サーバープロキシーに送信されます。名前空間のプロキシーは、次に HTTP ヘッダーをインスタンスの IP と共に要求に追加し、Unix ドメインソケットを介して、メタデータエージェントに接続します。メタデータエージェントは、neutron にクエリーを実行し、送信元の IP とネットワーク ID に対応するインスタンス ID を要求し、それを nova メタデータサービスにプロキシーします。追加の HTTP ヘッダーは、テナント間の分離を維持し、重複する IP をサポートできるようにするのに必要です。
3.1.5. ネットワーク設定と NIC テンプレートについての理解 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenStack Platform director では、物理的な neutron ネットワークのデータセンターは、デフォルトで br-ex という名前の OVS ブリッジにマッピングされます。これは、OpenDaylight の統合と常に同じです。デフォルトの OpenDaylightProviderMappings を使用して flat または VLAN _External ネットワークを作成する予定の場合には、コンピュートノード用の NIC テンプレートで OVS br-ex ブリッジを設定する必要があります。レイヤー 3 プラグインは、これらのノードに対して分散ルーティングを使用するので、コントローラーロールの NIC テンプレートでは br-ex を設定する必要はなくなります。
br-ex ブリッジは、ネットワーク分離内の任意のネットワークにマッピングすることができますが、例に示したように、通常は外部ネットワークにマッピングされます。
DPDK では、別の OVS ブリッジを作成する必要があります。これは通常、br-phy という名前で、ovs-dpdk-port と共に指定します。ブリッジの IP アドレスは、VXLAN オーバーレイネットワークトンネル向けに設定されます。
ネットワーク分離を使用する場合には、コンピュートノード上のこのブリッジには IP アドレスまたはデフォルトのルートを配置する必要はありません。
また、br-ex ブリッジを使用することなく、外部ネットワークアクセスを設定することが可能です。このメソッドを使用するには、オーバークラウドのコンピュートノードのインターフェイス名を前もって確認しておく必要があります。たとえば、コンピュートノード上の 3 番目のインターフェイスの確定的な名前が eth3 の場合には、コンピュートノード用の NIC テンプレートでインターフェイスを指定するのにその名前を使用することができます。
- type: interface name: eth3 use_dhcp: false
-
type: interface
name: eth3
use_dhcp: false
3.2. OpenDaylight の基本インストール リンクのコピーリンクがクリップボードにコピーされました!
本項では、標準の環境ファイルを使用して OpenDaylight をデプロイする方法を説明します。
3.2.1. オーバークラウド用の OpenDaylight 環境ファイルの準備 リンクのコピーリンクがクリップボードにコピーされました!
作業を開始する前に
- アンダークラウドをインストールします。詳しくは、アンダークラウドのインストール を参照してください。
- オプションとして、オーバークラウドと OpenDaylight のインストール中に使用するコンテナーイメージを備えたローカルレジストリーを作成します。詳しくは、director のインストールと使用方法ガイドの コンテナーイメージのソースの設定 を参照してください。
手順
アンダークラウドにログインして、admin の認証情報を読み込みます。
source ~/stackrc
$ source ~/stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow OpenStack および OpenDaylight のインストールに必要な Docker コンテナーイメージへの参照が含まれた Docker レジストリーファイル
odl-images.yamlを作成します。openstack overcloud container image prepare -e /usr/share/openstack-tripleo-heat-templates/environments/services-docker/neutron-opendaylight.yaml --output-env-file /home/stack/templates/odl-images.yaml
$ openstack overcloud container image prepare -e /usr/share/openstack-tripleo-heat-templates/environments/services-docker/neutron-opendaylight.yaml --output-env-file /home/stack/templates/odl-images.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
オーバークラウドをデプロイするための環境の作成が正常に完了し、「OpenDaylight を実装するオーバークラウドのインストール」に記載のインストールを開始する準備が整いました。
補足情報
openstack overcloud image prepare コマンドは、オーバークラウドと OpenDaylight のインストール用のコンテナーイメージ環境ファイルを準備します。上記のコマンドでは、以下のオプションを使用しています。
- -e
- OpenDaylight、OVS など、その環境に必要な特定のコンテナーイメージを追加するためのサービス環境ファイルを指定します。
- --env-file
- インストールに使用されるコンテナーイメージの一覧を記載した新規コンテナーイメージの環境ファイルを作成します。
- --pull-source
- Docker コンテナーレジストリーの場所を設定します。
- --namespace
- Docker コンテナーのバージョンを設定します。
- --prefix
- イメージ名に接頭辞を追加します。
- --suffix
- イメージ名に接尾辞を追加します。
- --tag
- イメージのリリースを定義します。
3.2.2. OpenDaylight を実装するオーバークラウドのインストール リンクのコピーリンクがクリップボードにコピーされました!
作業を開始する前に
- オーバークラウド用の OpenDaylight 環境ファイルの準備 に記載の手順に従って、デプロイメントに必要な環境ファイルを作成します。
手順
アンダークラウドにログインして、admin の認証情報を読み込みます。
source ~/stackrc
$ source ~/stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 事前に作成した環境ファイルを使用してオーバークラウドをデプロイします。
openstack overcloud deploy --templates /usr/share/openstack-tripleo-heat-templates \ -e <other environment files> -e /usr/share/openstack-tripleo-heat-templates/environments/services-docker/neutron-opendaylight.yaml \ -e /home/stack/templates/odl-images.yaml
$ openstack overcloud deploy --templates /usr/share/openstack-tripleo-heat-templates \ -e <other environment files> -e /usr/share/openstack-tripleo-heat-templates/environments/services-docker/neutron-opendaylight.yaml \ -e /home/stack/templates/odl-images.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
デプロイのコマンドで先に指定する環境ファイルは、そのコマンドで後に指定する環境ファイルによって上書きされます。指定する環境ファイルの順序に注意を払って、パラメーターが誤って上書きされないようにする必要があります。
変更するパラメーターのみの設定する最小限の環境ファイルを作成して、デフォルトの環境ファイルと組み合わせることにより、一部のパラメーターを上書きすることができます。
補足情報
本手順の openstack overcloud deploy コマンドでは、以下のオプションを使用しています。
- --templates
- Heat テンプレートのディレクトリーへのパスを定義します。
- -e
- 環境ファイルを指定します。
3.3. カスタムロールでの OpenDaylight のインストール リンクのコピーリンクがクリップボードにコピーされました!
カスタムロールで OpenDaylight をインストールすると、OpenDaylightApi サービスが分離されて、コントローラーノードとは異なる、指定の OpenDaylight ノードで実行されます。
OpenDaylight 用のカスタムロールを使用する場合には、ノードのレイアウトと機能の設定が含まれたロールファイルを作成する必要があります。
3.3.1. デフォルトロールをベースとするロールファイルのカスタマイズ リンクのコピーリンクがクリップボードにコピーされました!
ユーザー定義のロール一覧を使用して、OpenStack をデプロイすることができます。各ロールは、ユーザー定義のサービス一覧を実行します。ロールとは、個別のサービスまたは設定が含まれるノードのグループです。たとえば、nova API サービスが含まれる コントローラー ロールを作成することができます。ロールのサンプルは、openstack-tripleo-heat-templates で参照することができます。
これらのロールを使用して、オーバークラウドノードに必要なロールが記載された roles_data.yaml ファイルを作成します。また、ディレクトリー内に個別のファイルを作成し、それらを使用して新しい roles_data.yaml を生成することによって、カスタムロールを作成することも可能です。
特定の OpenStack ロールのみをインストールするカスタマイズされた環境ファイルを作成するには、以下の手順を完了します。
手順
admin の認証情報を読み込みます。
source ~/stackrc
$ source ~/stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow カスタムの
roles_data.yamlファイルの生成に使用可能なデフォルトのロールを一覧表示します。openstack overcloud role list
$ openstack overcloud role listCopy to Clipboard Copied! Toggle word wrap Toggle overflow これらのロールをすべて使用する場合には、以下のコマンドを実行して
roles_data.yamlファイルを生成します。openstack overcloud roles generate -o roles_data.yaml
$ openstack overcloud roles generate -o roles_data.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow ロールファイルをカスタマイズして、一部のロールのみが含まれるようにするには、前のステップで、コマンドにそのロール名を引数として渡すことができます。たとえば、コントローラー、コンピュート、Telemetry ロールが含まれる
roles_data.yamlファイルを作成するには、以下のコマンドを実行します。openstack overcloud roles generate - roles_data.yaml Controller Compute Telemetry
$ openstack overcloud roles generate - roles_data.yaml Controller Compute TelemetryCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.3.2. OpenDaylight 用のカスタムロールの作成 リンクのコピーリンクがクリップボードにコピーされました!
カスタムロールを作成するには、ロールファイルディレクトリーに新しいロールファイルを作成して、新しい roles_data.yaml ファイルを生成します。作成するカスタムロールごとに、新しいロールファイルを作成する必要があります。各カスタムロールファイルは、特定のロールのためだけのデータが含まれている必要があり、カスタムのロールファイル名はロール名と一致する必要があります。
このファイルでは、少なくとも以下のパラメーターを定義する必要があります。
Name:ロール名を定義します。この名前は、必ず空にせず、一意の文字列にする必要があります。- Name: Custom_role
- Name: Custom_roleCopy to Clipboard Copied! Toggle word wrap Toggle overflow ServicesDefault:このロールで使用するサービスを一覧表示します。サービスを使用しない場合には、この変数は空のままにすることができます。以下に書式の例を示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
必須のパラメーター以外に、他の設定も定義することができます。
CountDefault:デフォルトのノード数を定義します。CountDefault:が空の場合には、デフォルトでゼロに設定されます。CountDefault: 1
CountDefault: 1Copy to Clipboard Copied! Toggle word wrap Toggle overflow HostnameFormatDefault:ホスト名の書式文字列を定義します。この値は任意です。HostnameFormatDefault: '%stackname%-computeovsdpdk-%index%'
HostnameFormatDefault: '%stackname%-computeovsdpdk-%index%'Copy to Clipboard Copied! Toggle word wrap Toggle overflow Description:ロールについて説明し、情報を追加します。Description: Compute OvS DPDK RoleDescription: Compute OvS DPDK RoleCopy to Clipboard Copied! Toggle word wrap Toggle overflow
手順
デフォルトのロールファイルを新規ディレクトリーにコピーします。元のファイルは、バックアップとして保管してください。
mkdir ~/roles cp /usr/share/openstack-tripleo-heat-templates/roles/* ~/roles
$ mkdir ~/roles $ cp /usr/share/openstack-tripleo-heat-templates/roles/* ~/rolesCopy to Clipboard Copied! Toggle word wrap Toggle overflow ~/rolesのController.yamlファイルでデフォルトのコントローラーロールを編集して、そのファイルからOpenDaylightApiの行を削除し、コントローラーノード上で OpenDaylightAPI サービスを無効にします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ~/rolesディレクトリーに新しいOpenDaylight.yamlファイルを作成して、OpenDaylight ロールの説明を追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - ファイルを保存します。
OpenDaylight をカスタムロールで実装する OpenStack オーバークラウドのデプロイに使用する新規ロールファイルを生成します。
openstack overcloud roles generate --roles-path ~/roles -o ~/roles_data.yaml Controller Compute OpenDaylight
$ openstack overcloud roles generate --roles-path ~/roles -o ~/roles_data.yaml Controller Compute OpenDaylightCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.3.3. OpenDaylight をカスタムロールで実装するオーバークラウドのインストール リンクのコピーリンクがクリップボードにコピーされました!
作業を開始する前に
- アンダークラウドをインストールします。詳しくは、アンダークラウドのインストール を参照してください。
- オーバークラウドコンテナーイメージへのリンクのある環境ファイルを作成します。詳しくは、オーバークラウド用の OpenDaylight 環境ファイルの準備 を参照してください。
- ロールファイルを準備して、カスタムロールで OpenDaylight を設定します。詳しくは、OpenDaylight 用のカスタムロールの作成 を参照してください。
手順
カスタムロールを作成します。環境ファイルに以下のパラメーター値を設定します。
- OvercloudOpenDaylightFlavor: opendaylight - OvercloudOpenDaylightCount: 3- OvercloudOpenDaylightFlavor: opendaylight - OvercloudOpenDaylightCount: 3Copy to Clipboard Copied! Toggle word wrap Toggle overflow 詳しくは、roles_data ファイルの作成 を参照してください。
-r 引数を指定してデプロイメントコマンドを実行し、デフォルトのロール定義を上書きします。このオプションは、カスタムロールが設定されている
roles_data.yamlファイルを使用するようにデプロイメントコマンドに指示します。前のステップで作成したodl-composable.yaml環境ファイルをデプロイメントコマンドに渡します。以下の例では、合計 3 つの ironic ノードがあります。ある ironic ノードは、カスタムの OpenDaylight ロール用に予約されます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
デプロイのコマンドで先に指定する環境ファイルは、そのコマンドで後に指定する環境ファイルによって上書きされます。指定する環境ファイルの順序に注意を払って、パラメーターが誤って上書きされないようにする必要があります。
変更するパラメーターのみの設定する最小限の環境ファイルを作成して、デフォルトの環境ファイルと組み合わせることにより、一部のパラメーターを上書きすることができます。
補足情報
-rオプションは、インストール時にロールの定義を上書きします。-r <roles_data>.yaml
-r <roles_data>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow - カスタムロールには、インストール時に追加の ironic ノードが必要です。
- カスタムロールの rhosp13 コンポーザブルロールのノードカウンターを上書きするには、この例の構文を使用します (<role-name>Count: <value>)。ロール名は、role_data.yaml ファイルの正確で詳細な名前の情報で更新されます。
3.3.4. カスタムロールでの OpenDaylight インストールの検証 リンクのコピーリンクがクリップボードにコピーされました!
作業を開始する前に
- OpenDaylight をカスタムロールで実装するオーバークラウドをインストールします。詳しくは、OpenDaylight をカスタムロールで実装するオーバークラウドのインストール を参照してください。
手順
既存のインスタンスを一覧表示します。
openstack server list
$ openstack server listCopy to Clipboard Copied! Toggle word wrap Toggle overflow 新規 OpenDaylight ロールが 1 つのインスタンスとして専用になっていることを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.4. SR-IOV 対応の OpenDaylight のインストール リンクのコピーリンクがクリップボードにコピーされました!
OpenDaylight は、Single Root Input/Output Virtualization (SR-IOV) 対応のコンピュートノードと共にデプロイすることができます。このデプロイメントでは、コンピュートノードは、SR-IOV の専用ノードで稼働する必要があり、OVS をベースとする nova インスタンスを混在させてはなりません。単一の OpenDaylight デプロイメント内で OVS と SR-IOV のコンピュートノードの両方をデプロイすることは可能です。
このシナリオでは、カスタムの SR-IOV コンピュートロールを使用してこの種のデプロイメントを行います。
SR-IOV のデプロイメントでは、neutron SR-IOV エージェントを使用して、Virtual Function (VF) を設定する必要があります。これらの機能は、デプロイ時にコンピュートインスタンスに直接渡されて、そこでネットワークポートとして機能します。VF はコンピュートノード上のホスト NIC から派生するので、デプロイメントを開始する前に、ホストのインターフェイスに関する情報が必要となります。
3.4.1. SR-IOV コンピュートロールの準備 リンクのコピーリンクがクリップボードにコピーされました!
カスタムロールでの OpenDaylight のインストール と同じ方法に従って、SR-IOV コンピュートノード用のカスタムロールを作成し、デフォルトのコンピュートロールが OVS ベースの nova インスタンスに対応する一方で、SR-IOV ベースのインスタンスを作成できるようにする必要があります。
作業を開始する前に
- カスタムロールでの OpenDaylight のインストール の章を参照してください。
手順
デフォルトのロールファイルを新規ディレクトリーにコピーします。元のファイルは、バックアップとして保管してください。
mkdir ~/roles cp /usr/share/openstack-tripleo-heat-templates/roles/* ~/roles
$ mkdir ~/roles $ cp /usr/share/openstack-tripleo-heat-templates/roles/* ~/rolesCopy to Clipboard Copied! Toggle word wrap Toggle overflow ~/rolesディレクトリーに新しいComputeSriov.yamlファイルを作成して、以下のロールの説明を追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - ファイルを保存します。
NeutronSriovAgentおよびNeutronSriovHostConfigのサービスをデフォルトのコンピュートロールから削除して、情報を roles_data.yaml に保存します。- OS::TripleO::Services::NeutronSriovHostConfig - OS::TripleO::Services::NeutronSriovAgent- OS::TripleO::Services::NeutronSriovHostConfig - OS::TripleO::Services::NeutronSriovAgentCopy to Clipboard Copied! Toggle word wrap Toggle overflow SR-IOV 対応の OpenDaylight のコンピュートで OpenStack オーバークラウドのデプロイに使用する新規ロールファイルを生成します。
openstack overcloud roles generate --roles-path ~/roles -o ~/roles_data.yaml Controller Compute ComputeSriov
$ openstack overcloud roles generate --roles-path ~/roles -o ~/roles_data.yaml Controller Compute ComputeSriovCopy to Clipboard Copied! Toggle word wrap Toggle overflow ローカルレジストリーを作成します。
openstack overcloud container image prepare --namespace=192.168.24.1:8787/rhosp13 --prefix=openstack- --tag=2018-05-07.2 -e /home/stack/templates/environments/services-docker/neutron-opendaylight.yaml -e /home/stack/templates/environments/services-docker/neutron-opendaylight-sriov.yaml --output-env-file=/home/stack/templates/overcloud_images.yaml --roles-file /home/stack/templates/roles_data.yaml
openstack overcloud container image prepare --namespace=192.168.24.1:8787/rhosp13 --prefix=openstack- --tag=2018-05-07.2 -e /home/stack/templates/environments/services-docker/neutron-opendaylight.yaml -e /home/stack/templates/environments/services-docker/neutron-opendaylight-sriov.yaml --output-env-file=/home/stack/templates/overcloud_images.yaml --roles-file /home/stack/templates/roles_data.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.4.2. SR-IOV エージェントサービスの設定 リンクのコピーリンクがクリップボードにコピーされました!
SR-IOV 対応の OpenDaylight をデプロイするには、neutron-opendaylight.yaml ファイルのデフォルトのパラメーターを上書きする必要があります。/usr/share/openstack-tripleo-heat-templates にある標準の SR-IOV 環境ファイルと、neutron-opendaylight.yaml 環境ファイルを使用することができます。ただし、元のファイルは編集しないのが適切なプラクティスです。代わりに、元の環境ファイルを複製して、その複製したファイル内でパラメーターを変更してください。
または、変更するパラメーターのみを指定する新規環境ファイルを作成して、両方のファイルをデプロイメントに使用することができます。カスタマイズされた OpenDaylight をデプロイするには、デプロイメントコマンドに両方のファイルを渡します。後で指定する環境ファイルが前の設定を上書きするので、これらは正しい順序でデプロイメントコマンドに含める必要があります。正しい順序は、neutron-opendaylight.yaml が最初で、neutron-opendaylight-sriov.yaml が後になります。
OpenDaylight と SR-IOV をデフォルト設定でデプロイする場合には、Red Hat で提供している neutron-opendaylight-sriov.yaml を使用することができます。パラメーターを変更または追加する必要がある場合には、デフォルトの SR-IOV 環境ファイルのコピーを作成して、その新規作成されたファイルを編集してください。
カスタマイズされた neutron-opendaylight-sriov.yaml ファイルの例を以下に示します。
補足情報
neutron-opendaylight-sriov.yaml ファイルでは、以下のオプションを設定することができます。以下の表には、各オプションについての説明と、SR-IOV 機能を有効化するために必要な設定を記載します。
|
|
SR-IOV 用の PCI パススルーを使用できるようにします。このパラメーターは、環境ファイル内でコメント解除して、 |
|
|
Nova のデフォルトフィルターに PCI パススルーフィルターを指定できるようにします。このパラメーターは必須で、 |
|
| neutron の論理ネットワークをホストのネットワークインターフェイスにマッピングします。neutron が仮想ネットワークを物理ポートにバインドできるようにするには、このパラメーターを指定する必要があります。 |
|
|
1 つのホストのネットワークインターフェイス用に作成する VF の数。構文: |
|
| PCI パススルーでの使用を許可する nova の PCI デバイスのホワイトリストを一覧形式で設定します。以下に例を示します。 NovaPCIPassthrough:
- vendor_id: "8086"
product_id: "154c"
address: "0000:05:00.0"
physical_network: "datacentre"
特定のハードウェア属性の代わりに単に論理デバイス名を使用することもできます。 NovaPCIPassthrough:
- devname: "ens20f2"
physical_network: "datacentre"
|
3.4.3. SR-IOV 対応の OpenDaylight のインストール リンクのコピーリンクがクリップボードにコピーされました!
作業を開始する前に
- アンダークラウドをインストールします。詳しくは、アンダークラウドのインストール を参照してください。
- オーバークラウドコンテナーイメージへのリンクのある環境ファイルを作成します。詳しくは、オーバークラウド用の OpenDaylight 環境ファイルの準備 を参照してください。
- カスタムロールで SR-IOV 対応の OpenDaylight を設定するためのロールファイルを作成します。詳しくは、SR-IOV コンピュートロールの準備 を参照してください。
手順
-rの引数を使用してデプロイメントコマンドを実行し、カスタムロールファイルと OpenDaylight で SR-IOV 機能を有効化するのに必要な環境ファイルを指定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
デプロイのコマンドで先に指定する環境ファイルは、そのコマンドで後に指定する環境ファイルによって上書きされます。指定する環境ファイルの順序に注意を払って、パラメーターが誤って上書きされないようにする必要があります。
変更するパラメーターのみの設定する最小限の環境ファイルを作成して、デフォルトの環境ファイルと組み合わせることにより、一部のパラメーターを上書きすることができます。
補足情報
-rオプションは、インストール時にロールの定義を上書きします。-r <roles_data>.yaml
-r <roles_data>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow - カスタムロールには、インストール時に追加の ironic ノードが必要です。
3.5. OVS-DPDK 対応の OpenDaylight のインストール リンクのコピーリンクがクリップボードにコピーされました!
OpenDaylight は、director を使用して Open vSwitch Data Plane Development Kit (DPDK) アクセラレーションに対応するようにデプロイすることができます。このデプロイメントでは、カーネル空間ではなくユーザー空間でパケットが処理されるために、データプレーンパフォーマンスが向上します。OVS-DPDK 対応のデプロイメントには、潜在的なパフォーマンスを引き出すために、各コンピュートノードのハードウェア物理レイアウトに関する知識が必要です。
特に次の点を考慮すべきです。
- ホスト上のネットワークインターフェイスが DPDK をサポートしていること
- コンピュートノードの NUMA ノードのトポロジー (ソケット数、CPU コア、1 ソケットあたりのメモリー容量)
- DPDK NIC PCI バスが各 NUMA ノードに近いこと
- コンピュートノード上で使用可能な RAM 容量
- ネットワーク機能仮想化 (NFV) のプランニングおよび設定ガイド を参照してください。
3.5.1. OVS-DPDK デプロイメントファイルの準備 リンクのコピーリンクがクリップボードにコピーされました!
OVS-DPDK をデプロイするには、異なる環境ファイルを使用します。そのファイルは、/usr/share/openstack-tripleo-heat-templates/environments/services-docker ディレクトリーにある neutron-opendaylight.yaml 環境ファイルで設定されている一部のパラメーターを上書きします。元の環境ファイルは変更しないでください。代わりに、必要なパラメーターが含まれた新しい環境ファイルを作成します (例: neutron-opendaylight-dpdk.yaml)。
OVS-DPDK を実装する OpenDaylight をデフォルトの設定でデプロイするには、/usr/share/openstack-tripleo-heat-templates/environments/services-docker ディレクトリーにあるデフォルトの neutron-opendaylight-dpdk.yaml 環境ファイルを使用します。
デフォルトのファイルには、以下の値が含まれます。
3.5.2. OVS-DPDK デプロイメントの設定 リンクのコピーリンクがクリップボードにコピーされました!
neutron-opendaylight-dpdk.yaml の値を変更して、OVS-DPDK サービスを設定することができます。
|
|
IRQ のピニングを有効化して、OVS-DPDK で使用する CPU コアから分離します。デフォルトプロファイル: |
|
|
CPU コアの一覧を指定し、カーネルスケジューラーがそれらのコアを使用しないようにして、代わりに OVS-DPDK に割り当てて専用にすることができます。書式は、個々のコアのコンマ区切りリストまたは範囲で指定します (例: |
|
|
ブート時にカーネルに渡す引数をリストします。OVS-DPDK の場合は、
---- 指定されている RAM の容量はヒュージページ用の 60 GB であることに注意してください。この値を設定する場合には、コンピュートノードで利用可能な RAM 容量を考慮することが重要です。 |
|
| 各 NUMA ノードに割り当てるヒュージページメモリーの容量を (MB 単位で) 指定します。パフォーマンスを最大限にするには、DPDK NIC に最も近いソケットにメモリーを割り当てます。ソケットあたりのメモリーをリストする形式は以下のようになります。 ---- "<socket 0 mem MB>,<socket 1 mem MB>" ---- 例: "1024,0" |
|
|
PMD スレッドで使用する UIO ドライバー種別を指定します。DPDK NIC は指定したドライバーをサポートする必要があります。Red Hat OpenStack Platform のデプロイメントでは、 |
|
|
PMD スレッドのピニング先となる個々のコアまたは範囲をリストします。ここで指定するコアは、 |
|
| ソケットあたりのメモリーチャネルの数を指定します。 |
|
| libvirtd で nova インスタンスをピニングするコア。パフォーマンスを最適にするには、OVS PMD コアがピニングされているのと同じソケット上のコアを使用してください。 |
3.5.3. OVS-DPDK を実装する OpenDaylight のインストール リンクのコピーリンクがクリップボードにコピーされました!
作業を開始する前に
- アンダークラウドをインストールします。詳しくは、アンダークラウドのインストール を参照してください。
- オーバークラウドコンテナーイメージへのリンクのある環境ファイルを作成します。詳しくは、オーバークラウド用の OpenDaylight 環境ファイルの準備 を参照してください。
- カスタムロールで SR-IOV 対応の OpenDaylight を設定するためのロールファイルを作成します。詳しくは、OVS-DPDK デプロイメントファイルの準備 を参照してください。
手順
- OpenDaylight で DPDK 機能を有効化するのに必要な環境ファイルを使用してデプロイメントコマンドを実行します。
デプロイのコマンドで先に指定する環境ファイルは、そのコマンドで後に指定する環境ファイルによって上書きされます。指定する環境ファイルの順序に注意を払って、パラメーターが誤って上書きされないようにする必要があります。
変更するパラメーターのみの設定する最小限の環境ファイルを作成して、デフォルトの環境ファイルと組み合わせることにより、一部のパラメーターを上書きすることができます。
3.5.4. 例: ODL と VXLAN トンネリングを使用する OVS-DPDK の設定 リンクのコピーリンクがクリップボードにコピーされました!
このセクションには、ODL と VXLAN トンネリングを使用する OVS-DPDK の設定例を記載しています。
OVS-DPDK 用の OpenStack を最適化するには、network-environment.yaml ファイルに設定する OVS-DPDK パラメーターの最適な値を判断する必要があります。詳しくは、ワークフローを使用した DPDK パラメーターの算出 を参照してください。
3.5.4.1. ComputeOvsDpdk コンポーザブルロールの生成 リンクのコピーリンクがクリップボードにコピーされました!
ComputeOvsDpdk ロール用の roles_data.yaml を生成します。
openstack overcloud roles generate --roles-path templates/openstack-tripleo-heat-templates/roles -o roles_data.yaml Controller ComputeOvsDpdk
# openstack overcloud roles generate --roles-path templates/openstack-tripleo-heat-templates/roles -o roles_data.yaml Controller ComputeOvsDpdk
3.5.4.2. OVS-DPDK パラメーターの設定 リンクのコピーリンクがクリップボードにコピーされました!
OVS-DPDK 用の OpenStack を最適化するには、network-environment.yaml ファイルに設定する OVS-DPDK パラメーターの最適な値を判断する必要があります。詳しくは、ワークフローを使用した DPDK パラメーターの算出 を参照してください。
resource_registryセクションに OVS-DPDK 用のカスタムリソースを追加します。resource_registry: # Specify the relative/absolute path to the config files you want to use for override the default. OS::TripleO::ComputeOvsDpdk::Net::SoftwareConfig: nic-configs/computeovsdpdk.yaml OS::TripleO::Controller::Net::SoftwareConfig: nic-configs/controller.yamlresource_registry: # Specify the relative/absolute path to the config files you want to use for override the default. OS::TripleO::ComputeOvsDpdk::Net::SoftwareConfig: nic-configs/computeovsdpdk.yaml OS::TripleO::Controller::Net::SoftwareConfig: nic-configs/controller.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow parameter_defaultsの下で、トンネルの種別とテナントの種別をvxlanに設定します。NeutronTunnelTypes: 'vxlan' NeutronNetworkType: 'vxlan'
NeutronTunnelTypes: 'vxlan' NeutronNetworkType: 'vxlan'Copy to Clipboard Copied! Toggle word wrap Toggle overflow parameters_defaultsの下にブリッジのマッピングを設定します。# The OVS logical->physical bridge mappings to use. NeutronBridgeMappings: 'tenant:br-link0' OpenDaylightProviderMappings: 'tenant:br-link0'
# The OVS logical->physical bridge mappings to use. NeutronBridgeMappings: 'tenant:br-link0' OpenDaylightProviderMappings: 'tenant:br-link0'Copy to Clipboard Copied! Toggle word wrap Toggle overflow parameter_defaultsの下に、ComputeOvsDpdkロール向けのロール固有パラメーターを設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記ゲストインスタンス作成の失敗を避けるために、DPDK PMD 用の DPDK NIC の有無にかかわらず、各 NUMA ノード上で少なくとも 1 つの CPU を (シブリングスレッドと共に) 割り当てる必要があります。
注記本手順に示したとおり、これらのヒュージページは仮想マシンと、
OvsDpdkSocketMemoryパラメーターを使用する OVS-DPDK によって消費されます。仮想マシンが利用可能なヒュージページの数は、bootパラメーターからOvsDpdkSocketMemoryを減算した値です。DPDK インスタンスに関連付けるフレーバーに
hw:mem_page_size=1GBも追加する必要があります。注記OvsDPDKCoreListとOvsDpdkMemoryChannelsは、本手順では 必須 の設定です。適切な値を設定せずに DPDK のデプロイメントを試みると、デプロイメントが失敗したり、不安定なデプロイメントになったりします。
3.5.4.3. コントローラーノードの設定 リンクのコピーリンクがクリップボードにコピーされました!
分離ネットワーク用のコントロールプレーンの Linux ボンディングを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow この Linux ボンディングに VLAN を割り当てます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow クラウドネットワークへの Floating IP アドレスにアクセスするための OVS ブリッジを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.5.4.4. DPDK インターフェイスのコンピュートノードの設定 リンクのコピーリンクがクリップボードにコピーされました!
デフォルトの compute.yaml ファイルから compute-ovs-dpdk.yaml ファイルを作成し、次のように変更します。
分離ネットワーク用のコントロールプレーンの Linux ボンディングを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow この Linux ボンディングに VLAN を割り当てます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow コントローラーにリンクする DPDK ポートを備えたブリッジを設定します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記複数の DPDK デバイスを含めるには、追加する DPDK デバイスごとに
typeのコードセクションを繰り返します。注記OVS-DPDK を使用する場合には、同じコンピュートノード上の 全 ブリッジが
ovs_user_bridgeの種別である必要があります。同じノード上でovs_bridgeとovs_user_bridgeが混在する設定は、director では受け入れ可能ですが、Red Hat OpenStack Platform ではサポートされていません。
3.5.4.5. オーバークラウドのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
overcloud_deploy.sh スクリプトを実行してオーバークラウドをデプロイします。
3.6. L2GW 対応の OpenDaylight のインストール リンクのコピーリンクがクリップボードにコピーされました!
この機能は、本リリースでは テクノロジープレビュー として提供しているため、Red Hat では全面的にはサポートしていません。これは、テスト用途にのみご利用いただく機能で、実稼働環境にデプロイすべきではありません。テクノロジープレビュー機能についての詳しい情報は、対象範囲の詳細 を参照してください。
レイヤー 2 ゲートウェイサービスにより、テナントの仮想ネットワークを物理ネットワークにブリッジングすることができます。ユーザーはこの統合により、ルーティングされたレイヤー 3 の接続ではなく、レイヤー 2 のネットワーク接続で物理サーバー上のリソースにアクセスすることができます。これは、L3 や Floating IP を経由する代わりにレイヤー 2 のブロードキャストドメインを拡張することを意味します。
3.6.1. L2GW デプロイメントファイルの準備 リンクのコピーリンクがクリップボードにコピーされました!
L2GW 対応の OpenDaylight をデプロイするには、/usr/share/openstack-tripleo-heat-templates/environments ディレクトリー内の neutron-l2gw-opendaylight.yaml ファイルを使用します。このファイル内の設定を変更する必要がある場合には、既存のファイルを変更しないでください。代わりに、この環境ファイルの必要なパラメーターが含まれたコピーを新規作成してください。
OpenDaylight と L2GW をデフォルトの設定でデプロイする場合には、/usr/share/openstack-tripleo-heat-templates/environments/services-docker ディレクトリーの neutron-l2gw-opendaylight.yaml を使用することができます。
デフォルトのファイルには、以下の値が含まれています。
3.6.2. OpenDaylight L2GW デプロイメントの設定 リンクのコピーリンクがクリップボードにコピーされました!
neutron-l2gw-opendaylight.yaml ファイルの値を変更して、サービスを設定することができます。
|
|
サービスプラグインのエントリーポイントのコンマ区切りリストは、 |
|
|
このサービスを提供するために使用する必要のあるプロバイダーを定義します。デフォルトは |
|
| デフォルトのインターフェイスの名前を設定します。 |
|
| デフォルトのデバイスの名前を設定します。 |
|
|
L2 ゲートウェイ用のサービスクォータを指定します。デフォルトは |
|
| L2GW サービスのモニターリング間隔を指定します。 |
3.6.3. L2GW を実装する OpenDaylight のインストール リンクのコピーリンクがクリップボードにコピーされました!
作業を開始する前に
- アンダークラウドをインストールします。詳しくは、アンダークラウドのインストール を参照してください。
- オーバークラウドコンテナーイメージへのリンクのある環境ファイルを作成します。詳しくは、オーバークラウド用の OpenDaylight 環境ファイルの準備 を参照してください。
- カスタムロールで SR-IOV 対応の OpenDaylight を設定するためのロールファイルを作成します。詳しくは、L2GW デプロイメントファイルの準備 を参照してください。
手順
- OpenDaylight で L2GW 機能を有効化するのに必要な環境ファイルを使用してデプロイメントコマンドを実行します。
デプロイのコマンドで先に指定する環境ファイルは、そのコマンドで後に指定する環境ファイルによって上書きされます。指定する環境ファイルの順序に注意を払って、パラメーターが誤って上書きされないようにする必要があります。
変更するパラメーターのみの設定する最小限の環境ファイルを作成して、デフォルトの環境ファイルと組み合わせることにより、一部のパラメーターを上書きすることができます。
第4章 デプロイメントのテスト リンクのコピーリンクがクリップボードにコピーされました!
4.1. 基本的なテストの実行 リンクのコピーリンクがクリップボードにコピーされました!
基本的なテストでは、インスタンスが互いに ping を実行できることを確認します。テストでは、Floating IP SSH アクセスもチェックします。以下の例では、アンダークラウドからこのテストを実行する方法について説明します。
本手順では、個別のステップを多数実行する必要があります。便宜上、手順を小さいセクションに分けています。ただし、以下の順序ですべての手順を実行する必要があります。
In this setup, a flat network is used to create the _External_ network, and _VXLAN_ is used for the _Tenant_ networks. _VLAN External_ networks and _VLAN Tenant_ networks are also supported, depending on the desired deployment.
In this setup, a flat network is used to create the _External_ network, and _VXLAN_ is used for the _Tenant_ networks. _VLAN External_ networks and _VLAN Tenant_ networks are also supported, depending on the desired deployment.
4.1.1. テスト用の新規ネットワークの作成 リンクのコピーリンクがクリップボードにコピーされました!
オーバークラウドにアクセスするための認証情報を読み込みます。
source /home/stack/overcloudrc
$ source /home/stack/overcloudrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow オーバークラウドの外部からインスタンスにアクセスするための neutron の外部ネットワークを作成します。
openstack network create --external --project service --external --provider-network-type flat --provider-physical-network datacentre external
$ openstack network create --external --project service --external --provider-network-type flat --provider-physical-network datacentre externalCopy to Clipboard Copied! Toggle word wrap Toggle overflow 新しい外部ネットワーク (前のステップで作成済み) に対応する neutron サブネットを作成します。
openstack subnet create --project service --no-dhcp --network external --gateway 192.168.37.1 --allocation-pool start=192.168.37.200,end=192.168.37.220 --subnet-range 192.168.37.0/24 external-subnet
$ openstack subnet create --project service --no-dhcp --network external --gateway 192.168.37.1 --allocation-pool start=192.168.37.200,end=192.168.37.220 --subnet-range 192.168.37.0/24 external-subnetCopy to Clipboard Copied! Toggle word wrap Toggle overflow オーバークラウドのインスタンスを作成するのに使用する cirros イメージをダウンロードします。
wget http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img
$ wget http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.imgCopy to Clipboard Copied! Toggle word wrap Toggle overflow オーバークラウドの glance に cirros イメージをアップロードします。
openstack image create cirros --public --file ./cirros-0.3.4-x86_64-disk.img --disk-format qcow2 --container-format bare
$ openstack image create cirros --public --file ./cirros-0.3.4-x86_64-disk.img --disk-format qcow2 --container-format bareCopy to Clipboard Copied! Toggle word wrap Toggle overflow オーバークラウドインスタンスに使用する
tinyフレーバーを作成します。openstack flavor create m1.tiny --ram 512 --disk 1 --public
$ openstack flavor create m1.tiny --ram 512 --disk 1 --publicCopy to Clipboard Copied! Toggle word wrap Toggle overflow インスタンスをホストするための VXLAN のテナントネットワークを作成します。
openstack network create net_test --provider-network-type=vxlan --provider-segment 100
$ openstack network create net_test --provider-network-type=vxlan --provider-segment 100Copy to Clipboard Copied! Toggle word wrap Toggle overflow テナントネットワーク (前のステップで作成済み) のサブネットを作成します。
openstack subnet create --network net_test --subnet-range 123.123.123.0/24 test
$ openstack subnet create --network net_test --subnet-range 123.123.123.0/24 testCopy to Clipboard Copied! Toggle word wrap Toggle overflow テナントネットワークの ID を特定して保存します。
net_mgmt_id=$(openstack network list | grep net_test | awk '{print $2}')$ net_mgmt_id=$(openstack network list | grep net_test | awk '{print $2}')Copy to Clipboard Copied! Toggle word wrap Toggle overflow インスタンス
cirros1を作成して、net_testネットワークとSSHセキュリティーグループにアタッチします。openstack server create --flavor m1.tiny --image cirros --nic net-id=$vlan1 --security-group SSH --key-name RDO_KEY --availability-zone nova:overcloud-novacompute-0.localdomain cirros1
$ openstack server create --flavor m1.tiny --image cirros --nic net-id=$vlan1 --security-group SSH --key-name RDO_KEY --availability-zone nova:overcloud-novacompute-0.localdomain cirros1Copy to Clipboard Copied! Toggle word wrap Toggle overflow cirros2という 2 番目のインスタンスを作成して、そのインスタンスもnet_testネットワークとSSHセキュリティーグループにアタッチします。openstack server create --flavor m1.tiny --image cirros --nic net-id=$vlan1 --security-group SSH --key-name RDO_KEY --availability-zone nova:overcloud-novacompute-0.localdomain cirros2
$ openstack server create --flavor m1.tiny --image cirros --nic net-id=$vlan1 --security-group SSH --key-name RDO_KEY --availability-zone nova:overcloud-novacompute-0.localdomain cirros2Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.1.2. テスト環境でのネットワークの設定 リンクのコピーリンクがクリップボードにコピーされました!
admin プロジェクトの ID を特定して保存します。
admin_project_id=$(openstack project list | grep admin | awk '{print $2}')$ admin_project_id=$(openstack project list | grep admin | awk '{print $2}')Copy to Clipboard Copied! Toggle word wrap Toggle overflow admin プロジェクトのデフォルトのセキュリティーグループを特定して保存します。
admin_sec_group_id=$(openstack security group list | grep $admin_project_id | awk '{print $2}')$ admin_sec_group_id=$(openstack security group list | grep $admin_project_id | awk '{print $2}')Copy to Clipboard Copied! Toggle word wrap Toggle overflow admin のデフォルトセキュリティーグループに、ICMP トラフィックの受信を許可するルールを追加します。
openstack security group rule create $admin_sec_group_id --protocol icmp --ingress
$ openstack security group rule create $admin_sec_group_id --protocol icmp --ingressCopy to Clipboard Copied! Toggle word wrap Toggle overflow admin のデフォルトセキュリティーグループに、ICMP トラフィックの送信を許可するルールを追加します。
openstack security group rule create $admin_sec_group_id --protocol icmp --egress
$ openstack security group rule create $admin_sec_group_id --protocol icmp --egressCopy to Clipboard Copied! Toggle word wrap Toggle overflow admin のデフォルトセキュリティーグループに、SSH トラフィックの受信を許可するルールを追加します。
openstack security group rule create $admin_sec_group_id --protocol tcp --dst-port 22 --ingress
$ openstack security group rule create $admin_sec_group_id --protocol tcp --dst-port 22 --ingressCopy to Clipboard Copied! Toggle word wrap Toggle overflow admin のデフォルトセキュリティーグループに、SSH トラフィックの送信を許可するルールを追加します。
openstack security group rule create $admin_sec_group_id --protocol tcp --dst-port 22 --egress
$ openstack security group rule create $admin_sec_group_id --protocol tcp --dst-port 22 --egressCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.1.3. 接続性のテスト リンクのコピーリンクがクリップボードにコピーされました!
-
horizon から、インスタンスの novnc コンソールにアクセスできるはずです。overcloudrc から取得したパスワードを使用して horizon に admin としてログインします。cirros イメージのデフォルトの認証情報は、ユーザー名が
cirros、パスワードがcubswin:)です。 novnc コンソールから、インスタンスが DHCP アドレスを受信していることを確認します。
ip addr show
$ ip addr showCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記また、アンダークラウドから
nova console-log <instance id>のコマンドを実行して、インスタンスが DHCP アドレスを受信していることを確認することもできます。- ステップ 1 と 2 をその他すべてのインスタンスで繰り返します。
- あるインスタンスから、別のインスタンスの ping を試行します。これにより、オーバークラウドの基本的な テナント ネットワーク接続が検証されます。
- Floating IP を使用して他のインスタンスに到達できるかどうかを確認します。
4.1.4. デバイスの作成 リンクのコピーリンクがクリップボードにコピーされました!
cirros1インスタンスに関連付けられる Floating IP を外部ネットワーク上に作成します。openstack floating ip create external
$ openstack floating ip create externalCopy to Clipboard Copied! Toggle word wrap Toggle overflow Floating IP と
cirros1テナントの IP の間で NAT を処理するルーターを作成します。openstack router create test
$ openstack router create testCopy to Clipboard Copied! Toggle word wrap Toggle overflow ルーターのゲートウェイを外部ネットワークとなるように設定します。
openstack router set test --external-gateway external
$ openstack router set test --external-gateway externalCopy to Clipboard Copied! Toggle word wrap Toggle overflow テナントネットワークに接続されたルーターにインターフェイスを追加します。
openstack router add subnet test test
$ openstack router add subnet test testCopy to Clipboard Copied! Toggle word wrap Toggle overflow ステップ 1 で作成した Floating IP を特定して保存します。
floating_ip=$(openstack floating ip list | head -n -1 | grep -Eo '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+')
$ floating_ip=$(openstack floating ip list | head -n -1 | grep -Eo '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+')Copy to Clipboard Copied! Toggle word wrap Toggle overflow Floating IP を
cirros1インスタンスに関連付けます。openstack server add floating ip cirros1 $floating_ip
$ openstack server add floating ip cirros1 $floating_ipCopy to Clipboard Copied! Toggle word wrap Toggle overflow 外部ネットワークにアクセス可能なノードからインスタンスへのログインを試みます。
ssh cirros@$floating_ip
$ ssh cirros@$floating_ipCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.2. 高度なテストの実行 リンクのコピーリンクがクリップボードにコピーされました!
OpenDaylight の設定およびデプロイメントのコンポーネントのいくつかは、OpenDaylight をデプロイした後に確認することができます。インストールの特定の部分をテストするには、いくつかの手順に従って操作を実行する必要があります。各手順は別々に記載しています。
本手順は、オーバークラウド ノード上で実行する必要があります。
4.2.1. オーバークラウドノードへの接続 リンクのコピーリンクがクリップボードにコピーされました!
オーバークラウドノードに接続し、それらが正しく動作していることを確認するには、以下の手順を実行します。
手順
- アンダークラウドにログインします。
以下のコマンドを入力して作業を開始します。
source /home/stack/stackrc
$ source /home/stack/stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 全インスタンスを一覧表示します。
openstack server list
$ openstack server listCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 必要なインスタンスを選択して、一覧に表示されるインスタンスの IP アドレスを書き留めておきます。
前のステップで取得した一覧の IP アドレスを使用してマシンに接続します。
ssh heat-admin@<IP from step 4>
$ ssh heat-admin@<IP from step 4>Copy to Clipboard Copied! Toggle word wrap Toggle overflow superuser に切り替えます。
sudo -i
$ sudo -iCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.2.2. OpenDaylight のテスト リンクのコピーリンクがクリップボードにコピーされました!
OpenDaylight が正しく動作していることをテストするには、サービスが動作していることと、指定の機能が正しく読み込まれていることを確認する必要があります。
手順
- OpenDaylight を実行するオーバークラウドノードまたはカスタムロールで実行している OpenDaylight ノードに superuser としてログインします。
OpenDaylight コントローラーがすべてのコントローラーノード上で実行されていることを確認します。
docker ps | grep opendaylight 2363a99d514a 192.168.24.1:8787/rhosp13/openstack-opendaylight:latest "kolla_start" 4 hours ago Up 4 hours (healthy) opendaylight_api
# docker ps | grep opendaylight 2363a99d514a 192.168.24.1:8787/rhosp13/openstack-opendaylight:latest "kolla_start" 4 hours ago Up 4 hours (healthy) opendaylight_apiCopy to Clipboard Copied! Toggle word wrap Toggle overflow HAProxy がポート 8081 をリッスンするように適切に設定されていることを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow HAproxy IP を使用して、karaf のアカウントを接続します。karaf のパスワードは
karafです。ssh -p 8101 karaf@localhost
# ssh -p 8101 karaf@localhostCopy to Clipboard Copied! Toggle word wrap Toggle overflow インストール済みの機能を一覧表示します。
feature:list -i | grep odl-netvirt-openstack
# feature:list -i | grep odl-netvirt-openstackCopy to Clipboard Copied! Toggle word wrap Toggle overflow 本手順で生成された一覧の 3 番目のコラムに
xがある場合には、その機能は適切にインストールされていることになります。API が稼働中であることを確認します。
web:list | grep neutron
# web:list | grep neutronCopy to Clipboard Copied! Toggle word wrap Toggle overflow この API エンドポイントは、
/etc/neutron/plugins/ml2/ml2_conf.iniで設定され、neutron が OpenDaylight と通信するのに使用されます。ノード間の VXLAN トンネルが稼動状態であることを確認します。
vxlan:show
# vxlan:showCopy to Clipboard Copied! Toggle word wrap Toggle overflow REST API が正しく応答するかどうかをテストするには、それを使用するモジュールを一覧表示します。
curl -u "admin:admin" http://localhost:8081/restconf/modules
# curl -u "admin:admin" http://localhost:8081/restconf/modulesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下と同じような出力が表示されます (この例は短く省略されています)。
{"modules":{"module":[{"name":"netty-event-executor","revision":"2013-11-12","namespace":"urn:opendaylight:params:xml:ns:yang:controller:netty:eventexecutor"},{"name" ...{"modules":{"module":[{"name":"netty-event-executor","revision":"2013-11-12","namespace":"urn:opendaylight:params:xml:ns:yang:controller:netty:eventexecutor"},{"name" ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow ホストの internal_API IP を使用する REST のストリームを一覧表示します。
curl -u "admin:admin" http://localhost:8081/restconf/streams
# curl -u "admin:admin" http://localhost:8081/restconf/streamsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下と同様の出力が表示されます。
{"streams":{}}{"streams":{}}Copy to Clipboard Copied! Toggle word wrap Toggle overflow ホストの internal_API IP で次のコマンドを実行して、NetVirt が動作していることを確認します。
curl -u "admin:admin" http://localhost:8081/restconf/operational/network-topology:network-topology/topology/netvirt:1
# curl -u "admin:admin" http://localhost:8081/restconf/operational/network-topology:network-topology/topology/netvirt:1Copy to Clipboard Copied! Toggle word wrap Toggle overflow NetVirt が動作していることを確認するには、以下の出力に注意してください。
{"topology":[{"topology-id":"netvirt:1"}]}{"topology":[{"topology-id":"netvirt:1"}]}Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.2.3. Open vSwitch のテスト リンクのコピーリンクがクリップボードにコピーされました!
Open vSwitch を検証するには、コンピュートノードの 1 つに接続し、設定が適切であるほか、OpenDaylight に接続されていることを確認します。
手順
- オーバークラウド内のコンピュートノードの 1 つに superuser として接続します。
Open vSwitch の設定を一覧表示します。
ovs-vsctl show
# ovs-vsctl showCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力に複数のマネージャーがあることに注意してください。この例では、2 行目と 3 行目に複数のマネージャーが表示されています。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
OpenDaylight が実行されているノードの IP を
tcpManager がポイントしていることを確認します。 -
Manager の下に
is_connected: trueと表示されていることを確認し、OVS から OpenDaylight への接続が確立されて、OVSDB プロトコルを使用していることを確かめます。 - 各ブリッジ (br-int 以外) が存在し、コンピュートロールでのデプロイメントに使用した NIC テンプレートと一致していることを確認します。
- tcp 接続が、OpenDaylight サービスが実行されているところの IP に対応していることを確認します。
-
ブリッジ br-int に
is_connected: trueが表示され、OpenFlow プロトコルから OpenDaylight への接続が確立されていることを確認します。
補足情報
- OpenDaylight は、br-int のブリッジを自動的に作成します。
4.2.4. コンピュートノード上の Open vSwitch の設定の確認 リンクのコピーリンクがクリップボードにコピーされました!
- コンピュートノードに superuser として接続します。
Open vSwitch の設定を一覧表示します。
ovs-vsctl list open_vswitch
# ovs-vsctl list open_vswitchCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力を確認します。以下の例と同様の内容が表示されます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
other_configオプションの値に、VXLAN トンネルを介してテナントネットワークに接続するローカルインターフェイスの適切なlocal_ipが設定されていることを確認します。 -
other_configのオプション下のprovider_mappingsの値が、OpenDaylightProviderMappings Heat テンプレートパラメーターで指定されている値と一致していることを確認します。この設定により、neutron の論理ネットワークが対応する物理インターフェイスにマッピングされます。
4.2.5. neutron の設定の確認 リンクのコピーリンクがクリップボードにコピーされました!
手順
- コントローラーロールのノードの 1 つの superuser アカウントに接続します。
-
/etc/neutron/neutron.confファイルにservice_plugins=odl-router_v2,trunkが含まれていることを確認します。 /etc/neutron/plugin.iniファイルに以下の ml2 設定が記載されていることを確認します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow オーバークラウド のコントローラーの 1 つで、neutron エージェントが適切に稼働していることを確認します。
openstack network agent list
# openstack network agent listCopy to Clipboard Copied! Toggle word wrap Toggle overflow メタデータと DHCP エージェントの両方の
admin_state_up値にTrueが設定されていることを確認します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
補足情報
-
ステップ 3 の
plugin.iniの IP は、InternalAPI の仮想 IP アドレス (VIP) である必要があります。 - ステップ 5 の出力には、Open vSwitch エージェントまたは L3 エージェントは記載されていません。これらはいずれも OpenDaylight によって管理されるようになったので、出力に含まれていないのは望ましい状態です。
第5章 デバッグ リンクのコピーリンクがクリップボードにコピーされました!
5.1. ログの特定 リンクのコピーリンクがクリップボードにコピーされました!
5.1.1. OpenDaylight ログへのアクセス リンクのコピーリンクがクリップボードにコピーされました!
OpenDaylight では、/var/log/containers/opendaylight ディレクトリー内のコンテナーにログを保管します。最新のログは karaf.log という名前です。OpenDaylight は以前のログに連番を付けます (例: karaf.log.1、karaf.log.2)。
5.1.2. OpenStack Networking のログへのアクセス リンクのコピーリンクがクリップボードにコピーされました!
OpenStack Networking のコマンドが失敗した場合は、最初に neutron のログを確認します。neutron のログは、/var/log/containers/neutron ディレクトリー内の各 neutron ノードの server.log ファイルにあります。
server.log ファイルには、OpenDaylight との通信に関するエラーも記載されます。neutron エラーが OpenDaylight との対話に起因している場合には、OpenDaylight ログも確認して、エラーの原因を特定する必要があります。
5.2. ネットワークエラーのデバッグ リンクのコピーリンクがクリップボードにコピーされました!
ネットワークでエラーが発生したにも関わらず (例: インスタンスを接続できないなど)、OpenStack コマンドを発行してもエラーが報告されなかったり、neutron のログにも記載されない場合には、OVS ノードを検査してネットワークトラフィックと OpenFlow のフローを確認すると役立つ場合があります。
-
ネットワークエラーが発生したノードに
superuserとしてログインします。 br-int スイッチに関する情報を表示します。
ovs-ofctl -O openflow13 show br-int
# ovs-ofctl -O openflow13 show br-intCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力を確認します。以下の例と同じような内容が表示されるはずです。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow br-int スイッチの統計を一覧表示します。
ovs-ofctl -O openflow13 dump-ports br-int
# ovs-ofctl -O openflow13 dump-ports br-intCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力を確認します。以下の例と同じような内容が表示されるはずです。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
補足情報
- ステップ 3 では、この OVS ノードに 3 つのポートがある点に注意してください。1 番目のポートはブリッジ br-ex に送信されるパッチポートで、このシナリオでは、外部ネットワークの接続ポートとして使用されます。2 番目のポートは tap ポートで、DHCP エージェントインスタンスに接続されます。これは、ホストがコントローラーなのでわかります。コントローラーではなく、コンピュートロール上の場合には、インスタンスとなります。3 番目のポートは、テナントトラフィック用に作成された VXLAN トンネルポートです。
- 各ポートの用途を理解したら、ポートの統計を調べて、ポートがトラフィックの送受信を行っていることを確認します (ステップ 4 を参照)。
- ステップ 5 の出力から、各ポートがパケットを受信 (rx pkts) および送信 (tx pkts) していることを確認できます。
5.2.1. OpenFlow のフローを使用した高度なデバッグ リンクのコピーリンクがクリップボードにコピーされました!
OpenFlow に精通している上級ユーザーの場合は、スイッチ上のフローを確認して、トラフィックがドロップする場所を検出することができます。
フローを一覧表示してヒットしたパケット数を確認するには、以下のコマンドを入力します。
ovs-ofctl -O openflow13 dump-flows br-int
# ovs-ofctl -O openflow13 dump-flows br-intCopy to Clipboard Copied! Toggle word wrap Toggle overflow コマンドの出力を確認して、必要な情報を取得します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
この出力は長いため途中から省略されています。
5.2.2. OpenFlow でのパケットのトラバース リンクのコピーリンクがクリップボードにコピーされました!
理解すべき重要な点として、パケットに対して実行されるネットワーク機能は複数の異なる OpenFlow テーブルに分かれ、パケットはそれらのテーブルをゼロから順番に通過していくことが挙げられます。受信パケットはテーブル 0 に着信し、次に OpenFlow のパイプライン を経て進み、ポートから送信されて OpenDaylight のコントローラーに到達するか、ドロップされます。パケットは、処理の必要があるネットワーク機能に応じて、1 つまたは複数のテーブルをスキップする場合があります。テーブルの全体図と、各テーブルのネットワーク機能への対応方法について以下に示します。
図5.1 OpenDaylight NetVirt OpenFlow の パイプライン
第6章 デプロイメントの例 リンクのコピーリンクがクリップボードにコピーされました!
6.1. テナントネットワークを使用した模範的なインストールシナリオ リンクのコピーリンクがクリップボードにコピーされました!
本項では、OpenStack を使用した実稼働環境における OpenDaylight のインストールの例を考察します。このシナリオでは、テナントトラフィックの分離にトンネリング (VXLAN) が使用されます。
6.1.1. 物理トポロジー リンクのコピーリンクがクリップボードにコピーされました!
このシナリオのトポロジーは、6 つのノードで設定されます。
- 1 x director アンダークラウドノード
- 3 x OpenStack オーバークラウドコントローラー。OpenStack サービスに加えて OpenDaylight SDN コントローラーがインストール済み。
- 2 x OpenStack オーバークラウドコンピュートノード
6.1.2. 物理ネットワーク環境のプランニング リンクのコピーリンクがクリップボードにコピーされました!
オーバークラウドのコントローラーノードはそれぞれ、3 枚のネットワークインターフェイスカード (NIC) を使用します。
| 名前 | 目的 |
|---|---|
| nic1 | Management ネットワーク (例: SSH を介したノードへのアクセス) |
| nic2 | Tenant (VXLAN) キャリアー、Provisioning (PXE、DHCP)、Internal API ネットワーク |
| nic3 | Public API のネットワークアクセス |
オーバークラウドのコンピュートノードには 3 枚の NIC が実装されます。
| 名前 | 目的 |
|---|---|
| nic1 | Management ネットワーク |
| nic2 | Tenant キャリアー、Provisioning、Internal API ネットワーク |
| nic3 | External (Floating IP) ネットワーク |
アンダークラウドノードには 2 枚の NIC が実装されます。
| 名前 | 目的 |
|---|---|
| nic1 | Management ネットワークに使用 |
| nic2 | Provisioning ネットワークに使用 |
6.1.3. NIC の接続性のプランニング リンクのコピーリンクがクリップボードにコピーされました!
この場合は、環境ファイルは番号付けられた抽象的なインターフェイスデバイス名 (nic1、nic2) を使用し、ホストのオペレーティングシステムで提示されている実際のデバイス名 (eth0、eno2 など) は使用しません。同じロールに属するホストに全く同じネットワークインターフェイスデバイス名は必要ありません。1 つのホストが em1 と em2 のインターフェイスを使用して、他のホストが eno1 と eno2 を使用しても問題はありません。各 NIC は nic1 および nic2 と呼ばれます。
抽象化された NIC スキームでは、稼働中かつ接続済みのインターフェイスにのみ依存します。ホストによってインターフェイス数が異なる場合には、ホストを接続するために必要な最小限のインターフェイス数を使用すれば十分です。たとえば、1 台のホストに物理インターフェイスが 4 つあり、他のホストには 6 つある場合、nic1、nic2、nic3、nic4 のみを使用して、両ホストに 4 本のケーブルを接続します。
6.1.4. ネットワーク、VLAN、IP のプランニング リンクのコピーリンクがクリップボードにコピーされました!
このシナリオでは、ネットワーク分離を使用して、Management、Provisioning、Internal API、Tenant、Public API、Floating IP のネットワークトラフィックを分離します。以下の図はネットワーク設定の例で、カスタムロールのデプロイメントを示しています。必要な場合は、Red Hat OpenStack Platform コントローラーに OpenDaylight を含めることもできます。これはデフォルトの設定です。このスキーム IPMI ネットワークでは、NIC およびルーティングは表示されません。OpenStack の設定によっては、追加のネットワークが必要になる場合があります。
図6.1 このシナリオで使用するネットワークトポロジーの詳細
以下の表には、各ネットワークに関連付けられる VLAN ID と IP サブネットをまとめています。
| ネットワーク | VLAN ID | IP サブネット |
|---|---|---|
| プロビジョニング | ネイティブ | 192.0.5.0/24 |
| 内部 API | 600 | 172.17.0.0/24 |
| Tenant | 603 | 172.16.0.0/24 |
| Public API | 411 | 10.35.184.144/28 |
| Floating IP | 412 | 10.35.186.146/28 |
OpenStack Platform director は br-isolated OVS ブリッジを作成し、ネットワーク設定ファイルの定義に従って各ネットワークの VLAN インターフェイスを追加します。director は br-ex ブリッジも作成して、関連するネットワークインターフェイスが接続されます。
ホスト間の接続性を提供する物理ネットワークスイッチが、VLAN ID を適用するように適切に設定されていることを確認します。ホストに接続する全スイッチポートは、VLAN を使用して trunk として設定する必要があります。ここでの trunk という用語は、複数の VLAN ID が同じポートを通過できるポートという意味で使用しています。
物理スイッチの設定に関する内容は、本ガイドの対象範囲外です。
network-environment.yaml ファイルの TenantNetworkVlanID 属性を使用して、VXLAN トンネリングを使用する場合のテナントネットワークの VLAN タグを定義することができます。たとえば、VXLAN テナントのトラフィックが、VLAN タグ付けされた下層のネットワーク上で転送されます。テナントネットワークをネイティブ VLAN 上で実行する方が望ましい場合には、この値を空にすることも可能です。また、VLAN テナント種別のネットワークを使用する場合には、TenantNetworkVlanID に指定されている値以外の VLAN タグを使用することができる点にも注意してください。
6.1.5. このシナリオで使用する OpenDaylight の設定ファイル リンクのコピーリンクがクリップボードにコピーされました!
このシナリオにおける OpenStack と OpenDaylight のデプロイには、アンダークラウドノードで以下のデプロイメントコマンドを実行しています。
また、本ガイドでは、このシナリオに使用した設定ファイルとその内容を記載し、使用した設定についても説明しています。
6.1.5.1. extra_env.yaml ファイル リンクのコピーリンクがクリップボードにコピーされました!
このファイルにはパラメーターが 1 つしかありません。
parameter_defaults:
OpenDaylightProviderMappings: 'datacentre:br-ex,tenant:br-isolated'
parameter_defaults:
OpenDaylightProviderMappings: 'datacentre:br-ex,tenant:br-isolated'
これらは、OpenDaylight によって制御される各ノードのマッピングです。物理ネットワーク datacenter は、br-ex OVS ブリッジにマッピングされ、テナントネットワークのトラフィックは br-isolated OVS ブリッジにマッピングされます。
6.1.5.2. undercloud.conf ファイル リンクのコピーリンクがクリップボードにコピーされました!
このファイルは、/home/stack/baremetal-vlan/ ディレクトリーにあります。
ファイルのパスは、カスタマイズされたバージョンの設定ファイルをポイントしています。
上記の例では、Provisioning ネットワーク用の 192.0.5.0/24 サブネットが使用されています。物理インターフェイス eno2 はアンダークラウドノードでプロビジョニング用に使用されます。
6.1.5.3. network-environment.yaml ファイル リンクのコピーリンクがクリップボードにコピーされました!
これは、ネットワークを設定するメインのファイルで、/home/stack/baremetal-vlan/ ディレクトリーにあります。以下のファイルでは、VLAN ID と IP サブネットが異なるネットワークとプロバイダーマッピングに指定されます。nic-configs ディレクトリー内の controller.yaml と compute.yaml の 2 つのファイルは、コントローラーノードとコンピュートノードのネットワーク設定を指定するために使用されます。
この例では、コントローラーノードの数 (3) とコンピュートノードの数 (2) が指定されています。
6.1.5.4. controller.yaml ファイル リンクのコピーリンクがクリップボードにコピーされました!
このファイルは、/home/stack/baremetal-vlan/nic-configs/ ディレクトリー内にあります。この例では、br-isolated および br-ex の 2 つのスイッチを定義しています。nic2 は br-isolated の下にあり、nic3 は br-ex の下にあります。
6.1.5.5. compute.yaml ファイル リンクのコピーリンクがクリップボードにコピーされました!
このファイルは、/home/stack/baremetal-vlan/nic-configs/ ディレクトリー内にあります。コンピュート設定のオプションの大半は、コントローラー設定のオプションと同じです。この例では、nic3 は、外部接続 (Floating IP ネットワーク) に使用される br-ex の下にあります。
6.1.6. このシナリオで使用する Red Hat OpenStack Platform director の設定ファイル リンクのコピーリンクがクリップボードにコピーされました!
6.1.6.1. neutron.conf ファイル リンクのコピーリンクがクリップボードにコピーされました!
このファイルは、/etc/neutron/ ディレクトリーにあり、以下の情報が含まれています。
[DEFAULT] service_plugins=odl-router_v2,trunk
[DEFAULT]
service_plugins=odl-router_v2,trunk
6.1.6.2. ml2_conf.ini ファイル リンクのコピーリンクがクリップボードにコピーされました!
このファイルは、/etc/neutron/plugins/ml2/ ディレクトリーにあり、以下の情報が含まれています。
- [ml2] セクションの下には、ネットワーク種別として VXLAN が使用されており、opendaylight_v2 メカニズムドライバーが指定されている点に注意してください。
- [ml2_type_vlan] の下には、network-environment.yaml ファイルで設定されているのと同じマッピングを設定する必要があります。
- [ml2_odl] の下には、OpenDaylightController にアクセスするための設定が記載されているはずです。
この情報を使用して、OpenDaylight コントローラーへのアクセスを確認することができます。
curl -H "Content-Type:application/json" -u admin:admin http://172.17.1.18:8081/controller/nb/v2/neutron/networks
$ curl -H "Content-Type:application/json" -u admin:admin http://172.17.1.18:8081/controller/nb/v2/neutron/networks
6.2. プロバイダーネットワークを使用する模範的なインストールシナリオ リンクのコピーリンクがクリップボードにコピーされました!
このインストールシナリオでは、テナントネットワークではなく、プロバイダーネットワークを使用した OpenStack と OpenDaylight の例を示します。外部の neutron プロバイダーネットワークは、レイヤー 3 (L3) およびその他のネットワークサービスを提供する物理ネットワークインフラストラクチャーに仮想マシンインスタンスをブリッジングします。大半の場合は、プロバイダーネットワークは、VLAN ID を使用してレイヤー 2 (L2) セグメンテーションを実装します。プロバイダーネットワークは、プロバイダーネットワーク上で仮想マシンインスタンスの起動をサポートする各コンピュートノードでプロバイダーブリッジにマッピングします。
6.2.1. 物理トポロジー リンクのコピーリンクがクリップボードにコピーされました!
このシナリオのトポロジーは、6 つのノードで設定されます。
- 1 x director アンダークラウドノード
- 3 x OpenStack オーバークラウドコントローラー。OpenStack サービスに加えて OpenDaylight SDN コントローラーがインストール済み。
- 2 x OpenStack オーバークラウドコンピュートノード
6.2.2. 物理ネットワーク環境のプランニング リンクのコピーリンクがクリップボードにコピーされました!
オーバークラウドコントローラーノードはそれぞれ、4 枚のネットワークインターフェイスカード (NIC) を使用します。
| 名前 | 目的 |
|---|---|
| nic1 | Management ネットワーク (例: SSH を介したノードへのアクセス) |
| nic2 | Provisioning (PXE、DHCP)、Internal API ネットワーク |
| nic3 | Tenant ネットワーク |
| nic4 | Public API ネットワーク、Floating IP ネットワーク |
オーバークラウドのコンピュートノードには、4 枚の NIC が実装されます。
| 名前 | 目的 |
|---|---|
| nic1 | Management ネットワーク |
| nic2 | Provisioning および Internal API ネットワーク |
| nic3 | Tenant ネットワーク |
| nic4 | Floating IP ネットワーク |
アンダークラウドノードには 2 枚の NIC が実装されます。
| 名前 | 目的 |
|---|---|
| nic1 | Management ネットワークに使用 |
| nic2 | Provisioning ネットワークに使用 |
6.2.3. NIC の接続性のプランニング リンクのコピーリンクがクリップボードにコピーされました!
この場合は、環境ファイルは番号付けられた抽象的なインターフェイスデバイス名 (nic1、nic2) を使用し、ホストのオペレーティングシステムで提示されている実際のデバイス名 (eth0、eno2 など) は使用しません。同じロールに属するホストに全く同じネットワークインターフェイスデバイス名は必要ありません。1 つのホストが em1 と em2 のインターフェイスを使用して、他のホストが eno1 と eno2 を使用しても問題はありません。各 NIC は nic1 および nic2 と呼ばれます。
抽象化された NIC スキームでは、稼働中かつ接続済みのインターフェイスにのみ依存します。ホストによってインターフェイス数が異なる場合には、ホストを接続するために必要な最小限のインターフェイス数を使用すれば十分です。たとえば、1 台のホストに物理インターフェイスが 4 つあり、他のホストには 6 つある場合、nic1、nic2、nic3、nic4 のみを使用して、両ホストに 4 本のケーブルを接続します。
6.2.4. ネットワーク、VLAN、IP のプランニング リンクのコピーリンクがクリップボードにコピーされました!
このシナリオでは、ネットワーク分離を使用して、Management、Provisioning、Internal API、Tenant、Public API、Floating IP のネットワークトラフィックを分離します。
図6.2 このシナリオで使用するネットワークトポロジーの詳細
以下の表には、各ネットワークに関連付けられる VLAN ID と IP サブネットをまとめています。
| ネットワーク | VLAN ID | IP サブネット |
|---|---|---|
| プロビジョニング | ネイティブ | 192.0.5.0/24 |
| 内部 API | 600 | 172.17.0.0/24 |
| Tenant | 554,555-601 | 172.16.0.0/24 |
| Public API | 552 | 192.168.210.0/24 |
| Floating IP | 553 | 10.35.186.146/28 |
OpenStack Platform director は br-isolated OVS ブリッジを作成し、ネットワーク設定ファイルの定義に従って各ネットワークの VLAN インターフェイスを追加します。br-ex ブリッジも director によって自動的に作成され、関連するネットワークインターフェイスが接続されます。
ホスト間の接続性を提供する物理ネットワークスイッチが、VLAN ID を適用するように適切に設定されていることを確認します。ホストに接続する全スイッチポートは、VLAN を使用して trunk として設定する必要があります。ここでの trunk という用語は、複数の VLAN ID が同じポートを通過できるポートという意味で使用しています。
物理スイッチの設定に関する内容は、本ガイドの対象範囲外です。
network-environment.yaml の TenantNetworkVlanID で、VXLAN トンネリングを使用する場合のテナントネットワークの VLAN タグを定義することができます (例: VXLAN テナントのトラフィックが、VLAN タグ付けされた下層のネットワーク上で転送される)。テナントネットワークをネイティブ VLAN 上で実行する方が望ましい場合には、この値を空にすることも可能です。また、VLAN テナント種別のネットワークを使用する場合には、TenantNetworkVlanID に指定されている値以外の VLAN タグを使用できる場合がある点にも注意してください。
6.2.5. このシナリオで使用する OpenDaylight の設定ファイル リンクのコピーリンクがクリップボードにコピーされました!
このシナリオにおける OpenStack と OpenDaylight のデプロイには、アンダークラウドノードで以下のデプロイメントコマンドを実行しています。
本ガイドには、このシナリオの設定ファイル、設定ファイルの内容、設定に関する説明も記載しています。
6.2.5.1. extra_env.yaml ファイル リンクのコピーリンクがクリップボードにコピーされました!
このファイルにはパラメーターが 1 つしかありません。
parameter_defaults:
OpenDaylightProviderMappings: 'datacentre:br-ex,tenant:br-vlan'
parameter_defaults:
OpenDaylightProviderMappings: 'datacentre:br-ex,tenant:br-vlan'
これらは、OpenDaylight によって制御される各ノードのマッピングです。物理ネットワーク datacenter は、br-ex OVS ブリッジにマッピングされ、テナントネットワークのトラフィックは br-vlan OVS ブリッジにマッピングされます。
6.2.5.2. undercloud.conf ファイル リンクのコピーリンクがクリップボードにコピーされました!
このファイルは /home/stack/ ディレクトリー内にあります。
ファイルのパスは、カスタマイズされたバージョンの設定ファイルをポイントしています。
上記の例では、Provisioning ネットワーク用の 192.0.5.0/24 サブネットが使用されています。物理インターフェイス eno2 はアンダークラウドノードでプロビジョニング用に使用されます。
6.2.5.3. network-environment.yaml ファイル リンクのコピーリンクがクリップボードにコピーされました!
これは、ネットワークを設定するメインのファイルで、/home/stack/baremetal-vlan/ ディレクトリーにあります。以下のファイルは、異なるネットワークの VLAN ID および IP サブネットを指定し、プロバイダーマッピングを表示します。nic-configs ディレクトリーの controller.yaml および compute.yaml ファイルは、コントローラーノードおよびコンピュートノードのネットワーク設定を指定するために使用されます。
この例では、コントローラーノードの数 (3) とコンピュートノードの数 (2) が指定されています。
6.2.5.4. controller.yaml ファイル リンクのコピーリンクがクリップボードにコピーされました!
このファイルは、/home/stack/baremetal-vlan/nic-configs/ ディレクトリーにあります。この例では、 br-isolated、br-vlan、および br-ex スイッチを定義します:。nic2 は br-isolated の下にあり、nic3 は br-ex の下にあります。
6.2.5.5. compute.yaml ファイル リンクのコピーリンクがクリップボードにコピーされました!
このファイルは、/home/stack/baremetal-vlan/nic-configs/ ディレクトリーにあります。コンピュート設定のオプションの大半は、コントローラー設定のオプションと同じです。この例では、nic4 は、外部接続 (Floating IP ネットワーク) に使用される br-ex の下にあります。
6.2.6. このシナリオで使用する Red Hat OpenStack Platform director の設定ファイル リンクのコピーリンクがクリップボードにコピーされました!
6.2.6.1. neutron.conf ファイル リンクのコピーリンクがクリップボードにコピーされました!
このファイルは、/etc/neutron/ ディレクトリーにあり、以下の情報が含まれています。
[DEFAULT] service_plugins=odl-router_v2,trunk
[DEFAULT]
service_plugins=odl-router_v2,trunk
6.2.6.2. ml2_conf.ini ファイル リンクのコピーリンクがクリップボードにコピーされました!
このファイルは、/etc/neutron/plugins/ml2/ ディレクトリーにあり、以下の情報が含まれています。
-
[ml2] セクションの下には、ネットワーク種別として VXLAN が使用されており、
opendaylight_v2メカニズムドライバーが指定されている点に注意してください。 -
[ml2_type_vlan] の下で、
network-environment.yamlファイルと同じマッピングを設定します。 - [ml2_odl] の下には、OpenDaylightController にアクセスするための設定が記載されているはずです。
この情報を使用して、OpenDaylight コントローラーへのアクセスを確認することができます。
curl -H "Content-Type:application/json" -u admin:admin http://172.17.1.18:8081/controller/nb/v2/neutron/networks
$ curl -H "Content-Type:application/json" -u admin:admin http://172.17.1.18:8081/controller/nb/v2/neutron/networks
第7章 OpenDaylight での高可用性とクラスターリング リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenStack Platform 13 は、neutron と OpenDaylight コントローラーの両方で高可用性クラスターリングをサポートしています。以下の表には、高可用性クラスターを実行する場合の推奨アーキテクチャーをまとめています。
| ノード種別 | ノード数 | ノードのモード |
|---|---|---|
| Neutron | 3 | active/active/active |
| OpenDaylight | 3 | active/active/active |
| コンピュートノード (nova または OVS) | 任意 |
OpenDaylight のロールはコンポーザブルなので、neutron のノードと同じノードまたは別のノードにデプロイすることができます。設定はすべてアクティブモードです。全ノードが要求を処理できます。要求を受信したノードが処理できない場合には、そのノードが別の適切なノードに要求を転送します。全ノードが相互に同期します。Open_vSwitch Database (OVSDB) スキーマのサウスバウンドでは、利用可能なコントローラーノードが Open vSwitch を共有し、各スイッチはクラスター内の特定のノードによって処理されます。
7.1. 高可用性とクラスターリング向けの OpenDaylight の設定 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenStack Platform director は OpenDaylight コントローラーノードをデプロイするので、OpenDaylight のクラスターリングを設定するために必要な全情報を持っています。OpenDaylight の各ノードには、ノードの ロール (クラスター内での名前) を特定して、クラスター内の他のノード (シード ノード) の少なくとも一部を一覧表示した akka.conf 設定ファイルが必要です。ノードには、クラスター内でのデータの複製方法を記述した module-shards.conf ファイルも必要です。Red Hat OpenStack Platform director は、選択したデプロイメントの設定に基づいて適切に設定を行います。akka.conf ファイルはノードに依存する一方、module-shards.conf ファイルはノードとインストールされているデータストア (ならびにそのインストールされた機能。その大部分を制御します) に依存します。
akka.conf のサンプルファイル:
上記のノードの例は シードノード です。これらは、現在のクラスター設定全体を反映する必要はありません。シードノードのリストを使用して現在のクラスター内の実ノードの 1 つが到達可能な限り、起動するノードはクラスターに参加することができます。設定ファイルでは、IP アドレスの代わりに名前を使用することができます。
7.2. クラスターの動作 リンクのコピーリンクがクリップボードにコピーされました!
クラスターは、動的に定義されないので、自動調整は行いません。新しいノードを起動して、その新しいノードのみを設定し、既存のクラスターに接続することはできません。クラスターは、クラスター管理の RPC を使用して、ノードの追加と削除について通知を受ける必要があります。
クラスターはリーダー/フォロワーモデルです。アクティブなノードの 1 つがリーダーとして選択され、残りのアクティブなノードがフォロワーになります。クラスターは、Raft のコンセンサスをベースとするモデルに従って永続化を処理します。この原則に従って、クラスター内のノードの過半数が同意した場合に限り、1 つのトランザクションがコミットされます。
OpenDaylight では、ノードがクラスターとの接続を失った場合には、ローカルのトランザクションは先に進められなくなります。最終的には、タイムアウトして (デフォルトでは 10 分)、フロントエンドのアクターが停止します。これらはすべてシャードごとに適用されるので、シャードによって異なるリーダーを持つことができます。この動作により、以下のいずれかの状況となります。
- 通信がない状態が 10 分未満の場合には、マイノリティーノードがマジョリティーリーダーに再接続します。全トランザクションがロールバックされ、大半のトランザクションは再生されます。
- 通信がない状態が 10 分以上の場合には、マイノリティーノードが稼働停止し、ログに情報を記録します。それでも、読み取り専用の要求は完了するはずですが、変更は永続されず、ノードは自律的にクラスターに再度参加できません。
これは、ユーザーがノードをモニターリングする必要があることを意味します。ユーザーは、可用性とクラスターの同期をチェックして、同期されていない時間が長すぎる場合には、それらのノードを再起動します。ユーザーは Jolokia REST サービスを使用して、ノードをモニターリングできます。詳しくは、Jolokia のモニターリング を参照してください。
7.3. クラスターの要件 リンクのコピーリンクがクリップボードにコピーされました!
ボンディングや MTU などで、クラスターをサポートするために特定のネットワーク要件はありません。クラスターの通信は、高レイテンシーをサポートしていませんが、データセンターレベルのレイテンシーは受容可能です。
7.4. Open vSwitch の設定 リンクのコピーリンクがクリップボードにコピーされました!
各スイッチは、Red Hat OpenStack Platform director によりすべてのコントローラーで自動設定されます。OVSDB は、クラスターノード内のスイッチ共有をサポートして、一定レベルのロードバランシングを可能にします。ただし、各スイッチはクラスター内の全ノードに連絡して、最初に応答があったノードを選択し、そのノードをデフォルトでマスタースイッチにします。この動作により、コントローラーに割り当てられたノードの クラスターリング が行われ、最も応答が速いノードが大半のスイッチを処理します。
7.5. クラスターのモニターリング リンクのコピーリンクがクリップボードにコピーされました!
7.5.1. Jolokia のモニターリング リンクのコピーリンクがクリップボードにコピーされました!
クラスターのステータスをモニターリングするには、OpenDaylight で Jolokia のサポートを有効化する必要があります。
Jolokia のアドレスから、設定データストアクラスターのレポートを取得します。
curl -u <odl_username><odl_password>http://<odl_ip>:8081/jolokia/read/org.opendaylight.controller:type=DistributedConfigDatastore,Category=ShardManager,name=shard-manager-config
# curl -u <odl_username><odl_password>http://<odl_ip>:8081/jolokia/read/org.opendaylight.controller:type=DistributedConfigDatastore,Category=ShardManager,name=shard-manager-config
Jolokia のアドレスから、動作しているデータストアクラスターのレポートを取得します。
curl -u <odl_username><odl_password>http://<odl_ip>:8081/jolokia/read/org.opendaylight.controller:type=DistributedOperationalDatastore,Category=ShardManager,name=shard-manager-operational
# curl -u <odl_username><odl_password>http://<odl_ip>:8081/jolokia/read/org.opendaylight.controller:type=DistributedOperationalDatastore,Category=ShardManager,name=shard-manager-operational
レポートは JSON ドキュメントです。
環境に応じて IP address と member-1 の値を変更する必要があります。どのノードが応答してもよい場合には、IP アドレスは仮想 IP をポイントすることができます。ただし、特定のコントローラーのアドレスを指定した方が、より適切な結果が得られます。
この説明には、各ノードで同じリーダーを指定する必要があります。
アップストリームの OpenDaylight チームが開発した Cluster Monitor Tool で、クラスターをモニターリングすることも可能です。これは、OpenDaylight の Github リポジトリーにあります。
このツールは、Red Hat OpenStack Platform 13 の一部ではないため、Red Hat はサポートも提供もしていません。
7.6. OpenDaylight のポートについての理解 リンクのコピーリンクがクリップボードにコピーされました!
OpenDaylight の正式な全ポートの一覧は、OpenDaylight の Wiki ページに掲載されています。このシナリオに関連するポートは以下のとおりです。
| ポート番号 | 用途 |
|---|---|
| 2550 | クラスターリング |
| 6653 | OpenFlow |
| 6640、6641 | OVSDB |
| 8087 | neutron |
| 8081 | RESTCONF、Jolokia |
コントローラーでこれらのポートへのトラフィックをブロックすると、以下のような影響があります。
- クラスターリング
- クラスター化されたノードは、通信できなくなります。クラスター化モードで実行する場合には、各ノードにピアが少なくとも 1 つ必要です。全トラフィックがブロックされた場合には、コントローラーが停止します。
- OpenFlow
- スイッチがコントローラーに到達できなくなります。
- OVSDB
- Open vSwitch は、コントローラーに到達できなくなります。コントローラーは、アクティブな OVS 接続を開始できますが、スイッチからコントローラーへの ping は失敗して、最終的にスイッチは他のコントローラーにフェイルオーバーします。
- neutron
- neutron がコントローラーに到達できなくなります。
- RESTCONF
- REST エンドポイントを使用する外部ツールは、コントローラーに到達できなくなります。このシナリオで影響を受けるのは、モニターリングツールのみのはずです。
OpenDaylight 側では、ログに表示されるのはクラスターのブロックされているトラフィックのみです。これは、他のポートが ODL コントローラーとの通信に使用されていることが理由です。
ターゲットデバイスでこれらのポートへのトラフィックをブロックすると、以下のような影響があります。
- クラスターリング
- クラスター化されたノードは、通信できなくなります。クラスター化モードで実行する場合には、各ノードにピアが少なくとも 1 つ必要です。全トラフィックがブロックされた場合には、コントローラーが停止します。
- OpenFlow
- コントローラーはフローをプッシュできなくなります。
- OVSDB
- コントローラーはスイッチに到達できなくなります (コントローラーは OVS のパッシブ接続に応答可能となります)。
2 つ目の状況では、いずれの場合も、OpenDaylight は設定と稼働状態は別々に維持管理するので、設定は引き続き到達不可能なデバイスをポイントし、コントローラーはそれらのデバイスへの接続を試み続けます。
7.7. OpenDaylight のフローについての理解 リンクのコピーリンクがクリップボードにコピーされました!
| フロー | 説明 |
|---|---|
| Neutron → ODL | Neutron、HA プロキシー、ODL の順序です。Pacemaker は仮想 IP (物理 IP が 3 つでバッキング) を管理します。ドライバーは TCP セッションを開いたままにしようと試みます。これにより影響を受ける場合があります (https://review.openstack.org/#/c/440866/)。 |
| ODL → Neutron | ODL により開始される通信はありません。 |
| ODL → ODL | ODL ノードはポート 2550 (設定可能) で相互に通信します。 |
| ODL → OVS | ODL は、OVSDB (ポート 6640 および 6641) と OpenFlow (ポート 6633) を使用してスイッチと通信します。仮想 IP は関与せず、ODL は全スイッチの IP アドレスを認識しており、各 ODL ノードは全スイッチについて認識しています。 |
| OVS → ODL | ODL は、OVSDB (ポート 6640 および 6641) と OpenFlow (ポート 6633) を使用してスイッチと通信します。仮想 IP は関与せず、ODL が全スイッチを設定して、全コントローラーを認識するようにします。スイッチからコントローラーへの通知は全ノードに送信されます。 |
7.8. Neutron DHCP エージェント HA リンクのコピーリンクがクリップボードにコピーされました!
デフォルトの設定では、DHCP エージェントが OVS エージェントと共に全 neutron ノードで実行されます。ロールはコンポーザブルなので、エージェントはコントローラーから分離することができます。DHCP エージェントは、ポートを立ち上げる段階とリースの更新時のみに高可用性にとって重要です。ポートの作成時には、neutron が IP と MAC アドレスを割り当てて、ポートが立ち上がる前に全 DHCP エージェントを適切に設定します。この段階では、受信する DHCP 要求は、全 DHCP エージェントが応答します。
DHCP エージェントに問題が発生した場合にデータプレーンの可用性を最大限にするために、リース期間が長く設定されており、ノードには更新のための遅延が短時間設定されています。このため、DHCP エージェントはほとんど必要ありませんが、必要とされる場合には、利用できない DHCP エージェントに対して要求を実行するノードは即時にフェイルオーバーし、ブロードキャスト要求を発行して、残りの DHCP エージェントをすべて自動的に選択します。
エージェントには、独自のプロセスモニターがあります。systemd によりエージェントが起動され、それらの名前空間が作成されて、その内部でプロセスが開始します。エージェントが機能しなくなった場合には、名前空間は稼動状態のままで、systemd は、他のプロセスを終了したり再起動したりせずにエージェントを再起動します (systemd はそれらのプロセスを所有しません)。次にエージェントは名前空間を再度接続して、実行中の全プロセスと共に再利用します。
7.9. Neutron メタデータエージェント HA リンクのコピーリンクがクリップボードにコピーされました!
リファレンス実装では、メタデータサービスは、対応する DHCP エージェントと同じ名前空間内で、ネットワークノードと統合されたコントローラー上で実行されます。メタデータプロキシーはポート 80 をリッスンし、既知のメタデータアドレスを使用して静的ルートでトラフィックを仮想マシンからプロキシーにリダイレクトします。プロキシーは Unix ソケットを使用して同じノード上でメタデータサービスと通信し、メタデータサービスは nova と通信します。Unix ソケットでは、プロキシーとサービス間で IP をルーティング可能にする必要はないので、メタデータサービスは、ノードがルーティングされなくても利用可能です。HA は keepalive と VRRP エレクションを使用して処理されます。フェイルオーバー時間は 2-5 秒です。エージェントは、DHCP エージェントと同じように処理されます (systemd および名前空間)。
Red Hat OpenStack Platform 11 のメタデータサービスは、カスタムの Python スクリプトですが、Red Hat OpenStack Platform 13 では HAProxy で、メモリー使用量が 30 パーセント低くなります。多くのユーザーはルーターごとに 1 プロキシーを使用し、コントローラーあたりのルーター数が数百もしくは数千にも及ぶため、これは特に重要となります。
第8章 Red Hat OpenStack Platform および OpenDaylight に関する参考資料 リンクのコピーリンクがクリップボードにコピーされました!
| コンポーネント | 参考情報 |
|---|---|
| OpenDaylight | 本ガイドに記載されていない詳しい情報については、OpenDaylight Carbon の ドキュメント を参照してください。 |
| Red Hat OpenDaylight Product Guide | Red Hat OpenDaylight について、そして Red Hat OpenStack Platform との関連についての情報は、Red Hat OpenDaylight Product Guide を参照してください。 |
| Red Hat Enterprise Linux | Red Hat OpenStack Platform は Red Hat Enterprise Linux 7.4 でサポートされています。Red Hat Enterprise Linux のインストールについては、Red Hat Enterprise Linux インストールガイド で対応するインストールガイドを参照してください。 |
| Red Hat OpenStack Platform | OpenStack のコンポーネントとそれらの依存関係をインストールするには、Red Hat OpenStack Platform director を使用します。director は基本的な OpenStack アンダークラウドを使用します。続いてこれは、OpenStack ノードを最終的なオーバークラウド内にプロビジョニングして管理するために使用されます。アンダークラウドのインストールには、デプロイしたオーバークラウドに必要な環境に加えて、追加のホストマシンが 1 つ必要となる点に注意してください。詳しい手順は、director のインストールと使用方法 を参照してください。 Red Hat OpenStack Platform director を使用した、ネットワーク分離、ストレージ設定、SSL 通信、一般的な設定方法など Red Hat OpenStack Platform のエンタープライズ環境の高度な機能設定に関する情報は、オーバークラウドの高度なカスタマイズ を参照してください。 |
| NFV のドキュメント | NFV 対応の Red Hat OpenStack Platform のデプロイメントに関する詳しい情報は、ネットワーク機能仮想化 (NFV) のプランニングおよび設定ガイド を参照してください。 |