Red Hat Training
A Red Hat training course is available for Red Hat OpenStack Platform
第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
ファイルの例です。
# A Heat environment that can be used to deploy OpenDaylight with L3 DVR using Docker containers resource_registry: OS::TripleO::Services::NeutronOvsAgent: OS::Heat::None OS::TripleO::Services::ComputeNeutronOvsAgent: OS::Heat::None OS::TripleO::Services::ComputeNeutronCorePlugin: OS::Heat::None OS::TripleO::Services::OpenDaylightApi: ../../docker/services/opendaylight-api.yaml OS::TripleO::Services::OpenDaylightOvs: ../../puppet/services/opendaylight-ovs.yaml OS::TripleO::Services::NeutronL3Agent: OS::Heat::None OS::TripleO::Docker::NeutronMl2PluginBase: ../../puppet/services/neutron-plugin-ml2-odl.yaml parameter_defaults: NeutronEnableForceMetadata: true NeutronPluginExtensions: 'port_security' NeutronMechanismDrivers: 'opendaylight_v2' NeutronServicePlugins: 'odl-router_v2,trunk' OpenDaylightLogMechanism: 'console'
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 ブリッジは、ネットワーク分離内の任意のネットワークにマッピングすることができますが、例に示したように、通常は外部ネットワークにマッピングされます。
type: ovs_bridge name: {get_input: bridge_name} use_dhcp: false members: - type: interface name: nic3 # force the MAC address of the bridge to this interface primary: true dns_servers: {get_param: DnsServers} addresses: - ip_netmask: {get_param: ExternalIpSubnet} routes: - default: true ip_netmask: 0.0.0.0/0 next_hop: {get_param: ExternalInterfaceDefaultRoute}
DPDK では、別の OVS ブリッジを作成する必要があります。これは通常、br-phy という名前で、ovs-dpdk-port と共に指定します。ブリッジの IP アドレスは、VXLAN オーバーレイネットワークトンネル向けに設定されます。
type: ovs_user_bridge name: br-phy use_dhcp: false addresses: - ip_netmask: {get_param: TenantIpSubnet} members: - type: ovs_dpdk_port name: dpdk0 driver: uio_pci_generic members: - type: interface name: nic1 # force the MAC address of the bridge to this interface primary: true
ネットワーク分離を使用する場合には、コンピュートノード上のこのブリッジには IP アドレスまたはデフォルトのルートを配置する必要はありません。
また、br-ex
ブリッジを使用することなく、外部ネットワークアクセスを設定することが可能です。このメソッドを使用するには、オーバークラウドのコンピュートノードのインターフェイス名を前もって確認しておく必要があります。たとえば、コンピュートノード上の 3 番目のインターフェイスの確定的な名前が eth3 の場合には、コンピュートノード用の NIC テンプレートでインターフェイスを指定するのにその名前を使用することができます。
- type: interface name: eth3 use_dhcp: false