最近はクラウド基盤と呼ばれるオープンソースソフトウェアについて、セミナーや勉強会が盛んに行われている。
クラウド基盤とは、クラウド(コンピューティングリソースをプールしておき、必要最低限の手間で、消費者が使いたいと思ったときに、リソースをすぐにプロビジョニングできる状態)環境を構築するためのソフトウェアだ。
amazonEC2と同じような仕組みを作ることができると思ってもらえればよい。
僕自身もEC2等には非常に興味があるので、動向調査や研究の意味で勉強会にも参加したりしている。
ということで、現状のオープンソースのクラウド基盤でどういったものがあるのかを簡単にまとめようと思う。
注目されているクラウド基盤
現在、オープンソースとしてのクラウド基盤で注目されているソフトウェアは以下の4つである。
[important]
- Eucalyptus
- OpenStack
- CloudStack
- Wakame
[/important]
である。
ではそれぞれについて、簡単な特徴を説明する。
Eucalyptus
最も人気があるクラウド基盤で、いち早く開発されたオープンソース。
amazon EC2/S3互換のAPIを提供しているため、AWSと連携したシステムを簡単に作ることができる。
オープンソースとしては一番最初に注目されたため、開発者も多く日本語のドキュメントも多く存在する。
企業やサービスでも構築実績が多数あるソフトウェアだ。
多くのハイパーバイザーにも対応しており、汎用性があって使いやすいと思う。
アーキテクチャーはCloudControler、ClusterControler、NodeControler、StrageControler、Walrusから構成されている。
[note]
- CloudControle: クラウド全体の管理やAPIやGUIによるI/Fの提供
- ClusterControler: VMの管理やネットワークの管理
- NodeControler: VMの動作管理(起動など)
- StrageControler: 永続ストレージ
- Walrus: オブジェクトストレージ
[/note]
アーキテクチャも所謂典型的なクラウド基盤の構成をとっており、クラウド基盤のスタンダードのようなソフトウェアである。
各コンポーネント間での連携はSOAPやHTTPを使用している。
VLANにも対応。
シングルポイントになり得るコンポーネントはCloudControler、ClusterControlerであるが、Cluster構成をとることで有る程度さけることができる。
OpenStack
NASAとRackspaceが中心になって開発されたクラウド基盤。
Eucalyptusの構成がスタンダードであれば、こちらはソフトウェアそのものがクラウド基盤としてのデファクトスタンダードとよばれている。
OSでいうLinuxのようなイメージだ。
そのためか、I/Fは今の所CUIによるAPIのみである(有る意味使いやすい気がする)。
ドキュメントに関してもほとんどが英語で、まだ日本ではあまり情報が少ないように思う。
だたし、NTTデータ等が調査・研究・開発に乗り出しているため、近いうちには有意義な情報が得られる可能性が高い。
アーキテクチャは、NovaとSwiftと呼ばれるコンポーネントが連携している。
[note]
- Nova: クラウド基盤全体を管理するシステム
- Swift: オブジェクトストレージ
[/note]
NovaとSwiftはそれぞれ単体でも機能することができるため、Novaを使ったシステムやSwiftを使ったストレージ等、それぞれのコンポーネントが独立して各機能を提供できる。
多くのVMwareを除いたハイパーバイザーに対応している。
コンポーネント間の通信はAMQPを利用している。
VLANにも対応。
シングルポイントはAMQPの管理システムであるが、設定によってはシングルポイントにならないようにする方法があるようだ。
CloudStack
さて、僕が最も注目しているのがCloudStack。
2010年の5月にcloud.comというドメインと共に、いきなりオープンソースクラウド基盤に名乗りでたソフトウェアである。
主体で開発しているメンバーは10人と非常に少ないのだが、そのメンバーがとてつもなく豪華。
かなりリッチなGUIを提供しており、出たばかりのソフトウェアだがかなり完成度が高い。
また構成もシンプルで、永続ディスクとの連携をiSCSIやNFSを採用していることから、エンジニアにとっては非常に扱いやすい。
アーキテクチャは、ManagementServer、ComputingNode、PrimaryStorageServer、SecondaryStorageServer、で構成されている。
[note]
- ManagementServer: クラウドやリソースの全体管理と、APIやGUIによるI/Fの提供
- ComputingNode: VMが実際に格納され起動するサーバ
- PrimaryStorageServe: VMのディスク領域として機能する永続ストレージ
- SecondaryStorageServer: VMテンプレートやイメージの保管ストレージ
[/note]
ハイパーバイザーはKVMとXenのみ対応している。
コンポーネント間の通信はTCPを使った独自プロトコルを使用しており、データ形式はJSONを利用している。
アーキテクチャも基本的には管理サーバーとVM稼動サーバーとストレージ領域とシンプルな構成で、サーバ・ストレージ間のNFS対応はやはり魅力的だ。
通信のデータ形式もJSONを使っているためシンプルで良い。
シングルポイントはManagementServerとなるが、MySQLのレプリケーション等を利用して避けることが可能。
VLANにも対応。
他のクラウド基盤と違い、ソフトウェアロードバランサーが実装されており、管理・監視機能も内臓されている。
個人的に、シンプルな構成、リッチなGUI、NFS・iSCSI対応、これらが利用できるCloudStackは、インフラエンジニアとしてはとても利用しやすいように思う。
Wakame
最後にWakame。
これは唯一の国産クラウド基盤である。
そのため、ドキュメントは基本日本語なのでとっつきやすいかもしれない。
目的としては、データセンターの統合を目的としている。
インフラエンジニアからみてデータセンターの場所やインフラの場所を意識しなくてもよい、透過型データセンターなるものを理想としている。
また、Wakameプロジェクト自体はSaaSに対応するシステム、PaaSに対応するシステム、IaaSに対応するシステムを個々に開発しており、今回はクラウド基盤なので、IaaSに属するシステムのWakame-vdcについて述べる。
対応しているハイパーバイザーはKVMのみである。
Wakame-vdcのアーキテクチャは、HyperVisorAgent、StorageTargetAgent、NamingServiceAgent、DataCenterManager、WebUserInterfaceから構成されている。
[note]
- HyperVisorAgent: VMが起動しているサーバの管理
- StorageTargetAgent: VMのDISK領域やイメージの管理、永続ストレージ
- NamingServiceAgent: ネットワークやDNS、DHCP等の管理
- DataCenterManager: クラウド基盤全体のコンピューティングリソース管理、APIの提供
- WebUserInterface: GUIのI/Fの提供
[/note]
コンポーネント間の通信はOpenStack同様AMQPを使用している。
永続ストレージであるStorageTargetAgentとの通信は、iSCSIやNFS、HTTPに対応しており、使いやすい。
また、永続ストレージはZFSに対応しているため、ZFSで可能な機能を使うことができるのも良い。
VLANにも対応。
シングルポイントはAMQPの管理システムとDataCenterManagerで、基本はDataCenterManagerのMySQL部分なので、レプリケーションで回避することが可能だ。
考察
以上が現状有力なクラウド基盤オープンソースソフトウェアの技術的概要である。
これらを考えると、今後以下のように考察できる
- 物理的に設置するサーバーはストレージの役割となる
- クラウド基盤自体を設定・改良する技術が必要になる
- クラウド基盤自体が今のOSのような役割になる
- 運用管理・監視機能の開発が進んでおらず、ますます運用管理が難しい仕組みへ
クラウドの基盤自体は、ますます高度に精度の良いものになっていくと思われる。
そして、物理的なサーバーというものは、単なるハードウェアとなり、クラウド基盤で統合するのが前提の役目になっていくだろう。
今後、オープンソースソフトウェアを利用するにあたっては、クラウド基盤自体を改修しニーズに応じた基盤にしていく必要がある。
そういう意味では、クラウド基盤が各VM、OS、ミドルウェア、アプリケーションを支える意味での、大きなOSの役割を果たすのではないだろうか。
ただし、クラウドのような開発が進む一方で、それらを管理し、システム維持してくためのシステム開発があまり進んでいないのが現状である。
落ちないシステムを作るため、自動化が進む、冗長化が進むと、有る部分の機能が停止したときにシステムとしては正常に稼動していたとしても、故障した部分を再度復旧するためには、各部の正常性を検知し管理するシステムが必要となる。
そうなると、現状の管理システムはクラウド基盤の開発に追いついておらず、今後はクラウド基盤を管理・監視・維持するためのシステム、もしくはクラウド基盤にシステム維持管理のコンポーネントが必要になってくるように思う。