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 の値を設定します。デフォルトのファイルでは、OpenDaylightApiOpenDaylightOvs のサービスが有効化されますが、neutron エージェントは、OpenDaylight がその機能を継承するため、明示的に無効化されます。

Heat パラメーターは、director を使用したデプロイメントの設定値を設定するために使用できます。デフォルト値を上書きするには、環境ファイルの parameter_defaults セクションを使用してください。

この例では、OpenDaylight を有効化するために、NeutronEnableForceMetadataNeutronMechanismDriversNeutronServicePlugins のパラメーターが設定されています。

注記

その他のサービスとそれらの設定オプションの一覧は、本ガイドの後半に記載しています。

3.1.2. OpenDaylight API サービスの設定

必要に応じて、/usr/share/openstack-tripleo-heat-templates/puppet/services/opendaylight-api.yaml ファイルのデフォルト値を変更することができます。このファイルの設定は、直接上書きしないでください。このファイルを複製して、元のファイルをバックアップ対策として保持します。複製したファイルのみを編集し、そのファイルをデプロイメントのコマンドで渡します。

注記

後に指定する環境ファイルのパラメーターにより、前の環境ファイルのパラメーターが上書きされます。パラメーターが誤って上書きされるのを防ぐために、環境ファイルの指定順序には注意を払う必要があります。

3.1.2.1. 設定可能なオプション

OpenDaylight API サービス の設定時には、いくつかのパラメーターを指定することができます。

OpenDaylightPort

ノースバウンドの通信に使用するポートを設定します。デフォルト値は 0 です。このパラメーターは、OSP 13 では非推奨となっています。

OpenDaylightUsername

OpenDaylight のログインユーザー名を設定します。デフォルト値は admin です。

OpenDaylightPassword

OpenDaylight のログインパスワードを設定します。デフォルト値は admin です。

OpenDaylightEnableDHCP

OpenDaylight を有効化して、DHCP サービスとして機能するようにします。デフォルト値は false です。

OpenDaylightFeatures

OpenDaylight でブートする機能のコンマ区切りのリスト。デフォルト値は [odl-netvirt-openstack, odl-jolokia] です。

OpenDaylightConnectionProtocol

REST のアクセスに使用する L7 プロトコルを設定します。デフォルト値は http です。

OpenDaylightManageRepositories

OpenDaylight リポジトリーを管理するかどうかを定義します。デフォルト値は false です。

OpenDaylightSNATMechanism

OpenDaylight が使用する SNAT メカニズムを設定します。conntrack または controller を選択します。デフォルト値は conntrack です。

OpenDaylightLogMechanism

OpenDaylight のロギングメカニズムを設定します。file または console を選択します。デフォルト値は file です。

OpenDaylightTLSKeystorePassword

OpenDaylight TLS キーストアのパスワードを設定します。デフォルト値は opendaylight です。パスワードは 6 文字以上でなければなりません。

EnableInternalTLS

内部ネットワークで TLS を有効または無効にします。true または false の値を使用できます。デフォルト値は false です。

InternalTLSCAFile

内部ネットワーク内のサービス用に TLS を有効にする場合は、InternalTLSCAFile パラメーターを使用してデフォルトの CA 証明書を指定する必要があります。デフォルト値は /etc/ipa/ca.crt です。

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 サービス の設定時には、いくつかのパラメーターを指定することができます。

OpenDaylightPort

OpenDaylight へのノースバウンドの通信に使用するポートを設定します。デフォルト値は 0 です。OVS サービスはノースバウンドで OpenDaylight に対してクエリーを実行し、接続の前に完全に稼動状態であることを確認します。このパラメーターは、OSP 13 では非推奨となっています。

OpenDaylightConnectionProtocol

REST アクセスに使用するレイヤー 7 プロトコル。デフォルト値は http です。http は、OpenDaylight でサポートされる唯一のプロトコルです。このパラメーターは、OSP 13 では非推奨となっています。

OpenDaylightCheckURL

OpenDaylight の検証に使用する URL は、OVS が接続する前に完全に稼働します。デフォルト値は restconf/operational/network-topology:network-topology/topology/netvirt:1 です。

OpenDaylightProviderMappings

論理ネットワークと物理インターフェイスの間のマッピングのコンマ区切りリスト。この設定は、VLAN デプロイメントに必要です。デフォルト値は datacentre:br-ex です。

OpenDaylightUsername

OpenDaylight OVS サービスのカスタムユーザー名を設定可能にします。デフォルト値は admin です。

OpenDaylightPassword

OpenDaylight OVS サービスのカスタムパスワードを設定可能にします。デフォルト値は admin です。

HostAllowedNetworkTypes

この OVS ホストに許可されているテナントネットワーク種別を定義します。nova インスタンスとネットワークのスケジュール先となるホストを制限するために、ホストまたはロールによって異なる場合があります。デフォルトは値は ['local', 'vlan', 'vxlan', 'gre', 'flat'] です。

OvsEnableDpdk

OVS で DPDK を有効または無効にします。デフォルト値は false です。

OvsVhostuserMode

vhostuser ポート作成での OVS のモードを指定します。クライアントモードでは、ハイパーバイザーが vhostuser ソケットを作成するロールを果たします。サーバーモードでは、OVS が作成します。デフォルト値は client です。

VhostuserSocketDir

vhostuser ソケットに使用するディレクトリーを指定します。デフォルト値は /var/run/openvswitch です。

OvsHwOffload

OVS ハードウェアオフロードを有効または無効にします。true または false を使用できます。デフォルト値は false です。このパラメーターは、本リリースではテクノロジープレビューとして提供されています。

EnableInternalTLS

内部ネットワークで TLS を有効または無効にします。true または false の値を使用できます。デフォルト値は false です。

InternalTLSCAFile

内部ネットワーク内のサービス用に TLS を有効にする場合は、InternalTLSCAFile パラメーターを使用してデフォルトの CA 証明書を指定する必要があります。デフォルト値は /etc/ipa/ca.crt です。

ODLUpdateLevel

OpenDaylight の更新レベル。1 または 2 の値を使用することができます。デフォルト値は 1 です。

VhostuserSocketGroup

vhost-user ソケットディレクトリーのグループ。vhostuser がデフォルトの dpdkvhostuserclient モードの時には、qemu が vhost ソケットを作成します。VhostuserSocketGroup のデフォルト値は qemu です。

VhostuserSocketUser

vhost-user ソケットディレクトリーのユーザー名vhostuser がデフォルトの dpdkvhostuserclient モードの時には、qemu が vhost ソケットを作成します。VhostuserSocketUser のデフォルト値は qemu です。

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 で有効化されます。無効にするには、NeutronEnableForceMetadatafalse に設定してください。

仮想マシンインスタンスには、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