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

OpenStack環境を構築する

 それでは実際にOpenStack環境を構築する手順について説明していこう。サーバーはさくらの専用サーバの「エクスプレスG2シリーズ」を使用する。以下ではまず1台の制御用ノードにすべてのコンポーネント(keystone、nova、glance、horizon)をインストールしてテストを行い、続いて計算用ノードを追加していく、という流れでOpenStack環境を構築していく。仮想マシンインスタンスのストレージは制御用ノードのローカルストレージをネットワーク経由で使用する形とする。

 今回構築する環境の概要を図で示したものが図1だ。

図1 今回使用するネットワーク構成
図1 今回使用するネットワーク構成

 ローカルのネットワークは192.168.100.0/24とし、計算用ノードのローカルIPアドレスは192.168.100.21とする。また、仮想マシンインスタンスは192.168.200.0/24という仮想ネットワークに接続される。このネットワークは、br100というブリッジインターフェイスを使い、ローカル接続ネットワークに使用されているネットワークインターフェイス(eth1)とブリッジ接続される形となる。これにより、それぞれのノード内の仮想マシン間はeth1経由で直接通信を行える。

 また、それぞれのサーバーにインストールするサービスは次のようになる(図2)。オプションコンポーネントであるSwift(オブジェクトストレージサービス)については今回は使用しない。

図2 それぞれのサーバーにインストールするサービス
図2 それぞれのサーバーにインストールするサービス

サーバーの準備

 OpenStackをインストールするための事前準備として、あらかじめOSやネットワークのセットアップを行っておく。さくらの専用サーバでは契約している複数台のサーバーをローカルの専用ネットワークに接続する機能(ローカル接続機能)があるのでこれを利用し、各サーバーがローカル接続ネットワークで接続され、ローカルIPアドレスが割り当てられた環境を構築しておく。また、OSにはさくらの専用サーバのデフォルトOSであるCentOS 6を使用する。

ストレージの設定と準備

 OpenStackでは、仮想マシンが使用するストレージはopenstack-volumeサービスが管理している。ストレージの割り当て方法にさまざまなやり方があるが、今回はopenstack-volumeサービスが稼働している制御用ノードのローカルストレージを各仮想マシンがネットワーク経由で使用する、という方法を使用する。この場合、制御用ノード上にはLVM(Logical Volume Manager)で管理されたディスク領域が必要だ。しかし、さくらの専用サーバのデフォルト構成ではLVMは使用されていないため、ディスクのパーティションを変更してLVM領域を作成する必要がある。今回はネットワークブートでCentOSのインストーラを起動してストレージのフォーマットおよび再インストールを行うことでこの環境を構築した。

ネットワークブートでディスクの構成を変更する

 ネットワークブートによるインストーラの起動は今回の本題ではないが、さくらの専用サーバでストレージの構成を変更したり、任意のOSをインストールするためには必要であるので、簡単ではあるが解説をしておこう。

 まず、CentOSの再インストールを行うサーバーとは別に、ネットワークブートサーバーとして使用するサーバーを用意する。ネットワークブート用サーバーはCentOSがインストールされているものとし、再インストールするサーバーとはローカル接続でネットワーク接続されているものとする。このネットワークブート用サーバーにdhcpおよびtftp-serverをインストールし、サービスを有効にしておく。

# yum install dhcp
# yum install tftp-server
# chkconfig tftp on
# service xinetd start

 続いて、/etc/dhcp/dhcpd.confファイルを次のように編集してDHCPサーバーの設定を行う。ドメイン名(domain-name)やネームサーバー(donain-name-servers)については適切なものを指定しておく。

#
# DHCP Server Configuration file.
#   see /usr/share/doc/dhcp*/dhcpd.conf.sample
#   see 'man 5 dhcpd.conf'

option domain-name      "test.sfjpmag";
option domain-name-servers 133.242.0.3, 133.242.0.4;
default-lease-time      600;
max-lease-time  7200;
authoritative;

subnet 192.168.100.0 netmask 255.255.255.0 {
        range dynamic-bootp 192.168.100.100 192.168.100.200;
        option broadcast-address 192.168.100.255;
		filename "/pxelinux.0";
}

 また、DHCPサーバーがローカル接続ネットワーク側に向けてサービスを提供するよう、/etc/sysconfig/dhcpdに下記の行を追加しておく。

# Command line options here
DHCPDARGS=eth1

 設定が完了したらdhcpサーバーを起動する。

# /sbin/service dhcpd start
Starting dhcpd:                                            [  OK  ]

 続いて、PXEサーバーの設定を行う。まず、syslinuxおよびwgetパッケージをインストールする。

# yum install syslinux wget

 次に、ブートに必要なファイルをtftpサーバーで公開するディレクトリ(/var/lib/tftpboot)以下に配置しておく

# cd /var/lib/tftpboot
# mkdir pxelinux.cfg
# cp /usr/share/syslinux/pxelinux.0 .
# vi pxelinux.cfg/default

 pxelinux.cfg/defaultファイルには、次のような内容を記述しておく。

default centos6

label centos6
kernel vmlinuz
append load initrd=initrd.img

 最後に、ブート関連ファイルをダウンロードして公開ディレクトリに配置しておく。今回はCentOS 6.3のネットワークブート用ファイルを国内のミラーサーバーであるftp.jaist.ac.jpからダウンロードしている。

# cd /var/lib/tftpboot/
# wget http://ftp.jaist.ac.jp/pub/Linux/CentOS/6.3/os/x86_64/images/pxeboot/initrd.img
# wget http://ftp.jaist.ac.jp/pub/Linux/CentOS/6.3/os/x86_64/images/pxeboot/vmlinuz

 以上の作業が完了すると、/var/lib/tftpbootディレクトリ以下には次のようなファイルやディレクトリが格納されているはずだ。

# ls -R
.:
initrd.img  pxelinux.0  pxelinux.cfg  vmlinuz

./pxelinux.cfg:
default

 また、外部からUDPの67番および68番ポートとUDPの4011番ポートにアクセスできるよう、ファイアウォールを適切に設定しておこう。

 以上でネットワークブートサーバーの設定は完了だ。この状態で、さくらの専用サーバのコントロールパネルから再インストールするサーバーのコンソールを開き、再起動を実行する。再起動の際は「拡張機能」メニューから仮想キーボードを呼び出しておき、コンソールにサーバーのBIOS画面が表示されたタイミングで「F12」をクリックする(図3

図3 コンソールにBIOS画面が表示されたところで仮想キーボードの「F12」をクリックする
図3 コンソールにBIOS画面が表示されたところで仮想キーボードの「F12」をクリックする

 すると、「Enter Password」画面が表示される。ここでは何も入力せずにEnterキーを入力する(図4)。

図4 パスワード画面では何も入力せずにEnterキーを押す
図4 パスワード画面では何も入力せずにEnterキーを押す

 ブートデバイスを選択する画面が表示されるので、矢印キーで上から3つめの「IBA GE Slot」を選択し、Enterキーを入力する(図5)。

図5 上から3つ目の「IBA GE Slot」を選びEnterキーを押す
図5 上から3つ目の「IBA GE Slot」を選びEnterキーを押す

 これでローカル接続ネットワーク経由でのネットワークブートが行われる(図6)。

図6 ネットワークブート処理が開始される
図6 ネットワークブート処理が開始される

 ネットワークブートサーバーが正しく設定されていれば、CentOSのネットワークインストーラが起動するはずだ。続いてインストール方法として「HTTP」を選択してネットワークインストールを進めていく。

 注意が必要なのが、インストーラではネットワークブートに使われたネットワークインターフェイスがeth0として認識される点だ。このネットワークはインターネットに接続されていないので、インストールするパッケージを取得するネットワークにはeth1を選択しなければならない(図7)。

図7 ブートに使用したデバイスがeth0となるが、こちらはインターネットに接続されていないのでeth1を選択する
図7 ブートに使用したデバイスがeth0となるが、こちらはインターネットに接続されていないのでeth1を選択する

 また、IPアドレスの設定は手動(Manual configuration)を選択する(図8)。

図8 IPアドレスはDHCPではなく手動で設定する
図8 IPアドレスはDHCPではなく手動で設定する

 設定すべきIPアドレスはさくらの専用サーバのコントロールパネルで確認できる(図9)。

図9 入力するIPアドレスはさくらの専用サーバのコントロールパネルに記載されているものを使用する
図9 入力するIPアドレスはさくらの専用サーバのコントロールパネルに記載されているものを使用する

 インストールURLは、たとえば「http://ftp.jaist.ac.jp/pub/Linux/CentOS/6.3/os/x86_64/」などの国内ミラーサーバーを選択すれば良いだろう。これらの設定に問題が無ければ、コンソールにCentOSのGUIインストーラが表示されるはずである。

 GUIインストーラが起動したら、あとは通常のインストール作業とまったく同じ手順で進めていく。今回、ストレージについては次のように設定しておいた(表6、 図10)。

表6 ストレージの割り当て設定
デバイス サイズ(MB) マウントポイント タイプ
sda1 250 /boot ext4
sda2 4000 (なし) swap
sda3 100000 / ext4
sda5 (残り容量のすべて) physical volume(LVM)
図10 今回使用したパーティション設定
図10 今回使用したパーティション設定

 サーバーのインストールが完了したら、作業用のユーザー作成やSSHによるリモートログイン、sudoの設定などを行っておく。また、作業用ユーザーのSSH公開鍵も作成しておく。