Apache CloudStack4.4を体感しよう

CloudStack Advent Calendar2014も前半が終わりました。
折り返しとなる本日12月13日は三島が担当いたします。

今年のCloudStackユーザー会も北は北海道、南(西)は広島まで7回開催し、そのほかのイベントも合わせると、ユーザー会として月に1度以上のペースで何かしらのCloudStackの紹介を行ってきました。
私も初心者向け紹介を担当させていただいたりしていますが、その度に「試してみたいけど、 動かす環境が無い」という声を聞きます。

そこで今回、「リソースも無い、面倒なことはできるだけしたくない、だけど、ちょっとCloudStackを動かしてみたい」、という期待もあるだろうと思い、VMware Player上で体感用のCloudStackのManagement Serverを動かしてみます。
半年ほど前にApache CloudStackのコミュニティ内で、CloudStackのキャッチフレーズは「The Cloud That Just Works!」だ、という話題が盛り上がりましたこともあり、今年の締めくくりに動かしてみましょう♪
ただし、今回は管理対象となるハイパーバイザーも用意していないので、空っぽのCloudStackが動くことになり、あくまで体感です♪

cloudstack

ちなみに、最新となるApache CloudStack4.4.2が12月10日くらいからダウンロード可能になっています。
正式アナウンスはまだですが、毎度のようにフライング的にApache CloudStackの公式サイトには掲載されています。今回利用するバージョンも最新の4.4.2に自動的になりました。

0.動作環境(5年くらい前のノートPC)

・CPU:Intel U2300 1.2GHz 2コア
・メモリ:4GB
・ストレージ:SSD128GBに換装
・ホストOS:Windows7(64bit)
・仮想環境:VMware Player
・ゲストOS:CentOS 6.5(64bit)
・ネットワーク:ゲストOSからのインターネット接続

1.仮想マシンの用意
VMware Player上で仮想マシンを作成し、CentOSのディスクイメージを使い、インストールしました。簡易インストールが選択できたので、それを選択し、VMware Toolsもインストールしました。
パッケージグループの選択は次のとおりです。

・「仮想化」を選択
・「今すぐカスタマイズ」にチェック
→「デスクトップ」からKDE以外のものすべて選択

2.CloudStackの構築
今回はお試し稼動なので、細かいことはせずに最低限の作業で動作させます。インストール作業はGUI上のターミナルでrootになって行いました。動作確認もGUI上のFirefoxで行っています。

2.1 SELinuxの設定変更
SELinuxがenforcingになっているので、これをpermissiveに変更します。

# getenforce
Enforcing     ←Enforcingになっていることを確認
# setenforce Permissive  ←Permissiveに変更
# getenforce
Permissive    ←Permissiveになったことを確認

2.2 CloudStackリポジトリの登録
yumでCloudStackパッケージをダウンロードできるようにするためにリポジトリを追加します。Cloudstack.repoというファイルは無いので、新規で作成します。今回、最新の4.4をインストールするために、リポジトリも4.4を指定します。

# vi /etc/yum.repos.d/cloudstack.repo
[cloudstack]
name=cloudstack
baseurl=http://cloudstack.apt-get.eu/rhel/4.4/
enabled=1
gpgcheck=0

2.3 CloudStackのインストール
yumを使ってインストールします。69パッケージの新規インストールとなり、データ量が350MBほどなので、利用している回線によって多少時間がかかるかもしれません。インストールが正常に完了すると「Complete!」と表示されます。

# yum install cloudstack-management

2.4 MySQLのインストールと設定
MySQLをインストールし、/etc/my.cnfファイルを編集して設定します。my.cnfファイルには下記のように5行追加します。

# yum install mysql-server
# vi /etc/my.cnf
[mysqld]
datadir=/var/lib/
mysqlsocket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
innodb_rollback_on_timeout=1  ←追加
innodb_lock_wait_timeout=600  ←追加
max_connections=350  ←追加
log-bin=mysql-bin    ←追加
binlog-format='ROW'  ←追加[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

2.5 MySQLの起動
MySQLの起動の際には初期状態だとrootユーザーにパスワードが設定されていないので、設定します。ここではパスワードを cloudstack としています。

# service mysqld start
# mysql -u root
mysql> SET PASSWORD = PASSWORD('cloudstack');
Query OK, 0 rows affected (0.00 sec)
mysql> exit

2.6 CloudStackデータベースのセットアップ
CloudStackで利用するデータベースはスクリプトを実行するだけで簡単に作成できます。ここでの引数はMySQLのrootでデータベースの操作を行うとともに、作業データベース操作用のユーザーとしてcloudというユーザーを作成し、パスワードをcloudstackに設定する内容です。ちょっと長めですが、1行で入力します。

cloudstack-setup-databases cloud:cloudstack@localhost --deploy-as=root:cloudstack

コマンドを実行すると、次のように表示されセットアップが完了します。

CloudStack has successfully initialized database, you can check your database configuration in /etc/cloudstack/management/db.properties

2.7 CloudStack管理サーバーのセットアップ
スクリプトを実行することで、管理サーバーのセットアップと起動が行われます。

# cloudstack-setup-management

次の内容が表示され、セットアップが完了するとともにCloudStackの管理サーバーにアクセスできるようになっています。

Starting to configure CloudStack Management Server:Configure sudoers ...         [OK]Configure Firewall ...
[OK]Configure CloudStack Management Server ...
[OK]CloudStack Management Server setup is Done!

2.8 CloudStackへのアクセス
上記作業が終わった後、管理サーバが立ち上がるまで数分かかるかもしれません。VMwarePlayer上の仮想マシンのfirefoxを使って次のURLへアクセスします。

http://localhost:8080/client

VMwarePlayerを動かしているホストPCからもアクセス可能なのですが、ホストPCからのほうが表示に時間がかかりました。
なお、CloudStackのログイン画面の初期設定は次のとおりです。ドメインは空欄です。

ユーザー名:admin
パスワード:password
ドメイン:

これで体感用CloudStack環境の用意は完了です♪

cloudstack

3.最後に
なぜいまさらこんな話なのか、と感じられる方もいるかもしれません。
今回お伝えしたいのは、CloudStackというソフトウエアは比較的容易に動作するものだということです。

しかしながら、実際にクラウド環境を構築して利用する際は、さまざまな環境にあわせ、いろいろと環境ごとに準備、設定をしなければいけないため、複雑になりがちです。CloudStackを使った構築も、実際のところ、環境に合わせて作るのは大変です。

複雑なクラウド環境構築の際に、クラウドOSをどうやって動かすかに悩むのも楽しいのですが、まずは「動くCloudStack」を使って、スピード感あるクラウド環境構築を体感してみてはいかがでしょうか?

Tweet about this on TwitterShare on Facebook41