OpenStack によるクラウド・コンピューティングとストレージ

オープンソースの IaaS クラウド・プラットフォームである OpenStack を使用するメリットを調べる

IaaS (Infrastructure as a Service) クラウド・プラットフォームの分野には、実にさまざまなソリューションがあります。そのなかには Nebula や Eucalyptus などの有名なソリューションもありますが、比較的最近この分野に登場したソリューションに、ユーザー数のみならず、サポートする企業の多さの点でも著しい成長を遂げているものがあります。そのソリューションとは、オープンソース・プラットフォームの OpenStack です。この記事を読んで OpenStack について理解し、OpenStack が実際にオープンソース・クラウド・オペレーティング・システムとなるのかどうかを見極めてください。

M. Tim Jones, Independent author, .

author photo - M. Tim JonesM. Tim Jones は組み込みソフトウェアのエンジニアであり、『Artificial Intelligence: A Systems Approach』、『GNU/Linux Application Programming』(現在、第 2 版です) や『AI Application Programming』(こちらも現在、第 2 版です)、それに『BSD Sockets Programming from a Multilanguage Perspective』などの著者でもあります。技術的な経歴は静止軌道衛星用のカーネル開発から、組み込みシステム・アーキテクチャーやネットワーク・プロトコル開発まで、広範にわたっています。また、コロラド州ロングモン所在の Emulex Corp. のシニア・アーキテクトでもあります。



2012年 9月 13日

クラウドとパブリック IaaS (Infrastructure as a Service) を支える概念は、決して新しいものではありません。実際、Amazon EC2 (Amazon Elastic Compute Cloud) が登場してから今年で 6 年になります。何が変わったかと言えば、IaaS が、機密データを扱うエンタープライズ・コンピューティングの要求を満たすプライベート・クラウド・コンピューティングの手段として注目されるようになったことです。プライベート・クラウド・コンピューティングでは、IaaS の概念をプライベート・インフラストラクチャーに適用します。そうすることでパブリック・クラウドの経済的なメリット (従量課金制サービス) はなくなりますが、プライベート・クラウド・コンピューティングでは企業のデータ・センター内のスケーラブルかつ弾力性のあるインフラストラクチャーを使用して、クラウド・コンピューティングの中心的な原則を活用します。

まずは、IaaS とそのアーキテクチャーについて簡単に説明してから、有力なオープンソースのソリューションである OpenStack の話題に移ります。

IaaS とクラウド・アーキテクチャー

クラウド・コンピューティングのアーキテクチャーでは、オンデマンドでユーザーに公開される共通の仮想リソースに重点を置く傾向があります。これらのリソースには、さまざまに能力の異なる計算リソース、永続ストレージ・リソース、そしてこれらのリソースを条件に応じてインターネットに公開するだけなく、1 つに結び付ける構成可能なネットワーク・リソースが含まれます。

IaaS 実装のアーキテクチャー (図 1 を参照) は、このモデルに従い、さらに (課金用に使用状況を明らかにするための) メータリングなどの他の要素を追加します。物理インフラストラクチャーは仮想化層によって、アプリケーションとユーザーに対して抽象化されます。この仮想化層を実装するのは、ハイパーバイザー (プラットフォームを仮想化するため)、仮想ネットワーク、ストレージなどのさまざまな技術です。

図 1. IaaS の概略図
IaaS の概略図

NASA は OpenStack を放棄したのか?

2012年 5月、NASA は、Rackspace と共同で開発したソリューションである OpenStack への参加を打ち切りました。しかし NASA は OpenStack を放棄したのではなく、OpenStack に対する自らの役割を、開発者としての役割からユーザーとしての役割へと変えたのです。OpenStack の開発者および支援者の数は増え続けています (AT&T、IBM、Dell、Cisco、Yahoo!、Red Hat などの企業からの開発者および支援者など)。そのため、NASA は民間企業の開発者と競争するのではなく、今後は OpenStack のユーザーの立場に移ります。また、NASA は Nebula の開発を中止する予定であることも発表しました。

現在利用できるオープンソースの IaaS クラウド・ソリューションの中で最も人気があるのは OpenStack ですが、これは初のオープンソースのクラウド・ソリューションではありません。実際、OpenStack は、公的機関と民間企業のそれぞれで開発された 2 つのソリューションを組み合わせたものです。

初期の頃のオープンソースの IaaS ソリューションには、研究プロジェクトとしてカリフォルニア大学サンタバーバラ校で開発された Eucalyptus (Elastic Utility Computing Architecture for Linking Your Programs To Useful Systems) があります。他には、OpenNebula (オープンソースのクラウド・コンピューティング・ツールキット) と Nimbus (IaaS クラウド用のもう 1 つのオープンソースのツールキット) というソリューションがあります。OpenStack は、NASA (アメリカ航空宇宙局) の Nebula プラットフォームの一部と Rackspace の Cloud Files プロジェクト (クラウド・ストレージ) を統合したソリューションです。


クラウド・コンピューティングの新参者: OpenStack

IaaS の分野に OpenStack が登場したのは比較的最近のことで、最初にリリースされたのは 2010年後半のことです。OpenStack は登場してからわずか 2 年足らずであり、成熟度に欠けると見なされているものの、このソリューションは今や、最も普及しているクラウド・スタックの 1 つとなっています。OpenStack は単独のソリューションではなく、オープンソースのソリューション一式 (コア・プロジェクトと新しくインキュベーション段階に入ったプロジェクトを含む) で構成されており、その数は増え続けています。そして、これらのソリューションがまとまって、1 つの強力で成熟した IaaS スタックを形成します。

図 2 に示されているように、OpenStack は数々の技術をコアとして構築されています (この図ではすべての技術を示しているのではなく、重要な側面のみを示しています)。左側に示されている Horizon ダッシュボードは、OpenStack サービスを管理するためのユーザー用および管理者用のユーザー・インターフェースを公開します。Nova は、膨大な数のサーバーと仮想マシン (ハイパーバイザーによらない VM) のプロビジョニングと管理をサポートするスケーラブルなコンピューティング・プラットフォームです。Swift が、内部冗長性を備えた極めてスケーラブルなオブジェクト・ストレージ・システムを実装し、一番下にある Quantum と Melange がサービスとしてのネットワーク接続性を実装します。そして Glance プロジェクトが、仮想ディスク・イメージ (サービスとしてのイメージ) のリポジトリーを実装します。

図 2. OpenStack ソリューションのコア・コンポーネントおよび追加コンポーネント
OpenStack ソリューションのコア・コンポーネントおよび追加コンポーネントを示す図

図 2 のとおり、OpenStack は複数のプロジェクトの集まりであり、これらのプロジェクトが 1 つになって完全な IaaS ソリューションを提供します。表 1 に、各プロジェクトとそのそれぞれが寄与する側面を説明します。

表 1. OpenStack を構成するプロジェクトおよびコンポーネント
プロジェクトコンポーネント説明
HorizonDashboardユーザーおよび管理者用ダッシュボード
NovaCompute/block device仮想サーバーおよびボリューム
GlanceImage serviceVM ディスク・イメージ
SwiftStorage as a Serviceオブジェクト・ストレージ
Quantum/MelangeNetworksセキュアな仮想ネットワーク

上記以外の重要な側面には、エンタープライズ・プライベート・クラウドには不可欠の ID サービスを実装する Keystone もあります (計算サーバー、Glance 内のイメージ、および Swift のオブジェクト・ストアへのアクセスの管理用)。


OpenStack のアーキテクチャー

OpenStack を代表するコア・オープンソース・プロジェクトは、Nova (Compute)、Swift (Object Storage)、Glance (Image Service) の 3 つです (図 2 を参照)。Nova (OpenStack Compute) は、サーバー・ネットワーク全体で VM インスタンスを管理します。Nova の API が提供する計算のオーケストレーションは、特定の物理ハードウェアだけでなく特定のハイパーバイザーにも依存しないように努める手法に対応します。Nova には管理用の OpenStack API だけでなく、Amazon EC2 のインターフェースを使い慣れているユーザーのために Amazon EC2 対応 API も用意していることに注目してください。Nova は、独自のハイパーバイザーを使用する組織のために、独自仕様のハイパーバイザーもサポートしますが、それよりも重要な点は、Xen や KVM (Kernel Virtual Machine) などのハイパーバイザー、ならびに Linux Containers などのオペレーティング・システム仮想化をサポートすることです。開発目的では、QEMU などのエミュレーション・ソリューションを使用することもできます。

Swift (OpenStack Object Storage) は、一般商品化されたハード・ディスクを備えた標準的なサーバーを使用して、スケーラブルかつ冗長性のあるストレージ・クラスターを実現するするプロジェクトです。Swift はファイルシステムを表すのではなく、主に静的データ (主要な使用モデルの 1 つは、静的 VM イメージです) を長期間保管する、従来型に近いオブジェクト・ストレージ・システムを実装します。Swift には中央コントローラーがないため、全体的なスケーラビリティーが改善されます。また、Swift は信頼性を高めるために、内部で (RAID を使用せずに) クラスター全体でのレプリケーションを管理します。

Glance (OpenStack Image Service) は、Nova が (Swift 内に保管するオプションを指定して) 使用できる仮想ディスク・イメージのリポジトリーを提供するとともに、単純な REST (REpresentational State Transfer) インターフェースによって、ディスク・イメージを探したり、取得したり、登録したりするための API を提供します。Glance は、仮想ディスク・イメージのフォーマットにとらわれることはほとんどなく、VDI (VirtualBox)、VHD (Microsoft Hyper-V)、QCOW2 (QEMU/KVM)、VMDK/OVF (VMware)、そして Raw ディスク・イメージを含め、多種多様な標準をサポートします。さらに Glance は、完全性のためのディスク・イメージ・チェックサム、バージョン管理 (およびその他のメタデータ)、ならびに仮想ディスク検証用および監査/デバッグ用のログを提供します。

OpenStack のコア・プロジェクト (Nova、Swift、および Glance) は Python で開発されており、いずれも Apache License の下で使用できます。


OpenStack のデモンストレーション

OpenStack には独立したプロジェクトが多数あり、これらのプロジェクトをインストールして互いに連携して機能するように構成しなければならないため、OpenStack のインストールは時間のかかるタスクになります (すべてのプロジェクトのインストールに関する詳細は、「参考文献」を参照)。その一方、OpenStack を稼働状態にするまでの手順を大幅に単純化できるオプションもあるので、好奇心旺盛な読者の方は参考にしてみてください。

私がこれまでに書いた記事を読んだことのある読者なら、私が Linuxベースのソフトウェアを簡単に使えるようにする VM イメージのファンであることはご存知でしょう。VM を使用すれば、ソフトウェアを試したり、実演したりするための新しいインスタンスを簡単に作成することができます。VM は、必要なソフトウェアと一緒にプリインストールして、用途に合わせた構成を事前にすることができ、必要なものを完備した Linux インスタンスです (仮想アプライアンスと呼ばれることもあります)。この方法でソフトウェアをプロビジョニングすれば、そのソフトウェアを使用するのが大幅に簡単になり、プロビジョニング方法を習得するのが難しかったり時間がかかったりするソフトウェアでも試してみることができます。特定のハードウェアおよびベース・オペレーティング・システムのニーズに合ったインストール方法については、「参考文献」を調べてください。

このデモンストレーションには、最新の Ubuntu リリース (12.04) と OpenStack の Essex リリースを使用することにしました。Essex は、uksysadmin のインストール手順 (「参考文献」を参照) に従って、ISO として入手することができます。Ubuntu Precise で OpenStack Essex のクリーン・インストールを完了すると、外部 Web ブラウザーで OpenStack ダッシュボードを表示できるようになります。図 3 に、2 つのコンテナー・フォーマットのゲスト VM イメージが表示されている「System Panel (システム・パネル)」の「Images (イメージ)」タブを示します。

図 3. 使用可能なゲスト・イメージを表示する OpenStack Dashboard ビュー
使用可能なゲスト・イメージを表示する OpenStack Dashboard ビューのスクリーン・ショット

このイメージを使用して、デモ用インスタンスを作成します。図 4 に、起動した状態のデモ用インスタンスを示します。この状態になれば、インスタンスを使用することができます。

図 4. Compute インスタンスを表示する OpenStack Dashboard ビュー
Compute インスタンスを表示する OpenStack Dashboard ビューのスクリーン・ショット

OpenStack で Compute イメージが実行中になった後は、単純な SSH (Secure Shell) セッションとイメージの IP アドレス (172.16.1.1) を使用してイメージにアクセスすることができます (リスト 1 を参照。ユーザー入力は太字で示されています)。

リスト 1. SSH を使用して OpenStack の Compute インスタンスにアクセスする
$ ssh -i Downloads/demo.pem ubuntu@172.16.1.1
The authenticity of host '172.16.1.1 (172.16.1.1)' can't be established.
RSA key fingerprint is df:0e:d0:32:f8:6d:74:49:ea:60:99:82:f1:07:5d:3b.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '172.16.1.1' (RSA) to the list of known hosts.
Welcome to Ubuntu 12.04 LTS (GNU/Linux 3.2.0-23-virtual x86_64)

 * Documentation:  https://help.ubuntu.com/

 System information disabled due to load higher than 1.0

0 packages can be updated.
0 updates are security updates.

Get cloud support with Ubuntu Advantage Cloud Guest
  http://www.ubuntu.com/business/services/cloud

The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.


To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

ubuntu@demo1:~$ 
ubuntu@demo1:~$ hostname
demo1
ubuntu@demo1:~$ ps
  PID TTY          TIME CMD
  835 pts/0    00:00:06 bash
  948 pts/0    00:00:00 ps
ubuntu@demo1:~$

すべての層が実行中になっていると、何が起きているのかを思い描くのは難しいものです。図 5 に示すスタックの全体像が、おそらく難解さを取り除く助けになると思います。このデモンストレーションでベース・プラットフォームとなっているのは、Mac OS X を実行する Mac です。Mac OS X 上で実行される VirtualBox が、(Ubuntu Linux 上で実行される) OpenStack を実行するためのプラットフォームを提供します。VirtualBox は、タイプ 2 のハイパーバイザーであることに注意してください。OpenStack の Linux 層内では、QEMU をゲスト・ハイパーバイザーとして使用します。QEMU は一般商品化されたハードウェアの観点からは理想的ですが、本番用の設定で必要となるパフォーマンスには欠けています。

図 5. 一般商品化されたハードウェア上で実行される OpenStack のデモンストレーション用スタック
The OpenStack demonstration stack running on commodity hardware

ネストされた仮想化 (ハイパーバイザーを別のハイパーバイザーの上位層で効率的に実行する仮想化) はサポートされていないため、OpenStack 内で実行されるゲスト・ハイパーバイザーとして QEMU を使用しています。QEMU を使用すれば、タイプ 2 のハイパーバイザー上で実行されるゲスト・ハイパーバイザー上でゲスト VM を実行することができます。このセットアップは、速度の点では劣るかもしれませんが、一般商品化されたコンピューター・システム上で実行される IaaS を完全にデモンストレーションします。現在、AMD プロセッサーのなかには、ネストされた仮想化をサポートするための有効な手段を提供するものもあることに注意してください。

パフォーマンスの点からは、QEMU を使用するのは理想的な方法ではありませんが、QEMU は概して KVM (ハイパーバイザーとしての Linux) との相性が良いため、(VM イメージがこの 2 つのハイパーバイザーに対応するのみならず) 2 つのハイパーバイザー間でのマイグレーションが単純化されます。このデモンストレーションで QEMU が理想的な選択となる理由は、QEMU は仮想化をまったくサポートしていないハードウェア上でも実行できるためです。この例でのプラットフォームは仮想化に対応しますが、(それ自体がハイパーバイザーである) VirtualBox 上で実行しているため、ネストされた仮想化がサポートされないことから、仮想化の拡張機能を利用しないゲスト・パイパーバイザーを使わざるを得ません。いずれにしても、VM の管理 (起動、停止、監視など) には libvirt を使用するので、仮想化対応のハードウェア上の KVM にマイグレーションするには、OpenStack 構成ファイル内の 2 行を変更するだけで済みます。


OpenStack のその他の使用方法

クラスターがない場合は、別の方法で OpenStack のメリットを享受することができます。NASA と共同で OpenStack を作成した Rackspace では、将来クラウド界の Linux になることが期待される OpenStack クラウド・プラットフォームを提供しています。Rackspace の OpenStack クラウド・プラットフォームには、OpenStack のメリットに加え、パブリック・クラウド・インフラストラクチャーの柔軟性とスケーラビリティーが備わっています。

OpenStack のプライベート・クラウド用インストールを単純化するために、多くの企業ではプライベート・クラスター内で OpenStack を使用しやすくすることに重点的に取り組んできました。そのような企業のうち、例えば Piston Cloud Computing では、OpenStack をベースとするプライベート・クラウド・オペレーティング・システム、Piston Enterprise OS を提供しています。また、Mirantis は、OpenStack インフラストラクチャーを構築するための専門的サービスを企業に提供しています。


OpenStack の今後

OpenStack は今でも引き続き新しい機能を統合し、IaaS ソリューションというものの定義の水準を引き上げています。OpenStack の傘下で他にも数々のプロジェクトが使用可能になっていますが、インキュベーション・プロセスが完了していないプロジェクトもあります。そのうちの 1 つである Keystone プロジェクトは、既存の認証システムを統合すると同時に、OpenStack コンポーネント全体で認証を統一する ID サービスを提供します。また、サービスとしてのロード・バランシング (Atlas-LB)、クラウド・インストールおよび保守システム (Crowbar)、クラウド上でプロビジョニングできるスケーラブルなリレーショナル・データベース(RedDwarf)、クラウド・オーケストレーションのための REST ベースの API (Heat)、そして監視や課金などに対応するクラウド管理ツール (Clanavi) などといった、コミュニティー・プロジェクトもあります。OpenStack プロジェクトの内外で開発中のプロジェクトも多数あり、OpenStack が勢いに乗っているなか、プロジェクトのリストは毎日のように拡充されています。

OpenStack に競合相手がいないわけではありません。OpenStack 以前に登場したプロジェクトは今でも進化を続けています。さらに、新しいプロジェクトも登場してきています。例えば、(2009年に初めてリリースされた) CloudStackはいくつかの本番環境にインストールされています。ただし、そのオープンソース・コントリビューターによるサポートは、OpenStack に見られるようなレベルにまでは達していません。


さらに詳しく調べてください

Linux があらゆる使用モデルに適合する汎用オペレーティング・システムへと進化してきたように、OpenStack も代表的なクラウド用オペレーティング・システムとしての地位を固めつつあります。限られたコアとローカル・リソース一式を管理する代わりに、OpenStack は、計算リソースとストレージ・リソースが含まれるサーバーからなる膨大なネットワーク、そしてそのコンポーネントのすべてを 1 つに結び付ける仮想ネットワークを管理します。

OpenStack プロジェクトは 2010年後半の最初のリリース (Austin) から 2012年の最新リリース (Essex) までの間に、4 つのバージョンをリリースしています。リリースを重ねるごとに、OpenStack は新機能の追加と既存の機能の改善を推し進め、他の IaaS ソリューションに対する要求水準を引き上げてきました。現在 Apache の傘下に置かれている OpenStack が、クラウド・スタックの標準となっているのは当然の成り行きです。

参考文献

学ぶために

  • OpenStack の公式 Web サイトは、OpenStack のプロジェクト・ファミリー、コミュニティー・プロジェクトに関するニュース、資料をはじめ、あらゆる OpenStack 関連の情報を入手できる唯一のソースです。
  • Linux によるクラウド・コンピューティング」(M. Tim Jones 著、developerWorks、2009年2月) では、Linux ベースである前提のもと、クラウド・コンピューティングとその各種のテーマ (IaaS, PaaS、SaaS) を紹介しています。
  • オープンソース・クラウドの徹底調査」(M. Tim Jones 著、developerWorks、2010年3月) は、オープンソースの観点で、クラウド・コンピューティングについての詳細を紹介している記事です。この記事では、ノード・アーキテクチャー、クラスター・アーキテクチャー、そしてこれらの要件を実装するオープンソース技術を紹介しています。
  • クラウド・ストレージ・インフラの徹底調査」(M. Tim Jones 著、developerWorks、2010年11月) では、一般的なアーキテクチャー、管理容易性、パフォーマンス、スケーラビリティー、可用性を含め、クラウド・ストレージ・インフラの内部構造について詳しく探っています。また、各種のクラウド・ストレージ・モデル (プライベート、パブリック、およびハイブリッド) についても検討しています。
  • OpenStack は単一のプロジェクトではなく、スケーラブルで信頼性の高いクラウドをまとまって実装する多種多様なプロジェクトからなる包括的プロジェクトです。OpenStack のコア・プロジェクトには、 NovaSwiftGlance があります。現在インキュベーション・プロセスが進められている (近くコア・プロジェクトになる予定の) プロジェクトには、KeystoneHorizon の 2 つがあります。さらに、QuantumMelangeAtlas-LBCrowbarHeatClanavi など、OpenStack の機能を拡張または追加する数々のコミュニティー・プロセスもあります。
  • Installing OpenStack Walk-through」で、本番用の OpenStack をインストールするための完全な手順を説明しています。
  • VM のコンテキストで OpenStack を使用するためのオプションがいくつかあります (アルファ版リリースを含む各種リリースを越えたオプション)。(Rackspace Cloud Builders による) DevStack、 OpenStack の「Running OpenStack Compute (Nova) in a Virtual Environment」、そして System Administration and Architecture Blog の「Screencast Video of an Install of OpenStack Essex on Ubuntu 12.04 under VirtualBox」(デモンストレーションではこのサンプルを使用しました) を調べてください。
  • OpenStack によるプライベート・クラウドに関する専門的な支援が必要な場合、そのサポートを提供できる企業がいくつかあります。そのなかに、Piston Cloud ComputingMirantis が含まれます。
  • CloudStack は、OpenStack の競合相手となるスタックで、数々の本番環境でインストールされています。
  • developerWorks のクラウド開発者向けリソースで、クラウド開発プロジェクトを作成しているアプリケーションおよびサービス開発者たちの知識と経験を調べて共有してください。
  • Twitter で developerWorks をフォローしてください。また、この記事 M. Tim Jones を Twitter でフォローすることもできます。
  • developerWorks のDemos で、初心者向けの製品のインストールおよびセットアップから熟練開発者向けの高度な機能に至るまで、さまざまに揃ったデモを見てください。

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

  • ご自分に最適な方法で IBM 製品を評価してください。評価の方法としては、製品の試用版をダウンロードすることも、オンラインで製品を試してみることも、クラウド環境で製品を使用することもできます。また、SOA Sandbox では、数時間でサービス指向アーキテクチャーの実装方法を効率的に学ぶことができます。

議論するために

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

コメント

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
ArticleID=834227
ArticleTitle=OpenStack によるクラウド・コンピューティングとストレージ
publish-date=09132012