OpenStack について学ぶ: アーキテクチャー、機能、相互作用

OpenStack は、IBM をはじめ、業界をリードする企業が推進している人気の高いオープンソース・クラウド・コンピューティング・プロジェクトです。OpenStack について概説するこの記事では、OpenStack の全体的なアーキテクチャー、個々のモジュールの機能、そしてモジュール間の相互作用を紹介します。OpenStack の各種コンポーネントについては、連載の他の記事で詳しく説明します。

John Rhoton, Cloud Computing Strategist, Recursive

Author photoJohn Rhoton は、パブリック・クラウド、プライベート・クラウド、ハイブリッド・クラウド・コンピューティングに焦点を絞り、世界の企業を顧客としたコンサルティングを専門とする技術ストラテジストです。彼はさまざまな業界イベントで、モバイル、ソーシャル・ネットワーキング、仮想化などの新興技術に関する講演を頻繁に行っており、また『Cloud Computing Explained』(2009年)、『Cloud Computing Architected』(2011年) など、6 冊の著作があります。



2014年 2月 06日

この記事では、OpenStack の概要を説明します。OpenStack をよく知らない読者のために説明しておくと、OpenStack は、業界をリードするさまざまな企業が協賛するオープンソース・テクノロジー・プロジェクトの集まりであり (「参考文献」を参照)、大規模なクラウドを編成するためのオペレーティング・プラットフォームを提供します。OpenStack のテクノロジーはハイパーバイザーに依存しておらず、そこには一般的なハードウェア上で仮想マシン (VM) をプロビジョニングするためのソフトウェアが統合されています。さらに、分散型のオブジェクト・ストアに加え、ネットワーク・コントローラー、認証マネージャー、管理ダッシュボード、ブロック・ストレージなどの広範なオプション機能も用意されています。

Rackspace Cloud と米航空宇宙局 (NASA) によって発足された OpenStack プロジェクトは、現在、世界で最もよく使われているコンソーシアム主導の IaaS (Infrastructure as a Service) ソフトウェア・スタックとなっています (「参考文献」を参照)。その創始以来、業界に広く支持されてきた OpenStack は、今では 100 社を超える企業が支援しています。その中には業界最大手の企業が数多く含まれており、現在のプラチナ・メンバーには IBM、AT&T、Canonical、HP、Nebula、Rackspace、Red Hat、SUSE などが名を連ねています。

IBM の関与

この連載の読者の多くは IBM に強い関心を持っているはずなので、IBM にとって OpenStack がいかに重要であるかを明らかにしておく価値はあります。2013年 3月に、IBM はオープン・クラウド・アーキテクチャーを発表し、IBM SmarterCloud Orchestrator を筆頭に IBM のすべてのクラウド・オファリングのベースを OpenStack にすることを表明しました。この発表に先立ち、IBM は自社製品と OpenStack の統合に積極的に投資するとともに、このソフトウェアが企業とクラウド・サービス・プロバイダーの要件を満たせるように支援するという形で OpenStack コミュニティーに大きく貢献しました。

SmarterCloud Orchestrator ベータ版

SmarterCloud Orchestrator

皆さんのフィードバックが、開発の方向性に影響を与えることになります。開発中のベータ版を無料で試してください。

IBM が OpenStack を選んだのは、そのアーキテクチャーだけが理由ではありません。OpenStack の開発コミュニティー、オープン・ガバナンス、そして成長し続けているプロバイダーとプラグインのエコシステムなどの存在も理由として挙げられます。IBM はコミュニティーのメンバーとして数々の貢献を直接行ってきましたが、それとは別に、IBM クラウド・ベースの他の多くのアクティビティーが間接的に OpenStack をサポートしています。

例えば、IBM のオープン・クラウド・アーキテクチャーには OASIS TOSCA (Topology and Orchestration Specification for Cloud Applications) 標準が採り込まれています。TOSCA は、IBM、SAP、HP、Rackspace、その他多数の企業によって開発されているオープン・スタンダードです。オープン・スタンダードの効果を最大限に活かすため、この開発に関与している企業の多くが、OpenStack Heat プロジェクトにおける OASIS TOSCA テンプレート記述のサポートを実装する作業にも連携して取り組んでいます。

この他に IBM は OpenDaylight のプラチナ・スポンサーという形で OpenStack に関与しています。OpenDaylight は、SDN (Software-Defined Networking) に対してオープンで透過的なアプローチを作り出すことに尽力する Linux Foundation がまとめているコラボレーティブ・プロジェクトです。このプロジェクトは、過去最大のオープンソース SDN プロジェクトであり、業界の広い支持を得ています。このプロジェクトの使命は、業界標準に基づくオープン SDN プラットフォームを作成することです。例えば、OpenDaylight Project のメンバーによって開発された OpenFlow コントローラーは、OpenStack Networking サービスのプラグインとして使用される予定となっています。

IBM クラウド製品が提供するオープンソース PaaS (Platform as a Service) プラットフォームでは、開発者が PostgreSQL、MySQL、Redis、BLOB ストレージ、エラスティック・キャッシング、サンプル位置情報サービス、SMS サービス、シンプルなソーシャル・サービス、RabbitMQ、MongoDB などの一連のホストされたサービスを利用して、クラウド中心のアプリケーションを作成することができます。


歴史

OpenStack プロジェクトについて理解する一番簡単な方法は、このプロジェクトがどのように進化してきたかを歴史的な観点で見ることです。

OpenStack は、2010年に Rackspace Cloud と NASA によって発足されたプロジェクトで、Rackspace の Cloud Files プラットフォームと NASA の Nebula プラットフォームのコードを統合することから始められました。最初の 2 つのコア・モジュールには Compute、Object Storage という名前が付けられましたが、通常はそれぞれのプロジェクト名である Nova、Swift と呼ばれています。

OpenStack で最も画期的な出来事の 1 つは、劇的かつ急速に成長し続けていることです。年に 2 回以上リリースされることもよくあるため、このテクノロジーに関して一般公開されている情報の大半は古くなっており、どのドキュメントでも、それがどのバージョンに関するものなのかを明確に把握することが重要です。

OpenStack のリリース番号は、リリースされた年とその年のリリースのメジャー・バージョンの両方に基づく YYYY.N 表記で指定されます。例えば、2011年の最初のリリース (Bexar) には 2011.1、次のリリース (Cactus) には 2011.2 という番号が付けられました。マイナー・リリースは、ドット表記で追加されます (例えば、2011.3.1)。

開発者が特定のリリースを指すときには、そのリリースにアルファベット順で付けられているコード名を使用するのが一般的です (表 1 を参照)。OpenStack の場合、メジャー・リリースのコード名は最初が Austin で、その後、Bexar、Cactus、Diablo と続きました。コード名は、OpenStack デザイン・サミットにおいて人気投票で選ばれ、通常はサミットの開催地近くの地名に決定します。

表 1. OpenStack リリース
リリース名リリース番号日付
Austin2010.12010-10-21
Bexar2011.12011-02-03
Cactus2011.22011-04-15
Diablo2011.32011-09-22
2011.3.12012-01-19
Essex2012.12012-04-05
2012.1.12012-06-22
2012.1.22012-08-10
2012.1.32012-10-12
Folsom2012.22012-09-27
2012.2.12012-11-29
2012.2.22012-12-13
2012.2.32013-01-31
2012.2.42013-04-11
Grizzly2013.12013-04-04
2013.1.12013-05-09
2013.1.22013-06-06
2013.1.32013-08-08
Havana2013-10-17

リリースごとに段階的に、新しい機能の統合、ドキュメントの追加、デプロイメントの容易化が行われてきましたが、このロードマップでは、OpenStack イニシアチブを構成するプロジェクトの数も増えています。

前述のとおり、Austin リリースのコア・プロジェクトは、OpenStack Compute (Nova) と OpenStack Object Storage (Swift) の 2 つだけでした。Bexar ではこの 2 つのコア・プロジェクトを補完するために、多くの点でコンピュートとストレージの共通部分を成す Image Service (Glance) が追加されました。このプロジェクトがサポートするイメージは、テンプレート VM のイメージであり、コンピュート・インスタンスをオンデマンドで素早く起動するために OpenStack 内に保管されます。

Essex リリースでは、さらに 2 つのコア・プロジェクトが追加されました。そのうちの 1 つである OpenStack Identity (Keystone) は、それまで Nova で処理していたユーザー管理の要素を Nova に代わって処理します。もう 1 つの OpenStack Dashboard (Horizon) は、個々のテナントと OpenStack 管理者のために、ユーザー・インターフェース (UI) の標準化と単純化を行う目的で導入されました。

Folsom でも、コア・プロジェクトの数は 2 つ増えています。それは、チームが複数のネットワーク・コンポーネント (それまでは、Nova にもネットワーク・コンポーネントが含まれていました) をまとめて 1 つのプロジェクトとして分離させることに決めたためです。このプロジェクトは当初 Quantum と名付けられ、後で Neutron という名前に変更されました。それと同時に、別のチームが OpenStack Block Storage コンポーネント (プロジェクト名 Cinder) を開発しました。


モジュール

Grizzly リリースの時点で、OpenStack は以下の 7 つのコア・プロジェクトで構成されています。

  • Compute (Nova)
  • Networking (Neutron/Quantum)
  • Identity Management (Keystone)
  • Object Storage (Swift)
  • Block Storage (Cinder)
  • Image Service (Glance)
  • User Interface Dashboard (Horizon)

OpenStack Compute (Nova)

OpenStack Compute (Nova) は、クラウド・コンピューティング・ファブリック (インフラストラクチャー・サービスのコア・コンポーネント) を制御します。Python で作成された Nova は、一般商品化されたサーバー・リソース (CPU、RAM、ネットワーク・アダプター、ハード・ディスクなど) を仮想化するための抽象化層を作成し、リソース使用率を向上させる機能や自動化を促進する機能を提供します。

Nova のライブ VM 管理には、サポートされている一連のハイパーバイザーを統合することにより、VM の起動、サイズ変更、一時停止、停止、およびリブートを行う機能があります。また、プロビジョニングの時間を短縮するために、コンピュート・ノードに VM イメージをキャッシングするメカニズムもあります。イメージの実行中は、アプリケーション・プログラミング・インターフェース (API) を利用してプログラムでファイルを保管、管理することができます。

OpenStack Networking (Neutron/Quantum)

以前は Quantum と呼ばれていた OpenStack Networking (Neutron) には、LAN の管理機能に加え、VLAN (仮想 LAN)、DHCP (動的ホスト構成プロトコル)、および IPv6 (インターネット・プロトコル・バージョン 6) 用の機能が組み込まれています。ユーザーは、ネットワーク、サブネット、ルーターを定義して内部トポロジーを構成し、これらのネットワークに IP アドレスと VLAN を割り当てることができます。さらに、フローティング IP アドレスを使用して、VM に対して固定外部 IP アドレスの割り当て (および再割り当て) をすることもできます。

OpenStack Identity Management (Keystone)

OpenStack Identity Management (Keystone) は、ユーザーのディレクトリーと、これらのユーザーがアクセスできる OpenStack サービスのカタログを管理します。その目的は、すべての OpenStack コンポーネントにわたる中央認証メカニズムを公開することです。Keystone は、認証メカニズムそのものを提供するだけでなく、PAM (Pluggable Authentication Module)、LDAP (Lightweight Directory Access Protocol)、OAuth などの各種ディレクトリー・サービスを統合できるように設計されています。これらのプラグインによって、ユーザー名とパスワードをクレデンシャルとして用いた単純な認証システムから高度な多要素認証システムに至るまで、さまざまな認証方式を容易に組み込むことができます。

OpenStack Identity を使用することで、管理者はユーザー全体およびシステム全体に適用される一元化されたポリシーを構成できるようになります。さらに、プロジェクトとユーザーを作成して管理ドメインに割り当て、ロール・ベースのリソース・アクセス権を定義し、他のディレクトリー (LDAP など) を統合することができます。カタログには、単一のレジストリーに含まれるすべてのデプロイ済みサービスのリストが含まれます。ユーザーやツールは、プログラムによって実行されるリクエストを使用するか、ダッシュボードにログインすることによって、アクセス可能なサービスのリストを取得することができます。ダッシュボードでは、リソースを作成して自身のアカウントに割り当てることもできます。

OpenStack Object Storage (Swift)

OpenStack Object Storage (Swift) は、Rackspace Cloud Files 製品をベースにしており、スケールアウト型ストレージに最適な冗長ストレージ・システムです。OpenStack では、データが複製されてプール内のデバイスに分散されることが保証されるため、ユーザーは高価な装置を使用するのではなく、一般商品化されたハード・ディスクおよびサーバーを使用することができます。コンポーネントで障害が発生した場合、OpenStack には他のアクティブなシステムに保管されている内容を新しいクラスター・メンバーに提供する機能もあります。このアーキテクチャーは、水平スケーリングも可能にします。それは、必要に応じてサーバーを追加することで、簡単にストレージ・クラスターを拡張できるためです。

Swift は、主に VM イメージ、バックアップ、アーカイブなどの静的データを対象とした分散ストレージ・システムです。このソフトウェアは、ファイルやその他のオブジェクトを、1 つ以上のデータ・センターの複数のサーバーに分散することが可能な一連のディスク・ドライブに書き込むことで、クラスター全体でのデータの複製および完全性を確実にします。

OpenStack Block Storage (Cinder)

OpenStack Block Storage (Cinder) は、コンピュート・インスタンスが使用するブロック・レベルのストレージを管理します。データベースやファイルシステムなど、パフォーマンスに厳しい制約があるシナリオには、ブロック・ストレージがとても役に立ちます。

Cinder で最も一般的に使用されるストレージは Linux サーバー・ストレージですが、これ以外のプラットフォーム用のプラグイン (Ceph、NetApp、Nexenta、SolidFire など) もあります。クラウド・ユーザーは、ダッシュボードからストレージ要件を管理することができます。このシステムには、ブロック・デバイスの作成、サーバーに対するブロック・デバイスの接続および接続解除を行うためのインターフェースが用意されています。また、スナップショット機能を使用して Cinder ボリュームをバックアップすることもできます。

OpenStack Image Service (Glance)

OpenStack Image Service (Glance) は、VM イメージのサポートを提供します。厳密に言うと、VM インスタンスを起動する際に使用されるシステム・ディスクのサポートです。サービスのディスカバリー、登録、アクティブ化に加え、スナップショットおよびバックアップに対処することもできます。

Glance がサポートするイメージは、新しいサーバーの立ち上げを迅速かつ一貫した方法で行うためのテンプレートとして機能することができます。Glance の API サーバーは、REST (Representational State Transfer)-ful なインターフェースを公開しており、ユーザーはこのインターフェースを使用して、OpenStack Object Storage を始めとする、拡張可能な各種バックエンド・ストアに割り当てられている仮想ディスク・イメージをリストアップして、取得することができます。

Glance のユーザーは、VHD (Microsoft (Hyper-V)、VDI (VirtualBox)、VMDK (VMware)、qcow2 (Qemu/Kernel ベースの仮想マシン)、および OVF (Open Virtualization Format) などのさまざまなフォーマットで、プライベート・イメージとパブリック・イメージをサービスに提供することができます。さらに、新規仮想ディスク・イメージを登録する機能、一般公開されているディスク・イメージの情報を照会する機能、仮想ディスク・イメージを配信する機能を使用することができます。


相互依存関係

標準的な OpenStack 実装には、すべてのプロジェクトではないとしても、ほとんどのプロジェクトが統合されています。

図 1. OpenStack のアーキテクチャー
OpenStack のアーキテクチャーを示す図

この図の中の 3 つの要素がシステムのすべてのコンポーネントとやりとりします。その 1 つである Horizon は、管理者がすべてのプロジェクトを管理するために非常に簡単に使用できるグラフィカル UI です。他の 2 つは、許可されたユーザーの管理に対処する Keystone、コンポーネント間を接続するネットワークを定義する Neutron です。

間違いなく OpenStack のコアであると見なせるのは、Nova です。Nova はワークフローのオーケストレーションを処理します。Nova のコンピュート・インスタンスには通常、何らかの形の永続ストレージが必要で、ブロック・ベース (Cinder) のストレージかオブジェクト・ベース (Swift) のストレージを使用することができます。Nova には、インスタンスを起動するためのイメージも必要です。この要求に対処する Glance は、オプションで Swift をストレージ・バックエンドとして使用することができます。

OpenStack の各プロジェクトが可能な限り独立したアーキテクチャーとなるように努力した結果、ユーザーには、機能のサブセットだけをデプロイして、そのデプロイメントに、同様の機能または補足的な機能を提供する他のシステムやテクノロジーを統合するという選択肢が与えられるようになっています。OpenStack のアーキテクチャーにはこのような独立性があるとはいえ、「プライベート・クラウドが完全に機能するには、事実上すべての機能が円滑に動作しなければならない可能性が高く、これらの要素を緊密に統合する必要が出てくるはずである」という事実が隠されるべきではありません。


ロードマップ

OpenStack を理解する上では、このシステムが現在なお進行中の取り組みであることを念頭に置くことが重要です。OpenStack を現在の形で実装することは可能ですが、この先も大幅に進化していくはずです。例えば、Havana リリースでは、多くの人々が長い間期待していた 2 つの新規プロジェクトが追加されました。それは、OpenStack Metering (Ceilometer) と OpenStack Orchestration (Heat) です。

Ceilometer は、使用量計測データと監視データを中央に収集するメカニズムであり、課金システムが OpenStack コンポーネント全体で必要な使用状況の情報のすべてを取得するための単一のコンタクト・ポイントとなります。Ceilometer がサポートしているカウンター一式は、拡張可能であるとともに追跡することも監査することもできます。

Heat はテンプレートをベースとした、OpenStack のオーケストレーション・エンジンです。Heat では、開発者が RESTful な API によって、複合クラウド・アプリケーションを編成するアプリケーション・デプロイメント・パターンを定義することができます。テンプレートには、ほとんどの OpenStack リソース・タイプ (例えば、Nova インスタンスとフローティング IP アドレス範囲、Cinder ボリューム、Keystone ユーザー) を収容することができます。また、高可用性、自動スケーリング、ネスト型スタックなどに対応する高度な機能もあります。

参考文献

学ぶために

製品や技術を入手するために

議論するために

  • developerWorks コミュニティーに参加してください。ここでは他の developerWorks ユーザーとのつながりを持てる他、開発者によるブログ、フォーラム、グループ、Wiki を調べることができます。

コメント

developerWorks: サイン・イン

必須フィールドは(*)で示されます。


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


お客様が developerWorks に初めてサインインすると、お客様のプロフィールが作成されます。会社名を非表示とする選択を行わない限り、プロフィール内の情報(名前、国/地域や会社名)は公開され、投稿するコンテンツと一緒に表示されますが、いつでもこれらの情報を更新できます。

送信されたすべての情報は安全です。

ディスプレイ・ネームを選択してください



developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

必須フィールドは(*)で示されます。

3文字から31文字の範囲で指定し

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


送信されたすべての情報は安全です。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Cloud computing, Open source
ArticleID=961011
ArticleTitle=OpenStack について学ぶ: アーキテクチャー、機能、相互作用
publish-date=02062014