さくらの専用サーバとOpenStackで作るプライベートクラウド 2ページ
OpenStack環境を構築する
それでは実際にOpenStack環境を構築する手順について説明していこう。サーバーはさくらの専用サーバの「エクスプレスG2シリーズ」を使用する。以下ではまず1台の制御用ノードにすべてのコンポーネント(keystone、nova、glance、horizon)をインストールしてテストを行い、続いて計算用ノードを追加していく、という流れでOpenStack環境を構築していく。仮想マシンインスタンスのストレージは制御用ノードのローカルストレージをネットワーク経由で使用する形とする。
今回構築する環境の概要を図で示したものが図1だ。
ローカルのネットワークは192.168.100.0/24とし、計算用ノードのローカルIPアドレスは192.168.100.21とする。また、仮想マシンインスタンスは192.168.200.0/24という仮想ネットワークに接続される。このネットワークは、br100というブリッジインターフェイスを使い、ローカル接続ネットワークに使用されているネットワークインターフェイス(eth1)とブリッジ接続される形となる。これにより、それぞれのノード内の仮想マシン間はeth1経由で直接通信を行える。
また、それぞれのサーバーにインストールするサービスは次のようになる(図2)。オプションコンポーネントであるSwift(オブジェクトストレージサービス)については今回は使用しない。
サーバーの準備
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)
すると、「Enter Password」画面が表示される。ここでは何も入力せずにEnterキーを入力する(図4)。
ブートデバイスを選択する画面が表示されるので、矢印キーで上から3つめの「IBA GE Slot」を選択し、Enterキーを入力する(図5)。
これでローカル接続ネットワーク経由でのネットワークブートが行われる(図6)。
ネットワークブートサーバーが正しく設定されていれば、CentOSのネットワークインストーラが起動するはずだ。続いてインストール方法として「HTTP」を選択してネットワークインストールを進めていく。
注意が必要なのが、インストーラではネットワークブートに使われたネットワークインターフェイスがeth0として認識される点だ。このネットワークはインターネットに接続されていないので、インストールするパッケージを取得するネットワークにはeth1を選択しなければならない(図7)。
また、IPアドレスの設定は手動(Manual configuration)を選択する(図8)。
設定すべきIPアドレスはさくらの専用サーバのコントロールパネルで確認できる(図9)。
インストールURLは、たとえば「http://ftp.jaist.ac.jp/pub/Linux/CentOS/6.3/os/x86_64/」などの国内ミラーサーバーを選択すれば良いだろう。これらの設定に問題が無ければ、コンソールにCentOSのGUIインストーラが表示されるはずである。
GUIインストーラが起動したら、あとは通常のインストール作業とまったく同じ手順で進めていく。今回、ストレージについては次のように設定しておいた(表6、 図10)。
デバイス | サイズ(MB) | マウントポイント | タイプ |
sda1 | 250 | /boot | ext4 |
sda2 | 4000 | (なし) | swap |
sda3 | 100000 | / | ext4 |
sda5 | (残り容量のすべて) | physical volume(LVM) |
サーバーのインストールが完了したら、作業用のユーザー作成やSSHによるリモートログイン、sudoの設定などを行っておく。また、作業用ユーザーのSSH公開鍵も作成しておく。