Ubuntu Weekly Recipe

第345回 UbuntuとOpenNebulaでクラウド環境を構築してみよう(前編)

この記事を読むのに必要な時間:およそ 7 分

2016年7月6日:記事を更新しました

2014年10月15日の掲載時,インストール時に必要な手順が一部不足している状態でしたので,不足部分を追記いたしました。追記部分は3ページ目,⁠フロントエンドセットアップ」内の「Rubyライブラリのインストール」です。

KVMやXenなどの仮想化技術を使って物理マシン上に複数の仮想マシンを作成し,用途に応じて使い分ける,と言った運用は珍しくなくなってきました。仮想化支援機能を持つCPUが広く出まわるようになり,メモリも大容量化しているため,私用でも日常的に仮想マシンを立ち上げている,と言う方も多いと思います。

管理する物理マシンや仮想マシンが少ないうちは,各物理マシンにログインしてvirshコマンド等から個々の仮想マシンを操作する,という運用でも困りません。 しかし利用者や物理マシンが増えてくると,どの物理マシン上に誰の仮想マシンが稼働しているかと言った情報や,新しく仮想マシンを作成する際にどの物理マシンのCPUやメモリが空いているかと言った情報を,人力で管理することが加速度的に難しくなって行きます。

管理者の視点からは,CPUやメモリ搭載量と言ったハードウェアリソースを人間に代わって掌握し,利用者の要求に応じて適切な物理マシン上に仮想マシンを作成する管理機能が欲しくなります。利用者の視点からは,ハードウェアリソースを意識することなく,自分の好きなときに簡単に仮想マシンを作成し,使い終わったら返却するインターフェースが欲しくなります。 このような,いわゆるクラウド的な要望を実現する管理ツールとして,有名所ではOpenStack,CloudStack,Eucalyptusなどがあります。

今回紹介するOpenNebulaもクラウドを構築・管理するツールの1つです。

図1 OpenNebula環境で仮想マシンを作成しVNCコンソールからアクセスしたところ

図1 OpenNebula環境で仮想マシンを作成しVNCコンソールからアクセスしたところ

OpenNebulaってどんなもの?

OpenNebula.org注1で開発しているクラウド構築管理ツールです。データセンターのような多数の物理マシン/マルチユーザー環境での仮想マシン管理,と言う観点から開発が進んでいます。

先に名前を挙げたOpenStack,CloudStack,Eucalyptusは,全体的にどことなく商用クラウドサービスのAWS(Amazon Web Service,とりわけAmazon EC2やS3)に似た雰囲気を持ちますが,OpenNebulaの場合はあまりAWSっぽくありません。 だからと言って使いにくいということはなく,仮想マシンの管理に必要な機能を骨格に,利用者と管理者にとっての「あると便利な機能」を肉付けして,独自の進化を遂げている感があります。

OpenNebulaの最初のパブリックリリースは2008年3月で,このジャンルのソフトウェアの中では意外と古株だったりします。

使われ方としては,企業や研究所,大学などの学術機関で,組織内の利用者にプライベートクラウドとして提供する,という用途が多いようです。 Ubuntuでの使用実績も充分あり,2014年にOpenNebula.orgの公式サイトでアンケートを取った結果,OpenNebulaの構築に使用しているディストリビューションの比率ではUbuntuが36%という結果になっています注2)⁠

開発はコミュニティベースで進められており,ソースはApache License Version 2.0で公開されています。 対応しているハイパーバイザはKVM,Xen,VMwareです。

注1)
http://opennebula.org/about/project/
注2)
http://opennebula.org/opennebula-cloud-architecture-survey-2014/ CentOSの46%に次ぐ比率です。

特徴

OpenNebulaはシンプルでフレキシブルなクラウド管理ツールです。⁠シンプル」は少機能の意味ではなく(むしろ一度に紹介しきないくらい多機能です)⁠構築の簡易さ,システム構成の見通しの良さなどを意味します。

ここではOpenNebulaの特徴をいくつかピックアップします。

実装

コアとなるOpenNebulaデーモン(oned)はC++で実装されています。

各種リソースに対する処理は,bashやRubyで書かれたドライバスクリプトを介して行います。使用するハイパーバイザ(KVM,Xen,VMware)⁠ネットワーク制御(802.1Q,iptables,Open vSwitchなど)⁠ストレージ(NFS共有,ローカルストレージ,Cephなど)の差異は,このドライバスクリプトで吸収しています。

onedから物理マシン上の仮想マシンに対する操作はSSH経由で行います注3)⁠物理マシンをOpenNebulaに登録した際にドライバスクリプトが物理マシン上にコピーされ,以降はonedがSSHで物理マシン上のドライバスクリプトを実行して仮想マシンの操作を行います。

OpenNebulaに公式では実装されていない機能をアドオンで追加することが可能です。コミュニティの手によるアドオンも公開されています注4)⁠

注3)
権限は基本的にOpenNebula用アカウントのoneadmin権限で,一部root権限が必要なコマンドはsudoを使用します。SSHの認証方式は公開鍵認証です。
注4)
たとえばハイバーバイザにKVMを使用する環境での,SR-IOV対応デバイス用ドライバスクリプトなど。

CLIとSunstone

OpenNebulaはコマンドラインインターフェース(CLI)図2とWebインターフェースのSunstone図3を持ちます。CLI,Sunstoneのどちらもほぼ同等の操作が可能です。

図2 コマンドラインインターフェース

図2 コマンドラインインターフェース

図3 WebインターフェースSunstone

図3 WebインターフェースSunstone

CLI,Sunstoneは共にRubyで実装されています。

Sunstoneは独立したデーモンプロセスとして稼働します。onedとCLIおよびSunstone間の通信はXML-RPCを使用します。 これにより,onedとは別のマシンにCLIやSunstoneをインストールし,ユーザーがアクセスするマシンとonedが稼働するマシンを分離することも可能です。

Sunstoneは用途によってadmin, vdcadmin, user, cloudの4つのビューを切り替えることができます。 管理者はフルコントロール可能なadminビューを使用し図4)⁠一般ユーザー向けには仮想マシンの起動停止など基本的な操作を提供するcloudビュー図5)⁠一般ユーザーの中でもグループのリーダー的なユーザーにはグループメンバーの利用状況が把握できるvdcadminビューを提供する図6)⁠と言った使い分けが可能です。

図4 Sunstone adminビュー

図4 Sunstone adminビュー

図5 Sunstone cloudビュー

図5 Sunstone cloudビュー

図6 Sunstone vdcadminビュー

図6 Sunstone vdcadminビュー

CLIでのコマンド出力フォーマットやSunstoneのボタン配置などは,YAML形式のコンフィグファイルでカスタマイズできます図7)⁠

図7 Sunstone cloudビューのコンフィグファイル

図7 Sunstone cloudビューのコンフィグファイル

著者プロフィール

大田晃彦(おおたあきひこ)

株式会社 創夢 所属。UbuntuとGentooでアニメを録画したりしながら暮らしています。全体的に浅いです。

コメント

コメントの記入