CloudStackで研究室内プライベートクラウドを作ってみた

この記事は CloudStack Advent Calendar jp:2012 のために書かれたものです.

研究室内にプライベートクラウドをつくる意味

研究を行う上で,サーバ環境を構築するのは面倒で悩ましいことです.
研究室内にプライベートクラウドを構築することで,研究が劇的に加速します.
以下ではプライベートクラウドを構築することによる利点をいくつか紹介します.

究極の使い捨て環境として

「研究に失敗はつきものです.失敗したら捨てればいいんです」
ある日,僕は研究室内Wikiを作ろうと思いましたが,どのWikiがいいのかわかりません.
結局いくつかインストールしてみましたが,気に入らないものもありました.
アンインストールするにも,綺麗な環境に戻るかどうかはわかりません.
また,インストールログを取ろうとした場合には,新しい環境でもう一度作業が必要になります.
またOSのインストールに手戻りするのは面倒なことこの上ありません.
そこで,テンプレートから新しい仮想マシンを作れば,再インストールの手間なしに15秒で環境が用意できます.
失敗したり不要になったりしたら,気軽に捨てて新しいのを用意すれば良いのです.

複数のサーバをCloudStackでまとめる

「1つの機能しか提供していないサーバが複数ありませんか?」
サーバを利用する際に,単純な機能しか提供しないなら,それは消費電力の無駄です.
サーバが待機していても電気は延々と使っているのですから,それが削減できればどれだけ省電力なことでしょう.

研究用のサーバが瞬時に用意できる

「大量のマシンが必要だけど用意が面倒?テンプレートを使えば一瞬ですね」
複数のマシンを使った並列計算の実験環境を用意するのは骨が折れるもの.インストールも面倒です.
そんなとき,1台だけ共通の設定を行い,テンプレートを作りましょう.
必要な分だけ仮想マシンを使えば量産は瞬時に完了します.

Linuxやその他のOSを気軽に利用できる

Linuxとか使ってみたいけど自分のマシンにはインストールしたくない?」
仮想マシンを利用すれば自分の環境は汚さなくても良いのです.
VirtualBoxVMwareさえもインストールの必要はありません.
お気に入りのブラウザを開いてCloudStackにアクセスするだけで,綺麗なWebUIから気軽にアクセスできますね.

構成

研究室内プライベートクラウドを構築した際の環境を示します.
下記の構成で現在も絶賛安定稼働中です.
CloudStackのバージョンは4.0を使用しました.

機器構成
  • 管理サーバ:ThinkPadEdge E430 を使用
  • コンピューティングノード(自作マシン3台)
  • プライマリ/セカンダリストレージ(1台構成)
    • CPU:Intel Core i7 3770 @ 3.40GHz
    • RAM:DDR3 8GB * 4枚
    • HDD:2TB * 4台 (RAID10構成)
    • OS:UbuntuServer 12.04 LTS
ネットワーク構成

研究室毎にクラスCのIPアドレス空間が割り当てられており,1つの研究室あたり255個のIPアドレスしかありません.
そのうちのほとんどは既に利用・予約されているため,新たにクラスBのLANを構築しました.
既存LAN内のIPアドレス消費数は1ですが,65000以上のIPアドレスが使えるようになりました.

ストレージ

現在はプライマリストレージ,セカンダリストレージ共にNFSで構築し,利用しています.
環境構築当初はコンピューティングノードをricciとluciでクラスタリングして,
NASからiscsiで提供されているディスクをGFS2でフォーマットしてプライマリストレージとして利用していました.
しかし,構成方法が悪かったのか安定動作しません.
多いときには3日に1回くらい障害対応をするハメになってしまいました.

ハイパーバイザ

ハイパーバイザにはKVMを使用しています.
XenServerでも良かったのですが,ライセンスの取得に使うXenCenterを動かすWindows環境を用意するのが億劫だったので・・・.

利用用途と利用傾向

現在,研究室の15-20名程度がCloudStackのアカウントを作成し,仮想マシンを起動しています.
以下では,多く見られる利用用途と利用傾向について紹介します.

VNCでデスクトップを表示して利用している人が多い

VNCがすぐに利用できるよう設定済みのUbuntuテンプレートをこちらで用意しました.
普段はWindowsMacを利用している人が多いため,CUI画面には抵抗があるようです.
うちの研究室にはMac利用者が多いため,VNCが標準で利用できます.
WebUIからアクセスするよりも直接VNCでアクセスしたほうが快適に利用できるため,
GUIを使いたい場合はWebUIからのアクセスよりもVNCでのアクセスをおすすめしています.

膨大な実験データが出力される人の解析用

研究によっては膨大な実験データを解析する必要があります.
そんな人は,複数の仮想マシンを用意して,そこにデータを分割して投げています.
解析中に自分のマシンが使えない,あるいはCPU使用率が専有されることがなくなるため,
データの解析中でも他のタスクにマシンを使えます.

ファイルサーバとして

実験データを保存する用途に限らず,ファイルサーバは便利なものです.
USBメモリにデータを保存するよりも,仮想マシン上のファイルサーバに保存したほうが楽ではないでしょうか.
あとはネットワーク経由でアクセスできるため,USBの上下を間違えてイライラすることもありません.
また,自分のマシンはRAID構成にしていなくても,仮想マシンRAID構成になっているので安心です.
ファイルサーバとして利用している人は100GBから200GBくらいストレージを確保する傾向があるようなので,
ファイルサーバ用途が多く出そうな環境では,ストレージ容量はある程度多めに見積もった方が良いでしょう.

MPIやHadoopを使ったプログラムのテスト

OpenMPIを使った並列計算環境を物理マシンで用意しようとすると,
マシンの確保だけでなく,OSのインストールもしんどいものです.
テスト環境をつくるだけなら,テンプレートを使って並列計算の実験環境が瞬時に構築できます.
早急に実験環境を用意しなければならなかった人がいたのですが,
テンプレートを活用することで,実験環境の構築が一瞬で終わりました.

今後の展望:究極のシンクライアント環境

ライブマイグレーションVNCやX11Forwarding等のデスクトップ転送技術を組み合わせれば,
どこにいても高速アクセス可能な究極のシンクライアント環境が実現できます.
必要な要素は以下の通りです.

クラウド上の仮想マシンにメイン環境を用意する

普段利用するPC環境をクラウド上の仮想マシンに用意します.
もうディスクが壊れる心配をしなくて良いだけでなく,世界中どこからでもアクセスできるようになります.
認証方法を工夫すれば,IC社員証Felicaポートに載せるだけで
瞬時に自分の環境にログインできるようなシステムが構築できます.
いつでも,どこでも,アクセスできるユビキタスクラウド環境が目標です.

シンクライアントを各地に点在させる

おしゃれなカフェにsshとXがインストールされたシンクライアントを用意しましょう.
そのマシンから自分の仮想マシン環境にアクセスすれば,いつでも自分の環境が利用できます.
重いラップトップを持ち歩くのは嫌なので,カード1枚でアクセスしたいところですね.

位置情報に応じた仮想マシンのライブマイグレーション

ネットワーク遅延を最小化するため,全国各地にデータセンタを用意します.
この際,利用者が持っているスマートフォンで位置情報を取得し,
その位置をもとに仮想マシンを適切なデータセンタにマイグレーションさせます.
理想的には,シンクライアントが置いてある場所にハイパーバイザがあって,
自動的に仮想マシンマイグレーションさせれば,いつでもLAN内アクセスが可能になります.

おわりに

僕が研究室で構築したプライベートクラウド環境の概要と,
今後実現できそうな(?)クラウドの利用用途を紹介しました.
クラウド環境を利用することによるメリットはかなり大きいと思うので,
様々な場面で利用できるようなユースケースがあると良いですね.

!追記!

コミックマーケット83では「俺のクラウドがこんなに安いわけがない」というタイトルで薄い本を販売します!
研究室内のメンバー数人で記事を寄せ集めたものです.
すべての記事がクラウドに関連しているわけではありませんが,楽しんで読んで頂けるのではないかと思います.
予価500円です!

      • -

期日:12月31日(月)
会場:東京ビッグサイト
サークル名:らぼちっく;げーと
出展位置:東2ホール Y-17a
URL:http://www.laboticgate.net/

      • -

にて販売しておりますので,ぜひお立ち寄り下さい.
お待ちしております!