今回は、OpenStackで構築するIaaS環境とはどのようなものか、全体を俯瞰してみよう。
OpenStackによるIaaS環境で中核となるのは、「Nova」「Glance」「Swift」「Keystone」「Horizon」という五つのコアプロジェクト(=コンポーネント)である。図1に、各コンポーネントと、クラウド管理者/テナント管理者/エンドユーザーの関係を示した。それぞれの概要を以下に紹介しよう。
(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機能を提供可能)