今回は、OpenStackで構築するIaaS環境とはどのようなものか、全体を俯瞰してみよう。

 OpenStackによるIaaS環境で中核となるのは、「Nova」「Glance」「Swift」「Keystone」「Horizon」という五つのコアプロジェクト(=コンポーネント)である。図1に、各コンポーネントと、クラウド管理者/テナント管理者/エンドユーザーの関係を示した。それぞれの概要を以下に紹介しよう。

図1●OpenStackの構成要素と構築したIaaSの全体像
図1●OpenStackの構成要素と構築したIaaSの全体像
[画像のクリックで拡大表示]
(1)Nova:仮想化基盤管理

 NovaはAmazon Web Services(AWS)のAmazon EC2およびEBS(Elastic Block Storage)に相当する機能を提供する。ハイパーバイザにより提供される仮想化されたコンピューティングリソース(仮想マシン、仮想ボリューム、仮想ネットワーク)をリソースプールとして管理するIaaSのサービス基盤の中核部分である。KVM、 XenServer、OpenVZ、VMware vSphere、LXCなど、多様なハイパーバイザをサポートする。

 Amazon EC2互換APIおよびOpenStack APIの2種類のREST APIを備えており、前者は互換APIツール(euca2oolsなど)や互換クライアントライブラリ(Python boto、Ruby RightAWSなど)からオペレーションが可能である。また、後述するHorizonプロジェクトで開発が進められるWebベースのGUIも利用可能である。実装言語はPythonである(Glance、Swiftなど、他のプロジェクトも共通)。

 Novaの内部実装としてはさらに、以下の五つのサブコンポーネントに分かれる。

  • API Server
    REST APIのリクエスト処理
  • Scheduler
    リソース配置のスケジューリング
  • Compute Worker
    仮想マシンの制御
  • Network Controller
    仮想ネットワークの制御
  • Volume Worker
    仮想ボリュームの制御

 これらのコンポーネントが、メッセージキュー(RabbitMQ)およびDBMSを介して、協調・連携して動作する。

 このようなアーキテクチャーにより、仮想化基盤の構成の柔軟性やスケーラビリティーを確保している。

(2) Glance:イメージ管理サービス

 仮想マシンイメージとそれに関連するメタデータを管理し、Novaとマシンイメージの実体が保管されているオブジェクトストレージサービスとの間で、仮想マシンイメージのアップロード、ダウンロードの際のデリバリー制御の機能を提供する。Glanceは以下のオブジェクトストレージサービスを管理できる。

  • Swift(後述)
  • Amazon S3
  • ローカルファイルシステム(Glance単独でも簡易的なS3機能を提供可能)