次にOpenStackを横(担当機能)に分割してみます。OpenStackは複数のソフトウェアコンポーネントが集合することで形成されています。これはコンポーネントごとに担当する抽象化の機能が異なっているためです。図2にOpenStackの基本機能部分を担当するコンポーネントの概要をまとめます。
いわゆるサーバーに関する機能を担当しています。「KVM」「Xen」といったOSS系から、商用の「VMware」「Hyper-V」も管理可能です。また仮想サーバーだけでなく、ベアメタルサーバーや「Docker」「LXC」などのコンテナ系技術を操作することも可能です。ベアメタルサーバー管理機能については、次の「Kilo」リリースで、「Ironic」というコンポーネントに分割される予定です。これにより、仮想サーバー/コンテナーの「Nova」、ベアメタルの「Ironic」と明確に役割が分割される予定です。
ネットワーク機能を担当します。作成したサーバーをどのようにネットワークに接続するかといった基本的なL2ネットワークから、ネットワーク間のルーティングを担当するL3機能が基本となります。その他にも、起動したサーバーにアドレスを払い出すDHCP機能、ロードバランサー機能、VPN機能、ファイアウォール機能など、多数の機能を備えます。多くのプラグインを備えており、Neutron上で定義した論理ネットワーク構成を、さまざまな実環境下へ構築することができます。
ストレージ機能を担当します。サーバーに対してブロックストレージ機能を提供する他、ブロックストレージのスナップショット、クローンといった一般的なストレージが備える機能をサポートしています。一般的にNovaが管理するディスクよりも、高速で高信頼なデータ保存領域を提供しています。
このNova/Neutron/Cinderの3つは、特に多くのドライバーとプラグインを持ち、数多くのソフトウェア、製品に対応しています。Novaを例に縦の階層構造を図解すると、図3のようになります。
APIが標準化された仮想サーバーの操作方法をユーザーへ提供し、そこで操作されて作られた論理的なインフラのデータが、Novaの持つDBへと格納されます。ドライバーはそのDBを見て、自身が担当するソフトウェアやハードウェアをどのように操作するかを判断して、実際のサーバー環境が構築されていきます。
残りのコンポーネントと、ここに書ききれなかったコンポーネントを含めて以下にまとめました。なお、開発中のものも含めたコンポーネント一覧はこちらをご覧ください。
コンポーネント名 | 担当機能 |
---|---|
Nova | ハイパーバイザーやベアメタルサーバー、コンテナー制御 |
Neutron | ネットワーク制御(L2、L3、LBaaS、VPN、FW) |
Cinder | ブロックストレージ制御とバックアップ機能 |
Glance | OSイメージとスナップショット管理 |
Swift | オブジェクトストレージ機能 |
Horizon | Webベースダッシュボード |
Keystone | 統合認証機能 |
Ceilometer | 統計情報の収集とトリガー発信機能 |
Heat | オーケストレーション機能 |
Trove | DBaaS機能。様々なデータベースをサービスとして利用可能にする |
Sahara | HadoopやSparkといったデータ処理機能を提供する |
表1 「Juno」リリースにおけるOpenStackコンポーネント |
Copyright © ITmedia, Inc. All Rights Reserved.