本文へジャンプ

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


お客様が developerWorks に初めてサインインすると、プロフィールが作成されます。プロフィールで選択した情報は公開されますが、いつでもその情報を編集できます。お客様の姓名(非表示設定にしていない限り)とディスプレイ・ネームは、投稿するコンテンツと一緒に表示されます。

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

  • 閉じる [x]

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

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

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


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

  • 閉じる [x]

オープンソース・クラウドの徹底調査

IaaS の構成要素

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

概要: クラウド・コンピューティングはもはや、これから成長を遂げようとしている技術ではなく、私たちがアプリケーションを使用し、開発する方法を今まさに根本から変えている、価値ある重要な技術となっています。もちろん Linux® およびオープンソースでも、クラウドの基盤を (パブリック・インフラストラクチャーおよびプライベート・インフラストラクチャーともに) 提供しています。この記事では、クラウドとそのアーキテクチャーの詳細を探り、この動的でスケーラブルなコンピューティング/ストレージ・プラットフォームを構築するために使用されているオープンソース技術について具体的に説明します。

日付:  2010年 3月 09日
レベル:  中級 この記事の原文:  英語
アクティビティー: 20815 ビュー
お気軽にご意見・ご感想をお寄せください: 


分散システム、つまりインターネットではごく一般的にクラウドを抽象化技術として使用しています。しかし、ここ数年の間、この抽象化は (ローカル・サービスまたはリモート・サービスに関わらず) サービスとして容易にプロビジョニングできる、極めてスケーラブルな仮想インフラストラクチャーを組み込むまでに拡大しています。この記事ではクラウド・アーキテクチャーの定義とその利点についての説明は差し控えます。これらの詳細については、一読する価値のある優れた資料を「参考文献」セクションに記載しているので、そちらを参照してください。

クラウド・コンピューティングの徹底調査

この記事ではまず、クラウド・アーキテクチャーの中核となる抽象化技術について (IaaS (Infrastructure as a Service) の観点から) 説明した後、インフラストラクチャーを構成する技術、さらにはより統合されたソリューションへと話を進めていきます。

よく使われる頭字語

  • API: Application Programming Interface
  • I/O: Input/Output
  • SLA: Service-Level Agreement
  • UI: User Interface

動的でスケーラブルなアーキテクチャーを構築する上で、仮想化は必須というわけではありませんが、他にはない独特の利点をもたらすことは確かです。仮想化はスケーラビリティーだけでなく、負荷分散を目的とした物理サーバー間での仮想マシン (VM) のマイグレーションを可能にします。図 1 に、ハイパーバイザー、または仮想マシン・モニター (VMM) とも呼ばれるソフトウェア層が提供する仮想コンポーネントを示します。この層により、単一の物理マシンで複数のオペレーティング・システム (およびそれぞれのアプリケーション) を同時に実行できるようになります。ハイパーバイザーの上にあるのが、オペレーティング・システム、アプリケーション、および構成をカプセル化する仮想マシンと呼ばれるオブジェクトです。さらにオプションで、デバイスのエミュレーションをハイパーバイザーで行うことも、または VM として提供することもできます。このような仮想化による新しい動的特性と、それによって提供される新しい機能には、新たな管理方式が必要となります。この場合に最適なのは層単位での管理です。つまり、サーバーでのローカル管理を考慮し、さらにその上位にあるインフラストラクチャーの管理を考慮して、仮想環境全体の調整を取るという方式です。


図 1. クラウド内の各ノードを構成するコア要素
クラウドのコア要素の階層を示すアーキテクチャー図

図 1 のノードを、共有ストレージを備えた物理ネットワークで何倍にも増やすとします。そしてインフラストラクチャー全体での管理を調整した上で、キャッシングとフィルタリングを使用して (専用設定または一般設定に関わらず) 着信接続の負荷分散をフロントエンドで行うとしたら、それがすなわち、クラウドと呼ばれる仮想インフラストラクチャーとなります。図 2 に、この新しい構造を示します。VM が各ノードの負荷に応じてノード全体での負荷分散を (しかも動的に) 行うことにより、休止中のマシンについては、さらなる計算処理を行う必要が出てくるまで電源を切った状態にしておくことができます (これにより、電力効率が向上します)。


図 2. クラウド・コンピューティングのインフラストラクチャー
物理ネットワーク/ストレージからユーザー/インターネットにサービスを提供するまでに、クラウド内のさまざまな層が相互作用する仕組みを示す図。

クラウドの基本アーキテクチャーの定義は以上のとおりです。次は、動的なクラウド・インフラストラクチャーを構築するためにオープンソースが適用されている場合について説明します。


中核となるオープンソース技術

現在、Linux の世界では、クラウド・ソフトウェア・パッケージの仮想化、管理、そして大規模な統合を目的とした仮想インフラストラクチャーの開発が盛んに行われています。まずは個々のノード・レベルでのオープンソース技術について見ていくことにし、それからインフラストラクチャーに視野を広げて現在の動向を探ることにします。

ハイパーバイザー

ノード・レベルでクラウドのベースとなるのはハイパーバイザーです。仮想化が必須というわけではありませんが、仮想化によってアーキテクチャーにスケーラビリティーと電力効率とがもたらされることは間違いありません。オープンソースの仮想化ソリューションはいくつもありますが、なかでも重要なのは、Linux オペレーティング・システムをハイパーバイザーに変身させる 2 つのソリューション、Linux KVM (Kernel Virtual Machine) と Lguest です。KVM は正式なハイパーバイザー・ソリューションとして本番環境にデプロイされます。Lguest は Linux に重点を置いたソリューションであり、実行するのは Linux VM だけですが、カーネルに統合されて広範に使用されています。

Linux をハイパーバイザーに変換するという手法の他に、ゲスト VM 中心の手法を採用しているソリューションもあります。UML (User-Mode Linux) は、(ハイパーバイザー拡張を使用していない) 別の Linux オペレーティング・システム上で稼働するようにゲスト Linux カーネルを変更するという手法です。しかし、ほとんどのユーザーはカーネルを変更せずにそのまま実行することを選ぶので、UML よりは完全仮想化ソリューション (KVM など) のほうが好まれます。

UML もよく使われていますが、この手法を使用する場合には、仮想ハードウェア (コンソール、仮想ディスク、ネットワーキングなど) が必要となります。

デバイスのエミュレーション

ハイパーバイザーは、CPU を複数のオペレーティング・システムで共有する手段となります (CPU 仮想化)。けれども完全仮想化を行うには、VM 用に環境全体を仮想化しなければなりません。マシン (またはプラットフォーム) のエミュレーションを行うにはいくつもの方法を使えますが、よく使用されていて、多数のハイパーバイザーをサポートしているのは QEMU というオープンソース・パッケージです。QEMU は完全なエミュレーター兼ハイパーバイザーですが、KVM はユーザー空間での独立したプロセスとしてデバイスのエミュレーションを行うために QEMU を利用します (図 1 を参照)。QEMU の興味深い特徴は、QEMU はディスクのエミュレーション (QCOW フォーマットを使用) を行うことから、スナップショットやライブ VM マイグレーションなどといったエミュレーション以外の高度な機能も提供することです。

KVM ではカーネル 2.6.25 以降、I/O 仮想化パフォーマンスを最適化する手段として virtio を採用しています。virtio による最適化の仕組みは、ゲストからの接続によって準仮想化ドライバーをハイパーバイザーに組み込み、パフォーマンスをネイティブに近いレベルにまで引き上げるというものです。この仕組みは、オペレーティング・システムをこの目的に合わせて変更することが可能でなければ機能しませんが、Linux ハイパーバイザーのシナリオでは Linux ゲストで使用されています。

現在、virtio と QEMU は連動するようになっているため、ユーザー空間の Linux ゲストと QEMU エミュレーターとの間でエミュレート対象のデバイス・トランザクションを最適化することができます。

仮想ネットワーキング

VM と物理サーバーが統合されると、プラットフォームでのネットワーキングのニーズは増大します。その一方、VM のネットワーキングをすべてプラットフォームの物理層に押し付けるのではなく、代わりにローカル通信自体を仮想化することも可能です。VM 間でのネットワーク通信を最適化するためには、vSwitch という仮想スイッチを導入するという方法があります。vSwitch は、物理スイッチのように振る舞うものの、図 3 のようにプラットフォームに仮想化されます。この図を見るとわかるように、VM に関連付けられた仮想インターフェース (VIF) は、仮想スイッチを介して物理インターフェース (PIF) と通信します。


図 3. Open vSwitch と仮想インターフェースおよび物理インターフェースの概要図
この図には、下から上へ順に、物理ドメイン、物理インターフェース、仮想インターフェース、VM が示されています。

オープンソースでも VM のネットワーキングのニーズに対処するために、Open vSwitch という非常に興味深いソリューションを使用しています。Open vSwitch は仮想環境での仮想スイッチとしての役割を果たすだけではありません。物理プラットフォーム全体を統合し、仮想ローカル・エリア・ネットワーク (VLAN)、優先度に基づくサービス品質 (QoS)、トランキング、ハードウェア加速化のサポート (シングル・ルート I/O 仮想化 (IOV) ネットワーク・アダプターなど) といったエンタープライズ・レベルの機能を提供することもできます。現在 2.6.15 カーネルで使用可能になっている Open vSwitch は、Linux ベースの仮想化ソリューション (Xen、KVM、VirtualBox) および管理標準 (RSPAN (Remote Switched Port Analyzer)、NetFlow など) をサポートします。

VM のツールと技術

VM はオペレーティング・システム、ルート・ファイルシステム、そして構成をまとめて集約したものであることから、ツールを開発するにはうってつけの場所です。けれども VM とツールの十分な潜在能力を実現するためには、VM およびツールを移植できるようにアセンブルしなければなりません。OVF (Open Virtualization Format) と呼ばれる現在の手法は、柔軟性と効率性に優れ、移植可能な VM 構成フォーマットです。OVF は仮想ディスク・イメージを、VM の構成を定義する XML ラッパーでラップします。XML ラッパーが定義する構成情報には、ネットワーク構成、プロセッサーおよびメモリーの要件だけでなく、イメージとそのプラットフォームのニーズをさらに詳しく定義するための各種の拡張可能なメタデータも含まれます。OVF によってもたらされる主な特徴に、ハイパーバイザーに依存しないように VM を分散するための移植性があります。

VM イメージ (VMI) を管理するためのユーティリティーや、VMI と他のフォーマットとの間での変換を行うためのユーティリティーは数多くあります。例えば VMware の ovftool は、VMI の変換 (例えば、VMDK (VMware Virtual Disk Development Kit) フォーマットから OVF への変換) に使用できる便利なツールです。このツールや他のツールは、すでにVMI が存在する場合に役立ちますが、これから VMI に変換しようとしている物理サーバーについてはどうでしょうか。その場合には、Clonezilla というツールが活躍します。このツールは元々、災害時の復旧を目的としたディスク複製ツールとして開発されたものですが、仮想インフラストラクチャーへのデプロイを容易にするために物理サーバーのインスタンスを VM に変換するという場合にも使用することができます。OVF フォーマットの採用が進むなか、開発中のツールも含め、OVF を対象とした変換および管理用のツールは他にも多数あります (libvirtをベースに作成されたユーティリティーなど)。

ローカル管理

この記事では管理について、2 つの観点から見ていきます。このセクションではプラットフォームの管理を取り上げ、後のセクションで、プラットフォームの上位レベルにあるインフラストラクチャーの管理に話題を展開します。

Red Hat では、プラットフォーム仮想化 (ハイパーバイザーおよび VM) を管理する API として libvirt ライブラリーを発表しました。libvirt の興味深い点は、数々のハイパーバイザー・ソリューション (そのうちの 2 つは KVM と Xen ) をサポートし、多数の言語 (C、Python、Ruby など) の API バインディングを提供していることです。libvirt は管理の「ラスト・マイル」を提供し、プラットフォームのハイパーバイザーと直接インターフェースを取って、API をさらに大きなインフラストラクチャー管理ソリューションに拡大します。libvirt は VM の起動および停止を容易にするだけでなく、プラットフォーム間での VM のマイグレーションなどといった、より高度な操作のための API を提供します。libvirt を使用することで、virsh と呼ばれる (libvirt をベースに作成された) シェルも使用できるようになります。


インフラストラクチャーのオープンソース技術

仮想ノード・レベルでのオープン・ソリューションをいくつか説明したところで、今度はこのインフラストラクチャーをサポートする他のオープンソース・アプリケーションに目を向けたいと思います。この記事では 3 つのカテゴリーを検討します。最初の 2 つは、前述のソリューションを補完するインフラストラクチャー・レベルの技術です。続いて 3 番目のカテゴリーとして、すべての要素をまとめて簡単にデプロイできる統合ソリューションを検討します。

I/O 技術

スケーラブルで負荷分散が行われた Web アーキテクチャーを構築するには、バックエンドの機能を実装するサーバー間で Web トラフィックの負荷を分散することが不可欠です。負荷分散ソリューションは多数存在しますが、最近、Yahoo! が Traffic Server というソリューションをオープンソースとして公開しました。Traffic Server の面白いところは、クラウド・インフラストラクチャーを対象に、セッション管理から認証、フィルタリング、負荷分散、そしてルーティングに至るまでの多数の機能が含まれている点です。この製品は当初、Yahoo! が Inktomi から買収したものですが、現在は Yahoo! によって拡張され、オープンソースとして公開されています。

インフラストラクチャーの管理

大規模なインフラストラクチャーを管理 (多くのハイパーバイザーだけでなく、さらに多数の VM を管理) するには、いくつかの方法があります。最もよく使われている 2 つのソリューションは、いずれも同じプラットフォーム (libvirt) から作成されています。そのうちの 1 つは、oVirt パッケージです。このオープンソースの VM管理ツールは、少数の VM から、数百のホスト上で稼働する何千もの VM にまで拡張することができます。Red Hat によって開発された oVirt パッケージは、Web ベースの管理コンソールであり、従来の管理に加え、クラスタリングと負荷分散の自動化をサポートします。oVirt ツールは Python 言語で作成されています。よく使用されているもう一方のツールは、VirtManager です。これも同じく libvirt をベースに Red Hat によって開発されましたが、oVirt のように Web ベースのアプリケーションではなく、GTK+ UI を使用したアプリケーションとなっています。VirtManager の表示 (ライブ・パフォーマンスとリソース使用状況の表示) は、グラフィックに関して遥かに充実しており、リモート VM の完全グラフィック・コンソールとして VNC クライアント・ビューアーが組み込まれています。

データ・センター・インフラストラクチャー (クラウド) 用に設計されたオープンソースのパッケージには、Puppet もあります。仮想インフラストラクチャー専用に設定されているわけではありませんが、対応するオペレーティング・システムの詳細を抽象化することによって、大規模なインフラストラクチャーの管理を単純化します。その手段としては、Puppet 言語を使用します。Puppet は多数のサーバーでの管理タスクを自動化するには理想的なパッケージであることから、現在広範に使用されています。


統合 IaaS ソリューション

以下に紹介するオープンソース・パッケージは、仮想化、管理、インターフェース、そしてセキュリティーなどの必要な機能を 1 つのパッケージに統合し、より総体的な手法を取っています。これらのパッケージをサーバーのネットワークとストレージに追加することで、柔軟なクラウド・コンピューティングおよびストレージ・インフラストラクチャー (IaaS) が実現します。それぞれのプラットフォームについての詳細は、「参考文献」を参照してください。

Eucalyptus

クラウド・コンピューティングのインフラストラクチャーを作成するために最もよく使用されているオープンソースのパッケージとしては、Eucalyptus (Elastic Utility Computing Architecture for Linking Your Programs to Useful Systems の略) が挙げられます。Eucalyptus が他と一線を画している点は、そのインターフェースが Amazon のクラウド・コンピューティング・インターフェースである Amazon EC2 (Amazon Elastic Compute Cloud) と互換性があることです。さらに Eucalyptus には、Amazon のクラウド・ストレージ・インターフェースである Amazon S3 (Amazon Simple Storage Service) と互換性を持つクラウド・アプリケーション、Walrus も組み込まれています。

Eucalyptus がハイパーバイザーとしてサポートしているのは、KVM/Linux および Xen です。また、クラスター管理用に Rocks クラスター・ディストリビューションが含まれています。

OpenNebula

Universidad Complutense de Madrid で開発された OpenNebula もまた、興味深い (Apache ライセンスが適用された) オープンソースのアプリケーションです。OpenNebula はプライベート・クラウド構成をサポートする他、ハイブリッド・クラウドの概念もサポートします。ハイブリッド・クラウドではプライベート・クラウド・インフラストラクチャーとパブリック・クラウド・インフラストラクチャー (Amazon など) を組み合わせられるため、さらに高度なスケーリングが可能になります。

OpenNebula は Xen、KVM/Linux、および VMware をサポートし、libvirt などの要素に依存して管理およびイントロスペクションを行います。

Nimbus

Nimbus は科学計算に重点を置く IaaS ソリューションです。Nimbus では、リモート・リソース (例えば、Amazon EC2 によって提供されるリソース) を借りて、ローカルで管理することができます (構成、VM のデプロイメント、監視など)。Nimbus は Workspace Serviceプロジェクト (Globus.org の一部) から派生しました。Amazon EC2 に依存する Nimbus は、Xen および KVM/Linux をサポートします。

Xen Cloud Platform

Citrix は Xen を IaaS プラットフォームに統合し、Open vSwitch などの他のオープンソース機能を統合する一方、Xen をハイパーバイザーとして使用します。Xen ソリューションの興味深い利点は、その焦点が Kensho プロジェクトによる標準ベースの管理 (OVF、DTMF (Distributed Management Task Force)、CIM (Common Information Model)、VMAN (Virtualization Management Initiative) など) に置かれていることです。Xen 管理スタックは、SLA 保証と併せ、返金目的の詳細なメトリックをサポートします。

OpenQRM

最後に取り上げる OpenQRM も同じく重要なソリューションです。データ・センター管理プラットフォームとして分類される OpenQRM では、サード・パーティー製ツールの統合を許容するプラガブルなアーキテクチャーを持つ仮想データ・センター全体を、単一のコンソールで管理することができます。OpenQRM は (冗長性による) 高可用性のサポートを統合し、KVM/Linux、Xen、VMware、Linux VServer などの多種多様なハイパーバイザーをサポートします。


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

クラウドと仮想ドメインでオープンソースが果たしているリーダー的役割については何巻もの本が書けるほどですが、この記事では、現在よく使用されているソリューションをいくつか簡単に紹介しました。独自の要件を基に個々の部品からクラウドを構築しようとしているのか、あるいはそのまま使用できる状態で提供される包括的なソリューションを求めているのかに関わらず、オープンソースはその必要を満たします。この記事で説明したソリューションやその他のソリューションについての詳細は、「参考文献」セクションを参照してください。


参考文献

学ぶために

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

議論するために

著者について

M. Tim Jones

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

不正使用の報告のヘルプ

不正使用の報告

ありがとうございます。 このエントリーは、モデレーターの注目フラグが設定されました。


不正使用の報告のヘルプ

不正使用の報告

不正使用の報告の送信に失敗しました。


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=Open source,
ArticleID=480431
ArticleTitle=オープンソース・クラウドの徹底調査
publish-date=03092010
author1-email=mtj@mtjones.com
author1-email-cc=

タグ

Help
このタグで、My developerWorks のすべてのタイプのコンテンツを見つけるために検索フィールドを使用します。

スライダーバーを使用することで、より多く(少なく)タグを表示します。

人気のタグは、この特定のコンテンツ・ゾーン(例えば、Java テクノロジー、Linux や WebSphere など)に対するトップのタグを表示します。

マイ・タグは、この特定のコンテンツ・ゾーン(例えば、Java テクノロジー、Linux や WebSphere など)に対するお客様ご自身のタグを表示します。

このタグで、My developerWorks のすべてのタイプのコンテンツを見つけるために検索フィールドを使用します。人気のタグは、この特定のコンテンツ・ゾーン(例えば、Java テクノロジー、Linux や WebSphere など)に対するトップのタグを表示します。マイ・タグは、この特定のコンテンツ・ゾーン(例えば、Java テクノロジー、Linux や WebSphere など)に対するお客様ご自身のタグを表示します。