さくらの専用サーバとOpenStackで作るプライベートクラウド 3ページ

必要となるコンポーネントのインストール

 サーバーの準備が完了したら、いよいよOpenStackコンポーネントのインストールだ。以下ではまずOpenStackが使用するサービスのインストールを行い、続いてkeystone、glance、nova、horizonの順にコンポーネントをインストールして行く。

EPELのインストール

 CentOS向けのOpenStackバイナリは、EPEL(Extra Packages for Enterprise Linux)というパッケージリポジトリで公開されている。EPELはFedora傘下のプロジェクトで、Red Hat Enterprise Linuxおよびその互換ディストリビューションに向け、標準パッケージとしては含まれないパッケージを提供している。

 EPELリポジトリを利用できるようにするには、以下のようにしてepel-releaseパッケージをインストールする。

# rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-7.noarch.rpm

 続いて/etc/yum.repos.d/epel.repoファイルをエディタで開き、「enbale」パラメータを「1」に変更する。

[epel]
name=Extra Packages for Enterprise Linux 6 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6

 これでEPELリポジトリにあるパッケージをyumコマンドでインストールできるようになる。

MySQLの設定

 OpenStackはMySQLやSQLiteなどいくつかのデータベースをサポートしているが、今回はMySQLを使用する。以下のようにして関連パッケージをインストールし、rootユーザーのパスワードを設定しておく。

# yum install mysql mysql-server MySQL-python
# service mysqld on
# chkconfig mysqld on
# mysqladmin -u root password '<設定するパスワード>'

RabbitMQの設定

 メッセージキューにはRabbitMQを使用する。以下のようにRabbitMQをインストールして起動しておく。

# yum install rabbitmq-server
# service rabbitmq-server start
# chkconfig rabbitmq-server on

仮想化関連(libvirt、KVM)の設定

 仮想化ソフトウェアにはKVMを使用する。KVMはlibvirt経由で操作されるので、こちらのインストールも必要だ。また、libvirtdが使用するmessagebusサービスも有効にしておく。

# yum install libvirt
# service messagebus start
# service libvertd start
# chkconfig messagebus on
# chkconfig libvirtd on

LVMの設定

 今回は前述のとおり、制御用サーバーのローカルストレージを仮想マシンのストレージに利用する。このためには、あらかじめ使用するパーティションを用意しておき、LVMボリュームとして初期化しておく必要がある。今回はsda5をLVMボリュームとして使用することとする。

 まず、sda5がマウントされていないことを確認する。

$ mount
/dev/sda3 on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
/dev/sda1 on /boot type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)

 また、sda5が存在することも確認しておく。

# fdisk -l
Disk /dev/sda: 999.7 GB, 999653638144 bytes
255 heads, 63 sectors/track, 121534 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000dc35d

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          32      256000   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              32         542     4096000   82  Linux swap / Solaris
Partition 2 does not end on cylinder boundary.
/dev/sda3             542       13291   102400000   83  Linux
/dev/sda4           13291      121535   869471232    5  Extended
/dev/sda5           13291      121535   869470208   8e  Linux LVM

 pvcreateコマンドを実行し、/dev/sda5をLVMの物理ボリュームとして使用するよう設定する。

# pvcreate /dev/sda5
  Writing physical volume data to disk "/dev/sda5"
  Physical volume "/dev/sda5" successfully created
# pvscan
  PV /dev/sda5                      lvm2 [829.19 GiB]
  Total: 1 [829.19 GiB] / in use: 0 [0   ] / in no VG: 1 [829.19 GiB]

 最後にvgcreateコマンドを実行し、/dev/sda5を「nova-volumes」という名称で参照できるよう設定しておく。

# vgcreate nova-volumes /dev/sda5
  Volume group "nova-volumes" successfully created

時刻の設定

 複数台のサーバーでOpenStackインフラを構築する場合、各サーバー間の時刻が同期していないと問題が発生することがある。ntpdateなどを使い、時刻を正しく設定しておく。

# yum install ntpdate
# ntpdate ntp.nict.jp

ファイアウォールの設定

 OpenStackでは、HTTPベースの通信プロトコルおよびメッセージキュー(AMQP)を使って各コンポーネント間が通信を行う。また、設定を管理するMySQLについても各ノードからアクセスが行われる。そのため、制御用ノードではこれらのプロトコルの通信を許可するよう設定しておく必要がある。具体的には、下記のポートに対する受信を許可しておけば良い(表7)。

表7 制御用ノードで接続を許可するポート
ポート番号 プロトコル 使用するサービス
8776 TCP nova-volume
8774 TCP nova-compute
9292 TCP glance
5000 TCP keystone
3306 TCP MySQL
6080 TCP nova-novncproxy
5672 TCP、UDP RabbitMQ