5. 各種ミドルウア インストール手順

本章では OpenStack インストール及び動作に必要となる周辺環境のインストール手順について記載します。

5.1. OSインストール直後の作業

5.1.1. パッケージアップデート

OS パッケージをアップグレードします。

ここで、カーネルが上がるため再起動を行う必要ありますが、ブリッジインタフェース作成後に再起動をするようにします。

$ sudo apt-get -y update
$ sudo apt-get -y upgrade

5.1.2. ブリッジインタフェースの作成

Nova ネットワーク用にブリッジインタフェースを作成します。

$ sudo apt-get -y install bridge-utils

(参考)

$ sudo vim /etc/network/interfaces

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet manual

auto br100
iface br100 inet static
        address         192.168.0.2
        netmask         255.255.255.0
        network         192.168.0.0
        broadcast       192.168.0.255
        gateway         192.168.0.1
        dns-search      localhost.localdomain
        bridge_ports    eth0
        bridge_stp      off
        bridge_maxwait  0
        bridge_fd       0
$ sudo /etc/init.d/networking restart
$ ifconfig
$ brctl show
bridge name     bridge id               STP enabled     interfaces
br100           8000.e41f136c03d2       no              eth0

設定が反映されていることを確認し、次のステップに進みます。

5.1.3. カーネルパラメータの設定

トラフィックがブリッジまで転送されるよう設定を変更します。

※ この辺りあやふやなのでどなたか教えてください。

$ sudo vim /etc/sysctl.conf
(以下を追加)
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0

$ sudo shutdown -r now

5.2. 依存関係など

各種コンパイル等に必要となるソフトウェアをインストールします。(※ 細かい解説は省略)

$ sudo apt-get -y install euca2ools unzip git python-pip python-dev gcc g++ kvm ebtables kpartx dnsmasq-utils libxml2-dev libsqlite3-dev libxslt1-dev libldap2-dev libsasl2-dev libssl-dev libxml2 libxslt-dev python-libxml2 python-libvirt libvirt-bin vlan curl python-software-properties python-setuptools swig python-mysqldb m2crypto libapache2-mod-wsgi

5.3. MySQL

5.3.1. MySQL のインストールと設定

MySQL をインストールし、外部からの接続を必要に応じて許可します。

$ sudo apt-get -y install mysql-server
$ sudo sed -i -e "s/\(^bind-address.*= \).*/\10.0.0.0/" /etc/mysql/my.cnf
$ sudo service mysql restart
$ mysql -uroot -p

5.3.2. MySQL データベースとユーザの作成

Nova, Glance, KeyStone, horizon 用のデータベースとユーザを作成します。

注意

  1. パスワードを “y7u8i9YUI” と適当に設定していますが、必ず変更しましょう。
  2. この時、horizon 以外のデータベースの文字コードを UTF-8 にしてしまうと各種テーブル生成時、MySQL の制約引っ掛かりデータベース作成が失敗します。

[サンプル] DB: Nova, Table: user_project_association

MySQL の仕様で主キーの合計が1000バイトを超えるテーブルの作成は行えません。

今回は user_id(255) + project_id(255) = 510。
さらに UTF8 なので 3倍 して 510 * 3 = 1530バイトとなってしまうため、制約に引っ掛かり失敗します。

2011-12-26 12:14:04,951 CRITICAL nova [-] (OperationalError) (1071, 'Specified key was too long; max key length is 1000 bytes') '\nCREATE TABLE user_project_association (\n\tcreated_at DATETIME, \n\tupdated_at DATETIME, \n\tdeleted_at DATETIME, \n\tdeleted BOOL, \n\tuser_id VARCHAR(255) NOT NULL, \n\tproject_id VARCHAR(255) NOT NULL, \n\tPRIMARY KEY (user_id, project_id), \n\tFOREIGN KEY(project_id) REFERENCES projects (id), \n\tFOREIGN KEY(user_id) REFERENCES users (id), \n\tCHECK (deleted IN (0, 1))\n)\n\n' ()

テーブルとユーザを作成します。

mysql> grant all privileges on nova.* to nova@localhost identified by 'y7u8i9YUI';
mysql> grant all privileges on glance.* to glance@localhost identified by 'y7u8i9YUI';
mysql> grant all privileges on keystone.* to keystone@localhost identified by 'y7u8i9YUI';
mysql> grant all privileges on horizon.* to horizon@localhost identified by 'y7u8i9YUI';
mysql> create database nova;
mysql> create database glance;
mysql> create database keystone;
mysql> CREATE DATABASE horizon CHARACTER SET UTF8;
mysql> exit;

外部接続を許可したい場合は外部接続用の許可も与えます。

mysql> grant all privileges on nova.* to nova@`192.168.0.%` identified by 'y7u8i9YUI';
mysql> grant all privileges on glance.* to glance@`192.168.0.%` identified by 'y7u8i9YUI';
mysql> grant all privileges on keystone.* to keystone@`192.168.0.%` identified by 'y7u8i9YUI';
mysql> grant all privileges on horizon.* to horizon@`192.168.0.%` identified by 'y7u8i9YUI';

5.4. RabbitMQ

5.4.1. RabbitMQ のインストール

メッセージキューサービスとして RabbitMQ をインストールします。RabbitMQ のクラスタリングを行うため、最新バージョン(2.6 以降)を使用します。

※ 本手順ではクラスタ化は行わないため、Ubuntu 標準パッケージでも OK です。

$ cd
$ sudo -s
# echo -e "\ndeb http://www.rabbitmq.com/debian/ testing main" >> /etc/apt/sources.list
# exit
$ wget http://www.rabbitmq.com/rabbitmq-signing-key-public.asc
$ sudo apt-key add rabbitmq-signing-key-public.asc
$ rm -f rabbitmq-signing-key-public.asc
$ sudo apt-get -y update
$ sudo apt-get install rabbitmq-server

5.4.2. RabbitMQ の設定

Nova, Glance 用にユーザと vhost を作成します。MySQL と同様パスワードの管理は適切に!

デフォルトユーザの guest については削除をします。

$ sudo rabbitmqctl add_vhost /nova
$ sudo rabbitmqctl add_user nova y7u8i9YUI
$ sudo rabbitmqctl set_permissions -p /nova nova ".*" ".*" ".*"
$ sudo rabbitmqctl add_vhost /glance
$ sudo rabbitmqctl add_user glance y7u8i9YUI
$ sudo rabbitmqctl set_permissions -p /glance glance ".*" ".*" ".*"
$ sudo rabbitmqctl delete_user guest

確認

$ sudo rabbitmqctl list_users
$ sudo rabbitmqctl list_vhosts
$ sudo rabbitmqctl list_permissions
$ sudo rabbitmqctl list_user_permissions nova
$ sudo rabbitmqctl list_user_permissions glance

5.4.3. RabbitMQ 起動時の注意

RabbitMQ は起動時に自ホストの名前解決を試みます。

名前解決ができない場合は起動に失敗してしまうため、/etc/hosts などを編集し、名前解決を行える状況にする必要があります。