openstack構築手順書 juno版

78
OpenStack構築手順書 Juno日本仮想化技術 1 OpenStack構築手順書 Junoバージョン:0.9.5 (2014/12/3作成) 日本仮想化技術株式会社

Upload: virtualtech-japan-inc

Post on 15-Apr-2017

1.926 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: OpenStack構築手順書 Juno版

OpenStack構築手順書 Juno版

日本仮想化技術 1

OpenStack構築手順書 Juno版バージョン:0.9.5 (2014/12/3作成)

日本仮想化技術株式会社

Page 2: OpenStack構築手順書 Juno版

OpenStack構築手順書 Juno版

日本仮想化技術 2

変更履歴

バージョン 更新日 更新内容

0.9 2014/11/28 Juno版beta

0.9.1 2014/12/1 誤記訂正

0.9.2 2014/12/1 RabbitMQサービス再起動と確認を追記

0.9.3 2014/12/1 networkノードのNIC設定を修正

0.9.4 2014/12/2 controllerノードのneutron.confのリージョン指定を修正

0.9.5 2014/12/3 どこのホストで設定変更をするか明確にした。他、誤記など修正

Page 3: OpenStack構築手順書 Juno版

OpenStack構築手順書 Juno版

日本仮想化技術 3

目次1. 構築する環境について

1-1 環境構築に使用するOS

1-2 作成するサーバー(ノード)1-3 ネットワークセグメントの設定1-4 各ノードのネットワーク設定1-5 Ubuntu Serverのインストール1-6 Ubuntu Serverへのログインとroot権限1-7 設定ファイル等の記述について

2. OpenStackインストール事前設定2-1 ネットワークデバイスの設定2-2 静的名前解決の設定2-3 sysctlによるカーネルパラメーターの設定2-4 リポジトリーの設定とパッケージの更新2-5 NTPのインストール2-6 Python用MySQL/MariaDBクライアントのインストール

3. controllerノードのインストール前設定3-1 MariaDBのインストール3-2 RabbitMQのインストール3-3 環境変数設定ファイルの作成

4. Keystoneインストールと設定(controllerノード)4-1 パッケージのインストール4-2 データベースの作成・確認4-3 設定の変更4-4 データベースに表を作成4-5 使用しないデータベースファイルの削除4-6 Keystoneサービスの再起動4-7 ログの確認4-8 認証情報の作成4-9 Keystoneの動作確認4-9-1 認証トークンの要求確認

5. Glanceのインストールと設定5-1 パッケージのインストール5-2 データベースの作成・確認5-3 認証情報の作成5-4 設定の変更5-5 データベースにデータ登録5-6 Glanceサービスの再起動

5-7 使用しないデータベースファイルの削除5-8 ログの確認5-9 イメージの取得と登録

6. Novaのインストールと設定(controllerノード)6-1 パッケージのインストール6-2 データベースの作成・確認6-3 認証情報の作成6-4 設定変更

Page 4: OpenStack構築手順書 Juno版

OpenStack構築手順書 Juno版

日本仮想化技術 4

6-5 使用しないデータベースファイル削除6-6 データベースにデータを作成6-7 Novaサービスの再起動6-8 ログの確認6-9 Glanceとの通信確認

7. Nova-Computeのインストール・設定(compute1ノード)7-1 パッケージインストール7-2 設定の変更7-3 Nova-Computeサービスの再起動7-4 ログの確認7-5 controllerノードとの疎通確認

8. Neutronのインストール・設定(controllerノード)8-1 パッケージインストール8-2 データベース作成・確認8-3 認証情報の設定8-4 設定の変更8-5 設定の変更8-6 データベースの作成8-7 使用しないデータベースファイル削除8-8 controllerノードのNeutronと関連サービスの再起動8-9 ログの確認8-10 動作確認

9. Neutronのインストール・設定(networkノード)9-1 パッケージインストール9-2 設定の変更9-3 設定の変更9-4 networkノードのOpen vSwitchサービスの再起動9-5 ブリッジデバイス設定9-6 ブリッジデバイス設定確認9-7 ネットワークインタフェースの設定変更9-7 networkノード再起動9-8 ブリッジ設定確認9-9 networkノードのNeutronと関連サービスの再起動9-10 ログの確認

10. Neutronのインストール・設定(compute1ノード)10-1 パッケージインストール10-2 設定の変更10-3 compute1ノードのOpen vSwitchサービスの再起動10-4 compute1ノードのネットワーク設定10-5 compute1ノードのNeutronと関連サービスを再起動10-6 ログの確認

11. 仮想ネットワーク設定(controllerノード)11-1 外部接続ネットワークの設定11-2 インスタンス用ネットワーク設定11-3 仮想ネットワークルーター設定

12. 仮想ネットワーク設定確認(networkノード)12-1 仮想ネットワークルーターの確認12-2 仮想ルーターのネームスペースのIPアドレスを確認

Page 5: OpenStack構築手順書 Juno版

OpenStack構築手順書 Juno版

日本仮想化技術 5

12-3 仮想ゲートウェイの疎通確認13. Cinderインストール(controllerノード)

13-1 パッケージインストール13-2 データベース作成・確認13-3 認証情報の設定13-4 設定の変更13-5 データベースに表を作成13-6 Cinderサービスの再起動13-7 使用しないデータベースファイル削除13-8 ログの確認13-9 イメージ格納用ボリューム作成

14. Dashboardインストール・確認(controllerノード)14-1 パッケージインストール14-2 Dashboardの設定の変更14-3 Dashboardへのアクセス確認14-4 セキュリティグループの設定14-5 キーペアの作成14-6 インスタンスの起動14-7 Floating IPの設定14-8 インスタンスへのアクセス

Page 6: OpenStack構築手順書 Juno版

OpenStack構築手順書 Juno版

日本仮想化技術 6

1. 構築する環境について

1-1 環境構築に使用するOS

本書はOpenStack環境を3台のサーバー上に構築することを想定しています。

OSはUbuntu Server 14.04.1 LTS(以下Ubuntu Server)を使用します。以下のURLよりイメージをダウンロードし、3台のサーバーへインストールします。

http://releases.ubuntu.com/14.04/ubuntu-14.04.1-server-amd64.iso

システム構成図 (出典:公式ドキュメント"Chapter 1. Architecture"より)

Page 7: OpenStack構築手順書 Juno版

OpenStack構築手順書 Juno版

日本仮想化技術 7

1-2 作成するサーバー(ノード)今回構築するOpenStack環境は、以下3台のサーバーで構成します。

controllerノードOpenStack環境全体を管理するコントローラーとして機能します。networkノード外部ネットワークとインスタンスの間のネットワークを制御します。compute1ノード仮想マシンインスタンスを実行します。

1-3 ネットワークセグメントの設定

今回は2つのネットワークセグメントを用意し構成しています。

内部ネットワーク(Instance Tunnels)ネットワークノードとコンピュートノード間のトンネル用に使用するネットワーク。インターネットへの接続は行えなくても構いません。外部ネットワーク(Management)外部との接続に使用するネットワーク。構築中はaptコマンドを使って外部リポジトリからパッケージなどをダウンロードするため、インターネット接続が必要となります。

OpenStack稼働後は、仮想マシンインスタンスに対しFloating IPアドレスを割り当てることで、外部ネットワークへ接続することができます。

なお、各種APIを外部公開する際にも使用できますが、今回の手順ではAPIの公開は行いません。

IPアドレスは以下の構成で構築されている前提で解説します。

外部ネットワーク 内部ネットワーク

インターフェース eth0 eth1

ネットワーク 10.0.0.0/24 192.168.0.0/24

ゲートウェイ 10.0.0.1 なし

ネームサーバー 10.0.0.1 なし

Page 8: OpenStack構築手順書 Juno版

OpenStack構築手順書 Juno版

日本仮想化技術 8

1-4 各ノードのネットワーク設定各ノードのネットワーク設定は以下の通りです。

controllerノード

インターフェース eth0 eth1

IPアドレス 10.0.0.10 192.168.0.10

ネットマスク 255.255.255.0 255.255.255.0

ゲートウェイ 10.0.0.1 なし

ネームサーバー 10.0.0.1 なし

networkノード

インターフェース eth0 eth1

IPアドレス 10.0.0.9 192.168.0.9

ネットマスク 255.255.255.0 255.255.255.0

ゲートウェイ 10.0.0.1 なし

ネームサーバー 10.0.0.1 なし

compute1ノード

インターフェース eth0 eth1

IPアドレス 10.0.0.11 192.168.0.11

ネットマスク 255.255.255.0 255.255.255.0

ゲートウェイ 10.0.0.1 なし

ネームサーバー 10.0.0.1 なし

Page 9: OpenStack構築手順書 Juno版

OpenStack構築手順書 Juno版

日本仮想化技術 9

1-5 Ubuntu Serverのインストール3台のサーバーに対し、Ubuntu Serverをインストールします。要点は以下の通りです。

優先ネットワークインターフェースをeth0に指定インターネットへ接続するインターフェースはeth0を使用するため、インストール中はeth0を優先ネットワークとして指定します。パッケージ選択ではOpenSSH serverのみ選択compute1ノードではKVMを利用しますが、インストーラではVirtual machine hostのインストールを行わないでください。

【インストール時の設定パラメータ例】

設定項目 設定例

初期起動時のLanguage English

起動 Install Ubuntu Server

Language English - English

Country location other→Asia→Japan

Country locale United States - en_US.UTF-8

Detect keyboard layout No

Keyboard Japanese→Japanese

Primary network interface eth1: Ethernet

Hostname それぞれのノード名(controller, network, compute1)

ユーザ名 フルネームで入力

アカウント名 ユーザ名のファーストネームで設定される

パスワード 任意のパスワード

Weak password(出ない場合も) Yesを選択

ホームの暗号化 任意

タイムゾーン Asia/Tokyoであることを確認

パーティション設定 Guided - use entire disk and set up LVM

パーティション選択 sdaを選択

パーティション書き込み Yesを選択

パーティションサイズ デフォルトのまま

変更の書き込み Yesを選択

HTTP proxy 環境に合わせて任意

アップグレード 任意

ソフトウェア OpenSSH serverのみ選択

GRUB Yesを選択

インストール完了 Continueを選択

Page 10: OpenStack構築手順書 Juno版

OpenStack構築手順書 Juno版

日本仮想化技術 10

1-6 Ubuntu Serverへのログインとroot権限Ubuntuはデフォルト設定でrootユーザーの利用を許可していないため、root権限が必要となる作業は以下のように行ってください。

rootユーザーで直接ログインできないので、インストール時に作成したアカウントでログインする。root権限が必要な場合には、sudoコマンドを使用する。rootで連続して作業したい場合には、sudo -sコマンドでシェルを起動する。

1-7 設定ファイル等の記述について

筆者注:このドキュメントはベータ版のため、必ずしもここで述べられているように記述されていません。あらかじめご了承ください。

設定ファイルは特別な記述が無い限り、必要な設定を抜粋したものです。特に変更の必要がない設定項目は省略されています。[見出し]が付いている場合、その見出しから次の見出しまでの間に設定を記述します。コメントアウトされていない設定項目が存在する場合には、値を変更してください。多くの設定項目は記述が存在しているため、エディタの検索機能で検索することをお勧めします。特定のホストでコマンドを実行する場合はコマンドの冒頭にホスト名を記述しています。

【設定ファイルの記述例】

controller# vi /etc/glance/glance-api.conf ←コマンド冒頭にこのコマンドを実行するホストを記述

[database] ←この見出しから次の見出しまでの間に以下を記述#connection = sqlite:////var/lib/glance/glance.sqlite ← 既存設定をコメントアウトconnection = mysql://glance:password@controller/glance ← 追記

[keystone_authtoken] ← 見出し#auth_host = 127.0.0.1 ← 既存設定をコメントアウトauth_host = controller ← 追記

auth_port = 35357 ← 既存のまま

auth_protocol = http ← 既存のまま

auth_uri = http://controller:5000/v2.0 ← 追記

admin_tenant_name = service ← 変更

admin_user = glance ← 変更

admin_password = password ← 変更

Page 11: OpenStack構築手順書 Juno版

OpenStack構築手順書 Juno版

日本仮想化技術 11

2. OpenStackインストール事前設定OpenStackパッケージのインストール前に各々のノードで以下の設定を行います。

ネットワークデバイスの設定hostsによる静的名前解決の設定sysctlによるカーネルパラメータの設定リポジトリーの設定とパッケージの更新NTPのインストールPython用MySQL/MariaDBクライアントのインストールMariaDBのインストール(controllerノードのみ)RabbitMQのインストール(controllerノードのみ)

2-1 ネットワークデバイスの設定

各ノードの/etc/network/interfacesを編集し、IPアドレスの設定を行います。

2-1-1 controllerノードのIPアドレスの設定

controller# vi /etc/network/interfaces

auto eth0

iface eth0 inet static

address 10.0.0.10

netmask 255.255.255.0

gateway 10.0.0.1

dns-nameservers 10.0.0.1

auto eth1

iface eth1 inet static

address 192.168.0.10

netmask 255.255.255.0

Page 12: OpenStack構築手順書 Juno版

OpenStack構築手順書 Juno版

日本仮想化技術 12

2-1-2 networkノードのIPアドレスの設定

network# vi /etc/network/interfaces

auto eth0

iface eth0 inet static

address 10.0.0.9

netmask 255.255.255.0

gateway 10.0.0.1

dns-nameservers 10.0.0.1

auto eth1

iface eth1 inet static

address 192.168.0.9

netmask 255.255.255.0

2-1-3 compute1ノードのIPアドレスの設定

compute1# vi /etc/network/interfaces

auto eth0

iface eth0 inet static

address 10.0.0.11

netmask 255.255.255.0

gateway 10.0.0.1

dns-nameservers 10.0.0.1

auto eth1

iface eth1 inet static

address 192.168.0.11

netmask 255.255.255.0

2-1-4 ネットワーク設定反映

各ノードで変更した設定をネットワークデバイスに反映させるため、Ubuntu Serverを再起動します。

Page 13: OpenStack構築手順書 Juno版

OpenStack構築手順書 Juno版

日本仮想化技術 13

2-2 静的名前解決の設定各ノードの/etc/hostsに各ノードのIPアドレスとホスト名を記述し、静的名前解決の設定を行います。127.0.1.1の行はコメントアウトします。

2-2-1 controllerノードの/etc/hostsの設定

controller# vi /etc/hosts

127.0.0.1 localhost

#127.0.1.1 controller ← 既存設定をコメントアウト10.0.0.9 network

10.0.0.10 controller

10.0.0.11 compute1

2-2-2 networkノードの/etc/hostsの設定

network# vi /etc/hosts

127.0.0.1 localhost

#127.0.1.1 network ← 既存設定をコメントアウト10.0.0.9 network

10.0.0.10 controller

10.0.0.11 compute1

2-2-3 compute1ノードの/etc/hostsの設定

compute1# vi /etc/hosts

127.0.0.1 localhost

#127.0.1.1 compute1 ← 既存設定をコメントアウト10.0.0.9 network

10.0.0.10 controller

10.0.0.11 compute1

Page 14: OpenStack構築手順書 Juno版

OpenStack構築手順書 Juno版

日本仮想化技術 14

2-3 sysctlによるカーネルパラメーターの設定Linuxのネットワークパケット処理について設定を行います。

2-3-1 networkノードの/etc/sysctl.confの設定

network# vi /etc/sysctl.conf

net.ipv4.ip_forward=1

net.ipv4.conf.all.rp_filter=0

net.ipv4.conf.default.rp_filter=0

sysctlコマンドで設定を適用します。

network# sysctl -p

net.ipv4.ip_forward=1

net.ipv4.conf.all.rp_filter=0

net.ipv4.conf.default.rp_filter=0

2-3-2 compute1ノードの/etc/sysctl.confの設定

compute1# vi /etc/sysctl.conf

net.ipv4.conf.all.rp_filter=0

net.ipv4.conf.default.rp_filter=0

sysctlコマンドで設定を適用します。

compute1# sysctl -p

net.ipv4.conf.all.rp_filter=0

net.ipv4.conf.default.rp_filter=0

Page 15: OpenStack構築手順書 Juno版

OpenStack構築手順書 Juno版

日本仮想化技術 15

2-4 リポジトリーの設定とパッケージの更新各ノードで以下のファイルを作成し、Juno向けUbuntu Cloud Archiveリポジトリを登録します。

# vi /etc/apt/sources.list.d/ubuntu-cloud-archive-juno-trusty.list

deb http://ubuntu-cloud.archive.canonical.com/ubuntu trusty-updates/juno main

Ubuntu Cloud archive リポジトリのキーリングをインストールします。

# apt-get install ubuntu-cloud-keyring

各ノードでパッケージリストを更新し再起動します。

# apt-get update && apt-get dist-upgrade

# reboot

2-5 NTPのインストール各ノードで時刻を正確にするためにNTPをインストールします。

# apt-get install -y ntp

2-5-1 controllerノードの/etc/ntp.confの設定

controllerノードで公開NTPサーバーと同期するNTPサーバーを構築します。NTP_SERVERに適切な公開NTPサーバー(ex.ntp.nict.jp etc..)を指定します。

controller# vi /etc/ntp.conf

server NTP_SERVER iburst

restrict -4 default kod notrap nomodify nopeer noquery

restrict -6 default kod notrap nomodify nopeer noquery

設定を適用するため、NTPサービスを再起動します。

controller# service ntp restart

Page 16: OpenStack構築手順書 Juno版

OpenStack構築手順書 Juno版

日本仮想化技術 16

2-5-2 その他ノードの/etc/ntp.confの設定

networkノードとcompute1ノードでcontrollerノードと同期するNTPサーバーを構築します。

network# vi /etc/ntp.conf

server controller iburst

restrict -4 default kod notrap nomodify nopeer noquery

restrict -6 default kod notrap nomodify nopeer noquery

設定を適用するため、NTPサービスを再起動します。

network# service ntp restart

2-5-3 NTPサーバーの動作確認

構築した環境でntpq -pコマンドを実行して、各NTPサーバーが同期していることを確認します。

公開NTPサーバーと同期しているノード

controller# ntpq -p

remote refid st t when poll reach delay offset jitter

==============================================================================

*ntp-a2.nict.go. .NICT. 1 u 3 64 1 6.569 17.818 0.001

controllerと同期しているノード

compute1# ntpq -p

remote refid st t when poll reach delay offset jitter

==============================================================================

*controller ntp-a2.nict.go. 2 u 407 1024 377 1.290 -0.329 0.647

2-6 Python用MySQL/MariaDBクライアントのインストール各ノードでPython用のMySQL/MariaDBクライアントをインストールします。

# apt-get install -y python-mysqldb

Python MySQLライブラリーはMariaDBと互換性があります。

Page 17: OpenStack構築手順書 Juno版

OpenStack構築手順書 Juno版

日本仮想化技術 17

3. controllerノードのインストール前設定

3-1 MariaDBのインストール

データベースサーバーのMariaDBをインストールします。

3-1-1 パッケージのインストール

apt-getコマンドでmariadb-serverパッケージをインストールします。

controller# apt-get install -y mariadb-server

インストール中にパスワードの入力を要求されますので、MariaDBのrootユーザーに対するパスワードを設定します。本例ではパスワードとして「password」を設定します。

3-1-2 MariaDB設定の変更

MariaDBの設定ファイルmy.cnfを開き以下の設定を変更します。

バインドアドレスをeth0に割り当てたIPアドレスへ変更文字コードをUTF-8へ変更

別のノードからMariaDBへアクセスできるようにするためバインドアドレスを変更します。加えて使用する文字コードをutf8に変更します。

※文字コードをutf8に変更しないとOpenStackモジュールとデータベース間の通信でエラーが発生します。

controller# vi /etc/mysql/my.cnf

[mysqld]

#bind-address = 127.0.0.1 ← 既存設定をコメントアウトbind-address = 10.0.0.10 ← 追記default-storage-engine = innodb ← 追記innodb_file_per_table ← 追記collation-server = utf8_general_ci ← 追記init-connect = 'SET NAMES utf8' ← 追記character-set-server = utf8 ← 追記

3-1-3 MariaDBサービスの再起動

変更した設定を反映させるためMariaDBのサービスを再起動します。

controller# service mysql restart

3-1-4 MariaDBデータベースのセキュア化

mysql_secure_installationコマンドを実行すると、データベースのセキュリティを強化できます。必要に応じて設定を行ってください。

Page 18: OpenStack構築手順書 Juno版

OpenStack構築手順書 Juno版

日本仮想化技術 18

rootパスワードの入力

controller# mysql_secure_installation

In order to log into MariaDB to secure it, we'll need the current

password for the root user. If you've just installed MariaDB, and

you haven't set the root password yet, the password will be blank,

so you should just press enter here.

Enter current password for root (enter for none): password

rootパスワードの変更

Setting the root password ensures that nobody can log into the MariaDB

root user without the proper authorisation.

You already have a root password set, so you can safely answer 'n'.

Change the root password? [Y/n] n

anonymousユーザーの削除

By default, a MariaDB installation has an anonymous user, allowing anyone

to log into MariaDB without having to have a user account created for

them. This is intended only for testing, and to make the installation

go a bit smoother. You should remove them before moving into a

production environment.

Remove anonymous users? [Y/n] y

リモートからのrootログインを禁止

Normally, root should only be allowed to connect from 'localhost'. This

ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] n

testデーターベースの削除

By default, MariaDB comes with a database named 'test' that anyone can

access. This is also intended only for testing, and should be removed

before moving into a production environment.

Remove test database and access to it? [Y/n] y

権限の再読み出し

Reloading the privilege tables will ensure that all changes made so far

will take effect immediately.

Reload privilege tables now? [Y/n] y

Page 19: OpenStack構築手順書 Juno版

OpenStack構築手順書 Juno版

日本仮想化技術 19

3-2 RabbitMQのインストールOpenStackは、オペレーションやステータス情報を各サービス間で連携するためにメッセージブローカーを使用しています。OpenStackではRabbitMQ、Qpid、ZeroMQなど複数のメッセージブローカーサービスに対応しています。本書ではRabbitMQをインストールする例を説明します。

3-2-1 パッケージのインストール

apt-getコマンドで、rabbitmq-serverパッケージをインストールします。

controller# apt-get install -y rabbitmq-server

3-2-2 アクセスコントロールの変更

以下の設定ファイルを作成し、localhost以外からもRabbitMQへアクセスできるように設定します。

リモート認証の許可

controller# vi /etc/rabbitmq/rabbitmq.conf

[{rabbit, [{loopback_users, []}]}].

3-2-3 待ち受けポートとIPアドレスの変更

以下の設定ファイルを作成し、RabbitMQの待ち受けポートとIPアドレスを定義します。

待ち受け設定の追加

controller# vi /etc/rabbitmq/rabbitmq-env.conf

RABBITMQ_NODE_IP_ADDRESS=10.0.0.10 ← controllerのIPアドレスRABBITMQ_NODE_PORT=5672

3-2-4 RabbitMQサービス再起動と確認

メッセージブローカーサービスが正常に動いていないと、OpenStackの各コンポーネントは正常に動きません。RabbitMQサービスの再起動と動作確認を行い、確実に動作していることを確認します。

controller# service rabbitmq-server restart

controller# grep "ERROR\|WARNING" /var/log/rabbitmq/[email protected]

※新たなエラーが表示されなければ問題ありません。

3-2-5 guestユーザーのパスワード変更

rabbitmqctlコマンドでguestユーザーのパスワードを変更します。

controller# rabbitmqctl change_password guest password

Changing password for user "guest" ...

...done.

Page 20: OpenStack構築手順書 Juno版

OpenStack構築手順書 Juno版

日本仮想化技術 20

3-3 環境変数設定ファイルの作成

3-3-1 admin環境変数設定ファイル作成

adminユーザー用環境変数設定ファイルを作成します。

controller# vi ~/admin-openrc.sh

export OS_USERNAME=admin

export OS_PASSWORD=password

export OS_TENANT_NAME=admin

export OS_AUTH_URL=http://controller:35357/v2.0

3-3-2 demo環境変数設定ファイル作成

demoユーザー用環境変数設定ファイルを作成します。

controller# vi ~/demo-openrc.sh

export OS_USERNAME=demo

export OS_PASSWORD=password

export OS_TENANT_NAME=demo

export OS_AUTH_URL=http://controller:35357/v2.0

Page 21: OpenStack構築手順書 Juno版

OpenStack構築手順書 Juno版

日本仮想化技術 21

4. Keystoneインストールと設定(controllerノード)各サービス間の連携時に使用する認証IDサービスKeystoneのインストールと設定を行います。

4-1 パッケージのインストールapt-getコマンドでkeystoneパッケージをインストールします。

controller# apt-get install -y keystone python-keystoneclient

4-2 データベースの作成・確認

Keystoneで使用するデータベースを作成します。

4-2-1 データベースの作成

MySQLにデータベースkeystoneを作成します。

controller# mysql -u root -p << EOF

CREATE DATABASE keystone;

GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' \

IDENTIFIED BY 'password';

GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' \

IDENTIFIED BY 'password';

EOF

Enter password: ← MariaDBのrootパスワードpasswordを入力

Page 22: OpenStack構築手順書 Juno版

OpenStack構築手順書 Juno版

日本仮想化技術 22

4-2-2 データベースの確認

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

controller# mysql -u keystone -p

Enter password: ← MariaDBのkeystoneパスワードpasswordを入力...

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;

+--------------------+

| Database |

+--------------------+

| information_schema |

| keystone |

+--------------------+

2 rows in set (0.00 sec)

4-3 設定の変更keystoneの設定ファイルを変更します。

controller# vi /etc/keystone/keystone.conf

[DEFAULT]

admin_token = password ← 追記log_dir = /var/log/keystone ← 設定されていることを確認verbose = True

[database]

#connection = sqlite:////var/lib/keystone/keystone.db ← 既存設定をコメントアウトconnection = mysql://keystone:password@controller/keystone ← 追記

[token]

provider = keystone.token.providers.uuid.Provider

driver = keystone.token.persistence.backends.sql.Token

4-4 データベースに表を作成

controller# su -s /bin/sh -c "keystone-manage db_sync" keystone

Page 23: OpenStack構築手順書 Juno版

OpenStack構築手順書 Juno版

日本仮想化技術 23

4-5 使用しないデータベースファイルの削除

controller# rm /var/lib/keystone/keystone.db

4-6 Keystoneサービスの再起動

設定を反映させるために、Keystoneサービスを再起動します。

controller# rm /var/log/keystone/*

controller# service keystone restart

4-7 ログの確認

keystoneのログを確認します。下記のWARNING以外にログが表示されなければ問題ありません。

controller# grep "ERROR\|WARNING" /var/log/keystone/*

...

2014-11-12 16:32:16.466 18369 WARNING keystone.openstack.common.versionutils [-] Deprecated: keystone.cont

rib.revoke.backends.kvs is deprecated as of Juno in favor of keystone.contrib.revoke.backends.sql and may

be removed in Kilo.

Page 24: OpenStack構築手順書 Juno版

OpenStack構築手順書 Juno版

日本仮想化技術 24

4-8 認証情報の作成以下コマンドで認証情報(テナント・ユーザー・ロール)を設定します。

環境変数の設定

controller# export OS_SERVICE_TOKEN=password

controller# export OS_SERVICE_ENDPOINT=http://controller:35357/v2.0

adminテナントの作成

controller# keystone tenant-create --name=admin --description="Admin Tenant"

+-------------+----------------------------------+

| Property | Value |

+-------------+----------------------------------+

| description | Admin Tenant |

| enabled | True |

| id | 07e06d1d7f35430e8906e6fb5badd893 |

| name | admin |

+-------------+----------------------------------+

adminユーザーの作成

controller# keystone user-create --name=admin --pass=password [email protected]

+----------+----------------------------------+

| Property | Value |

+----------+----------------------------------+

| email | [email protected] |

| enabled | True |

| id | 9b6f2e4f6e074566937119a05a26e01e |

| name | admin |

| username | admin |

+----------+----------------------------------+

adminロールの作成

controller# keystone role-create --name=admin

+----------+----------------------------------+

| Property | Value |

+----------+----------------------------------+

| id | 9d34e8df7bc04bf3b16abc8a09238499 |

| name | admin |

+----------+----------------------------------+

adminテナントおよびユーザーにadminロールを所属

controller# keystone user-role-add --tenant=admin --user=admin --role=admin

Page 25: OpenStack構築手順書 Juno版

OpenStack構築手順書 Juno版

日本仮想化技術 25

_member_ロールの作成

controller# keystone role-create --name _member_

+----------+----------------------------------+

| Property | Value |

+----------+----------------------------------+

| id | 0f198e94ffce416cbcbe344e1843eac8 |

| name | _member_ |

+----------+----------------------------------+

adminテナントおよびユーザーに_member_ロールを所属

controller# keystone user-role-add --tenant=admin --user=admin --role=_member_

demoテナントの作成

controller# keystone tenant-create --name=demo --description="Demo Tenant"

+-------------+----------------------------------+

| Property | Value |

+-------------+----------------------------------+

| description | Demo Tenant |

| enabled | True |

| id | 6d19304a59b3456bbe2552a9080d1301 |

| name | demo |

+-------------+----------------------------------+

demoユーザーの作成

controller# keystone user-create --name=demo --pass=password [email protected]

+----------+----------------------------------+

| Property | Value |

+----------+----------------------------------+

| email | [email protected] |

| enabled | True |

| id | 7d0a62a5abf7445688b2fd223e1a9a1f |

| name | demo |

| username | demo |

+----------+----------------------------------+

demoテナントおよびdemoユーザーを_menber_ロールへ所属

controller# keystone user-role-add --tenant=demo --user=demo --role=_member_

Page 26: OpenStack構築手順書 Juno版

OpenStack構築手順書 Juno版

日本仮想化技術 26

サービステナントの作成

controller# keystone tenant-create --name=service --description="Service Tenant"

+-------------+----------------------------------+

| Property | Value |

+-------------+----------------------------------+

| description | Service Tenant |

| enabled | True |

| id | 0571e304708f4cdcb4ecedc363547acb |

| name | service |

+-------------+----------------------------------+

サービスエントリーの作成

controller# keystone service-create --name=keystone --type=identity \

--description="OpenStack Identity"

+-------------+----------------------------------+

| Property | Value |

+-------------+----------------------------------+

| description | OpenStack Identity |

| enabled | True |

| id | c315a41214b84597af88ab11bb5a089d |

| name | keystone |

| type | identity |

+-------------+----------------------------------+

Page 27: OpenStack構築手順書 Juno版

OpenStack構築手順書 Juno版

日本仮想化技術 27

APIエンドポイントを作成

controller# keystone endpoint-create \

--service-id $(keystone service-list | awk '/ identity / {print $2}') \

--publicurl http://controller:5000/v2.0 \

--internalurl http://controller:5000/v2.0 \

--adminurl http://controller:35357/v2.0 \

--region regionOne

+-------------+----------------------------------+

| Property | Value |

+-------------+----------------------------------+

| adminurl | http://controller:35357/v2.0 |

| id | 420a300f830542fb95ddd7b19063dc60 |

| internalurl | http://controller:5000/v2.0 |

| publicurl | http://controller:5000/v2.0 |

| region | regionOne |

| service_id | 4cd6329b004740fb92cbf013e41d52fc |

+-------------+----------------------------------+

Keystoneへの作成が完了したら環境編集をunsetします。

controller# unset OS_SERVICE_TOKEN OS_SERVICE_ENDPOINT

Page 28: OpenStack構築手順書 Juno版

OpenStack構築手順書 Juno版

日本仮想化技術 28

4-9 Keystoneの動作確認Keystoneへ正しく登録されたか確認します。

4-9-1 認証トークンの要求確認動作確認のためadminおよびdemoテナントに対し認証トークンを要求してみます。

adminトークンの確認

controller# keystone --os-tenant-name=admin --os-username=admin --os-password=password \

--os-auth-url=http://controller:35357/v2.0 token-get

+-----------+---------------------------------------+

| Property | Value |

+-----------+---------------------------------------+

| expires | 2014-05-18T02:51:48Z |

| id | MIIMYAYJKoZIhvcNAQcbWsNz2gqLtB6dfg== |

| tenant_id | b348b47155884978af344b84db561865 |

| user_id | 6ca7845a6d554ef8ab737a777dd0a7cb |

+-----------+---------------------------------------+

demoトークンの確認

controller# keystone --os-tenant-name=demo --os-username=demo --os-password=password \

--os-auth-url=http://controller:35357/v2.0 token-get

-+-----------+---------------------------------------+

| Property | Value |

-+-----------+---------------------------------------+

| expires | 2014-05-18T02:53:09Z |

| id | MIIMJQYJKoZIhvcfso3dfgcJ+I7J40KS9fo= |

| tenant_id | 6803ec4cf70f43ed8cfdbd060c1a2293 |

| user_id | 7605b233fede4f958c121e31b508eeac |

-+-----------+---------------------------------------+

※コマンドを実行した結果、トークンのid情報等が出力されれば問題ありません(実際のトークン情報は一行が長いので、コマンド例では省略して記述しています)。

Page 29: OpenStack構築手順書 Juno版

OpenStack構築手順書 Juno版

日本仮想化技術 29

4-9-2 Keystoneテナントとユーザーの確認

Keystoneに正しくテナントとユーザーが登録されているかを確認します。

admin環境変数設定の読み込み

controller# source admin-openrc.sh

ユーザーの確認

controller# keystone user-list

+----------------------------------+-------+---------+-------------------+

| id | name | enabled | email |

+----------------------------------+-------+---------+-------------------+

| 91d240e3d9664f4f86781de3c8ea7880 | admin | True | [email protected] |

| 3f02a4329cb040639e5d5b2c3ce0a9a0 | demo | True | [email protected] |

+----------------------------------+-------+---------+-------------------+

ロールの確認

controller# keystone role-list

+----------------------------------+----------+

| id | name |

+----------------------------------+----------+

| d35820caf9ed457c9e12d21988c2a719 | _member_ |

| 3e0e9a0d97e745c7917f617e51b006f1 | admin |

+----------------------------------+----------+

Page 30: OpenStack構築手順書 Juno版

OpenStack構築手順書 Juno版

日本仮想化技術 30

5. Glanceのインストールと設定

5-1 パッケージのインストール

apt-getコマンドでglanceとglanceクライアントパッケージをインストールします。

controller# apt-get install -y glance python-glanceclient

5-2 データベースの作成・確認

5-2-1 データベース作成

MariaDBにデータベースglanceを作成します。

controller# mysql -u root -p << EOF

CREATE DATABASE glance;

GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' \

IDENTIFIED BY 'password';

GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' \

IDENTIFIED BY 'password';

EOF

Enter password: ← MariaDBのrootパスワードpasswordを入力

5-2-2 データベースの確認

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

controller# mysql -u glance -p

Enter password: ← MariaDBのglanceパスワードpasswordを入力...

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;

+--------------------+

| Database |

+--------------------+

| information_schema |

| glance |

+--------------------+

2 rows in set (0.00 sec)

Page 31: OpenStack構築手順書 Juno版

OpenStack構築手順書 Juno版

日本仮想化技術 31

5-3 認証情報の作成以下コマンドで認証情報を作成します。

環境変数の設定

controller# source admin-openrc.sh

glanceユーザーの作成

controller# keystone user-create --name=glance --pass=password

+----------+----------------------------------+

| Property | Value |

+----------+----------------------------------+

| email | |

| enabled | True |

| id | 4731656ea2604725873be52d08ad3a26 |

| name | glance |

| username | glance |

+----------+----------------------------------+

glanceユーザーをadminロールに所属

controller# keystone user-role-add --user=glance --tenant=service --role=admin

サービスの作成

controller# keystone service-create --name=glance --type=image \

--description="OpenStack Image Service"

+-------------+----------------------------------+

| Property | Value |

+-------------+----------------------------------+

| description | OpenStack Image Service |

| enabled | True |

| id | b9a5d0e108474d928a29b896658897ef |

| name | glance |

| type | image |

+-------------+----------------------------------+

Page 32: OpenStack構築手順書 Juno版

OpenStack構築手順書 Juno版

日本仮想化技術 32

サービスエンドポイントの作成

controller# keystone endpoint-create \

--service-id $(keystone service-list | awk '/ image / {print $2}') \

--publicurl http://controller:9292 \

--internalurl http://controller:9292 \

--adminurl http://controller:9292 \

--region regionOne

+-------------+----------------------------------+

| Property | Value |

+-------------+----------------------------------+

| adminurl | http://controller:9292 |

| id | 9b624f153503415b96cabd264e456f11 |

| internalurl | http://controller:9292 |

| publicurl | http://controller:9292 |

| region | regionOne |

| service_id | 19b47372418940afadc114fde31fcbb5 |

+-------------+----------------------------------+

Page 33: OpenStack構築手順書 Juno版

OpenStack構築手順書 Juno版

日本仮想化技術 33

5-4 設定の変更

controller# vi /etc/glance/glance-api.conf

[DEFAULT]

rpc_backend = rabbit

rabbit_host = controller ← 変更rabbit_password = password ← 変更

verbose = True ← 追記

[database]

#sqlite_db = /var/lib/glance/glance.sqlite ← 既存設定をコメントアウトconnection = mysql://glance:password@controller/glance ← 追記

[keystone_authtoken]

#admin_tenant_name = %SERVICE_TENANT_NAME% ← 既存設定をコメントアウト#admin_user = %SERVICE\_USER% ← 既存設定をコメントアウト#admin_password = %SERVICE_PASSWORD% ← 既存設定をコメントアウトauth_uri = http://controller:5000/v2.0 ← 追記identity_url = http://controller:35357 ← 編集admin_tenant_name = service ← 追記admin_user = glance ← 追記admin_password = password ← 追記

[paste_deploy]

flavor = keystone ← 追記

[glance_store]

default_store =file ← 設定されていることを確認

Page 34: OpenStack構築手順書 Juno版

OpenStack構築手順書 Juno版

日本仮想化技術 34

controller# vi /etc/glance/glance-registry.conf

[DEFAULT]

rabbit_host = controller

rabbit_password = password

verbose = True

[database]

#sqlite_db = /var/lib/glance/glance.sqlite ← 既存設定をコメントアウトconnection = mysql://glance:password@controller/glance ← 追記

[keystone_authtoken]

#admin_tenant_name = %SERVICE_TENANT_NAME% ← 既存設定をコメントアウト#admin_user = %SERVICE_USER% ← 既存設定をコメントアウト#admin_password = %SERVICE_PASSWORD% ← 既存設定をコメントアウトauth_uri = http://controller:5000 ← 追記identity_url = http://controller:35357 ← 編集admin_tenant_name = service ← 追記admin_user = glance ← 追記admin_password = password ← 追記

[paste_deploy]

flavor = keystone ← 追記

5-5 データベースにデータ登録

下記コマンドにてglanceデータベースのセットアップを行います。

controller# su -s /bin/sh -c "glance-manage db_sync" glance

5-6 Glanceサービスの再起動設定を反映させるため、Glanceサービスを再起動します。

controller# rm /var/log/glance/*

controller# service glance-registry restart && service glance-api restart

Page 35: OpenStack構築手順書 Juno版

OpenStack構築手順書 Juno版

日本仮想化技術 35

5-7 使用しないデータベースファイルの削除

controller# rm /var/lib/glance/glance.sqlite

5-8 ログの確認

Glanceのログを確認します。WARNINGやERRORのログが表示されないことを確認します。

controller# grep "ERROR\|WARNING" /var/log/glance/*

5-9 イメージの取得と登録

Glanceへインスタンス用仮想マシンイメージを登録します。ここでは、クラウド環境で主にテスト用途で利用されるLinuxディストリビューションCirrOSを登録します。

5-9-1 イメージ取得

CirrOSのWebサイトより仮想マシンイメージをダウンロードします。

controller# wget http://download.cirros-cloud.net/0.3.3/cirros-0.3.3-x86_64-disk.img

Page 36: OpenStack構築手順書 Juno版

OpenStack構築手順書 Juno版

日本仮想化技術 36

5-9-2 イメージ登録

ダウンロードした仮想マシンイメージをGlanceに登録します。

controller# glance image-create --name="CirrOS 0.3.3" --disk-format=qcow2 --container-format=bare \

--is-public=true < cirros-0.3.3-x86_64-disk.img

+------------------+--------------------------------------+

| Property | Value |

+------------------+--------------------------------------+

| checksum | None |

| container_format | bare |

| created_at | 2014-11-12T07:44:31 |

| deleted | False |

| deleted_at | None |

| disk_format | qcow2 |

| id | a94ad1b9-bab8-454d-81e4-fe15693784b4 |

| is_public | False |

| min_disk | 0 |

| min_ram | 0 |

| name | CirrOS 0.3.3 |

| owner | 8180ef035ce34af9bc696754986fe32f |

| protected | False |

| size | 0 |

| status | queued |

| updated_at | 2014-11-12T07:44:31 |

| virtual_size | None |

+------------------+--------------------------------------+

5-9-3 イメージ登録確認

仮想マシンイメージが正しく登録されたか確認します。

controller# glance image-list

+--------------------------------------+--------------+-------------+------------------+------+--------+

| ID | Name | Disk Format | Container Format | Size | Status |

+--------------------------------------+--------------+-------------+------------------+------+--------+

| a94ad1b9-bab8-454d-81e4-fe15693784b4 | CirrOS 0.3.3 | qcow2 | bare | | queued |

+--------------------------------------+--------------+-------------+------------------+------+--------+

Page 37: OpenStack構築手順書 Juno版

OpenStack構築手順書 Juno版

日本仮想化技術 37

6. Novaのインストールと設定(controllerノード)controllerノードへNovaをインストールします。

6-1 パッケージのインストールapt-getコマンドでNova関連のパッケージをインストールします。

controller# apt-get install -y nova-api nova-cert nova-conductor nova-consoleauth nova-novncproxy \

nova-scheduler python-novaclient

6-2 データベースの作成・確認

6-2-1 データベースの作成

MariaDBにデータベースnovaを作成します。

controller# mysql -u root -p << EOF

CREATE DATABASE nova;

GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' \

IDENTIFIED BY 'password';

GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' \

IDENTIFIED BY 'password';

EOF

Enter password: ← MariaDBのrootパスワードpasswordを入力

6-2-2 データベースの作成確認

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

controller# mysql -u nova -p

Enter password: ← MariaDBのnovaパスワードpasswordを入力...

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;

+--------------------+

| Database |

+--------------------+

| information_schema |

| nova |

+--------------------+

2 rows in set (0.00 sec)

Page 38: OpenStack構築手順書 Juno版

OpenStack構築手順書 Juno版

日本仮想化技術 38

6-3 認証情報の作成以下コマンドで認証情報を作成します。

環境変数の設定

controller# source admin-openrc.sh

novaユーザーの作成

controller# keystone user-create --name=nova --pass=password

+----------+----------------------------------+

| Property | Value |

+----------+----------------------------------+

| email | |

| enabled | True |

| id | 60d2a224d82449c2b087a0f0b4b9e0a3 |

| name | nova |

| username | nova |

+----------+----------------------------------+

novaユーザーをadminロールに所属

controller# keystone user-role-add --user=nova --tenant=service --role=admin

novaサービスの作成

controller# keystone service-create --name=nova --type=compute \

--description="OpenStack Compute"

+-------------+----------------------------------+

| Property | Value |

+-------------+----------------------------------+

| description | OpenStack Compute |

| enabled | True |

| id | 247c48a462b94870920631626d7f9d23 |

| name | nova |

| type | compute |

+-------------+----------------------------------+

Page 39: OpenStack構築手順書 Juno版

OpenStack構築手順書 Juno版

日本仮想化技術 39

novaサービスのエンドポイントを作成

controller# keystone endpoint-create \

--service-id $(keystone service-list | awk '/ compute / {print $2}') \

--publicurl http://controller:8774/v2/%\(tenant_id\)s \

--internalurl http://controller:8774/v2/%\(tenant_id\)s \

--adminurl http://controller:8774/v2/%\(tenant_id\)s \

--region regionOne

+-------------+-----------------------------------------+

| Property | Value |

+-------------+-----------------------------------------+

| adminurl | http://controller:8774/v2/%(tenant_id)s |

| id | 6a25dd781e5043f7af621eae43a4448d |

| internalurl | http://controller:8774/v2/%(tenant_id)s |

| publicurl | http://controller:8774/v2/%(tenant_id)s |

| region | regionOne |

| service_id | 247c48a462b94870920631626d7f9d23 |

+-------------+-----------------------------------------+

Page 40: OpenStack構築手順書 Juno版

OpenStack構築手順書 Juno版

日本仮想化技術 40

6-4 設定変更nova.confに下記の設定を追記します。

controller# vi /etc/nova/nova.conf

[DEFAULT]

...

rpc_backend = rabbit

rabbit_host = controller

rabbit_password = password

auth_strategy = keystone

# controllerノードのIPアドレス:10.0.0.10

my_ip = 10.0.0.10

vncserver_listen = 10.0.0.10

vncserver_proxyclient_address = 10.0.0.10

# Networking

network_api_class = nova.network.neutronv2.api.API

security_group_api = neutron

linuxnet_interface_driver = nova.network.linux_net.LinuxOVSInterfaceDriver

firewall_driver = nova.virt.firewall.NoopFirewallDriver

[keystone_authtoken]

auth_uri = http://controller:5000/v2.0

identity_uri = http://controller:35357

admin_tenant_name = service

admin_user = nova

admin_password = password

[database]

connection = mysql://nova:password@controller/nova

[glance]

host = controller

6-5 使用しないデータベースファイル削除データベースはMariaDBを使用するため、使用しないSQLiteファイルを削除します。

controller# rm /var/lib/nova/nova.sqlite

Page 41: OpenStack構築手順書 Juno版

OpenStack構築手順書 Juno版

日本仮想化技術 41

6-6 データベースにデータを作成下記コマンドにてnovaデータベースのセットアップを行います。

controller# su -s /bin/sh -c "nova-manage db sync" nova

6-7 Novaサービスの再起動設定を反映させるため、Novaのサービスを再起動します。

controller# rm /var/log/nova/*

controller# service nova-api restart && service nova-cert restart && service nova-consoleauth restart && \

service nova-scheduler restart && service nova-conductor restart && service nova-novncproxy restart

6-8 ログの確認

controller# grep "ERROR\|WARNING" /var/log/nova/*

※特に何も表示されなければ問題ありません。

6-9 Glanceとの通信確認

NovaのコマンドラインインターフェースでGlanceと通信してGlanceと相互に通信できているかを確認します。

controller# nova image-list

+--------------------------------------+--------------+--------+--------+

| ID | Name | Status | Server |

+--------------------------------------+--------------+--------+--------+

| 1cdc90ca-fc4b-4064-8514-21aac275729f | CirrOS 0.3.3 | ACTIVE | |

+--------------------------------------+--------------+--------+--------+

※Glanceに登録したCirrOSイメージが表示できていれば問題ありません。

Page 42: OpenStack構築手順書 Juno版

OpenStack構築手順書 Juno版

日本仮想化技術 42

7. Nova-Computeのインストール・設定(compute1ノード)

7-1 パッケージインストール

compute1# apt-get install -y nova-compute sysfsutils

7-2 設定の変更novaの設定ファイルを変更します。

compute1# vi /etc/nova/nova.conf

[DEFAULT]

※既にある記述はそのままにして、以下の記述を追加します。rpc_backend = rabbit

rabbit_host = controller

rabbit_password = password

auth_strategy = keystone

my_ip = 10.0.0.11 ← IPアドレスで指定

vnc_enabled = True

vncserver_listen = 0.0.0.0

vncserver_proxyclient_address = 10.0.0.11 ← IPアドレスで指定novncproxy_base_url = http://controller:6080/vnc_auto.html

[keystone_authtoken]

auth_uri = http://controller:5000/v2.0

identity_uri = http://controller:35357

admin_tenant_name = service

admin_user = nova

admin_password = password

[glance]

host = controller

※日本語キーボードを使用する場合は[DEFAULT]に以下を追加します。

vnc_keymap = ja

Page 43: OpenStack構築手順書 Juno版

OpenStack構築手順書 Juno版

日本仮想化技術 43

7-3 Nova-Computeサービスの再起動設定を反映させるため、Nova-Computeのサービスを再起動します。

compute1# rm /var/log/nova/*

compute1# service nova-compute restart

7-4 ログの確認

compute1# grep "ERROR\|WARNING" /var/log/nova/*

※何も表示されなければ問題ありません。

7-5 controllerノードとの疎通確認

疎通確認はcontrollerノード上にて、admin環境変数設定ファイルを読み込んで行います。

controller# source admin-openrc.sh

7-5-1 ホストリストの確認

controllerノードとcomputeノードが相互に接続できているか確認します。もし、StateがXXXなサービスがあった場合は、該当のサービスをserviceコマンドで起動してください。

controller# nova-manage service list

Binary Host Zone Status State

nova-consoleauth controller internal enabled :-)

nova-conductor controller internal enabled :-)

nova-cert controller internal enabled :-)

nova-scheduler controller internal enabled :-)

nova-compute compute1 nova enabled :-)

※一覧にcompute1が表示されていれば問題ありません。

Page 44: OpenStack構築手順書 Juno版

OpenStack構築手順書 Juno版

日本仮想化技術 44

7-5-2 ハイパーバイザの確認

controllerノードよりcomputeノードのハイパーバイザが取得可能か確認します。

controller# nova hypervisor-list

+----+---------------------+

| ID | Hypervisor hostname |

+----+---------------------+

| 1 | compute1 |

+----+---------------------+

※Hypervisor hostname一覧にcompute1が表示されていれば問題ありません。

Page 45: OpenStack構築手順書 Juno版

OpenStack構築手順書 Juno版

日本仮想化技術 45

8. Neutronのインストール・設定(controllerノード)

8-1 パッケージインストール

controller# apt-get install -y neutron-server neutron-plugin-ml2 python-neutronclient

8-2 データベース作成・確認

8-2-1 データベース作成

MariaDBにデータベースneutronを作成します。

controller# mysql -u root -p << EOF

CREATE DATABASE neutron;

GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' \

IDENTIFIED BY 'password';

GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' \

IDENTIFIED BY 'password';

EOF

Enter password: ← MariaDBのrootパスワードpasswordを入力

8-2-2 データベースの確認

MariaDBにNeutronのデータベースが登録されたか確認します。

controller# mysql -u neutron -p

Enter password: ← MariaDBのneutronパスワードpasswordを入力...

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;

+--------------------+

| Database |

+--------------------+

| information_schema |

| neutron |

+--------------------+

2 rows in set (0.00 sec)

※ユーザーneutronでログイン可能でデータベースが閲覧可能なら問題ありません。

Page 46: OpenStack構築手順書 Juno版

OpenStack構築手順書 Juno版

日本仮想化技術 46

8-3 認証情報の設定以下コマンドで認証情報を設定します。

controller# source admin-openrc.sh

controller# keystone user-create --name neutron --pass password

+----------+----------------------------------+

| Property | Value |

+----------+----------------------------------+

| email | |

| enabled | True |

| id | 23f88938cbd94deb95b4c2c3caec2c60 |

| name | neutron |

| username | neutron |

+----------+----------------------------------+

controller# keystone user-role-add --user neutron --tenant service --role admin

controller# keystone service-create --name neutron --type network --description "OpenStack Networking"

+-------------+----------------------------------+

| Property | Value |

+-------------+----------------------------------+

| description | OpenStack Networking |

| enabled | True |

| id | 6c36ba679b16402aaed73c0e032f0d02 |

| name | neutron |

| type | network |

+-------------+----------------------------------+

controller# keystone endpoint-create \

--service-id $(keystone service-list | awk '/ network / {print $2}') \

--publicurl http://controller:9696 \

--adminurl http://controller:9696 \

--internalurl http://controller:9696 \

--region regionOne

+-------------+----------------------------------+

| Property | Value |

+-------------+----------------------------------+

| adminurl | http://controller:9696 |

| id | f9c6285e5242428ba5fb80a2b88535fb |

| internalurl | http://controller:9696 |

| publicurl | http://controller:9696 |

| region | regionOne |

| service_id | 6c36ba679b16402aaed73c0e032f0d02 |

+-------------+----------------------------------+

Page 47: OpenStack構築手順書 Juno版

OpenStack構築手順書 Juno版

日本仮想化技術 47

8-4 設定の変更設定変更時にSERVICE_TENANT_IDを求められるファイルがあるので予めSERVICE_TENANT_IDを取得します。

controller# source admin-openrc.sh

controller# keystone tenant-get service

+-------------+----------------------------------+

| Property | Value |

+-------------+----------------------------------+

| description | Service Tenant |

| enabled | True |

| id | f727b5ec2ceb4d71bad86dfc414449bf |

| name | service |

+-------------+----------------------------------+

Page 48: OpenStack構築手順書 Juno版

OpenStack構築手順書 Juno版

日本仮想化技術 48

controller# vi /etc/neutron/neutron.conf

[DEFAULT]

...

rpc_backend = rabbit ← コメントアウトをはずすrabbit_host = controller ← 追記rabbit_password = password ← 追記

core_plugin = ml2 ← 設定されていることを確認service_plugins = router ← 追記allow_overlapping_ips = True ← 追記

auth_strategy = keystone ← コメントアウトをはずす

notify_nova_on_port_status_changes = True ← 追記notify_nova_on_port_data_changes = True ← 追記nova_url = http://controller:8774/v2

nova_admin_auth_url = http://controller:35357/v2.0 ← 追記nova_admin_username = nova ← 追記nova_admin_tenant_id = SERVICE_TENANT_ID ← 追記

※SERVICE_TENANT_IDは"keystone tenant-get service"コマンドを実行して出力されたIDを使用します。

nova_admin_password = password ← 追記

[database]

#connection = sqlite:////var/lib/neutron/neutron.sqlite ← 既存設定をコメントアウトconnection = mysql://neutron:password@controller/neutron ← 追記

[keystone_authtoken]

#auth_host = 127.0.0.1 ← 既存設定をコメントアウト#auth_port = 35357 ← 既存設定をコメントアウト#auth_protocol = http ← 既存設定をコメントアウト#admin_tenant_name = %SERVICE_TENANT_NAME% ← 既存設定をコメントアウト#admin_user = %SERVICE_USER% ← 既存設定をコメントアウト#admin_password = %SERVICE_PASSWORD% ← 既存設定をコメントアウトauth_uri = http://controller:5000/v2.0 ← 追記identity_uri = http://controller:35357

nova_region_name = regionOne ← 追記admin_tenant_name = service ← 追記admin_user = neutron ← 追記admin_password = password ← 追記

Page 49: OpenStack構築手順書 Juno版

OpenStack構築手順書 Juno版

日本仮想化技術 49

controller# vi /etc/neutron/plugins/ml2/ml2_conf.ini

[ml2]

...

type_drivers = flat, gre ← 追記tenant_network_types = gre ← 追記mechanism_drivers = openvswitch ← 追記

[ml2_type_gre]

...

tunnel_id_ranges = 1:1000 ← 追記

[securitygroup]

...

enable_security_group = True

enable_ipset = True

firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver ← 追記

Page 50: OpenStack構築手順書 Juno版

OpenStack構築手順書 Juno版

日本仮想化技術 50

8-5 設定の変更novaの設定ファイルを変更します。

controller# vi /etc/nova/nova.conf

[DEFAULT]

...

network_api_class = nova.network.neutronv2.api.API

security_group_api = neutron

linuxnet_interface_driver = nova.network.linux_net.

LinuxOVSInterfaceDriver

firewall_driver = nova.virt.firewall.NoopFirewallDriver

[neutron]

...

url = http://controller:9696

auth_strategy = keystone

admin_auth_url = http://controller:35357/v2.0

admin_tenant_name = service

admin_username = neutron

admin_password = password

8-6 データベースの作成

controller# su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf \

--config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade juno" neutron

8-7 使用しないデータベースファイル削除

controller# rm /var/lib/neutron/neutron.sqlite

8-8 controllerノードのNeutronと関連サービスの再起動設定を反映させるため、controllerノードのNeutronと関連のサービスを再起動します。

controller# rm /var/log/neutron/*

controller# service nova-api restart && \

service nova-scheduler restart && \

service nova-conductor restart && \

service neutron-server restart

Page 51: OpenStack構築手順書 Juno版

OpenStack構築手順書 Juno版

日本仮想化技術 51

8-9 ログの確認

controller# grep "ERROR\|WARNING" /var/log/neutron/*

...

2014-05-16 18:41:24.106 2331 ERROR neutron.openstack.common.rpc.common [-] AMQP server on localhost:5672 i

s unreachable: Socket closed. Trying again in 30 seconds.

2014-05-16 18:41:34.119 2708 WARNING neutron.openstack.common.db.sqlalchemy.session [-] This application h

as not enabled MySQL traditional mode, which means silent data corruption may occur. Please encourage the

application developers to enable this mode.

2014-05-16 18:41:36.423 2708 WARNING neutron.api.extensions [-] Extension fwaas not supported by any of lo

aded plugins

2014-05-16 18:41:36.429 2708 WARNING neutron.api.extensions [-] Extension flavor not supported by any of l

oaded plugins

2014-05-16 18:41:36.484 2708 WARNING neutron.api.extensions [-] Extension lbaas_agent_scheduler not suppor

ted by any of loaded plugins

2014-05-16 18:41:36.502 2708 WARNING neutron.api.extensions [-] Extension lbaas not supported by any of lo

aded plugins

2014-05-16 18:41:36.528 2708 WARNING neutron.api.extensions [-] Extension metering not supported by any of

loaded plugins

2014-05-16 18:41:36.558 2708 WARNING neutron.api.extensions [-] Extension port-security not supported by a

ny of loaded plugins

2014-05-16 18:41:36.593 2708 WARNING neutron.api.extensions [-] Extension routed-service-insertion not sup

ported by any of loaded plugins

2014-05-16 18:41:36.601 2708 WARNING neutron.api.extensions [-] Extension router-service-type not supporte

d by any of loaded plugins

2014-05-16 18:41:36.630 2708 WARNING neutron.api.extensions [-] Extension service-type not supported by an

y of loaded plugins

2014-05-16 18:41:36.653 2708 WARNING neutron.api.extensions [-] Extension vpnaas not supported by any of l

oaded plugins

※上記ERRORとWARNING以外が出力されなければ問題ありません。

Page 52: OpenStack構築手順書 Juno版

OpenStack構築手順書 Juno版

日本仮想化技術 52

8-10 動作確認

controller:~# source admin-openrc.sh

controller:~# neutron ext-list

+-----------------------+-----------------------------------------------+

| alias | name |

+-----------------------+-----------------------------------------------+

| security-group | security-group |

| l3_agent_scheduler | L3 Agent Scheduler |

| ext-gw-mode | Neutron L3 Configurable external gateway mode |

| binding | Port Binding |

| provider | Provider Network |

| agent | agent |

| quotas | Quota management support |

| dhcp_agent_scheduler | DHCP Agent Scheduler |

| l3-ha | HA Router extension |

| multi-provider | Multi Provider Network |

| external-net | Neutron external network |

| router | Neutron L3 Router |

| allowed-address-pairs | Allowed Address Pairs |

| extraroute | Neutron Extra Route |

| extra_dhcp_opt | Neutron Extra DHCP opts |

| dvr | Distributed Virtual Router |

+-----------------------+-----------------------------------------------+

Page 53: OpenStack構築手順書 Juno版

OpenStack構築手順書 Juno版

日本仮想化技術 53

9. Neutronのインストール・設定(networkノード)

9-1 パッケージインストール

network# apt-get install -y neutron-plugin-ml2 neutron-plugin-openvswitch-agent \

neutron-l3-agent neutron-dhcp-agent

9-2 設定の変更neutron.confの設定

network# vi /etc/neutron/neutron.conf

[DEFAULT]

...

rpc_backend = rabbit ← コメントアウトをはずすrabbit_host = controller ← 追記rabbit_password = password ← 追記

auth_strategy = keystone ← コメントアウトをはずす

core_plugin = ml2 ← 追記service_plugins = router ← 追記allow_overlapping_ips = True ← 追記

[keystone_authtoken]

#auth_host = 127.0.0.1 ← 既存設定をコメントアウト#auth_host = controller ← コメントアウト#auth_protocol = http ← コメントアウト#auth_port = 35357 ← コメントアウト#admin_tenant_name = %SERVICE_TENANT_NAME% ← 既存設定をコメントアウト#admin_user = %SERVICE_USER% ← 既存設定をコメントアウト#admin_password = %SERVICE_PASSWORD% ← 既存設定をコメントアウトauth_uri = http://controller:5000/v2.0 ← 追記identity_uri = http://controller:35357 ← 追記admin_tenant_name = service ← 追記admin_user = neutron ← 追記admin_password = password ← 追記

Page 54: OpenStack構築手順書 Juno版

OpenStack構築手順書 Juno版

日本仮想化技術 54

ml2_conf.iniの設定

network# vi /etc/neutron/plugins/ml2/ml2_conf.ini

[ml2]

...

type_drivers = flat,gre ← 追記tenant_network_types = gre ← 追記mechanism_drivers = openvswitch ← 追記

[ml2_type_flat]

...

flat_networks = external ← 追記

[ml2_type_gre]

...

tunnel_id_ranges = 1:1000 ← 追記

[ovs]

...

local_ip = 192.168.0.9 ← 追記tunnel_type = gre ← 追記enable_tunneling = True ← 追記bridge_mappings = external:br-ex ← 追記

[securitygroup]

...

enable_security_group = True

enable_ipset = True

firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver

[agent]

...

tunnel_types = gre

l3_agent.iniの設定

network# vi /etc/neutron/l3_agent.ini

[DEFAULT]

interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver ← 追記use_namespaces = True ← 追記external_network_bridge = br-ex ← 追記

verbose = True ← 追記

Page 55: OpenStack構築手順書 Juno版

OpenStack構築手順書 Juno版

日本仮想化技術 55

network# vi /etc/neutron/dhcp_agent.ini

[DEFAULT]

...

interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver ← 追記dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq ← 追記use_namespaces = True ← 追記dnsmasq_config_file = /etc/neutron/dnsmasq-neutron.conf ← 追記

verbose = True ← 追記

DHCPオプションでMTUの設定

dnsmasq-neutron.confファイルを新規作成して、DHCPオプションを設定します。

network# vi /etc/neutron/dnsmasq-neutron.conf

dhcp-option-force=26,1454

metadata_agent.iniの設定

network# vi /etc/neutron/metadata_agent.ini

[DEFAULT]

#auth_url = http://localhost:5000/v2.0 ← 既存設定をコメントアウト#admin_tenant_name = %SERVICE_TENANT_NAME% ← 既存設定をコメントアウト#admin_user = %SERVICE_USER% ← 既存設定をコメントアウト#admin_password = %SERVICE_PASSWORD% ← 既存設定をコメントアウトauth_url = http://controller:5000/v2.0 ← 追記auth_region = regionOne

admin_tenant_name = service ← 追記admin_user = neutron ← 追記admin_password = password ← 追記

# nova_metadata_ip = 127.0.0.1 ← 既存設定をコメントアウト# metadata_proxy_shared_secret =

nova_metadata_ip = controller ← 追記metadata_proxy_shared_secret = password ← 追記

9-3 設定の変更

controllerノードのnovaの設定ファイルに追記します。

Page 56: OpenStack構築手順書 Juno版

OpenStack構築手順書 Juno版

日本仮想化技術 56

controller# vi /etc/nova/nova.conf

[neutron]

...

service_metadata_proxy = True

metadata_proxy_shared_secret = password

controllerノードのnova-apiサービスを再起動します。

controller# service nova-api restart

Page 57: OpenStack構築手順書 Juno版

OpenStack構築手順書 Juno版

日本仮想化技術 57

9-4 networkノードのOpen vSwitchサービスの再起動OpenStackのネットワークサービス設定を反映させるため、networkノードでOpen vSwitchのサービスを再起動します。

network# service openvswitch-switch restart

9-5 ブリッジデバイス設定内部通信用と外部通信用のブリッジを作成して外部通信用ブリッジに共有ネットワークデバイスを接続します。

network# ovs-vsctl add-br br-ex

network# ovs-vsctl add-port br-ex eth0

9-6 ブリッジデバイス設定確認

ブリッジの作成・設定を確認します。

9-6-1 ブリッジの確認

network# ovs-vsctl list-br

br-ex

br-int

※add-brしたブリッジが表示されていれば問題ありません。

9-6-2 外部接続用ブリッジと共有ネットワークデバイスの接続確認

network# ovs-vsctl list-ports br-ex

eth0

※add-port で設定したネットワークデバイスが表示されていれば問題ありません。

Page 58: OpenStack構築手順書 Juno版

OpenStack構築手順書 Juno版

日本仮想化技術 58

9-7 ネットワークインタフェースの設定変更Management側に接続されたNICを使って、仮想NIC(br-ex)を作成します。

network# vi /etc/network/interfaces

# This file describes the network interfaces available on your system

# and how to activate them. For more information, see interfaces(5).

# The loopback network interface

auto lo

iface lo inet loopback

auto eth0

iface eth0 inet manual ← 既存設定を変更 up ip link set dev $IFACE up ← 既存設定を変更 down ip link set dev $IFACE down ← 既存設定を変更

auto eth1

iface eth1 inet static

address 192.168.0.9

netmask 255.255.255.0

auto br-ex ← 追記iface br-ex inet static ← 追記 address 10.0.0.9 ← 追記 netmask 255.255.255.0 ← 追記 gateway 10.0.0.1 ← 追記 dns-nameservers 10.0.0.1 ← 追記

9-7 networkノード再起動インタフェース設定変更を適用するために、システムを再起動します。

network# reboot

9-8 ブリッジ設定確認

各種ブリッジが正常に設定されていることを確認します。

network# ifconfig

br-ex Link encap:Ethernet HWaddr 00:1c:42:29:b3:bd

inet addr:10.0.0.9 Bcast:10.0.0.255 Mask:255.255.255.0

inet6 addr: fe80::a840:fbff:fe7d:dd6e/64 Scope:Link

UP BROADCAST RUNNING MTU:1500 Metric:1

RX packets:2148 errors:0 dropped:0 overruns:0 frame:0

TX packets:2956 errors:0 dropped:0 overruns:0 carrier:0

Page 59: OpenStack構築手順書 Juno版

OpenStack構築手順書 Juno版

日本仮想化技術 59

collisions:0 txqueuelen:0

RX bytes:257185 (257.1 KB) TX bytes:654268 (654.2 KB)

br-int Link encap:Ethernet HWaddr ea:04:ce:9b:58:4b

inet6 addr: fe80::b84c:fbff:fe1a:d627/64 Scope:Link

UP BROADCAST RUNNING MTU:1500 Metric:1

RX packets:56 errors:0 dropped:0 overruns:0 frame:0

TX packets:8 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:0

RX bytes:4978 (4.9 KB) TX bytes:648 (648.0 B)

br-tun Link encap:Ethernet HWaddr 2e:8d:24:75:de:47

inet6 addr: fe80::f0fb:45ff:fee5:1133/64 Scope:Link

UP BROADCAST RUNNING MTU:1500 Metric:1

RX packets:1 errors:0 dropped:0 overruns:0 frame:0

TX packets:8 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:0

RX bytes:90 (90.0 B) TX bytes:648 (648.0 B)

eth0 Link encap:Ethernet HWaddr 00:1c:42:5c:58:ba

inet addr:192.168.0.9 Bcast:192.168.0.255 Mask:255.255.255.0

inet6 addr: fe80::21c:42ff:fe5c:58ba/64 Scope:Link

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

RX packets:283 errors:0 dropped:0 overruns:0 frame:0

TX packets:239 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:1000

RX bytes:41011 (41.0 KB) TX bytes:37254 (37.2 KB)

eth1 Link encap:Ethernet HWaddr 00:1c:42:29:b3:bd

inet6 addr: fe80::21c:42ff:fe29:b3bd/64 Scope:Link

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

RX packets:25542 errors:0 dropped:0 overruns:0 frame:0

TX packets:3083 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:1000

RX bytes:5297181 (5.2 MB) TX bytes:668414 (668.4 KB)

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:65536 Metric:1

RX packets:6 errors:0 dropped:0 overruns:0 frame:0

TX packets:6 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:0

RX bytes:3456 (3.4 KB) TX bytes:3456 (3.4 KB)

Page 60: OpenStack構築手順書 Juno版

OpenStack構築手順書 Juno版

日本仮想化技術 60

9-9 networkノードのNeutronと関連サービスの再起動設定を反映させるため、networkノードのNeutronと関連のサービスを再起動します。

network# rm /var/log/neutron/*

network# service openvswitch-switch restart && \

service neutron-plugin-openvswitch-agent restart && \

service neutron-l3-agent restart && \

service neutron-dhcp-agent restart && \

service neutron-metadata-agent restart

9-10 ログの確認

network# grep "ERROR\|WARNING" /var/log/neutron/*

...

/var/log/neutron/openvswitch-agent.log:2014-05-16 19:33:14.963 1523 ERROR neutron.agent.linux.ovsdb_monito

r [-] Error received from ovsdb monitor: ovsdb-client: unix:/var/run/openvswitch/db.sock: receive failed (

End of file)

/var/log/neutron/openvswitch-agent.log:2014-05-16 19:33:15.455 1523 ERROR neutron.agent.linux.ovs_lib [-]

Unable to execute ['ovs-vsctl', '--timeout=10', 'list-ports', 'br-int']. Exception:

/var/log/neutron/openvswitch-agent.log:2014-05-16 19:33:15.456 1523 ERROR neutron.plugins.openvswitch.agen

t.ovs_neutron_agent [-] Error while processing VIF ports

※上記ERRORとWARNING以外が出力されなければ問題ありません。

Page 61: OpenStack構築手順書 Juno版

OpenStack構築手順書 Juno版

日本仮想化技術 61

10. Neutronのインストール・設定(compute1ノード)

10-1 パッケージインストール

compute1# apt-get install -y neutron-plugin-ml2 neutron-plugin-openvswitch-agent

10-2 設定の変更

compute1# vi /etc/neutron/neutron.conf

[DEFAULT]

...

rpc_backend = rabbit ← コメントアウトをはずすrabbit_host = controller ← 追記rabbit_password = password ← 追記

auth_strategy = keystone ← コメントアウトをはずす

core_plugin = ml2 ← 設定されていることを確認service_plugins = router ← 追記allow_overlapping_ips = True ← 追記

verbose = True

[keystone_authtoken]

#auth_host = 127.0.0.1 ← 既存設定をコメントアウト#auth_host = controller ← 追記#auth_protocol = http ← 既存設定をコメントアウト#auth_port = 35357 ← 既存設定をコメントアウト#admin_tenant_name = %SERVICE_TENANT_NAME% ← 既存設定をコメントアウト#admin_user = %SERVICE_USER% ← 既存設定をコメントアウト#admin_password = %SERVICE_PASSWORD% ← 既存設定をコメントアウトauth_uri = http://controller:5000/v2.0 ← 追記identity_uri = http://controller:35357 ← 追記admin_tenant_name = service ← 追記admin_user = neutron ← 追記admin_password = password ← 追記

Page 62: OpenStack構築手順書 Juno版

OpenStack構築手順書 Juno版

日本仮想化技術 62

compute1# vi /etc/neutron/plugins/ml2/ml2_conf.ini

[ml2]

type_drivers = flat,gre ← 追記tenant_network_types = gre ← 追記mechanism_drivers = openvswitch ← 追記

[ml2_type_gre]

tunnel_id_ranges = 1:1000 ← 追記

[securitygroup]

enable_security_group = True ← 追記enable_ipset = True ← 追記firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver ← 追記

[ovs] ← 追記local_ip = 192.168.0.11 ← 追記enable_tunneling = True ← 追記

[agent] ← 追記tunnel_type = gre ← 追記

10-3 compute1ノードのOpen vSwitchサービスの再起動

設定を反映させるため、compute1ノードのOpen vSwitchのサービスを再起動します。

compute1# service openvswitch-switch restart

Page 63: OpenStack構築手順書 Juno版

OpenStack構築手順書 Juno版

日本仮想化技術 63

10-4 compute1ノードのネットワーク設定デフォルトではComputeはレガシーなネットワークを利用します。Neutronを利用するように設定を変更します。

compute1# vi /etc/nova/nova.conf

[DEFAULT]

...

network_api_class = nova.network.neutronv2.api.API

security_group_api = neutron

linuxnet_interface_driver = nova.network.linux_net.LinuxOVSInterfaceDriver

firewall_driver = nova.virt.firewall.NoopFirewallDriver

[neutron]

...

url = http://controller:9696

auth_strategy = keystone

admin_auth_url = http://controller:35357/v2.0

admin_tenant_name = service

admin_username = neutron

admin_password = password

10-5 compute1ノードのNeutronと関連サービスを再起動ネットワーク設定を反映させるため、compute1ノードのNeutronと関連のサービスを再起動します。

compute1# service nova-compute restart

compute1# service neutron-plugin-openvswitch-agent restart

10-6 ログの確認

compute1# grep "ERROR\|WARNING" /var/log/neutron/*

※何も表示されなければ問題ありません。

Page 64: OpenStack構築手順書 Juno版

OpenStack構築手順書 Juno版

日本仮想化技術 64

11. 仮想ネットワーク設定(controllerノード)

11-1 外部接続ネットワークの設定

11-1-1 admin環境変数読み込み

外部接続用ネットワーク作成するためにadmin環境変数を読み込みます。

controller# source admin-openrc.sh

11-1-2 外部ネットワーク作成

ext-netという名前で外部用ネットワークを作成します。

controller# neutron net-create ext-net --shared --router:external=True

Created a new network:

+---------------------------+--------------------------------------+

| Field | Value |

+---------------------------+--------------------------------------+

| admin_state_up | True |

| id | 8cbfd14f-72bb-4e6d-a9a6-f1312d641cd4 |

| name | ext-net |

| provider:network_type | gre |

| provider:physical_network | |

| provider:segmentation_id | 1 |

| router:external | True |

| shared | True |

| status | ACTIVE |

| subnets | |

| tenant_id | 07e06d1d7f35430e8906e6fb5badd893 |

+---------------------------+--------------------------------------+

Page 65: OpenStack構築手順書 Juno版

OpenStack構築手順書 Juno版

日本仮想化技術 65

11-1-3 外部ネットワーク用サブネット作成

ext-subnetという名前で外部ネットワーク用サブネットを作成します。

controller# neutron subnet-create ext-net --name ext-subnet \

--allocation-pool start=10.0.0.200,end=10.0.0.250 \

--disable-dhcp --gateway 10.0.0.1 10.0.0.0/24

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 | 7c457880-29f9-4a85-8714-1a5762b3c932 |

| ip_version | 4 |

| name | ext-subnet |

| network_id | 8cbfd14f-72bb-4e6d-a9a6-f1312d641cd4 |

| tenant_id | 07e06d1d7f35430e8906e6fb5badd893 |

+------------------+----------------------------------------------+

11-2 インスタンス用ネットワーク設定

11-2-1 demo環境変数読み込み

インスタンス用ネットワーク作成するためにdemo環境変数読み込みます。

controller# source demo-openrc.sh

Page 66: OpenStack構築手順書 Juno版

OpenStack構築手順書 Juno版

日本仮想化技術 66

11-2-2 インスタンス用ネットワーク作成

demo-netという名前でインスタンス用ネットワークを作成します。

controller# neutron net-create demo-net

Created a new network:

+----------------+--------------------------------------+

| Field | Value |

+----------------+--------------------------------------+

| admin_state_up | True |

| id | 71059c78-fd2c-4e52-a4b9-98776be0ba28 |

| name | demo-net |

| shared | False |

| status | ACTIVE |

| subnets | |

| tenant_id | 6d19304a59b3456bbe2552a9080d1301 |

+----------------+--------------------------------------+

11-2-3 インスタンス用ネットワークサブネット作成

demo-subnetという名前でインスタンス用ネットワークサブネットを作成します。

controller# neutron subnet-create demo-net --name demo-subnet \

--gateway 192.168.0.1 192.168.0.0/24

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 | |

| enable_dhcp | True |

| gateway_ip | 192.168.0.1 |

| host_routes | |

| id | 6cf9c7f6-2105-4c2a-9fac-0b1df83f774d |

| ip_version | 4 |

| name | demo-subnet |

| network_id | 71059c78-fd2c-4e52-a4b9-98776be0ba28 |

| tenant_id | 6d19304a59b3456bbe2552a9080d1301 |

+------------------+--------------------------------------------------+

Page 67: OpenStack構築手順書 Juno版

OpenStack構築手順書 Juno版

日本仮想化技術 67

11-3 仮想ネットワークルーター設定仮想ネットワークルーターを作成して外部接続用ネットワークとインスタンス用ネットワークをルーターに接続し、双方でデータのやり取りを行えるようにします。

11-3-1 demo-routerを作成

仮想ネットワークルータを作成します。

controller# neutron router-create demo-router

Created a new router:

+-----------------------+--------------------------------------+

| Field | Value |

+-----------------------+--------------------------------------+

| admin_state_up | True |

| external_gateway_info | |

| id | d1a10de8-37e2-4966-a84d-caff3e6b0e1f |

| name | demo-router |

| status | ACTIVE |

| tenant_id | 6d19304a59b3456bbe2552a9080d1301 |

+-----------------------+--------------------------------------+

11-3-2 demo-routerにsubnetを追加

仮想ネットワークルーターにインスタンス用ネットワークを接続します。

controller# neutron router-interface-add demo-router demo-subnet

Added interface fc83f7f5-6da5-4607-b9f8-34d0004dfc3e to router demo-router.

11-3-3 demo-routerにgatewayを追加

仮想ネットワークルーターに外部ネットワークを接続します。

controller# neutron router-gateway-set demo-router ext-net

Set gateway for router demo-router

Page 68: OpenStack構築手順書 Juno版

OpenStack構築手順書 Juno版

日本仮想化技術 68

12. 仮想ネットワーク設定確認(networkノード)

12-1 仮想ネットワークルーターの確認

以下コマンドで仮想ネットワークルーターが作成されているか確認します。

network# ip netns

qdhcp-ed07c38c-8609-43d8-ae02-582f9f202a3e

qrouter-7c1ca8eb-eaa0-4a68-843d-daca30824693

※qrouter~~ という名前の行が表示されていれば問題ありません。

12-2 仮想ルーターのネームスペースのIPアドレスを確認

仮想ルーターと外部用ネットワークの接続を確認します。

network# ip netns exec `ip netns | grep qrouter` ip addr

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

inet 127.0.0.1/8 scope host lo

valid_lft forever preferred_lft forever

inet6 ::1/128 scope host

valid_lft forever preferred_lft forever

13: qr-65249869-77: <BROADCAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default

link/ether fa:16:3e:d0:df:2c brd ff:ff:ff:ff:ff:ff

inet 192.168.0.1/24 brd 192.168.0.255 scope global qr-65249869-77

valid_lft forever preferred_lft forever

inet6 fe80::f816:3eff:fed0:df2c/64 scope link

valid_lft forever preferred_lft forever

14: qg-bd7c5797-3f: <BROADCAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default

link/ether fa:16:3e:35:80:8f brd ff:ff:ff:ff:ff:ff

inet 10.0.0.200/24 brd 10.0.0.255 scope global qg-bd7c5797-3f

valid_lft forever preferred_lft forever

inet6 fe80::f816:3eff:fe35:808f/64 scope link

valid_lft forever preferred_lft forever

※外部アドレス(この環境では10.0.0.0/24)のアドレスを確認します。

Page 69: OpenStack構築手順書 Juno版

OpenStack構築手順書 Juno版

日本仮想化技術 69

12-3 仮想ゲートウェイの疎通確認仮想ルーターと通信が行えるかを確認します。

network# ping 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=1.17 ms

64 bytes from 10.0.0.200: icmp_seq=2 ttl=64 time=0.074 ms

64 bytes from 10.0.0.200: icmp_seq=3 ttl=64 time=0.061 ms

64 bytes from 10.0.0.200: icmp_seq=4 ttl=64 time=0.076 ms

※応答が返ってくれば問題ありません。各ノードからPingコマンドによる疎通確認を実行しましょう。

Page 70: OpenStack構築手順書 Juno版

OpenStack構築手順書 Juno版

日本仮想化技術 70

13. Cinderインストール(controllerノード)

13-1 パッケージインストール

controller# apt-get install -y cinder-common cinder-api cinder-scheduler cinder-volume lvm2 python-mysqldb

13-2 データベース作成・確認

13-2-1 データベース作成

MariaDBのデータベースにCinderのデータベースを作成します。

controller# mysql -u root -p <<EOF

CREATE DATABASE cinder;

GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' \

IDENTIFIED BY 'password';

GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' \

IDENTIFIED BY 'password';

EOF

Enter password: ← MariaDBのrootパスワードpasswordを入力

13-2-2 データベースの確認

MariaDBにCinderのデータベースが登録されたか確認します。

controller# mysql -u cinder -p

Enter password: ← MariaDBのcinderパスワードpasswordを入力...

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;

+--------------------+

| Database |

+--------------------+

| information_schema |

| cinder |

+--------------------+

2 rows in set (0.00 sec)

※ユーザーcinderでログイン可能でデータベースの閲覧が可能なら問題ありません。

Page 71: OpenStack構築手順書 Juno版

OpenStack構築手順書 Juno版

日本仮想化技術 71

13-3 認証情報の設定以下コマンドで認証情報を設定します。

controller# source admin-openrc.sh

controller# keystone user-create --name=cinder --pass=password

+----------+----------------------------------+

| Property | Value |

+----------+----------------------------------+

| email | |

| enabled | True |

| id | 2e391db9f2004b5ab0712c67ae6c9bcd |

| name | cinder |

| username | cinder |

+----------+----------------------------------+

controller# keystone user-role-add --user=cinder --tenant=service --role=admin

controller# keystone service-create --name=cinder --type=volume \

--description="OpenStack Block Storage"

+-------------+----------------------------------+

| Property | Value |

+-------------+----------------------------------+

| description | OpenStack Block Storage |

| enabled | True |

| id | 3830cd8b2c614414903b0bc31ed9e1ca |

| name | cinder |

| type | volume |

+-------------+----------------------------------+

controller# keystone service-create --name=cinderv2 --type=volumev2 \

--description="OpenStack Block Storage v2"

+-------------+----------------------------------+

| Property | Value |

+-------------+----------------------------------+

| description | OpenStack Block Storage v2 |

| enabled | True |

| id | cb2b03621220473c9bcbe194dfd55695 |

| name | cinderv2 |

| type | volumev2 |

+-------------+----------------------------------+

controller# keystone endpoint-create \

--service=cinder \

--publicurl=http://controller:8776/v1/%\(tenant_id\)s \

--internalurl=http://controller:8776/v1/%\(tenant_id\)s \

--adminurl=http://controller:8776/v1/%\(tenant_id\)s

+-------------+-----------------------------------------+

| Property | Value |

+-------------+-----------------------------------------+

| adminurl | http://controller:8776/v1/%(tenant_id)s |

Page 72: OpenStack構築手順書 Juno版

OpenStack構築手順書 Juno版

日本仮想化技術 72

| id | 44b37c343f6c4c52843ce3ca6c7fbad3 |

| internalurl | http://controller:8776/v1/%(tenant_id)s |

| publicurl | http://controller:8776/v1/%(tenant_id)s |

| region | regionOne |

| service_id | 3830cd8b2c614414903b0bc31ed9e1ca |

+-------------+-----------------------------------------+

controller# keystone endpoint-create \

--service=cinderv2 \

--publicurl=http://controller:8776/v2/%\(tenant_id\)s \

--internalurl=http://controller:8776/v2/%\(tenant_id\)s \

--adminurl=http://controller:8776/v2/%\(tenant_id\)s

+-------------+-----------------------------------------+

| Property | Value |

+-------------+-----------------------------------------+

| adminurl | http://controller:8776/v2/%(tenant_id)s |

| id | 0eda32a224b74b958be4dc551dfe4aaa |

| internalurl | http://controller:8776/v2/%(tenant_id)s |

| publicurl | http://controller:8776/v2/%(tenant_id)s |

| region | regionOne |

| service_id | cb2b03621220473c9bcbe194dfd55695 |

+-------------+-----------------------------------------+

Page 73: OpenStack構築手順書 Juno版

OpenStack構築手順書 Juno版

日本仮想化技術 73

13-4 設定の変更

controller# vi /etc/cinder/cinder.conf

※以下の記述を追加します。[DEFAULT]

...

rpc_backend = rabbit

rabbit_host = controller

rabbit_password = password

rabbit_port = 5672

rabbit_userid = guest

my_ip = 10.0.0.10 #controllerノードauth_strategy = keystone

glance_host = controller

[keystone_authtoken]

auth_uri = http://controller:5000/v2.0

identity_uri = http://controller:35357

admin_tenant_name = service

admin_user = cinder

admin_password = password

[database]

connection = mysql://cinder:password@controller/cinder

13-5 データベースに表を作成

controller# su -s /bin/sh -c "cinder-manage db sync" cinder

13-6 Cinderサービスの再起動設定を反映させるために、Cinderのサービスを再起動します。

controller# rm /var/log/cinder/*

controller# service cinder-scheduler restart && service cinder-api restart

13-7 使用しないデータベースファイル削除

controller# rm /var/lib/cinder/cinder.sqlite

Page 74: OpenStack構築手順書 Juno版

OpenStack構築手順書 Juno版

日本仮想化技術 74

13-8 ログの確認

controller# grep "ERROR\|WARNING" /var/log/cinder/*

...

/var/log/cinder/cinder-api.log:2014-05-16 16:56:57.401 2641 WARNING cinder.service [-] Value of config opt

ion osapi_volume_workers must be integer greater than 1. Input value ignored.

/var/log/cinder/cinder-scheduler.log:2014-05-16 16:56:37.733 2287 ERROR oslo.messaging._drivers.impl_rabbi

t [req-b051f972-4128-49bb-a820-b0718340f8fd - - - - -] AMQP server on localhost:5672 is unreachable: Socke

t closed. Trying again in 30 seconds.

/var/log/cinder/cinder-volume.log:2014-05-16 16:56:38.409 2390 ERROR oslo.messaging._drivers.impl_rabbit [

-] AMQP server on localhost:5672 is unreachable: Socket closed. Trying again in 30 seconds.

/var/log/cinder/cinder-volume.log:2014-05-16 16:57:12.442 2390 ERROR oslo.messaging._drivers.impl_rabbit [

-] AMQP server on localhost:5672 is unreachable: Socket closed. Trying again in 30 seconds.

/var/log/cinder/cinder-volume.log:2014-05-16 16:57:46.479 2390 ERROR oslo.messaging._drivers.impl_rabbit [

-] AMQP server on localhost:5672 is unreachable: Socket closed. Trying again in 30 seconds.

※上記ERRORとWARNINGが出力されなければ問題ありません。

13-9 イメージ格納用ボリューム作成イメージ格納用ボリュームを設定するために物理ボリュームの設定、ボリューム作成を行います。

13-9-1 物理ボリュームを設定

以下コマンドで物理ボリュームを設定します。

controller# pvcreate /dev/sdb

Physical volume "/dev/sdb" successfully created

controller# vgcreate cinder-volumes /dev/sdb

Volume group "cinder-volumes" successfully created

13-9-2 Cinder-Volumeサービスの再起動

Cinderストレージの設定を反映させるために、Cinder-Volumeのサービスを再起動します。

controller# service cinder-volume restart && service tgt restart

13-9-3 admin環境変数設定ファイル読み込み

インスタンス格納用ボリュームを作成するために、admin環境変数を読み込みます。

controller# source admin-openrc.sh

Page 75: OpenStack構築手順書 Juno版

OpenStack構築手順書 Juno版

日本仮想化技術 75

13-9-4 ボリューム作成

以下コマンドでインスタンス格納用ボリュームを作成します。

controller# cinder create --display-name testvolume01 1

+---------------------+--------------------------------------+

| Property | Value |

+---------------------+--------------------------------------+

| attachments | [] |

| availability_zone | nova |

| bootable | false |

| created_at | 2014-04-30T10:57:30.357692 |

| display_description | None |

| display_name | testvolume01 |

| encrypted | False |

| id | 2bd90ca8-0062-4b31-b3b2-7fd6fdc8da97 |

| metadata | {} |

| size | 1 |

| snapshot_id | None |

| source_volid | None |

| status | creating |

| volume_type | None |

+---------------------+--------------------------------------+

13-9-5 作成ボリュームの確認

以下コマンドで作成したボリュームを確認します。

controller# cinder list

+--------------------------------------+-----------+--------------+------+-------------+----------+-------

------+

| ID | Status | Display Name | Size | Volume Type | Bootable | Attach

ed to |

+--------------------------------------+-----------+--------------+------+-------------+----------+-------

------+

| 2bd90ca8-0062-4b31-b3b2-7fd6fdc8da97 | available | testvolume01 | 1 | None | false |

|

+--------------------------------------+-----------+--------------+------+-------------+----------+-------

------+

※一覧にコマンドを実行して登録したボリュームが表示されて、ステータスがavailableとなっていれば問題ありません。

Page 76: OpenStack構築手順書 Juno版

OpenStack構築手順書 Juno版

日本仮想化技術 76

14. Dashboardインストール・確認(controllerノード)クライアントマシンからブラウザーでOpenStack環境を操作可能なWebインターフェイスをインストールします。

14-1 パッケージインストールcontrollerノードにDashboardをインストールします。

controller# apt-get install -y apache2 memcached libapache2-mod-wsgi openstack-dashboard

14-2 Dashboardの設定の変更

インストールしたDashboardの設定を変更します。

controller# vi /etc/openstack-dashboard/local_settings.py

...

OPENSTACK_HOST = "controller" ← 変更ALLOWED_HOSTS = ['*'] ← 変更

変更した変更を反映させるため、Apacheとセッションストレージサービスを再起動します。

controller# service apache2 restart

controller# service memcached restart

14-3 Dashboardへのアクセス確認controllerノードとネットワーク的に接続されているマシンからブラウザで以下URLに接続してOpenStackのログイン画面が表示されるか確認します。

※ブラウザで接続するマシンは予めDNSもしくは/etc/hostsにcontrollerノードのIPを記述しておく等controllerノードの名前解決を行っておく必要があります。

http://controller/horizon/

※上記URLにアクセスしてログイン画面が表示され、ユーザーadminとdemoでログイン(パスワード:password)でログインできれば問題ありません。

Page 77: OpenStack構築手順書 Juno版

OpenStack構築手順書 Juno版

日本仮想化技術 77

14-4 セキュリティグループの設定OpenStackの上で動かすインスタンスのファイアウォール設定は、セキュリティグループで行います。ログイン後、次の手順でセキュリティグループを設定できます。

1.対象のユーザーでログイン

2.「プロジェクト→コンピュート→アクセスとセキュリティ」を選択

3.「ルールの管理」ボタンをクリック

4.「ルールの追加」で許可するルールを定義

5.「追加」ボタンをクリック

セキュリティーグループは複数作成できます。作成したセキュリティーグループをインスタンスを起動する際に選択することで、セキュリティグループで定義したポートを解放したり、拒否したり、接続できるクライアントを制限することができます。

14-5 キーペアの作成

OpenStackではインスタンスへのアクセスはデフォルトで公開鍵認証方式で行います。次の手順でキーペアを作成できます。

1.対象のユーザーでログイン

2.「プロジェクト→コンピュート→アクセスとセキュリティ」をクリック

3.「キーペア」タブをクリック

4.「キーペアの作成」ボタンをクリック

5.キーペア名を入力

6.「キーペアの作成」ボタンをクリック

7.キーペア(拡張子:pem)ファイルをダウンロード

インスタンスにSSH接続する際は、-iオプションでpemファイルを指定します。

client$ ssh -i mykey.pem cloud-user@instance-floating-ip

Page 78: OpenStack構築手順書 Juno版

OpenStack構築手順書 Juno版

日本仮想化技術 78

14-6 インスタンスの起動前の手順でGlanceにCirrOSイメージを登録していますので、早速構築したOpenStack環境上でインスタンスを起動してみましょう。

1.対象のユーザーでログイン

2.「プロジェクト→コンピュート→イメージ」をクリック

3.イメージ一覧から起動するOSイメージを選び、「起動」ボタンをクリック

4.「インスタンスの起動」詳細タブで起動するインスタンス名、フレーバー、インスタンス数を設定

5.アクセスとセキュリティタブで割り当てるキーペア、セキュリティーグループを設定

6.ネットワークタブで割り当てるネットワークを設定

7.作成後タブで必要に応じてユーザーデータの入力(オプション)

8.高度な設定タブでパーティションなどの構成を設定(オプション)

9.「起動」ボタンをクリック

14-7 Floating IPの設定

起動したインスタンスにFloating IPアドレスを設定することで、Dashboardのコンソール以外からインスタンスにアクセスできるようになります。インスタンスにFloating IPを割り当てるには次の手順で行います。

1.対象のユーザーでログイン

2.「プロジェクト→コンピュート→インスタンス」をクリック

3.インスタンスの一覧から割り当てるインスタンスをクリック

4.アクションメニューから「Floating IPの割り当て」をクリック

5.「Floating IP割り当ての管理」画面のIPアドレスで「+」ボタンをクリック

6.「IPの確保」ボタンをクリック

7.割り当てるIPアドレスとインスタンスを選択して「割り当て」ボタンをクリック

14-8 インスタンスへのアクセス

Floating IPを割り当てて、かつセキュリティグループの設定を適切に行っていれば、リモートアクセスできるようになります。セキュリティーグループでSSHを許可した場合、端末からSSH接続が可能になります(下記は実行例)。

client$ ssh -i mykey.pem cloud-user@instance-floating-ip

その他、適切なポートを開放してインスタンスへのPingを許可したり、インスタンスでWebサーバーを起動して外部PCからアクセスしてみましょう。