7.2. OpenStack Networking の設定

7.2.1. OpenStack Networking プラグインの設定

OpenStack Networking プラグインは、以下に示す例のように neutron.conf で長いクラス名ではなく、指定した短い名前で参照することができます。
core_plugin = neutron.plugins.ml2.plugin:Ml2Plugin
上記の代わりに以下のように参照することができます。
core_plugin = ml2
誤って空白文字を入れないように気をつけてください。空白文字によって解析エラーが発生する可能性があります。
service_plugins オプションには、複数のサービスプラグインをコンマ区切りリストで指定することができます。

表7.1 service_plugins

ショートネーム クラス名
dummy neutron.tests.unit.dummy_plugin:DummyServicePlugin
router neutron.services.l3_router.l3_router_plugin:L3RouterPlugin
firewall neutron.services.firewall.fwaas_plugin:FirewallPlugin
lbaas neutron.services.loadbalancer.plugin:LoadBalancerPlugin
metering neutron.services.metering.metering_plugin:MeteringPlugin

7.2.1.1. ML2 プラグインの有効化

neutron-server サービスを実行しているノードで、ML2 プラグインを有効化します。

手順7.1 ML2 プラグインの有効化

  1. OpenStack Networking を ml2_conf.ini ファイルにダイレクトするためのシンボリックリンクを作成します。
    # ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini
  2. テナントのネットワーク種別を設定します。サポートされる値は、grelocalvlanvxlan です。デフォルト値は local ですが、エンタープライズのデプロイメントには推奨していません。
    # openstack-config --set /etc/neutron/plugin.ini \
       ml2 tenant_network_type TYPE
    TYPE は、テナントのネットワーク種別に置き換えます。
  3. flat または vlan ネットワークが選択されている場合は、物理ネットワークを VLAN 範囲にマッピングする必要もあります。
    # openstack-config --set /etc/neutron/plugin.ini \
       ml2 network_vlan_ranges NAME:START:END
    以下の値を置き換えてください。
    • NAME は、物理ネットワーク名に置き換えます。
    • START は、VLAN 範囲の開始を示す識別子に置き換えます。
    • END は、VLAN 範囲の終了を示す識別子に置き換えます。
    以下の例のようにコンマ区切りリストを使用して、複数の範囲を指定することができます。
    physnet1:1000:2999,physnet2:3000:3999
  4. ドライバー種別を設定します。サポートされる値は localflatvlangrevxlan です。
    # openstack-config --set /etc/neutron/plugin.ini \
       ml2 type_drivers TYPE
    TYPE は、ドライバーの種別に置き換えます。複数のドライバーを指定する場合は、コンマ区切りリストを使用します。
  5. メカニズムドライバーを設定します。利用可能な値は、openvswitchlinuxbridgel2population です。
    # openstack-config --set /etc/neutron/plugin.ini \
       ml2 mechanism_drivers TYPE
    TYPE は、メカニズムドライバーの種別に置き換えます。複数のメカニズムドライバーを指定する場合は、コンマ区切りリストを使用します。
  6. L2 Population を有効化します。
    # openstack-config --set /etc/neutron/plugin.ini \
       agent l2_population True
  7. 使用しているプラグインエージェントに合わせて、/etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini ファイルまたは /etc/neutron/plugins/linxbridge/linuxbridge_conf.ini ファイルでファイアウォールドライバーを設定します。
    1. Open vSwitch ファイアウォールドライバー

      # openstack-config --set /etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini
         securitygroup firewall_driver neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver
    2. Linux Bridge ファイアウォールドライバー

      # openstack-config --set /etc/neutron/plugins/linuxbridge/linuxbridge_conf.ini					   
         securitygroup firewall_driver neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
  8. ML2 プラグインおよび L3 ルーターを有効化します。
    # openstack-config --set /etc/neutron/neutron.conf \
       DEFAULT core_plugin ml2
    # openstack-config --set /etc/neutron/neutron.conf \
       DEFAULT service_plugins router

7.2.2. OpenStack Networking データベースの作成

OpenStack Networking を使用するデータベースおよびデータベースユーザーを作成します。この手順に記載するステップはすべて、neutron-server サービスを起動する前に、データベースサーバーにroot ユーザーとしてログインして実行する必要があります。

手順7.2 OpenStack Networking データベースの作成

  1. データベースサービスに接続します。
    # mysql -u root -p
  2. 以下の名前のいずれかを指定してデータベースを作成します。
    • ML2 プラグインを使用する場合に、推奨されるデータベース名は neutron_ml2 です。
    • Open vSwitch プラグインを使用する場合に、推奨されるデータベース名は ovs_neutron です。
    • Linux Bridge プラグインを使用する場合に、推奨されるデータベース名は neutron_linux_bridge です。
    以下の例では ML2 用の neutron_ml2 データベースを作成します。
    mysql> CREATE DATABASE neutron_ml2 character set utf8;
  3. neutron データベースユーザーを作成し、neutron_ml2 データベースへのアクセスを許可します。
    mysql> GRANT ALL ON neutron_ml2.* TO 'neutron'@'%' IDENTIFIED BY 'PASSWORD';
    mysql> GRANT ALL ON neutron_ml2.* TO 'neutron'@'localhost' IDENTIFIED BY 'PASSWORD';
    PASSWORD は、このユーザーとしてデータベースサーバーとの認証を行う際に使用するセキュアなパスワードに置き換えます。
  4. データベースの特権をフラッシュして、設定が即時に反映されるようにします。
    mysql> FLUSH PRIVILEGES;
  5. mysql クライアントを終了します。
    mysql> quit

7.2.3. OpenStack Networking データベース接続の設定

OpenStack Networking で使用するデータベース接続は /etc/neutron/plugin.ini ファイルで定義します。有効なデータベースサーバーを参照するように更新してから、サービスを起動する必要があります。以下の手順で記載のステップはすべて、OpenStack Networking をホストするサーバーに root ユーザーでログインして実行する必要があります。

手順7.3 OpenStack Networking SQL データベース接続の設定

  1. connection 設定キーの値を設定します。
    # openstack-config --set /etc/neutron/plugin.ini \
       DATABASE sql_connection mysql://USER:PASS@IP/DB
    以下の値を置き換えてください。
    • USER は、OpenStack Networking データベースのユーザー名 (通常は neutron) に置き換えます。
    • PASS は選択したデータベースユーザーのパスワードに置き換えます。
    • IP は、データベースサーバーの IP アドレスまたはホスト名に置き換えます。
    • DB は、OpenStack Networking データベースの名前に置き換えます。

    重要

    この接続設定キーに指定する IP アドレスまたはホスト名は、OpenStack Networking データベースの作成時に OpenStack Networking データベースユーザーがアクセスを許可された IP アドレスまたはホスト名と一致する必要があります。また、データベースがローカルでホストされ、OpenStack Networking データベースの作成時に「localhost」へのアクセス権を付与した場合には、「localost」と入力する必要があります。
  2. OpenStack Networking のデータベーススキーマをアップグレードします。
    # neutron-db-manage --config-file /usr/share/neutron/neutron-dist.conf \
       --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugin.ini upgrade head

7.2.4. OpenStack Networking 用のアイデンティティーレコードの作成

OpenStack Networking で必要な Identity サービスを作成して設定します。これらのエントリーは、OpenStack Networking によって提供されるボリューム機能を検索してアクセスを試みる他の OpenStack サービスを補助します。
以下の手順では、管理ユーザーと services テナントが作成済みであることを前提としています。詳しい説明は、以下のリンクを参照してください。
以下の手順は、Identity サービスのサーバーまたは keystonerc_admin ファイルをコピーして keystone コマンドラインユーティリティーをインストールした任意のマシンで実行してください。

手順7.4 OpenStack Networking 用のアイデンティティーレコードの作成

  1. Keystone に管理ユーザーとしてアクセスするためのシェルを設定します。
    # source ~/keystonerc_admin
  2. neutron ユーザーを作成します。
    [(keystone_admin)]# keystone user-create --name neutron --pass PASSWORD
    +----------+----------------------------------+
    | Property |              Value               |
    +----------+----------------------------------+
    |  email   |                                  |
    | enabled  |               True               |
    |    id    | 1df18bcd14404fa9ad954f9d5eb163bc |
    |   name   |              neutron             |
    | username |              neutron             |
    +----------+----------------------------------+
    PASSWORD は、OpenStack Networking が Identity サービスとの認証を行う際に使用するセキュアなパスワードに置き換えます。
  3. services テナントのコンテキスト内で、neutron ユーザーと admin ロールを関連付けます。
    [(keystone_admin)]# keystone user-role-add --user neutron --role admin --tenant services
  4. neutron の OpenStack Networking サービスのエントリーを作成します。
    [(keystone_admin)]# keystone service-create --name neutron \
       --type network \
       --description "OpenStack Networking"
    +-------------+----------------------------------+
    |   Property  |              Value               |
    +-------------+----------------------------------+
    | description |        OpenStack Networking      |
    |   enabled   |               True               |
    |      id     | 134e815915f442f89c39d2769e278f9b |
    |     name    |              neutron             |
    |     type    |              network             |
    +-------------+----------------------------------+
  5. neutron のエンドポイントエントリーを作成します。
    [(keystone_admin)]# keystone endpoint-create
       --service neutron \
       --publicurl 'http://IP:9696' \
       --adminurl 'http://IP:9696' \
       --internalurl 'http://IP:9696' \
       --region 'RegionOne'
    IP は、OpenStack Networking ノードとして機能するサーバーの IP アドレスまたはホスト名に置き換えます。

7.2.5. OpenStack Networking の認証の設定

OpenStack Networking が認証に Identity サービスを使用するように設定します。以下の手順に記載するステップはすべて、OpenStack Networking をホストするサーバーに root ユーザーとしてログインして実行する必要があります。

手順7.5 OpenStack Networking サービスが Identity サービスを使用して認証を行うための設定

  1. 認証ストラテジーを keystone に設定します。
    # openstack-config --set /etc/neutron/neutron.conf \
       DEFAULT auth_strategy keystone
  2. OpenStack Networking が使用する必要のある Identity サービスのホストを設定します。
    # openstack-config --set /etc/neutron/neutron.conf \
       keystone_authtoken auth_host IP
    IP は、Identity サービスをホストするシステムの IP アドレスまたはホスト名に置き換えます。
  3. OpenStack Networking が正しいテナントとして認証を行うように設定します。
    # openstack-config --set /etc/neutron/neutron.conf \
       keystone_authtoken admin_tenant_name services
    services は、OpenStack Networking を使用するために作成したテナントの名前に置き換えます。本ガイドの例では、services を使用しています。
  4. OpenStack Networking が neutron の管理ユーザーアカウントを使用して認証を行うように設定します。
    # openstack-config --set /etc/neutron/neutron.conf \
       keystone_authtoken admin_user neutron
  5. OpenStack Networking が neutron の管理ユーザーアカウントのパスワードを使用して認証を行うように設定します。
    # openstack-config --set /etc/neutron/neutron.conf \
       keystone_authtoken admin_password PASSWORD
    PASSWORD は、neutron ユーザーの作成時に設定したパスワードに置き換えます。

7.2.6. OpenStack Networking のトラフィックを許可するためのファイアウォール設定

OpenStack Networking は、TCP ポート 9696 で接続を受信します。OpenStack Networking のファイアウォールは、このポートのネットワークトラフィックを許可するように設定する必要があります。以下の手順に記載するステップはすべて、OpenStack Networking をホストするサーバーに root ユーザーとしてログインして実行する必要があります。

手順7.6 OpenStack Networking のトラフィックを許可するためのファイアウォール設定

  1. テキストエディターで /etc/sysconfig/iptables ファイルを開きます。
  2. ポート 9696 で TCP トラフィックを許可する INPUT ルールを追加します。新規ルールは、トラフィックを REJECT する INPUT ルールよりも前に記載する必要があります。
    -A INPUT -p tcp -m multiport --dports 9696 -j ACCEPT
  3. /etc/sysconfig/iptables ファイルへの変更を保存します。
  4. iptables サービスを再起動して、変更を有効にします。
    # systemctl restart iptables.service

7.2.7. OpenStack Networking のための RabbitMQ メッセージブローカーの設定

RabbitMQ はデフォルト (かつ推奨の) メッセージブローカーです。RabbitMQ メッセージングサービスは、rabbitmq-server パッケージにより提供されます。以下の手順で記載する全ステップは、OpenStack Networking をホストするシステムに root ユーザーとしてログインして実行する必要があります。

手順7.7 OpenStack Networking サービスが RabbitMQ メッセージブローカーを使用するための設定

  1. RPC バックエンドとして RabbitMQ を設定します。
    # openstack-config --set /etc/neutron/neutron.conf \
       DEFAULT rpc_backend neutron.openstack.common.rpc.impl_kombu
  2. OpenStack Networking が RabbitMQ ホストに接続するように設定します。
    # openstack-config --set /etc/neutron/neutron.conf \
       DEFAULT rabbit_host RABBITMQ_HOST
    RABBITMQ_HOST は、メッセージブローカーの IP アドレスまたはホスト名に置き換えます。
  3. メッセージブローカーのポートを 5672 に設定します。
    # openstack-config --set /etc/neutron/neutron.conf \
       DEFAULT rabbit_port 5672
  4. RabbitMQ の設定時に OpenStack Networking 用に作成した RabbitMQ ユーザー名とパスワードを設定します。
    # openstack-config --set /etc/neutron/neutron.conf \
       DEFAULT rabbit_userid neutron
    # openstack-config --set /etc/neutron/neutron.conf \
       DEFAULT rabbit_password NEUTRON_PASS
    neutron および NEUTRON_PASS は、OpenStack Networking 用に作成した RabbitMQ ユーザー名とパスワードに置き換えます。
  5. RabbitMQ の起動時に、neutron ユーザーに全リソースに対するパーミッションが付与されます。このアクセスは、特別に仮想ホスト / を介して行われます。Networking サービスがこの仮想ホストに接続されるように設定します。
    # openstack-config --set /etc/neutron/neutron.conf \
       DEFAULT rabbit_virtual_host /

7.2.8. OpenStack Networking とメッセージブローカーとの間の SSL 通信の有効化

メッセージブローカーで SSL を有効化した場合は、OpenStack Networking も相応に設定する必要があります。以下の手順では、エクスポートしたクライアントの証明書とキーファイルが必要です。これらのファイルのエクスポートの方法に関する説明は、「クライアント用 SSL 証明書のエクスポート」 参照してください。

手順7.8 OpenStack Networking と RabbitMQ メッセージブローカーとの間の SSL 通信の有効化

  1. メッセージブローカーとの SSL 通信を有効化します。
    # openstack-config --set /etc/neutron/neutron.conf \
       DEFAULT rabbit_use_ssl True
    # openstack-config --set /etc/neutron/neutron.conf \
       DEFAULT kombu_ssl_certfile /path/to/client.crt
    # openstack-config --set /etc/neutron/neutron.conf \
       DEFAULT kombu_ssl_keyfile /path/to/clientkeyfile.key
    以下の値を置き換えてください。
    • /path/to/client.crt はエクスポートされたクライアント証明書の絶対パスに置き換えます。
    • /path/to/clientkeyfile.key はエクスポートされたキーファイルの絶対パスに置き換えます。
  2. 証明書がサードパーティーの認証局 (CA) によって署名されている場合には、次のコマンドを実行する必要もあります。
    # openstack-config --set /etc/neutron/neutron.conf \
     DEFAULT kombu_ssl_ca_certs /path/to/ca.crt
    /path/to/ca.crt は、サードパーティー CA によって提供された CA ファイルの絶対パスに置き換えます (詳細は 「RabbitMQ メッセージブローカーでの SSL の有効化」 を参照)。

7.2.9. OpenStack Networking が Compute サービスとネットワークトポロジーの変更について通信するように設定する手順

OpenStack Networking が Compute サービスとネットワークトポロジーの変更について通信するように設定します。

手順7.9 OpenStack Networking が Compute サービスとネットワークトポロジーの変更について通信するように設定する手順

  1. OpenStack Networking がコンピュートコントローラーノードに接続されるように設定します。
    # openstack-config --set /etc/neutron/neutron.conf \
       DEFAULT nova_url http://CONTROLLER_IP:8774/v2
    CONTROLLER_IP は、コンピュートコントローラーノードの IP アドレスまたはホスト名に置き換えます。
  2. nova ユーザーのユーザー名、パスワード、テナントを設定します。
    # openstack-config --set /etc/neutron/neutron.conf \
       DEFAULT nova_admin_username nova
    # openstack-config --set /etc/neutron/neutron.conf \
       DEFAULT nova_admin_tenant_id TENANT_ID
    # openstack-config --set /etc/neutron/neutron.conf \
       DEFAULT nova_admin_password PASSWORD
    TENANT_ID は Compute サービスで使用するために作成したテナントの一意識別子に、PASSWORDnova ユーザーの作成時に設定したパスワードに置き換えます。
  3. 管理者権限で、OpenStack Networking がコンピュートコントローラーノードに接続されるように設定します。
    # openstack-config --set /etc/neutron/neutron.conf \
       DEFAULT nova_admin_auth_url http://CONTROLLER_IP:35357/v2.0
    CONTROLLER_IP は、コンピュートコントローラーノードの IP アドレスまたはホスト名に置き換えます。
  4. OpenStack Networking がコンピュートコントローラーノードに対応する正しいリージョンを使用するように設定します。
    # openstack-config --set /etc/neutron/neutron.conf \
       DEFAULT nova_region_name RegionOne

7.2.10. OpenStack Networking の起動

neutron-server サービスを起動して、ブート時に起動するように設定します。
# systemctl start neutron-server.service
# systemctl enable neutron-server.service

重要

デフォルトでは、前のリリースとの後方互換性を維持するため、OpenStack Networking による IP アドレスの Classless Inter-Domain Routing (CIDR) チェックは有効化されていません。このようなチェックが必要な場合には、/etc/neutron/neutron.conf ファイルで force_gateway_on_subnet 設定キーの値を True に設定します。