【OpenStackチャレンジ】 第26回 Neutron環境構築編

2016.9.30


はじめに

photo-1429081172764-c0ee67ab9afd.jpg今回は、KeystoneSwiftGlanceCinderNovaに続けて、OpenStackのコンポーネントの1つであるNeutronを紹介したいと思います。
Neutronは、仮想マシンインスタンスをネットワーク接続するための機能を提供しています。
前回までと同様に、手動インストールを通して理解を深めていきましょう。
さらに、今回のneutronインストールで、仮想マシンインスタンスを起動するために必要なコンポーネントが構築されたことになりますので、実際に仮想マシンを作成するところまで試してみます。

Neutron環境の構成図

Keystone、Glance、Cinder、Novaをインストールした状態(【OpenStackチャレンジ】 第25回 Nova環境構築編)の仮想マシンに、(Liberty版)OpenStack インストールガイド Ubuntu 14.04 (LTS)版 - Networking サービスを参考にしてインストールを進めていきます。

Neutronが使用するVirtualBoxの仮想マシンは、以下のようになります。NEUINS-017.PNG

コントローラノードにNeutronをインストールしよう

まずは、システムをアップデートしておきます!
$ sudo apt-get update

neutronのデータベースを作成し、アクセス権を付与します。パスワード入力を求められるので、今回は全てのパスワードをubuntuと入力します。

$ mysql -u root -p << EOF
CREATE DATABASE neutron;
GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY 'ubuntu';
GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY 'ubuntu';
EOF

Enter password: 

neutronユーザーでログインし、データベースの閲覧が可能であることを確認します。

$ mysql -u neutron -p

Enter password: 

MariaDB [(none)]> show databases;

+--------------------+
| Database           |
+--------------------+
| information_schema |
| neutron            |
+--------------------+
2 rows in set (0.01 sec)

MariaDB [(none)]> quit

Bye

ubuntu@controller:~$

管理者用の環境設定ファイルを読み込みます。
$ source admin-openrc.sh

ubuntu@controller:~$ source admin-openrc.sh
ubuntu@controller ~(admin)$ 

neutronユーザーを作成します。
$ openstack user create --domain default --password-prompt neutron

User Password:
Repeat User Password:
+-----------+----------------------------------+
| Field     | Value                            |
+-----------+----------------------------------+
| domain_id | default                          |
| enabled   | True                             |
| id        | 23b189c8ed6742cfb92c9b293f3922ae |
| name      | neutron                          |
+-----------+----------------------------------+

neutronユーザーが作成されたか確認しましょう。
$ openstack user list

+----------------------------------+---------+
| ID                               | Name    |
+----------------------------------+---------+
| 100f4b1f6cdb4f0b8c6d340946e51cd6 | demo    |
| 23b189c8ed6742cfb92c9b293f3922ae | neutron |
| 9a67c1e810454ec2a940caddbc9a6e7a | nova    |
| a5423dbeafec4d3eb38ae2da887a36b8 | glance  |
| d10af0398e344bcc9165a44368d4706a | cinder  |
| ea4f34d6b33b466692850f73541b514e | admin   |
+----------------------------------+---------+

ユーザーをadminロールに追加します。
$ openstack role add --project service --user neutron admin

追加されたか確認してみましょう。
$ openstack role list --user neutron --project service

+----------------------------------+-------+---------+---------+
| ID                               | Name  | Project | User    |
+----------------------------------+-------+---------+---------+
| 7386619b798143b78acbbc6494c62ada | admin | service | neutron |
+----------------------------------+-------+---------+---------+

neutronサービスエンティティーを作成します。
$ openstack service create --name neutron --description "OpenStack Networking" network

+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | OpenStack Networking             |
| enabled     | True                             |
| id          | e4490ccd7d8e47f284fa0b6a1af233be |
| name        | neutron                          |
| type        | network                          |
+-------------+----------------------------------+

作成されたか確認してみましょう。
$ openstack service show neutron

+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | OpenStack Networking             |
| enabled     | True                             |
| id          | e4490ccd7d8e47f284fa0b6a1af233be |
| name        | neutron                          |
| type        | network                          |
+-------------+----------------------------------+

neutronサービスポイントを作成します。
リージョンは、Keystoneをインストールしたときに設定したリージョン「RegionOne」を指定します。
$ openstack endpoint create --region RegionOne network public http://controller:9696

+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | f9e1847ced2b4b3998cbd221b3ef3daa |
| interface    | public                           |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | e4490ccd7d8e47f284fa0b6a1af233be |
| service_name | neutron                          |
| service_type | network                          |
| url          | http://controller:9696           |
+--------------+----------------------------------+

$ openstack endpoint create --region RegionOne network internal http://controller:9696

+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | 98a7519613874eceb0a5f55c342717b9 |
| interface    | internal                         |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | e4490ccd7d8e47f284fa0b6a1af233be |
| service_name | neutron                          |
| service_type | network                          |
| url          | http://controller:9696           |
+--------------+----------------------------------+

$ openstack endpoint create --region RegionOne network admin http://controller:9696

+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | f8a1da138e9440e2b7ff74362b559ab2 |
| interface    | admin                            |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | e4490ccd7d8e47f284fa0b6a1af233be |
| service_name | neutron                          |
| service_type | network                          |
| url          | http://controller:9696           |
+--------------+----------------------------------+

作成されたか確認してみましょう。
$ openstack endpoint list --service neutron

+----------------------------------+-----------+--------------+--------------+---------+-----------+------------------------+
| ID                               | Region    | Service Name | Service Type | Enabled | Interface | URL                    |
+----------------------------------+-----------+--------------+--------------+---------+-----------+------------------------+
| 98a7519613874eceb0a5f55c342717b9 | RegionOne | neutron      | network      | True    | internal  | http://controller:9696 |
| f8a1da138e9440e2b7ff74362b559ab2 | RegionOne | neutron      | network      | True    | admin     | http://controller:9696 |
| f9e1847ced2b4b3998cbd221b3ef3daa | RegionOne | neutron      | network      | True    | public    | http://controller:9696 |
+----------------------------------+-----------+--------------+--------------+---------+-----------+------------------------+

Neutronと必要なパッケージをインストールします。
$ sudo apt-get install -y neutron-server neutron-plugin-ml2 neutron-plugin-linuxbridge-agent neutron-l3-agent neutron-dhcp-agent neutron-metadata-agent python-neutronclient

コントローラノードのNeutronを設定しよう

neutron.confの設定を行います。
$ sudo vi /etc/neutron/neutron.conf

[DEFAULT]
#DEBUGレベルのロギングを有効にする。
debug = True
#冗長ロギングを有効にする。
verbose = True
#ネットワークサービスのプラグインを設定する。
core_plugin = ml2
#追加プラグインを設定する。
service_plugins = router
#認証サービスへのアクセス方法をkeystoneに設定する。
auth_strategy = keystone
#仮想ネットワークにおけるIPアドレスの重複を許す。
allow_overlapping_ips = True
#ネットワークトポロジーの変更を通知するよう設定する。
notify_nova_on_port_status_changes = True
notify_nova_on_port_data_changes = True
#Novaサービスポイントを設定する。
nova_url = http://controller:8774/v2
#使用するAMQPクライアントを設定する。
rpc_backend = rabbit
[keystone_authtoken]
#Keystoneサービス用エンドポイントを設定する。
auth_uri = http://controller:5000
#Keystone管理用エンドポイントを設定する。
auth_url = http://controller:35357
#パスワード認証に設定する。
auth_plugin = password
#KeystoneのプロジェクトドメインIDを設定する。
project_domain_id = default
#KeystoneのユーザードメインIDを設定する。
user_domain_id = default
#Keystoneのプロジェクト名を設定する。
project_name = service
#Keystoneへアクセスするユーザー名を設定する。
username = neutron
#Keystoneへアクセスするパスワードを設定する。
password = ubuntu
[database]
#データベースのアクセス方法を設定する。
connection = mysql+pymysql://neutron:ubuntu@controller/neutron
[nova]
#NeutronがNovaへアクセスする時に必要になるKeystoneに関する情報を設定します。
#管理用エンドポイントを設定する。
auth_url = http://controller:35357
#パスワード認証に設定する。
auth_plugin = password
#プロジェクトドメインIDを設定する。
project_domain_id = default
#ユーザードメインIDを設定する。
user_domain_id = default
#プロジェクト名を設定する。
project_name = service
#アクセスするユーザー名を設定する。
username = nova
#アクセスするパスワードを設定する。
password = ubuntu
#リージョンを設定する。
region_name = RegionOne
[oslo_concurrency]
#ロックパスを設定する。
lock_path = /var/lib/neutron/tmp
[oslo_messaging_rabbit]
#Rabbitサーバーのホスト名を設定する。
rabbit_host = controller
#Rabbitサーバーへアクセスするユーザー名を設定する。
rabbit_userid = openstack
#Rabbitサーバーへアクセスするパスワードを設定する。
rabbit_password = ubuntu

次のコマンドを実行して正しく設定を行ったか確認しましょう。
$ sudo cat /etc/neutron/neutron.conf | grep -v "^\s*$" | grep -v "^\s*#"

[DEFAULT]
debug = True
verbose = True
core_plugin = ml2
service_plugins = router
auth_strategy = keystone
allow_overlapping_ips = True
notify_nova_on_port_status_changes = True
nova_url = http://controller:8774/v2
rpc_backend = rabbit
[matchmaker_redis]
[matchmaker_ring]
[quotas]
[agent]
root_helper = sudo /usr/bin/neutron-rootwrap /etc/neutron/rootwrap.conf
[keystone_authtoken]
auth_uri = http://controller:5000
auth_url = http://controller:35357
auth_plugin = password
project_domain_id = default
user_domain_id = default
project_name = service
username = neutron
password = ubuntu
[database]
connection = mysql+pymysql://neutron:ubuntu@controller/neutron
[nova]
auth_url = http://controller:35357
auth_plugin = password
project_domain_id = default
user_domain_id = default
project_name = service
username = nova
password = ubuntu
region_name = RegionOne
[oslo_concurrency]
lock_path = /var/lib/neutron/tmp
[oslo_policy]
[oslo_messaging_amqp]
[oslo_messaging_qpid]
[oslo_messaging_rabbit]
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = ubuntu
[qos]

ml2_conf.iniの設定を行います。
$ sudo vi /etc/neutron/plugins/ml2/ml2_conf.ini

#タイプドライバを設定する。
type_drivers = flat,vlan,vxlan
#テナントのネットワークタイプを設定する。
tenant_network_types = vxlan
#メカニズムドライバを設定する。
mechanism_drivers = linuxbridge,l2population
#拡張ドライバーを設定する。
extension_drivers = port_security
[ml2_type_flat]
#フラットネットワークを設定する。
flat_networks = public
[ml2_type_vxlan]
#テナントネットワークに割り当てるVNI(VXLAN Network Identifier)の最小値と最大値を設定する。 
vni_ranges = 1:1000
[securitygroup]
#ipsetを設定する。
enable_ipset = True

次のコマンドを実行して正しく設定を行ったか確認しましょう。
$ sudo cat /etc/neutron/plugins/ml2/ml2_conf.ini | grep -v "^\s*$" | grep -v "^\s*#"

[ml2]
type_drivers = flat,vlan,vxlan
tenant_network_types = vxlan
mechanism_drivers = linuxbridge,l2population
extension_drivers = port_security
[ml2_type_flat]
flat_networks = public
[ml2_type_vlan]
[ml2_type_gre]
[ml2_type_vxlan]
vni_ranges = 1:1000
[ml2_type_geneve]
[securitygroup]
enable_ipset = True

linuxbridge_agent.iniの設定を行います。
$ sudo vi /etc/neutron/plugins/ml2/linuxbridge_agent.ini

[linux_bridge]
#パブリックネットワークに割り当てる物理インターフェースを設定する。
physical_interface_mappings = public:eth1
[vxlan]
#VXLANオーバレイネットワークを設定する。
enable_vxlan = True
#VXLANのエンドポイントを設定する。
local_ip = 10.0.0.101
#VXLANフォワーディングテーブルを使用するためのプラグイン設定する。
l2_population = True
[agent]
#ARPスプーフィングの保護を設定する。
prevent_arp_spoofing = True
[securitygroup]
#ファイアウォールドライバーを設定する。
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
#セキュリティグループを設定する。
enable_security_group = True

次のコマンドを実行して正しく設定を行ったか確認しましょう。
$ sudo cat /etc/neutron/plugins/ml2/linuxbridge_agent.ini | grep -v "^\s*$" | grep -v "^\s*#"

[linux_bridge]
physical_interface_mappings = public:eth1
[vxlan]
enable_vxlan = True
local_ip = 10.0.0.101
l2_population = True
[agent]
prevent_arp_spoofing = True
[securitygroup]
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
enable_security_group = True

l3_agent.iniの設定を行います。
$ sudo vi /etc/neutron/l3_agent.ini

[DEFAULT]
#冗長ロギングを有効にする。
verbose = True
#インターフェースドライバーを設定する。
interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver
#外部ブリッジを無効にする。
external_network_bridge = 

次のコマンドを実行して正しく設定を行ったか確認しましょう。
$ sudo cat /etc/neutron/l3_agent.ini | grep -v "^\s*$" | grep -v "^\s*#"

[DEFAULT]
verbose = True
interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver
external_network_bridge = 
[AGENT]

/etc/neutron/dhcp_agent.iniの設定を行います。

$ sudo vi /etc/neutron/dhcp_agent.ini

[DEFAULT]
#インタフェースドライバを設定する。
interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver
#DHCPドライバを設定する。
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
#Metadataサーバーを設定する。
enable_isolated_metadata = True
#DHCPサーバーで自動的にMTUを設定する。
dnsmasq_config_file = /etc/neutron/dnsmasq-neutron.conf

次のコマンドを実行して正しく設定を行ったか確認しましょう。
$ sudo cat /etc/neutron/dhcp_agent.ini | grep -v "^\s*$" | grep -v "^\s*#"

[DEFAULT]
interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
enable_isolated_metadata = True
dnsmasq_config_file = /etc/neutron/dnsmasq-neutron.conf
[AGENT]

/etc/neutron/dnsmasq-neutron.confの設定を行います。
$ sudo vi /etc/neutron/dnsmasq-neutron.conf

#MTUを1450に設定する。
dhcp-option-force=26,1450

次のコマンドを実行して正しく設定を行ったか確認しましょう。
$ sudo cat /etc/neutron/dnsmasq-neutron.conf | grep -v "^\s*$" | grep -v "^\s*#"

dhcp-option-force=26,1450

メタデータプロキシ接続用パスフレーズを決めます。
$ openssl rand -hex 10

bfc7816152b08c529cc8

metadata_agent.iniの設定を行います。
$ sudo vi /etc/neutron/metadata_agent.ini

[DEFAULT]
#冗長ロギングを有効にする。
verbose = True
#Keystoneで設定したリージョンを設定する。
auth_region = RegionOne
#Keystoneサービス用エンドポイントを設定する。
auth_uri = http://controller:5000
#Keystone管理用エンドポイントを設定する。
auth_url = http://controller:35357
#パスワード認証に設定する。
auth_plugin = password
#KeystoneのプロジェクトドメインIDを設定する。
project_domain_id = default
#KeystoneのユーザードメインIDを設定する。
user_domain_id = default
#Keystoneのプロジェクト名を設定する。
project_name = service
#Keystoneへアクセスするユーザー名を設定する。
username = neutron
#Keystoneへアクセスするパスワードを設定する。
password = ubuntu
#Novaメタデータサーバーのホストを設定する。
nova_metadata_ip = controller
#メタデータプロキシ接続用パスフレーズを設定する。
metadata_proxy_shared_secret = bfc7816152b08c529cc8

次のコマンドを実行して正しく設定を行ったか確認しましょう。
$ sudo cat /etc/neutron/metadata_agent.ini | grep -v "^\s*$" | grep -v "^\s*#"

[DEFAULT]
verbose = True
auth_region = RegionOne
auth_uri = http://controller:5000
auth_url = http://controller:35357
auth_plugin = password
project_domain_id = default
user_domain_id = default
project_name = service
username = neutron
password = ubuntu
nova_metadata_ip = controller
metadata_proxy_shared_secret = bfc7816152b08c529cc8
[AGENT]

nova.confの設定を行います。
$ sudo vi /etc/nova/nova.conf

[neutron]
#Neutronサービス用エンドポイントを設定する。
url = http://controller:9696
#Keystone管理用エンドポイントを設定する。
auth_url = http://controller:35357
#パスワード認証に設定する。
auth_plugin = password
#KeystoneのプロジェクトドメインIDを設定する。
project_domain_id = default
#KeystoneのユーザードメインIDを設定する。
user_domain_id = default
#Keystoneで設定したリージョンを設定する。
region_name = RegionOne
#Keystoneのプロジェクト名を設定する。
project_name = service
#Keystoneへアクセスするユーザー名を設定する。
username = neutron
#Keystoneへアクセスするパスワードを設定する。
password = ubuntu
#メタデータプロキシを使用するように設定する。
service_metadata_proxy = True
#メタデータプロキシ接続用パスフレーズを設定する。
metadata_proxy_shared_secret = bfc7816152b08c529cc8

次のコマンドを実行して正しく設定を行ったか確認しましょう。
$ sudo cat /etc/nova/nova.conf | grep -v "^\s*$" | grep -v "^\s*#"

[DEFAULT]
debug = True
verbose=True
dhcpbridge_flagfile=/etc/nova/nova.conf
dhcpbridge=/usr/bin/nova-dhcpbridge
logdir=/var/log/nova
state_path=/var/lib/nova
force_dhcp_release=True
libvirt_use_virtio_for_bridges=True
ec2_private_dns_show_ip=True
api_paste_config=/etc/nova/api-paste.ini
enabled_apis=ec2,osapi_compute,metadata
rpc_backend = rabbit
auth_strategy = keystone
my_ip = 10.0.0.101
network_api_class = nova.network.neutronv2.api.API
security_group_api = neutron
linuxnet_interface_driver = nova.network.linux_net.NeutronLinuxBridgeInterfaceDriver
firewall_driver = nova.virt.firewall.NoopFirewallDriver
enabled_apis=osapi_compute,metadata
[vnc]
vncserver_listen = 10.0.0.101
vncserver_proxyclient_address = 10.0.0.101
novncproxy_base_url = http://10.0.0.101:6080/vnc_auto.html
[database]
connection = mysql+pymysql://nova:ubuntu@controller/nova
[oslo_messaging_rabbit]
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = ubuntu
[keystone_authtoken]
auth_uri = http://controller:5000
auth_url = http://controller:35357
auth_plugin = password
project_domain_id = default
user_domain_id = default
project_name = service
username = nova
password = ubuntu
[glance]
host = controller
[oslo_concurrency]
lock_path = /var/lib/nova/tmp
[neutron]
url = http://controller:9696
auth_url = http://controller:35357
auth_plugin = password
project_domain_id = default
user_domain_id = default
region_name = RegionOne
project_name = service
username = neutron
password = ubuntu
service_metadata_proxy = True
metadata_proxy_shared_secret = bfc7816152b08c529cc8

データベースを初期化します。
$ sudo su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head" neutron

INFO  [alembic.runtime.migration] Context impl MySQLImpl.
INFO  [alembic.runtime.migration] Will assume non-transactional DDL.
  Running upgrade for neutron-fwaas ...
INFO  [alembic.runtime.migration] Context impl MySQLImpl.
INFO  [alembic.runtime.migration] Will assume non-transactional DDL.
INFO  [alembic.runtime.migration] Running upgrade  -> start_neutron_fwaas, start neutron-fwaas chain
INFO  [alembic.runtime.migration] Running upgrade start_neutron_fwaas -> 4202e3047e47, add_index_tenant_id
INFO  [alembic.runtime.migration] Running upgrade 4202e3047e47 -> 540142f314f4, FWaaS router insertion
INFO  [alembic.runtime.migration] Running upgrade 540142f314f4 -> 796c68dffbb, cisco_csr_fwaas
INFO  [alembic.runtime.migration] Running upgrade 796c68dffbb -> kilo, kilo
INFO  [alembic.runtime.migration] Running upgrade kilo -> 67c8e8d61d5, Initial Liberty no-op script.
INFO  [alembic.runtime.migration] Running upgrade kilo -> c40fbb377ad, Initial Liberty no-op script.
INFO  [alembic.runtime.migration] Running upgrade c40fbb377ad -> 4b47ea298795, add reject rule
  OK

設定を反映させるため、再起動します。
$ sudo service nova-api restart

nova-api stop/waiting
nova-api start/running, process 15261

$ sudo service neutron-server restart

neutron-server stop/waiting
neutron-server start/running, process 15296

$ sudo service neutron-plugin-linuxbridge-agent restart

neutron-plugin-linuxbridge-agent stop/waiting
neutron-plugin-linuxbridge-agent start/running, process 15328

$ sudo service neutron-dhcp-agent restart

neutron-dhcp-agent stop/waiting
neutron-dhcp-agent start/running, process 15434

$ sudo service neutron-metadata-agent restart

neutron-metadata-agent stop/waiting
neutron-metadata-agent start/running, process 15462

$ sudo service neutron-l3-agent restart

neutron-l3-agent stop/waiting
neutron-l3-agent start/running, process 15486

エラーが起きていないことをログで確認します。
更新されるログをリアルタイムで確認するためにtailfコマンドを使用します。
$ tailf /var/log/nova/nova-api.log

2016-09-23 17:29:38.391 15261 DEBUG oslo_service.service [-] cinder.http_retries            = 3 log_opt_values /usr/lib/python2.7/dist-packages/oslo_config/cfg.py:2233
2016-09-23 17:29:38.391 15261 DEBUG oslo_service.service [-] cinder.insecure                = False log_opt_values /usr/lib/python2.7/dist-packages/oslo_config/cfg.py:2233
2016-09-23 17:29:38.391 15261 DEBUG oslo_service.service [-] cinder.keyfile                 = None log_opt_values /usr/lib/python2.7/dist-packages/oslo_config/cfg.py:2233
2016-09-23 17:29:38.392 15261 DEBUG oslo_service.service [-] cinder.os_region_name          = None log_opt_values /usr/lib/python2.7/dist-packages/oslo_config/cfg.py:2233
2016-09-23 17:29:38.392 15261 DEBUG oslo_service.service [-] cinder.timeout                 = None log_opt_values /usr/lib/python2.7/dist-packages/oslo_config/cfg.py:2233
2016-09-23 17:29:38.393 15261 DEBUG oslo_service.service [-] oslo_versionedobjects.fatal_exception_format_errors = False log_opt_values /usr/lib/python2.7/dist-packages/oslo_config/cfg.py:2233
2016-09-23 17:29:38.393 15261 DEBUG oslo_service.service [-] osapi_v21.enabled              = True log_opt_values /usr/lib/python2.7/dist-packages/oslo_config/cfg.py:2233
2016-09-23 17:29:38.393 15261 DEBUG oslo_service.service [-] osapi_v21.extensions_blacklist = [] log_opt_values /usr/lib/python2.7/dist-packages/oslo_config/cfg.py:2233
2016-09-23 17:29:38.394 15261 DEBUG oslo_service.service [-] osapi_v21.extensions_whitelist = [] log_opt_values /usr/lib/python2.7/dist-packages/oslo_config/cfg.py:2233
2016-09-23 17:29:38.394 15261 DEBUG oslo_service.service [-] ******************************************************************************** log_opt_values /usr/lib/python2.7/dist-packages/oslo_config/cfg.py:2235

$ tailf /var/log/neutron/neutron-server.log

2016-09-23 17:29:59.637 15307 INFO oslo.messaging._drivers.impl_rabbit [req-48ccd59c-4557-451d-8007-db37882d52af - - - - -] Connected to AMQP server on controller:5672
2016-09-23 17:30:11.998 15307 DEBUG neutron.api.rpc.handlers.dhcp_rpc [req-0a87bc0a-0945-4568-98c3-9fcff39f3917 - - - - -] get_active_networks_info from controller get_active_networks_info /usr/lib/python2.7/dist-packages/neutron/api/rpc/handlers/dhcp_rpc.py:129
2016-09-23 17:30:12.033 15307 DEBUG neutron.scheduler.dhcp_agent_scheduler [req-0a87bc0a-0945-4568-98c3-9fcff39f3917 - - - - -] No non-hosted networks auto_schedule_networks /usr/lib/python2.7/dist-packages/neutron/scheduler/dhcp_agent_scheduler.py:47
2016-09-23 17:30:12.124 15307 DEBUG neutron.api.rpc.handlers.dhcp_rpc [req-0a87bc0a-0945-4568-98c3-9fcff39f3917 - - - - -] get_active_networks_info from controller get_active_networks_info /usr/lib/python2.7/dist-packages/neutron/api/rpc/handlers/dhcp_rpc.py:129
2016-09-23 17:30:12.154 15307 DEBUG neutron.scheduler.dhcp_agent_scheduler [req-0a87bc0a-0945-4568-98c3-9fcff39f3917 - - - - -] No non-hosted networks auto_schedule_networks /usr/lib/python2.7/dist-packages/neutron/scheduler/dhcp_agent_scheduler.py:47
2016-09-23 17:30:34.040 15296 DEBUG oslo_messaging._drivers.amqp [req-b3104862-5e27-45ab-b151-2e935655f46c - - - - -] Pool creating new connection create /usr/lib/python2.7/dist-packages/oslo_messaging/_drivers/amqp.py:103
2016-09-23 17:30:34.041 15296 INFO oslo.messaging._drivers.impl_rabbit [req-b3104862-5e27-45ab-b151-2e935655f46c - - - - -] Connecting to AMQP server on controller:5672
2016-09-23 17:30:34.053 15296 INFO oslo.messaging._drivers.impl_rabbit [req-b3104862-5e27-45ab-b151-2e935655f46c - - - - -] Connected to AMQP server on controller:5672
2016-09-23 17:30:39.315 15307 DEBUG neutron.api.rpc.handlers.l3_rpc [req-01954eed-8d27-46b9-9185-00b1d1f77c18 - - - - -] Routers returned to l3 agent:
 [] sync_routers /usr/lib/python2.7/dist-packages/neutron/api/rpc/handlers/l3_rpc.py:94

$ tailf /var/log/neutron/neutron-metadata-agent.log

2016-09-23 17:30:23.626 15462 DEBUG oslo_service.service [req-d7fef5db-cacb-4b22-8caf-3d59c696dd30 - - - - -] database.sqlite_synchronous    = True log_opt_values /usr/lib/python2.7/dist-packages/oslo_config/cfg.py:2233
2016-09-23 17:30:23.626 15462 DEBUG oslo_service.service [req-d7fef5db-cacb-4b22-8caf-3d59c696dd30 - - - - -] database.use_db_reconnect      = False log_opt_values /usr/lib/python2.7/dist-packages/oslo_config/cfg.py:2233
2016-09-23 17:30:23.627 15462 DEBUG oslo_service.service [req-d7fef5db-cacb-4b22-8caf-3d59c696dd30 - - - - -] ******************************************************************************** log_opt_values /usr/lib/python2.7/dist-packages/oslo_config/cfg.py:2235
2016-09-23 17:30:23.628 15462 DEBUG oslo_messaging._drivers.amqpdriver [-] MSG_ID is 63521bf7ed894e2d97f03f102bc41f24 _send /usr/lib/python2.7/dist-packages/oslo_messaging/_drivers/amqpdriver.py:423
2016-09-23 17:30:23.628 15462 DEBUG oslo_messaging._drivers.amqp [-] Pool creating new connection create /usr/lib/python2.7/dist-packages/oslo_messaging/_drivers/amqp.py:103
2016-09-23 17:30:23.635 15462 INFO oslo.messaging._drivers.impl_rabbit [-] Connecting to AMQP server on controller:5672
2016-09-23 17:30:23.648 15462 INFO oslo.messaging._drivers.impl_rabbit [-] Connected to AMQP server on controller:5672
2016-09-23 17:30:23.654 15462 DEBUG oslo_messaging._drivers.amqp [-] Pool creating new connection create /usr/lib/python2.7/dist-packages/oslo_messaging/_drivers/amqp.py:103
2016-09-23 17:30:23.655 15462 INFO oslo.messaging._drivers.impl_rabbit [-] Connecting to AMQP server on controller:5672
2016-09-23 17:30:23.665 15462 INFO oslo.messaging._drivers.impl_rabbit [-] Connected to AMQP server on controller:5672

$ tailf /var/log/neutron/neutron-plugin-linuxbridge-agent.log

2016-09-23 17:29:59.551 15328 DEBUG neutron.agent.linux.utils [req-48ccd59c-4557-451d-8007-db37882d52af - - - - -] 
Command: ['sudo', '/usr/bin/neutron-rootwrap', '/etc/neutron/rootwrap.conf', 'ebtables', '-L']
Exit code: 0
 execute /usr/lib/python2.7/dist-packages/neutron/agent/linux/utils.py:156
2016-09-23 17:29:59.552 15328 INFO neutron.plugins.ml2.drivers.linuxbridge.agent.arp_protect [req-48ccd59c-4557-451d-8007-db37882d52af - - - - -] Clearing orphaned ARP spoofing entries for devices []
2016-09-23 17:29:59.552 15328 DEBUG oslo_concurrency.lockutils [req-48ccd59c-4557-451d-8007-db37882d52af - - - - -] Lock "ebtables" acquired by "neutron.plugins.ml2.drivers.linuxbridge.agent.arp_protect.delete_arp_spoofing_protection" :: waited 0.000s inner /usr/lib/python2.7/dist-packages/oslo_concurrency/lockutils.py:253
2016-09-23 17:29:59.553 15328 DEBUG oslo_concurrency.lockutils [req-48ccd59c-4557-451d-8007-db37882d52af - - - - -] Lock "ebtables" released by "neutron.plugins.ml2.drivers.linuxbridge.agent.arp_protect.delete_arp_spoofing_protection" :: held 0.000s inner /usr/lib/python2.7/dist-packages/oslo_concurrency/lockutils.py:265
2016-09-23 17:30:29.490 15328 DEBUG oslo_messaging._drivers.amqpdriver [-] MSG_ID is d9b9f691c8944cabb7e0185b904a5480 _send /usr/lib/python2.7/dist-packages/oslo_messaging/_drivers/amqpdriver.py:423
2016-09-23 17:30:59.490 15328 DEBUG oslo_messaging._drivers.amqpdriver [-] MSG_ID is e9841913ce784764a1db7851d680d4c6 _send /usr/lib/python2.7/dist-packages/oslo_messaging/_drivers/amqpdriver.py:423
2016-09-23 17:31:29.490 15328 DEBUG oslo_messaging._drivers.amqpdriver [-] MSG_ID is d8b56ec2e9b44be9a6f9c05db7d54cc3 _send /usr/lib/python2.7/dist-packages/oslo_messaging/_drivers/amqpdriver.py:423

使用しないデータベースファイルを削除します。
$ sudo rm -f /var/lib/neutron/neutron.sqlite

コンピュートノードにNeutronをインストールしよう

まずは、システムをアップデートしておきます!
$ sudo apt-get update
$ sudo apt-get dist-upgrade

NeutronプラグインのLinuxBridgeエージェントをインストールします。
$ sudo apt-get install -y neutron-plugin-linuxbridge-agent

コンピュートノードのNeutronを設定しよう

neutron.confの設定を行います。
$ sudo vi /etc/neutron/neutron.conf

[DEFAULT]
#DEBUGレベルのロギングを有効にする。
debug = True
#冗長ロギングを有効にする。
verbose = True
#ネットワークサービスのプラグインを設定する。
core_plugin = ml2
#認証サービスへのアクセス方法をkeystoneに設定する。
auth_strategy = keystone
#使用するAMQPクライアントを設定する。
rpc_backend = rabbit
[keystone_authtoken]
#Keystoneサービス用エンドポイントを設定する。
auth_uri = http://controller:5000
#Keystone管理用エンドポイントを設定する。
auth_url = http://controller:35357
#パスワード認証に設定する。
auth_plugin = password
#KeystoneのプロジェクトドメインIDを設定する。
project_domain_id = default
#KeystoneのユーザードメインIDを設定する。
user_domain_id = default
#Keystoneのプロジェクト名を設定する。
project_name = service
#Keystoneへアクセスするユーザー名を設定する。
username = neutron
#Keystoneへアクセスするパスワードを設定する。
password = ubuntu
[database]
#コンピュートノードのneutron.confにはデータベースの指定は不要です。
# connection = sqlite:////var/lib/neutron/neutron.sqlite
[oslo_messaging_rabbit]
#Rabbitサーバーのホスト名を設定する。
rabbit_host = controller
#Rabbitサーバーへアクセスするユーザー名を設定する。
rabbit_userid = openstack
#Rabbitサーバーへアクセスするパスワードを設定する。
rabbit_password = ubuntu

次のコマンドを実行して正しく設定を行ったか確認しましょう。
$ sudo cat /etc/neutron/neutron.conf | grep -v "^\s*$" | grep -v "^\s*#"

[DEFAULT]
debug = True
verbose = True
core_plugin = ml2
auth_strategy = keystone
rpc_backend = rabbit
[matchmaker_redis]
[matchmaker_ring]
[quotas]
[agent]
root_helper = sudo /usr/bin/neutron-rootwrap /etc/neutron/rootwrap.conf
[keystone_authtoken]
auth_uri = http://controller:5000
auth_url = http://controller:35357
auth_plugin = password
project_domain_id = default
user_domain_id = default
project_name = service
username = neutron
password = ubuntu
[database]
[nova]
[oslo_concurrency]
lock_path = $state_path/lock
[oslo_policy]
[oslo_messaging_amqp]
[oslo_messaging_qpid]
[oslo_messaging_rabbit]
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = ubuntu
[qos]

linuxbridge_agent.iniの設定を行います。
$ sudo vi /etc/neutron/plugins/ml2/linuxbridge_agent.ini

[linux_bridge]
#テナントネットワークに割り当てる物理インターフェースを設定する。
physical_interface_mappings = public:eth1
[vxlan]
#VXLANオーバレイネットワークを設定する。
enable_vxlan = True
#VXLANのエンドポイントを設定する。
local_ip = 10.0.0.102
#VXLANフォワーディングテーブルを使用するためのプラグイン設定する。
l2_population = True
[agent]
#ARPスプーフィングの保護を設定する。
prevent_arp_spoofing = True
[securitygroup]
#ファイアウォールドライバーを設定する。
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
#セキュリティグループを設定する。
enable_security_group = True

次のコマンドを実行して正しく設定を行ったか確認しましょう。
$ sudo cat /etc/neutron/plugins/ml2/linuxbridge_agent.ini | grep -v "^\s*$" | grep -v "^\s*#"

[linux_bridge]
physical_interface_mappings = public:eth1
[vxlan]
enable_vxlan = True
local_ip = 10.0.0.102
l2_population = True
[agent]
prevent_arp_spoofing = True
[securitygroup]
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
enable_security_group = True

nova.confの設定を行います。
$ sudo vi /etc/nova/nova.conf

[neutron]
#Neutronサービス用エンドポイントを設定する。
url = http://controller:9696
#Keystone管理用エンドポイントを設定する。
auth_url = http://controller:35357
#パスワード認証に設定する。
auth_plugin = password
#KeystoneのプロジェクトドメインIDを設定する。
project_domain_id = default
#KeystoneのユーザードメインIDを設定する。
user_domain_id = default
#Keystoneで設定したリージョンを設定する。
region_name = RegionOne
#Keystoneのプロジェクト名を設定する。
project_name = service
#Keystoneへアクセスするユーザー名を設定する。
username = neutron
#Keystoneへアクセスするパスワードを設定する。
password = ubuntu

次のコマンドを実行して正しく設定を行ったか確認しましょう。
$ sudo cat /etc/nova/nova.conf | grep -v "^\s*$" | grep -v "^\s*#"

[DEFAULT]
debug = True
verbose=True
dhcpbridge_flagfile=/etc/nova/nova.conf
dhcpbridge=/usr/bin/nova-dhcpbridge
logdir=/var/log/nova
state_path=/var/lib/nova
force_dhcp_release=True
libvirt_use_virtio_for_bridges=True
ec2_private_dns_show_ip=True
api_paste_config=/etc/nova/api-paste.ini
enabled_apis=ec2,osapi_compute,metadata
volume_api_class=nova.volume.cinder.API
rpc_backend = rabbit
auth_strategy = keystone
my_ip = 10.0.0.102
network_api_class = nova.network.neutronv2.api.API
security_group_api = neutron
linuxnet_interface_driver = nova.network.linux_net.NeutronLinuxBridgeInterfaceDriver
firewall_driver = nova.virt.firewall.NoopFirewallDriver
[vnc]
enabled = True
vncserver_listen = 0.0.0.0
vncserver_proxyclient_address = 10.0.0.102
novncproxy_base_url = http://controller:6080/vnc_auto.html
vnc_keymap = ja
[oslo_messaging_rabbit]
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = ubuntu
[keystone_authtoken]
auth_uri = http://controller:5000
auth_url = http://controller:35357
auth_plugin = password
project_domain_id = default
user_domain_id = default
project_name = service
username = nova
password = ubuntu
[glance]
host = controller
[oslo_concurrency]
lock_path = /var/lib/nova/tmp
[neutron]
url = http://controller:9696
auth_url = http://controller:35357
auth_plugin = password
project_domain_id = default
user_domain_id = default
region_name = RegionOne
project_name = service
username = neutron
password = ubuntu

設定を反映させるため、再起動します。
$ sudo service nova-compute restart

nova-compute stop/waiting
nova-compute start/running, process 32257

$ sudo service neutron-plugin-linuxbridge-agent restart

neutron-plugin-linuxbridge-agent stop/waiting
neutron-plugin-linuxbridge-agent start/running, process 32424

エラーが起きていないことをログで確認します。
更新されるログをリアルタイムで確認するためにtailfコマンドを使用します。
$ tailf /var/log/nova/nova-compute.log

2016-09-26 10:25:19.185 32257 DEBUG oslo_concurrency.lockutils [req-9c2e7880-7872-43fb-81ba-c1f048274c17 - - - - -] Lock "compute_resources" acquired by "nova.compute.resource_tracker._update_available_resource" :: waited 0.000s inner /usr/lib/python2.7/dist-packages/oslo_concurrency/lockutils.py:253
2016-09-26 10:25:19.308 32257 INFO nova.compute.resource_tracker [req-9c2e7880-7872-43fb-81ba-c1f048274c17 - - - - -] Total usable vcpus: 1, total allocated vcpus: 0
2016-09-26 10:25:19.308 32257 INFO nova.compute.resource_tracker [req-9c2e7880-7872-43fb-81ba-c1f048274c17 - - - - -] Final resource view: name=compute phys_ram=2001MB used_ram=512MB phys_disk=194GB used_disk=0GB total_vcpus=1 used_vcpus=0 pci_stats=None
2016-09-26 10:25:19.433 32257 INFO nova.compute.resource_tracker [req-9c2e7880-7872-43fb-81ba-c1f048274c17 - - - - -] Compute_service record updated for compute:compute
2016-09-26 10:25:19.434 32257 DEBUG oslo_concurrency.lockutils [req-9c2e7880-7872-43fb-81ba-c1f048274c17 - - - - -] Lock "compute_resources" released by "nova.compute.resource_tracker._update_available_resource" :: held 0.249s inner /usr/lib/python2.7/dist-packages/oslo_concurrency/lockutils.py:265
2016-09-26 10:25:19.435 32257 DEBUG nova.service [req-9c2e7880-7872-43fb-81ba-c1f048274c17 - - - - -] Creating RPC server for service compute start /usr/lib/python2.7/dist-packages/nova/service.py:184
2016-09-26 10:25:19.443 32257 INFO oslo.messaging._drivers.impl_rabbit [req-9c2e7880-7872-43fb-81ba-c1f048274c17 - - - - -] Connecting to AMQP server on controller:5672
2016-09-26 10:25:19.456 32257 INFO oslo.messaging._drivers.impl_rabbit [req-9c2e7880-7872-43fb-81ba-c1f048274c17 - - - - -] Connected to AMQP server on controller:5672
2016-09-26 10:25:19.469 32257 DEBUG nova.service [req-9c2e7880-7872-43fb-81ba-c1f048274c17 - - - - -] Join ServiceGroup membership for this service compute start /usr/lib/python2.7/dist-packages/nova/service.py:202
2016-09-26 10:25:19.470 32257 DEBUG nova.servicegroup.drivers.db [req-9c2e7880-7872-43fb-81ba-c1f048274c17 - - - - -] DB_Driver: join new ServiceGroup member compute to the compute group, service = <nova.service.Service object at 0x7f83672bdad0> join /usr/lib/python2.7/dist-packages/nova/servicegroup/drivers/db.py:48

$ tailf /var/log/neutron/neutron-plugin-linuxbridge-agent.log

2016-09-26 10:25:29.113 32424 DEBUG oslo_messaging._drivers.amqp [-] Pool creating new connection create /usr/lib/python2.7/dist-packages/oslo_messaging/_drivers/amqp.py:103
2016-09-26 10:25:29.114 32424 INFO oslo.messaging._drivers.impl_rabbit [-] Connecting to AMQP server on controller:5672
2016-09-26 10:25:29.135 32424 INFO oslo.messaging._drivers.impl_rabbit [-] Connected to AMQP server on controller:5672
2016-09-26 10:25:29.177 32424 DEBUG neutron.agent.linux.utils [req-5d24045e-1449-454a-a795-40944fe496c0 - - - - -] 
Command: ['sudo', '/usr/bin/neutron-rootwrap', '/etc/neutron/rootwrap.conf', 'ebtables', '-L']
Exit code: 0
 execute /usr/lib/python2.7/dist-packages/neutron/agent/linux/utils.py:156
2016-09-26 10:25:29.178 32424 INFO neutron.plugins.ml2.drivers.linuxbridge.agent.arp_protect [req-5d24045e-1449-454a-a795-40944fe496c0 - - - - -] Clearing orphaned ARP spoofing entries for devices []
2016-09-26 10:25:29.179 32424 DEBUG oslo_concurrency.lockutils [req-5d24045e-1449-454a-a795-40944fe496c0 - - - - -] Lock "ebtables" acquired by "neutron.plugins.ml2.drivers.linuxbridge.agent.arp_protect.delete_arp_spoofing_protection" :: waited 0.000s inner /usr/lib/python2.7/dist-packages/oslo_concurrency/lockutils.py:253
2016-09-26 10:25:29.180 32424 DEBUG oslo_concurrency.lockutils [req-5d24045e-1449-454a-a795-40944fe496c0 - - - - -] Lock "ebtables" released by "neutron.plugins.ml2.drivers.linuxbridge.agent.arp_protect.delete_arp_spoofing_protection" :: held 0.001s inner /usr/lib/python2.7/dist-packages/oslo_concurrency/lockutils.py:265
2016-09-26 10:25:59.080 32424 DEBUG oslo_messaging._drivers.amqpdriver [-] MSG_ID is f5c92fc45f41478595c6a15d1e781e1a _send /usr/lib/python2.7/dist-packages/oslo_messaging/_drivers/amqpdriver.py:423

Neutronの動作確認しよう

Neutronエージェントが正しく認識されており、動作していることを確認します。
$ neutron agent-list -c host -c alive -c binary

+------------+-------+---------------------------+
| host       | alive | binary                    |
+------------+-------+---------------------------+
| controller | :-)   | neutron-dhcp-agent        |
| controller | :-)   | neutron-linuxbridge-agent |
| compute    | :-)   | neutron-linuxbridge-agent |
| controller | :-)   | neutron-l3-agent          |
| controller | :-)   | neutron-metadata-agent    |
+------------+-------+---------------------------+

コントローラノードに仮想ネットワークを構築しよう

コントローラノードにデモ用の環境設定ファイルを作成します。
$ vi ~/demo-openrc.sh

#Keysoneのリージョン名を設定する。
export OS_REGION_NAME=RegionOne
#KeystoneのプロジェクトドメインIDを設定する。
export OS_PROJECT_DOMAIN_ID=default
#KeystoneのユーザードメインIDを設定する。
export OS_USER_DOMAIN_ID=default
#Keystoneのプロジェクト名を設定する。
export OS_PROJECT_NAME=demo
#Keystoneのテナント名を設定する。
export OS_TENANT_NAME=demo
#Keystoneへアクセスするユーザー名を設定する。
export OS_USERNAME=demo
#Keystoneへアクセスするパスワードを設定する。
export OS_PASSWORD=ubuntu
#Keystoneのサービス用エンドポイントを設定する。
export OS_AUTH_URL=http://controller:5000/v3
#KeystoneのAPIバージョンを設定する。
export OS_IDENTITY_API_VERSION=3
#GlanceのAPIバージョンを設定する。
export OS_IMAGE_API_VERSION=2
#プロンプトを設定する。
export PS1='\u@\h \W(demo)\$ '

$ cat ~/demo-openrc.sh

export OS_REGION_NAME=RegionOne
export OS_PROJECT_DOMAIN_ID=default
export OS_USER_DOMAIN_ID=default
export OS_PROJECT_NAME=demo
export OS_TENANT_NAME=demo
export OS_USERNAME=demo
export OS_PASSWORD=ubuntu
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
export PS1='\u@\h \W(demo)\$ '

管理者用の環境設定ファイルを読み込みます。
$ source admin-openrc.sh

ubuntu@controller:~$ source admin-openrc.sh
ubuntu@controller ~(admin)$ 

仮想マシンインスタンスを接続するための仮想フラットネットワーク(ネイティブVLAN、タグなし)「ext-net」を作成します。
この仮想フラットネットワークは、ホストの物理インターフェースに接続します。
ホストの物理インターフェースは、ml2_conf.iniファイルの設定でeth1と設定しています。
$ neutron net-create ext-net --router:external --provider:physical_network public --provider:network_type flat

Created a new network:
+---------------------------+--------------------------------------+
| Field                     | Value                                |
+---------------------------+--------------------------------------+
| admin_state_up            | True                                 |
| id                        | 7dd75115-743f-442c-87b3-2c175a834ed7 |
| mtu                       | 0                                    |
| name                      | ext-net                              |
| port_security_enabled     | True                                 |
| provider:network_type     | flat                                 |
| provider:physical_network | public                               |
| provider:segmentation_id  |                                      |
| router:external           | True                                 |
| shared                    | False                                |
| status                    | ACTIVE                               |
| subnets                   |                                      |
| tenant_id                 | 8a6217d667f74710815352a3dabe9e24     |
+---------------------------+--------------------------------------+

「ext-net」ネットワークの中にサブネットを作成します。
サブネットは10.0.0.0/24を使用し、DHCPは使用せずに10.0.0.200から10.0.0.250までの範囲のIPアドレスを割り当て、デフォルトゲートウェイは10.0.0.1です。
$ neutron subnet-create ext-net 10.0.0.0/24 --name ext-subnet --allocation-pool start=10.0.0.200,end=10.0.0.250 --disable-dhcp --gateway 10.0.0.1

Created a new subnet:
+-------------------+----------------------------------------------+
| Field             | Value                                        |
+-------------------+----------------------------------------------+
| allocation_pools  | {"start": "10.0.0.200", "end": "10.0.0.250"} |
| cidr              | 10.0.0.0/24                                  |
| dns_nameservers   |                                              |
| enable_dhcp       | False                                        |
| gateway_ip        | 10.0.0.1                                     |
| host_routes       |                                              |
| id                | a632f4f1-2ab3-4471-94d7-0cf506e254c6         |
| ip_version        | 4                                            |
| ipv6_address_mode |                                              |
| ipv6_ra_mode      |                                              |
| name              | ext-subnet                                   |
| network_id        | 7dd75115-743f-442c-87b3-2c175a834ed7         |
| subnetpool_id     |                                              |
| tenant_id         | 8a6217d667f74710815352a3dabe9e24             |
+-------------------+----------------------------------------------+

仮想マシンインスタンス管理用ネットワーク「demo-net」を作成します。
$ source demo-openrc.sh
$ neutron net-create demo-net

Created a new network:
+-----------------------+--------------------------------------+
| Field                 | Value                                |
+-----------------------+--------------------------------------+
| admin_state_up        | True                                 |
| id                    | deaaf965-18c8-43d8-a02b-94f2fdf44af8 |
| mtu                   | 0                                    |
| name                  | demo-net                             |
| port_security_enabled | True                                 |
| router:external       | False                                |
| shared                | False                                |
| status                | ACTIVE                               |
| subnets               |                                      |
| tenant_id             | 22fee72af36e443a895c651a29539c12     |
+-----------------------+--------------------------------------+

「demo-net」ネットワークの中にサブネットを作成します。
サブネットは192.168.0.0/24を使用し、デフォルトゲートウェイに192.168.0.1、DNSサーバーに8.8.8.8を割り当てます。
ただし、デフォルトゲートウェイに割り当てられたインターフェースは存在しない為、仮想マシンインスタンスはインターネット接続できません。
$ neutron subnet-create demo-net 192.168.0.0/24 --name demo-subnet --gateway 192.168.0.1 --dns-nameserver 8.8.8.8

Created a new subnet:
+-------------------+--------------------------------------------------+
| Field             | Value                                            |
+-------------------+--------------------------------------------------+
| allocation_pools  | {"start": "192.168.0.2", "end": "192.168.0.254"} |
| cidr              | 192.168.0.0/24                                   |
| dns_nameservers   | 8.8.8.8                                          |
| enable_dhcp       | True                                             |
| gateway_ip        | 192.168.0.1                                      |
| host_routes       |                                                  |
| id                | 06838041-aa33-4398-bf6b-1945e0b48efa             |
| ip_version        | 4                                                |
| ipv6_address_mode |                                                  |
| ipv6_ra_mode      |                                                  |
| name              | demo-subnet                                      |
| network_id        | deaaf965-18c8-43d8-a02b-94f2fdf44af8             |
| subnetpool_id     |                                                  |
| tenant_id         | 22fee72af36e443a895c651a29539c12                 |
+-------------------+--------------------------------------------------+

デモ用の環境設定ファイルを読み込みます。
$ source demo-openrc.sh

ubuntu@controller:~$ source demo-openrc.sh
ubuntu@controller ~(demo)$ 

仮想ルーター「demo-router」を作成します。
$ neutron router-create demo-router

Created a new router:
+-----------------------+--------------------------------------+
| Field                 | Value                                |
+-----------------------+--------------------------------------+
| admin_state_up        | True                                 |
| external_gateway_info |                                      |
| id                    | 1cd50fe7-1435-41a8-9a14-71690a0d5dc3 |
| name                  | demo-router                          |
| routes                |                                      |
| status                | ACTIVE                               |
| tenant_id             | 22fee72af36e443a895c651a29539c12     |
+-----------------------+--------------------------------------+

仮想ルーターは、仮想マシンインスタンスを接続するためのネットワーク「ext-net」に接続します。
$ neutron router-gateway-set demo-router ext-net

Added interface 9d714ea1-0678-4b9d-b4da-eabe22b78af8 to router demo-router.

仮想ルーターは、仮想マシンインスタンス管理用ネットワーク「demo-subnet」に接続します。
$ neutron router-interface-add demo-router demo-subnet

Set gateway for router demo-router

管理者用の環境設定ファイルを読み込みます。
$ source admin-openrc.sh

ubuntu@controller:~$ source admin-openrc.sh
ubuntu@controller ~(admin)$ 

仮想ルーターのポートに割り当てられたIPアドレスを確認します。
$ neutron router-port-list demo-router -c fixed_ips

+------------------------------------------------------------------------------------+
| fixed_ips                                                                          |
+------------------------------------------------------------------------------------+
| {"subnet_id": "a632f4f1-2ab3-4471-94d7-0cf506e254c6", "ip_address": "10.0.0.200"}  |
| {"subnet_id": "06838041-aa33-4398-bf6b-1945e0b48efa", "ip_address": "192.168.0.1"} |
+------------------------------------------------------------------------------------+

ネットワークの確認のために、仮想マシンインスタンスを接続するためネットワーク「ext-net」のゲートウェイIPアドレスに疎通確認します。

$ ping -c5 10.0.0.200

PING 10.0.0.200 (10.0.0.200) 56(84) bytes of data.
64 bytes from 10.0.0.200: icmp_seq=1 ttl=64 time=0.606 ms
64 bytes from 10.0.0.200: icmp_seq=2 ttl=64 time=0.134 ms
64 bytes from 10.0.0.200: icmp_seq=3 ttl=64 time=0.157 ms
64 bytes from 10.0.0.200: icmp_seq=4 ttl=64 time=0.116 ms
64 bytes from 10.0.0.200: icmp_seq=5 ttl=64 time=0.095 ms

--- 10.0.0.200 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4001ms
rtt min/avg/max/mdev = 0.095/0.221/0.606/0.193 ms

仮想マシンインスタンスを起動/削除しよう

デモ用の環境設定ファイルを読み込みます。
$ source demo-openrc.sh

ubuntu@controller:~$ source demo-openrc.sh
ubuntu@controller ~(demo)$ 

仮想マシンインスタンスを起動するために必要な情報を集めましょう。
フレーバー一覧を確認します。
$ openstack flavor list -c Name -c Disk

+-----------+------+
| Name      | Disk |
+-----------+------+
| m1.tiny   |    1 |
| m1.small  |   20 |
| m1.medium |   40 |
| m1.large  |   80 |
| m1.xlarge |  160 |
+-----------+------+

起動イメージ一覧を確認します。
$ openstack image list

+--------------------------------------+--------+
| ID                                   | Name   |
+--------------------------------------+--------+
| cb03e667-f570-4fd5-90d1-78aeb66504f0 | cirros |
+--------------------------------------+--------+

ネットワーク一覧を確認します。
$ openstack network list -c ID -c Name

+--------------------------------------+----------+
| ID                                   | Name     |
+--------------------------------------+----------+
| e3ee563d-50e0-4217-b0b3-c31a228351d2 | ext-net  |
| 403d55bc-d0b0-482e-b37d-b3a0903d5d08 | demo-net |
+--------------------------------------+----------+

仮想マシンインスタンスを起動します。
$ nova boot --flavor m1.tiny --image cirros --nic net-id=403d55bc-d0b0-482e-b37d-b3a0903d5d08 vm1

+--------------------------------------+-----------------------------------------------+
| Property                             | Value                                         |
+--------------------------------------+-----------------------------------------------+
| OS-DCF:diskConfig                    | MANUAL                                        |
| OS-EXT-AZ:availability_zone          |                                               |
| OS-EXT-STS:power_state               | 0                                             |
| OS-EXT-STS:task_state                | scheduling                                    |
| OS-EXT-STS:vm_state                  | building                                      |
| OS-SRV-USG:launched_at               | -                                             |
| OS-SRV-USG:terminated_at             | -                                             |
| accessIPv4                           |                                               |
| accessIPv6                           |                                               |
| adminPass                            | nN6LpZ7moEVg                                  |
| config_drive                         |                                               |
| created                              | 2016-09-26T01:33:50Z                          |
| flavor                               | m1.tiny (1)                                   |
| hostId                               |                                               |
| id                                   | c62da4e7-1343-417c-a40f-51981d094fc4          |
| image                                | cirros (cb03e667-f570-4fd5-90d1-78aeb66504f0) |
| key_name                             | -                                             |
| metadata                             | {}                                            |
| name                                 | vm1                                           |
| os-extended-volumes:volumes_attached | []                                            |
| progress                             | 0                                             |
| security_groups                      | default                                       |
| status                               | BUILD                                         |
| tenant_id                            | 22fee72af36e443a895c651a29539c12              |
| updated                              | 2016-09-26T01:33:50Z                          |
| user_id                              | 100f4b1f6cdb4f0b8c6d340946e51cd6              |
+--------------------------------------+-----------------------------------------------+

仮想マシンインスタンス一覧を確認します。
$ nova list

+--------------------------------------+------+--------+------------+-------------+----------------------+
| ID                                   | Name | Status | Task State | Power State | Networks             |
+--------------------------------------+------+--------+------------+-------------+----------------------+
| c62da4e7-1343-417c-a40f-51981d094fc4 | vm1  | ACTIVE |     -      |   Running   | demo-net=192.168.0.3 |
+--------------------------------------+------+--------+------------+-------------+----------------------+

仮想マシンインスタンスを削除します。
$ nova delete vm1

Request to delete server vm1 has been accepted.

仮想マシンインスタンス一覧を確認します。
$ nova list

+--------------------------------------+------+--------+------------+-------------+----------------------+| ID| Name | Status | Task State | Power State | Networks|+--------------------------------------+------+--------+------------+-------------+----------------------+
+--------------------------------------+------+--------+------------+-------------+----------------------+

仮想マシンインスタンスを起動して、削除することができました。

インストール中には各ノードの関連サービスでエラーと警告が出ますが、インストール後にはエラーが出ていないことをログで確認します。非常に長いのでコマンドだけの紹介にさせていただきます。
$ grep "ERROR\|WARNING" /var/log/rabbitmq/*.log

$ grep "ERROR\|WARNING" /var/log/neutron/*

$ grep "ERROR\|WARNING" /var/log/nova/*

仮想マシンインスタンスに疎通確認し、SSH接続しよう

まず、セキュリティグループにおいてICMPとSSHを許可するようにします。
次に、defaultのセキュリティグループを指定して、仮想マシンインスタンスを起動します。
そして、SSHキーを作成します。
さらに、フローティングIPを作成し、仮想マシンインスタンスのポートに割り当てます。
最後に、仮想マシンインスタンスに疎通確認して、SSH接続します。

セキュリティグループに何があるのか確認してみましょう。
$ openstack security group list -c ID -c Name

+--------------------------------------+---------+
| ID                                   | Name    |
+--------------------------------------+---------+
| 344e7e7c-e967-4e4f-9967-bdc34cce3307 | default |
+--------------------------------------+---------+

セキュリティグループ「default」があります。
セキュリティグループ「default」のルールを一覧表示してみましょう。
$ nova secgroup-list-rules default

+-------------+-----------+---------+----------+--------------+
| IP Protocol | From Port | To Port | IP Range | Source Group |
+-------------+-----------+---------+----------+--------------+
|             |           |         |          | default      |
|             |           |         |          | default      |
+-------------+-----------+---------+----------+--------------+

セキュリティグループ「default」は、外部から全てのパケットは破棄します。
ICMPのパケットを許可するようにします。
$ nova secgroup-add-rule default icmp -1 -1 0.0.0.0/0

+-------------+-----------+---------+-----------+--------------+
| IP Protocol | From Port | To Port | IP Range  | Source Group |
+-------------+-----------+---------+-----------+--------------+
| icmp        | -1        | -1      | 0.0.0.0/0 |              |
+-------------+-----------+---------+-----------+--------------+

SSHのパケットを許可するようにします。
$ nova secgroup-add-rule default tcp 22 22 0.0.0.0/0

+-------------+-----------+---------+-----------+--------------+
| IP Protocol | From Port | To Port | IP Range  | Source Group |
+-------------+-----------+---------+-----------+--------------+
| tcp         | 22        | 22      | 0.0.0.0/0 |              |
+-------------+-----------+---------+-----------+--------------+

再び、セキュリティグループ「default」のルールを一覧表示してみましょう。
$ nova secgroup-list-rules default

+-------------+-----------+---------+-----------+--------------+
| IP Protocol | From Port | To Port | IP Range  | Source Group |
+-------------+-----------+---------+-----------+--------------+
|             |           |         |           | default      |
| tcp         | 22        | 22      | 0.0.0.0/0 |              |
|             |           |         |           | default      |
| icmp        | -1        | -1      | 0.0.0.0/0 |              |
+-------------+-----------+---------+-----------+--------------+

ICMPのパケットもSSHのパケットも許可されています。
adminというSSHキーを作成しましょう。
$ nova keypair-add admin > admin_key.pem
$ ls -l

total 12992
-rw-rw-r-- 1 ubuntu ubuntu     1684 Sep 26 13:46 admin_key.pem
-rw-rw-r-- 1 ubuntu ubuntu      350 Sep 15 15:47 admin-openrc.sh
-rw-r--r-- 1 root   root   13287936 May  8  2015 cirros-0.3.4-x86_64-disk.img
-rw-rw-r-- 1 ubuntu ubuntu      345 Sep 15 16:17 demo-openrc.sh

作成されたSSHキーのアクセス権を変更します。
$ chmod 600 admin_key.pem
$ ls -l

total 12992
-rw------- 1 ubuntu ubuntu     1684 Sep 26 13:46 admin_key.pem
-rw-rw-r-- 1 ubuntu ubuntu      350 Sep 15 15:47 admin-openrc.sh
-rw-r--r-- 1 root   root   13287936 May  8  2015 cirros-0.3.4-x86_64-disk.img
-rw-rw-r-- 1 ubuntu ubuntu      345 Sep 15 16:17 demo-openrc.sh

SSHキーが登録されているか確認してみましょう。
$ nova keypair-list

+-------+-------------------------------------------------+
| Name  | Fingerprint                                     |
+-------+-------------------------------------------------+
| admin | 71:e1:e7:58:9d:c9:69:53:03:90:ce:c0:c6:88:df:3f |
+-------+-------------------------------------------------+

上記の「openstack security group list -c ID -c Name」で表示されたdefaultのセキュリティグループIDを指定して、仮想マシンインスタンスを起動しましょう。
$ nova boot --flavor m1.tiny --image cirros --nic net-id=403d55bc-d0b0-482e-b37d-b3a0903d5d08 --security-group 344e7e7c-e967-4e4f-9967 --key_name admin vm1

+--------------------------------------+-----------------------------------------------+
| Property                             | Value                                         |
+--------------------------------------+-----------------------------------------------+
| OS-DCF:diskConfig                    | MANUAL                                        |
| OS-EXT-AZ:availability_zone          |                                               |
| OS-EXT-STS:power_state               | 0                                             |
| OS-EXT-STS:task_state                | scheduling                                    |
| OS-EXT-STS:vm_state                  | building                                      |
| OS-SRV-USG:launched_at               | -                                             |
| OS-SRV-USG:terminated_at             | -                                             |
| accessIPv4                           |                                               |
| accessIPv6                           |                                               |
| adminPass                            | mtHFivAKL2fx                                  |
| config_drive                         |                                               |
| created                              | 2016-09-30T08:17:10Z                          |
| flavor                               | m1.tiny (1)                                   |
| hostId                               |                                               |
| id                                   | d1ee2336-d607-4024-8c7a-6d479b691ba9          |
| image                                | cirros (cb03e667-f570-4fd5-90d1-78aeb66504f0) |
| key_name                             | admin                                         |
| metadata                             | {}                                            |
| name                                 | vm1                                           |
| os-extended-volumes:volumes_attached | []                                            |
| progress                             | 0                                             |
| security_groups                      | 344e7e7c-e967-4e4f-9967-bdc34cce3307          |
| status                               | BUILD                                         |
| tenant_id                            | 22fee72af36e443a895c651a29539c12              |
| updated                              | 2016-09-30T08:17:10Z                          |
| user_id                              | 100f4b1f6cdb4f0b8c6d340946e51cd6              |
+--------------------------------------+-----------------------------------------------+

仮想マシンインスタンスが起動されたことを確認します。
$ nova list

+--------------------------------------+------+--------+------------+-------------+----------------------+
| ID                                   | Name | Status | Task State | Power State | Networks             |
+--------------------------------------+------+--------+------------+-------------+----------------------+
| 25f95c6f-9cb0-4ebb-b126-ccdf7978a033 | vm1  | ACTIVE | -          | Running     | demo-net=192.168.0.5 |
+--------------------------------------+------+--------+------------+-------------+----------------------+

「ext-net」ネットワークのフローティングIPアドレスを作成しましょう。
$ neutron floatingip-create ext-net

Created a new floatingip:
+---------------------+--------------------------------------+
| Field               | Value                                |
+---------------------+--------------------------------------+
| fixed_ip_address    |                                      |
| floating_ip_address | 10.0.0.201                           |
| floating_network_id | e3ee563d-50e0-4217-b0b3-c31a228351d2 |
| id                  | 6a20a0e9-f233-4c25-baa5-9d4bdc48fa09 |
| port_id             |                                      |
| router_id           |                                      |
| status              | DOWN                                 |
| tenant_id           | 22fee72af36e443a895c651a29539c12     |
+---------------------+--------------------------------------+

フローティングIPアドレスが作成され、フローティングIPアドレスのIDを確認しましょう。
$ nova floating-ip-list

+--------------------------------------+------------+-----------+----------+---------+
| Id                                   | IP         | Server Id | Fixed IP | Pool    |
+--------------------------------------+------------+-----------+----------+---------+
| 6a20a0e9-f233-4c25-baa5-9d4bdc48fa09 | 10.0.0.201 | -         | -        | ext-net |
+--------------------------------------+------------+-----------+----------+---------+

上記の「nova list」コマンドで仮想マシンインスタンスに割り当てられたIDを指定して、仮想マシンインスタンスのポートIDを確認します。
$ neutron port-list -- --device_id 25f95c6f-9cb0-4ebb-b126-ccdf7978a033

+--------------------------------------+------+-------------------+------------------------------------------------------------------------------------+
| id                                   | name | mac_address       | fixed_ips                                                                          |
+--------------------------------------+------+-------------------+------------------------------------------------------------------------------------+
| 99e39892-5f15-4118-97a6-31ed1d83d030 |      | fa:16:3e:90:e0:0a | {"subnet_id": "4140985e-05c4-4933-a007-67bcb737f43c", "ip_address": "192.168.0.5"} |
+--------------------------------------+------+-------------------+------------------------------------------------------------------------------------+

フローティングIPアドレスIDに仮想マシンインスタンスのポートIDを割り当てます。
$ neutron floatingip-associate 6a20a0e9-f233-4c25-baa5-9d4bdc48fa09 99e39892-5f15-4118-97a6-31ed1d83d030

Associated floating IP 6a20a0e9-f233-4c25-baa5-9d4bdc48fa09

フローティングIPアドレスの状態を表示し、管理用IPアドレス、仮想マシンインスタンスのポートID、仮想ルーターIDが割り当てられていることを確認します。
$ neutron floatingip-show 6a20a0e9-f233-4c25-baa5-9d4bdc48fa09

+---------------------+--------------------------------------+
| Field               | Value                                |
+---------------------+--------------------------------------+
| fixed_ip_address    | 192.168.0.5                          |
| floating_ip_address | 10.0.0.201                           |
| floating_network_id | e3ee563d-50e0-4217-b0b3-c31a228351d2 |
| id                  | 6a20a0e9-f233-4c25-baa5-9d4bdc48fa09 |
| port_id             | 99e39892-5f15-4118-97a6-31ed1d83d030 |
| router_id           | 729f51f5-0316-4f4a-8ef5-6887e5445366 |
| status              | ACTIVE                               |
| tenant_id           | 22fee72af36e443a895c651a29539c12     |
+---------------------+--------------------------------------+

仮想マシンインスタンスに疎通確認を行います。
$ ping -c5 10.0.0.201

PING 10.0.0.201 (10.0.0.201) 56(84) bytes of data.
64 bytes from 10.0.0.201: icmp_seq=1 ttl=63 time=20.7 ms
64 bytes from 10.0.0.201: icmp_seq=2 ttl=63 time=0.938 ms
64 bytes from 10.0.0.201: icmp_seq=3 ttl=63 time=0.889 ms
64 bytes from 10.0.0.201: icmp_seq=4 ttl=63 time=1.00 ms
64 bytes from 10.0.0.201: icmp_seq=5 ttl=63 time=1.30 ms

--- 10.0.0.201 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4004ms
rtt min/avg/max/mdev = 0.889/4.985/20.791/7.904 ms

仮想マシンインスタンスにSSH接続を行います。
$ ssh -i ~/admin_key.pem 10.0.0.201 -l cirros

$ 

カレントディレクトリを表示してみましょう。
$ pwd

/home/cirros

現在動作中のネットワークインターフェースを表示してみよう。
$ ifconfig

eth0      Link encap:Ethernet  HWaddr FA:16:3E:B9:37:47
          inet addr:192.168.0.5  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::f816:3eff:feb9:3747/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1450  Metric:1
          RX packets:224 errors:0 dropped:0 overruns:0 frame:0
          TX packets:233 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:44845 (43.7 KiB)  TX bytes:31487 (30.7 KiB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

仮想ルーター「demo-router」に接続できるのか、疎通確認してみましょう。
$ ping -c5 192.168.0.1

PING 192.168.0.1 (192.168.0.1): 56 data bytes
64 bytes from 192.168.0.1: seq=0 ttl=64 time=9.190 ms
64 bytes from 192.168.0.1: seq=1 ttl=64 time=1.562 ms
64 bytes from 192.168.0.1: seq=2 ttl=64 time=1.178 ms
64 bytes from 192.168.0.1: seq=3 ttl=64 time=1.172 ms
64 bytes from 192.168.0.1: seq=4 ttl=64 time=1.468 ms

--- 192.168.0.1 ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max = 1.172/2.914/9.190 ms

これで、構築したネットワークが動作していることが確認できました。

仮想マシンインスタンスを停止と起動をしよう

仮想マシンインスタンスを一時停止します。
$ nova pause vm1

仮想マシンインスタンスの状態を確認します。
$ nova list

+--------------------------------------+------+--------+------------+-------------+----------------------------------+
| ID                                   | Name | Status | Task State | Power State | Networks                         |
+--------------------------------------+------+--------+------------+-------------+----------------------------------+
| 25f95c6f-9cb0-4ebb-b126-ccdf7978a033 | vm1  | PAUSED | -          | Paused      | demo-net=192.168.0.5, 10.0.0.201 |
+--------------------------------------+------+--------+------------+-------------+----------------------------------+

仮想マシンインスタンスを一時停止を解除します。
$ nova unpause vm1

仮想マシンインスタンスの状態を確認します。
$ nova list

+--------------------------------------+------+--------+------------+-------------+----------------------------------+
| ID                                   | Name | Status | Task State | Power State | Networks                         |
+--------------------------------------+------+--------+------------+-------------+----------------------------------+
| 25f95c6f-9cb0-4ebb-b126-ccdf7978a033 | vm1  | ACTIVE | -          | Running     | demo-net=192.168.0.5, 10.0.0.201 |
+--------------------------------------+------+--------+------------+-------------+----------------------------------+

仮想マシンインスタンスをハイパーバイザーレベルで休止します。
$ nova suspend vm1

仮想マシンインスタンスの状態を確認します。
$ nova list

+--------------------------------------+------+-----------+------------+-------------+----------------------------------+
| ID                                   | Name | Status    | Task State | Power State | Networks                         |
+--------------------------------------+------+-----------+------------+-------------+----------------------------------+
| 25f95c6f-9cb0-4ebb-b126-ccdf7978a033 | vm1  | SUSPENDED | -          | Shutdown    | demo-net=192.168.0.5, 10.0.0.201 |
+--------------------------------------+------+-----------+------------+-------------+----------------------------------+

仮想マシンインスタンスをハイパーバイザーレベルで再開します。
$ nova resume vm1

仮想マシンインスタンスの状態を確認します。
$ nova list

+--------------------------------------+------+--------+------------+-------------+----------------------------------+
| ID                                   | Name | Status | Task State | Power State | Networks                         |
+--------------------------------------+------+--------+------------+-------------+----------------------------------+
| 25f95c6f-9cb0-4ebb-b126-ccdf7978a033 | vm1  | ACTIVE | -          | Running     | demo-net=192.168.0.5, 10.0.0.201 |
+--------------------------------------+------+--------+------------+-------------+----------------------------------+

おわりに

Keystone、Swift、Glance、Cinder、Novaに引き続きNeutronの手動インストールを紹介しました。
Neutronを活用することによって仮想マシンインスタンスを起動することができ、OpenStackらしく使用できるようになりました!
次回は、Horizonについてご紹介したいと思っています。

コントローラノードで「$ sudo apt-get dist-upgrade」を行うと再起動できないというトラブルがありました。
ご注意ください。

LinuxBrigeを使用しましたが、Open vSwitchを使用することもできます。
Neutronは、SDNコントローラであるOpenDaylightと連携することもできます。
【OpenStackチャレンジ】 第3回 OpenDaylight(Lithium)との連携に挑戦!

今回も最後までお付き合いを頂き、ありがとうございました。

文:河合 紀彦

photo-1447014421976-7fec21d26d86.jpg

参考サイト

(Liberty版)OpenStack インストールガイド Ubuntu 14.04 (LTS)版 - Networking サービス

OpenStack構築手順Liberty版



OpenStackと同じカテゴリーの記事


OpenStack手動インストールと同じカテゴリーの記事



RSS
最近のエントリー
2017.4.21
【検証自動化】第6回 AT-CLabを使ってみる
2017.4.21
【OSSチャレンジ】第4回 Elasticsearch紹介
2017.4. 7
【OSC2017 Tokyo/Spring】OpenStackを宇宙で!?
2017.3.28
【OSSチャレンジ】 第3回 Bacula紹介:後編
2017.3. 9
【OpenStackチャレンジ】 第29回 Ocata紹介編
2017.2.24
【OSSチャレンジ】 第2回 Docker紹介編
2017.2.20
【OSSチャレンジ】 第1回 Bacula紹介:前編
2017.2. 1
【体験記】最後のフロンティア!? ~ミャンマー 体験記~
2017.1.18
【データベース】pgpool-IIによるDBサーバ負荷分散
2016.12.16
【ログ解析】第2回Splunkのログ解析
2016.12. 9
LPIC304 体験記
2016.11.19
【OSC2016 Tokyo/Fall】VRとOpenStackを連携
2016.11.11
【次世代通信技術】 第1回 5G入門編
2016.10.28
【ログ解析】第1回Splunkの紹介と起動
2016.10.21
【OpenStackチャレンジ】 第28回 Stackalytics登録編
2016.10.14
【OpenStackチャレンジ】 第27回 OpenStack Newton紹介編
2016.10. 7
【検証自動化】第5回 Selenium IDEで記録したテストをJenkinsのジョブから実行する ~PC一台でブラウザテストを自動化~【後編】
2016.9.30
【OpenStackチャレンジ】 第26回 Neutron環境構築編
2016.9.23
【いまさら聞けない!エンジニアの基本シリーズ】 第6回 きれいなログにするためのLinuxお作法
2016.9.16
【OpenStackチャレンジ】 第25回 Nova環境構築編
2016.9. 9
【OpenStackチャレンジ】 第24回 Cinder環境構築編
2016.9. 2
【OpenStackチャレンジ】 第23回 OpenStackコミュニティ~翻訳編
2016.8.26
【OpenStackチャレンジ】 第22回 Glance環境構築編
2016.8.19
【検証自動化】第4回 Selenium IDEでテストケースを記録・実行する ~PC一台でブラウザテストを自動化~【前編】
2016.8. 9
【OpenStackチャレンジ】 第21回 OpenStackコミュニティ 日本語翻訳チーム参加編
2016.8. 5
【OpenStackチャレンジ】 第20回 構成管理ツール「Ansible」を用いたOpenStack上のサーバ構築
2016.7.29
【検証自動化】第3回 IT検証フォーラム2016に出展しました!
2016.7.22
【OpenStackチャレンジ】 第19回 OpenStack Upstream Training編
2016.7.15
【検証自動化】第2回 TestShell+TestCenter連携編
2016.7. 8
【OpenStackチャレンジ】 第18回 HEAT紹介編
2016.7. 4
QNAP紹介(Dockerコンテナ&OpenStack Swift連携)
2016.6.26
【いまさら聞けない!エンジニアの基本シリーズ】 第5回 GitHubを使いこなそう
2016.6.19
【OpenStackチャレンジ】 第17回 Zabbix環境構築編
2016.6.12
【検証自動化】第1回 TestShell編
2016.6. 5
【OpenStackチャレンジ】 第16回 Mirantis 「OpenStack FUEL管理」セミナー紹介編
2016.5.29
【OpenStackチャレンジ】 第15回 Swift環境構築編
2016.5.22
【OpenStackチャレンジ】 第14回 Keystone環境構築編
2016.5.15
【OpenStackチャレンジ】 第13回 Mirantis OpenStack紹介編
2016.5. 2
【OpenStackチャレンジ】 第12回DevStack~ Ironic環境構築編
2016.4.24
【OpenStackチャレンジ】 第11回 インフラエンジニア必見のOpenStackセミナーを開催しました!
2016.4.17
【OpenStackチャレンジ】 第10回 OpenStack Mitaka紹介編
2016.4.10
【Linuxを使いこなす】 CentOSのローカルリポジトリを構築しよう
2016.4. 3
【OpenStackチャレンジ】 第9回 仮想マシンが起動するコンピュートノードを指定してみよう
2016.3.29
【OpenStack チャレンジ】 第8回 ゲストマシンの性能比較をしてみました!
2016.3.19
【OSC2016】第3回 ChatOpsでOpenStackをAPIから制御する
2016.3.12
【OSC2016】第2回Let'sChat Hubot編
2016.3. 4
【OSC2016】第1回ChatOpsの構築
2016.1.31
【OpenStackチャレンジ】 第7回 DevStack~All-In-One Single Machine編
2016.1.22
【OpenStackチャレンジ】 第6回 policy.json紹介編
2016.1.13
【OpenStackチャレンジ】 第5回 Ceilometerについて知ろう!
2016.1. 8
【いまさら聞けない!エンジニアの基本シリーズ】 第4回 VMware基本動作編
2015.12.24
【1年間ありがとう!】2015年度エンジニアブログ アクセスランキング発表!
2015.12.18
【SDNチャレンジ】 第29回 Mininet編
2015.12.14
【いまさら聞けない!エンジニアの基本シリーズ】 第3回 VMwareインストール編
2015.12.10
【OpenStackチャレンジ】第4回 ConoHaでOpenStack環境を構築!
2015.12. 4
【いまさら聞けない!エンジニアの基本シリーズ】 第2回 VirtualBox基本動作編
2015.12. 4
【OpenStackチャレンジ】 第3回 OpenDaylight(Lithium)との連携に挑戦!
2015.11.27
【いまさら聞けない!エンジニアの基本シリーズ】 第1回 VirtualBoxインストール編
2015.11.20
【SDNチャレンジ】 第28回 WiresharkでOpenFlowを解析しよう!
2015.11.15
OpenStackの技術者認定資格「OPCEL認定試験」に合格しました!
2015.11. 9
「Windows Server 2003」から「Windows Server 2012 R2」への移行に不安を抱えるお客様へ
2015.11. 6
【SDNチャレンジ】 第27回 OpenMUL編
2015.10.30
【SDNチャレンジ】 第26回 ONOS-BGPルータ編
2015.10.23
【SDNチャレンジ】 第25回 ONOS GUI編 / [告知]10/24(土),25(日)にOSCに出展します!
2015.10.16
【SDNチャレンジ】 第24回 ONOSインストール編
2015.10. 9
【SDNチャレンジ】 第23回 OpenDaylightユーザ会に参加しました/Lithiumインストール編
2015.10. 2
【SDNチャレンジ】 第22回 Trema-edge編
2015.9.29
【OpenStackチャレンジ】 番外編 10/26(月)からLPI-Japanの「OPCEL認定試験」がスタートします!
2015.9.25
【SDNチャレンジ】 第21回 POX編
2015.9.18
【OpenStackチャレンジ】 第2回 コンポーネント紹介編
2015.9.11
【SDNチャレンジ】 第20回 Floodlight編
2015.9. 4
【OpenStackチャレンジ】 第1回 OpenStackインストール編
2015.9. 3
【ウェブサイトのロードテストをする】 最終回 Siege編
2015.8.28
【SDNチャレンジ】 第19回 Raspberry Piでユースケースに挑戦!
2015.8.21
【SDNチャレンジ】 第18回 OF-Patch動作編
2015.8.13
【SDNチャレンジ】 第17回 OF-Patch紹介編
2015.8. 7
Windows10をインストールしてみました!
2015.8. 4
【ウェブサイトのロードテストをする】 第3回 Tsung編
2015.7.31
【SDNチャレンジ】 第16回 Ryuコントローラインストール編
2015.7.25
【SDNチャレンジ】 第15回 Open vSwitch性能試験編
2015.7.17
【SDNチャレンジ】 第14回 Tcpreplay編
2015.7.17
RedHat OpenStack 管理者認定試験に合格しました!
2015.7.11
【SDNチャレンジ】 第13回 Vyattaコントローラ REST API編
2015.7. 3
【SDNチャレンジ】 第12回 Vyattaコントローラ動作編
2015.7. 1
【ウェブサイトのロードテストをする】 第2回 curl-loader編
2015.6.26
【SDNチャレンジ】 第11回 OpenDaylight動作編②
2015.6.19
【SDNチャレンジ】 第10回 OpenDaylight動作編①
2015.6.18
【ウェブサイトのロードテストをする】 第1回 Apache JMeter編
2015.6.12
【SDNチャレンジ】 第9回 リピーターハブとラーニングスイッチの動作比較編
2015.6. 5
【SDNチャレンジ】 第8回 Tremasharkインストール編
2015.5.25
【SDNチャレンジ】 第7回 帯域制御・ファイアウォール・パケット書換え編
2015.5.22
【SDNチャレンジ】 第6回 ラーニングスイッチ作成編
2015.5.15
【SDNチャレンジ】 第5回 Raspberry Pi2にOpen vSwitchをインストール
2015.5. 8
【SDNチャレンジ】 第4回 5/13(水)、14(木)、15(金)の展示会にて検証自動化デモを実施します!
2015.4.27
【SDNチャレンジ】 第3回 Tremaリピーターハブ編
2015.4.21
【SDNチャレンジ】 第2回 OpenFlowコントローラ作成編
2015.4.14
【SDNチャレンジ】 第1回 Tremaインストール編
2014.8.20
【注意!】8月13日のWindows Updateを適用すると起動できなくなる事例が報告されています!
2014.5.23
約6割の企業が悩んでいるのに、対策しないんですか...?
2014.1. 9
新年あけましておめでとうございます。
2013.12.24
2013年エンジニアブログ アクセスランキング発表!
2013.12.17
コミュニケーション「活性化」の第一歩
2013.10.29
なぜ儲かっているのか分からない!?
2013.10.15
「何を変えるのか、何に変えるのか、どのように変えるのか」
2013.9.17
ブラック企業にドラッカーがアドバイスするとしたら?
2013.9. 4
蟻の穴から堤も崩れる
2013.8. 6
派閥じゃなくて、理念の元に仕事をしよう!
2013.7.31
知識は使ってナンボです!
2013.7.30
御社の相互理解度はどれくらい?
2013.7. 3
何故、それが読まれたか~上半期・エンジニアブログ閲覧数ランキング~
2013.6.12
「何」を知っているかではなく、「誰」が知っているか
2013.5.28
戦後、人間尊重の信念を貫きとおした1人の経営者がいた!
2013.5.24
健康な心が、健康な会社を作る。
2013.4.26
『社長にはもうついていけません・・・』
2013.4.23
仕事と生活をバランスさせるには?
2013.4. 2
組織に必要なのは「ゆらぎ」と・・・?
2013.3.21
代表小林、バングラディシュの地に再度降り立つ
2013.3.14
色々作っちゃいました!
2013.3. 5
「心のバランスシート」に着目していますか?
2013.2. 6
Office2013発売!で、何が変わった?
2013.2. 1
「想いを語る夕べ」が新宿から30分の場所で開催可能に!
2012.12.25
エンジニアブログ番外編:決戦は「ひなたかなた」
2012.12.19
2012年エンジニアブログ&Facebook閲覧数ランキング発表!
2012.11.29
プロセス見直すのはいいけれど...大事なこと忘れてません?
2012.10.31
「仕事」と「個々の生活」の両立~ワーク・ライフ・バランス~
2012.10.26
Windows8発売!で何が起こる?
2012.10. 9
腹が減っては打ち合わせは出来ぬ?~アドック近辺ランチスポット・カフェ編~
2012.10. 2
iPhone5発売!LTE普及には切実な背景が...
2012.9.12
「だれを選ぶか」をまず決めて、その後に「何をすべきか」を決める。
2012.8.17
会社を回すのに大事な3つの感覚。
2012.8. 7
プロジェクトはたいてい失敗に終わるんです。
2012.7.19
『目の前に壁があったら、突き破るしかねえんだよ』by鬼塚
2012.7. 2
大手企業も多数協賛する「東京経営塾」の塾長とは!?
2012.6.15
メンタルヘルスケアジャパン2012報告!
2012.6. 4
御社の理念浸透力はどれくらい?!
2012.5.14
メンタルヘルスケアジャパン2012参加のお知らせ
2012.4.27
東京スカイツリーと地デジとADOC
2012.4.17
マイボトル・マイカップキャンペーン/エンジニアブログ1周年記念
2012.3.14
第1回「想いを語る夕べ」体験会レポート~伝えることの難しさ~
2012.2.29
想いを語る夕べ報告書を新聞にしちゃいました!
2012.2. 6
月刊『ニュートップリーダー』に記事掲載&"想いを語る夕べ"体験会やります!
2012.1.31
【第4回】想いを語る夕べ~フォロー編~
2012.1.23
タニタの社員食堂は"トップの想い"から生まれた!?
2012.1.13
【第3回】想いを語る夕べ~実施編~
2011.12.27
オフィスで簡単エクササイズ!
2011.12.13
【第2回】想いを語る夕べ~準備編~
2011.11.24
【第1回】想いを語る夕べ~誕生編~
2011.11.17
「責任感だけで仕事をしていた・・・。」が「自らサービスを作り上げ、喜びを感じたい!」という熱い想いに変わるまで
2011.11. 8
アドックインターナショナルはGoogleのまわし者!?
2011.10.11
あなたのその行動、誰かに監視されてませんか?
2011.9.28
たったこれだけのことで、チームに一体感が生まれる!?
2011.9.22
ADOCersがITS健康保険組合の野球大会に出場します!
2011.9.21
アドックに入社するとコンサートホールで歌えてグァムに行けるってホント?
2011.8.30
アドック社員元気の素!?
2011.8.16
電力使用制限発動!罰金は100万円!?PC電力管理ソフトのススメ
2011.8. 9
「ネットトラブル調査隊」対象エリア拡大しました!(後日談付き)
2011.8. 1
Windows7にはメールソフトが付いてない!?
2011.7.22
「社長の想いを語る夕べ」プログラムのご紹介
2011.7.12
64ビット版Windowsへの移行について
2011.7. 8
検証やテストを自動化する際に気を付けなければいけない3つの事
2011.7. 5
地デジと周波数再編とADOC
2011.6.29
アドックインターナショナルの節電対策とスーパークールビズ
2011.6.27
あるレンタカー事業会社のケース
2011.6.20
ラボルームのご紹介
2011.6.17
Interop Tokyo 2011に行ってきました!
2011.6. 7
ADOCの保守サービスと震災対応
2011.5.31
"メンタルヘルスケア・ジャパン2011"レポート
2011.5.19
「おばあちゃん家」
2011.5.11
スマートフォンは急速に普及している・・・?
2011.5. 9
ADOCの品質改善活動への取り組み事例をご紹介
2011.4.19
ADOCのお花見と節電への取り組み
2011.4. 6
復興支援のため東北へ向かっていた弊社の社員2名が戻ってきました!その2
2011.3.31
復興支援のため東北へ向かっていた弊社の社員2名が戻ってきました!
2011.3.28
弊社パートナーが被災地支援のサービス開始
2011.3.25
震災により表面化した携帯通信網の弱さ
2011.2.28
エンジニアブログスタートのお知らせ
カテゴリー
月別アーカイブ

<