Show Table of Contents
7.2. OpenStack Networking の設定
重要
Red Hat Openstack Platform のカスタマイズなしの状態では、
/etc/nova/nova.conf
の [DEFAULT]
セクションの vif_plugging_is_fatal
オプションはデフォルトで True
となっています。このオプションは、VIF プラグに失敗した場合にインスタンスが機能しないようにするかどうかを制御します。同様に、/etc/neutron/neutron.conf
ファイルの [DEFAULT]
セクションの notify_nova_on_port_status_changes
および notify_nova_on_port_data_changes
オプションはデフォルトで False
に指定されています。これらのオプションは、ポートの状態またはデータの変更に関する通知を nova に送信するかどうかを制御します。ただし、これらの値の組み合わせが原因でインスタンスが起動しなくなる可能性があります。インスタンスを正しく起動できるようにするには、これらすべてのオプションを True
または False
に設定してください。True
に設定するには、以下のコマンドを実行してください。 #
openstack-config --set /etc/nova/nova.conf \
DEFAULT vif_plugging_is_fatal True
#
openstack-config --set /etc/neutron/neutron.conf \
DEFAULT notify_nova_on_port_status_changes True
#
openstack-config --set /etc/neutron/neutron.conf \
DEFAULT notify_nova_on_port_data_changes True
False
に設定するには、代わりに以下のコマンドを実行します。 #
openstack-config --set /etc/nova/nova.conf \
DEFAULT vif_plugging_is_fatal False
#
openstack-config --set /etc/neutron/neutron.conf \
DEFAULT notify_nova_on_port_status_changes False
#
openstack-config --set /etc/neutron/neutron.conf \
DEFAULT notify_nova_on_port_data_changes False
7.2.1. OpenStack Networking プラグインの設定
OpenStack Networking プラグインを有効化します。以下の手順では、ML2、Open vSwitch (OVS)、および Linux Bridge プラグインを有効にする方法を説明します。
注記
モノリシックな Open vSwitch および Linux Bridge プラグインは非推奨で、将来のリリースでは廃止される予定となっています。これらの機能は、代わりに ML2 のメカニズムに再実装されています。
OpenStack Networking プラグインは、以下に示す例のように
neutron.conf
で長いクラス名ではなく、指定した短い名前で参照することができます。 core_plugin = neutron.plugins.ml2.plugin:Ml2Plugin上記の代わりに以下のように参照することができます。
core_plugin = ml2
誤って空白文字を入れないように気をつけてください。空白文字によって解析エラーが発生する可能性があります。
表7.1 core_plugin
ショートネーム | クラス名 |
---|---|
bigswitch | neutron.plugins.bigswitch.plugin:NeutronRestProxyV2 |
brocade | neutron.plugins.brocade.NeutronPlugin:BrocadePluginV2 |
cisco | neutron.plugins.cisco.network_plugin:PluginV2 |
embrane | neutron.plugins.embrane.plugins.embrane_ovs_plugin:EmbraneOvsPlugin |
hyperv | neutron.plugins.hyperv.hyperv_neutron_plugin:HyperVNeutronPlugin |
linuxbridge | neutron.plugins.linuxbridge.lb_neutron_plugin:LinuxBridgePluginV2 |
midonet | neutron.plugins.midonet.plugin:MidonetPluginV2 |
ml2 | neutron.plugins.ml2.plugin:Ml2Plugin |
mlnx | neutron.plugins.mlnx.mlnx_plugin:MellanoxEswitchPlugin |
nec | neutron.plugins.nec.nec_plugin:NECPluginV2 |
openvswitch | neutron.plugins.openvswitch.ovs_neutron_plugin:OVSNeutronPluginV2 |
plumgrid | neutron.plugins.plumgrid.plumgrid_plugin.plumgrid_plugin:NeutronPluginPLUMgridV2 |
ryu | neutron.plugins.ryu.ryu_neutron_plugin:RyuNeutronPluginV2 |
vmware | neutron.plugins.vmware.plugin:NsxPlugin |
service_plugins
オプションには、複数のサービスプラグインをコンマ区切りリストで指定することができます。
表7.2 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 プラグインの有効化
- OpenStack Networking を
ml2_conf.ini
ファイルにダイレクトするためのシンボリックリンクを作成します。#
ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini
- テナントのネットワーク種別を設定します。サポートされる値は、
gre
、local
、vlan
、vxlan
です。デフォルト値はlocal
ですが、エンタープライズのデプロイメントには推奨していません。#
openstack-config --set /etc/neutron/plugin.ini \
ml2 tenant_network_types TYPE
TYPE は、テナントのネットワーク種別に置き換えます。 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
- ドライバー種別を設定します。サポートされる値は
local
、flat
、vlan
、gre
、vxlan
です。#
openstack-config --set /etc/neutron/plugin.ini \
ml2 type_drivers TYPE
TYPE は、ドライバーの種別に置き換えます。複数のドライバーを指定する場合は、コンマ区切りリストを使用します。 - メカニズムドライバーを設定します。利用可能な値は、
openvswitch
、linuxbridge
、l2population
です。#
openstack-config --set /etc/neutron/plugin.ini \
ml2 mechanism_drivers TYPE
TYPE は、メカニズムドライバーの種別に置き換えます。複数のメカニズムドライバーを指定する場合は、コンマ区切りリストを使用します。 - L2 Population を有効化します。
#
openstack-config --set /etc/neutron/plugin.ini \
agent l2_population True
- 使用しているプラグインエージェントに合わせて、
/etc/neutron/plugins/ml2/openvswitch_agent.ini
ファイルまたは/etc/neutron/plugins/ml2/linuxbridge_agent.ini
ファイルでファイアウォールドライバーを設定します。Open vSwitch ファイアウォールドライバー
#
openstack-config --set /etc/neutron/plugins/ml2/openvswitch_agent.ini
securitygroup firewall_driver neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver
Linux Bridge ファイアウォールドライバー
#
openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini
securitygroup firewall_driver neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
- 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.1.2. Open vSwitch プラグインの有効化
neutron-server
サービスをホストするサーバーで Open vSwitch プラグインを有効化します。 注記
モノリシックな Open vSwitch プラグインは非推奨で、将来のリリースでは廃止される予定です。この機能は、代わりに ML2 のメカニズムに再実装されています。
手順7.2 Open vSwitch プラグインの有効化
- OpenStack Networking を
openvswitch_agent.ini
ファイルにダイレクトするためのシンボリックリンクを作成します。#
ln -s /etc/neutron/plugins/ml2/openvswitch_agent.ini \
/etc/neutron/plugin.ini
- テナントのネットワーク種別を設定します。サポートされる値は、
gre
、local
、vlan
、vxlan
です。デフォルト値はlocal
ですが、エンタープライズのデプロイメントには推奨していません。#
openstack-config --set /etc/neutron/plugin.ini \
OVS tenant_network_type TYPE
TYPE は、テナントのネットワーク種別に置き換えます。 flat
またはvlan
ネットワークが選択されている場合は、物理ネットワークを VLAN 範囲にマッピングする必要もあります。#
openstack-config --set /etc/neutron/plugin.ini \
OVS network_vlan_ranges NAME:START:END
以下の値を置き換えてください。- NAME は、物理ネットワーク名に置き換えます。
- START は、VLAN 範囲の開始を示す識別子に置き換えます。
- END は、VLAN 範囲の終了を示す識別子に置き換えます。
以下の例のようにコンマ区切りリストを使用して、複数の範囲を指定することができます。physnet1:1000:2999,physnet2:3000:3999
- ファイアウォールドライバーを設定します。
#
openstack-config --set /etc/neutron/plugin.ini \
securitygroup firewall_driver neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver
- Open vSwitch プラグインを有効化します。
#
openstack-config --set /etc/neutron/neutron.conf \
DEFAULT core_plugin openvswitch
7.2.1.3. Linux Bridge プラグインの有効化
neutron-server
サービスをホストするサーバーで Linux Bridge プラグインを有効化します。 注記
モノリシックな Linux Bridge プラグインは非推奨で、将来のリリースでは廃止される予定です。この機能は、代わりに ML2 のメカニズムに再実装されています。
手順7.3 Linux Bridge プラグインの有効化
- OpenStack Networking を
linuxbridge_agent.ini
ファイルにダイレクトするためのシンボリックリンクを作成します。#
ln -s /etc/neutron/plugins/ml2/linuxbridge_agent.ini \
/etc/neutron/plugin.ini
- テナントのネットワーク種別を設定します。サポートされる値は、
flat
、vlan
、local
です。デフォルト値はlocal
ですが、エンタープライズのデプロイメントには推奨していません。#
openstack-config --set /etc/neutron/plugin.ini \
VLAN tenant_network_type TYPE
TYPE は、選択したテナントのネットワーク種別に置き換えます。 flat
またはvlan
ネットワークが選択されている場合は、物理ネットワークを VLAN 範囲にマッピングする必要もあります。#
openstack-config --set /etc/neutron/plugin.ini \
LINUX_BRIDGE network_vlan_ranges NAME:START:END
- NAME は、物理ネットワーク名に置き換えます。
- START は、VLAN 範囲の開始を示す識別子に置き換えます。
- END は、VLAN 範囲の終了を示す識別子に置き換えます。
以下の例のようにコンマ区切りリストを使用して、複数の範囲を指定することができます。physnet1:1000:2999,physnet2:3000:3999
- ファイアウォールドライバーを設定します。
#
openstack-config --set /etc/neutron/plugin.ini \
securitygroup firewall_driver neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
- Linux Bridge プラグインを有効化します。
#
openstack-config --set /etc/neutron/neutron.conf \
DEFAULT core_plugin linuxbridge
7.2.2. OpenStack Networking データベースの作成
OpenStack Networking を使用するデータベースおよびデータベースユーザーを作成します。この手順に記載するステップはすべて、
neutron-server
サービスを起動する前に、データベースサーバーにroot
ユーザーとしてログインして実行する必要があります。
手順7.4 OpenStack Networking データベースの作成
- データベースサービスに接続します。
#
mysql -u root -p
- 以下の名前のいずれかを指定してデータベースを作成します。以下の例では ML2 用の
- ML2 プラグインを使用する場合に、推奨されるデータベース名は
neutron_ml2
です。 - Open vSwitch プラグインを使用する場合に、推奨されるデータベース名は
ovs_neutron
です。 - Linux Bridge プラグインを使用する場合に、推奨されるデータベース名は
neutron_linux_bridge
です。
neutron_ml2
データベースを作成します。mysql>
CREATE DATABASE neutron_ml2 character set utf8; 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 は、このユーザーとしてデータベースサーバーとの認証を行う際に使用するセキュアなパスワードに置き換えます。- データベースの特権をフラッシュして、設定が即時に反映されるようにします。
mysql>
FLUSH PRIVILEGES; mysql
クライアントを終了します。mysql>
quit
7.2.3. OpenStack Networking データベース接続の設定
OpenStack Networking で使用するデータベース接続は
/etc/neutron/plugin.ini
ファイルで定義します。有効なデータベースサーバーを参照するように更新してから、サービスを起動する必要があります。以下の手順で記載のステップはすべて、OpenStack Networking をホストするサーバーに root
ユーザーでログインして実行する必要があります。
手順7.5 OpenStack Networking SQL データベース接続の設定
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」と入力する必要があります。- 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.6 OpenStack Networking 用のアイデンティティーレコードの作成
- Keystone に管理ユーザーとしてアクセスするためのシェルを設定します。
#
source ~/keystonerc_admin
neutron
ユーザーを作成します。[(keystone_admin)]#
openstack user create --password PASSWORD neutron
+----------+----------------------------------+ | Field | Value | +----------+----------------------------------+ | email | None | | enabled | True | | id | 8f0d819a4ae54bf9b12d01d0fb095805 | | name | neutron | | username | neutron | +----------+----------------------------------+PASSWORD は、OpenStack Networking が Identity サービスとの認証を行う際に使用するセキュアなパスワードに置き換えます。services
テナントのコンテキスト内で、neutron
ユーザーとadmin
ロールを関連付けます。[(keystone_admin)]#
openstack role add --project services --user neutron admin
neutron
の OpenStack Networking サービスのエントリーを作成します。[(keystone_admin)]#
openstack service create --name neutron \
--description "OpenStack Networking" \
network
neutron
のエンドポイントエントリーを作成します。[(keystone_admin)]#
openstack endpoint create
--publicurl 'http://IP:9696' \
--adminurl 'http://IP:9696' \
--internalurl 'http://IP:9696' \
--region RegionOne \
neutron
IP は、OpenStack Networking ノードとして機能するサーバーの IP アドレスまたはホスト名に置き換えます。
7.2.5. OpenStack Networking の認証の設定
OpenStack Networking が認証に Identity サービスを使用するように設定します。以下の手順に記載するステップはすべて、OpenStack Networking をホストするサーバーに
root
ユーザーとしてログインして実行する必要があります。
手順7.7 OpenStack Networking サービスが Identity サービスを使用して認証を行うための設定
- 認証ストラテジーを
keystone
に設定します。#
openstack-config --set /etc/neutron/neutron.conf \
DEFAULT auth_strategy keystone
- OpenStack Networking が使用する必要のある Identity サービスのホストを設定します。
#
openstack-config --set /etc/neutron/neutron.conf \
keystone_authtoken auth_host IP
IP は、Identity サービスをホストするシステムの IP アドレスまたはホスト名に置き換えます。 - OpenStack Networking が正しいテナントとして認証を行うように設定します。
#
openstack-config --set /etc/neutron/neutron.conf \
keystone_authtoken admin_tenant_name services
services は、OpenStack Networking を使用するために作成したテナントの名前に置き換えます。本ガイドの例では、services
を使用しています。 - OpenStack Networking が
neutron
の管理ユーザーアカウントを使用して認証を行うように設定します。#
openstack-config --set /etc/neutron/neutron.conf \
keystone_authtoken admin_user neutron
- 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.8 OpenStack Networking のトラフィックを許可するためのファイアウォール設定
- テキストエディターで
/etc/sysconfig/iptables
ファイルを開きます。 - ポート
9696
で TCP トラフィックを許可する INPUT ルールを追加します。新規ルールは、トラフィックを REJECT する INPUT ルールよりも前に記載する必要があります。-A INPUT -p tcp -m multiport --dports 9696 -j ACCEPT
/etc/sysconfig/iptables
ファイルへの変更を保存します。iptables
サービスを再起動して、変更を有効にします。#
systemctl restart iptables.service
7.2.7. OpenStack Networking のための RabbitMQ メッセージブローカーの設定
RabbitMQ はデフォルト (かつ推奨の) メッセージブローカーです。RabbitMQ メッセージングサービスは、rabbitmq-server パッケージにより提供されます。以下の手順で記載する全ステップは、OpenStack Networking をホストするシステムに
root
ユーザーとしてログインして実行する必要があります。
手順7.9 OpenStack Networking サービスが RabbitMQ メッセージブローカーを使用するための設定
- RPC バックエンドとして RabbitMQ を設定します。
#
openstack-config --set /etc/neutron/neutron.conf \
DEFAULT rpc_backend neutron.openstack.common.rpc.impl_kombu
- OpenStack Networking が RabbitMQ ホストに接続するように設定します。
#
openstack-config --set /etc/neutron/neutron.conf \
DEFAULT rabbit_host RABBITMQ_HOST
RABBITMQ_HOST は、メッセージブローカーの IP アドレスまたはホスト名に置き換えます。 - メッセージブローカーのポートを
5672
に設定します。#
openstack-config --set /etc/neutron/neutron.conf \
DEFAULT rabbit_port 5672
- 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 ユーザー名とパスワードに置き換えます。 - 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.10 OpenStack Networking と RabbitMQ メッセージブローカーとの間の SSL 通信の有効化
- メッセージブローカーとの 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 はエクスポートされたキーファイルの絶対パスに置き換えます。
- 証明書がサードパーティーの認証局 (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.11 OpenStack Networking が Compute サービスとネットワークトポロジーの変更について通信するように設定する手順
- OpenStack Networking がコンピュートコントローラーノードに接続されるように設定します。
#
openstack-config --set /etc/neutron/neutron.conf \
DEFAULT nova_url http://CONTROLLER_IP:8774/v2
CONTROLLER_IP は、コンピュートコントローラーノードの IP アドレスまたはホスト名に置き換えます。 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 サービスで使用するために作成したテナントの一意識別子に、PASSWORD はnova
ユーザーの作成時に設定したパスワードに置き換えます。- 管理者権限で、OpenStack Networking がコンピュートコントローラーノードに接続されるように設定します。
#
openstack-config --set /etc/neutron/neutron.conf \
DEFAULT nova_admin_auth_url http://CONTROLLER_IP:35357/v2.0
CONTROLLER_IP は、コンピュートコントローラーノードの IP アドレスまたはホスト名に置き換えます。 - 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
に設定します。
Comments