はじめに
「ねんがんの OpenStack で あそぶぞ !」
というわけでかねてから触ってみたいと思っていたOpenStackを触っていきますが、今回はまずOpenStackというソフトが何なのかをざっくり理解します。
OpenStackとは
OpenStackはCloudStackやEucalyptus同様、最近は クラウドOS と呼ばれるソフトウェアに分類されます。
「自前でAWSが作れる」 ソフトというと理解しやすいかもしれません。
Googleトレンドでもこの通り、人気急上昇中です。
(Eucalyptusはググラビリティが低いので参考になりません)
クラウドOS?
クラウドOSの前に少し通常のOSの立ち位置を考えましょう。
OSというのは下記のように、あるコンピュータ上のリソースを管理し、OS上で動作するアプリケーションにリソースを供給します。
それぞれのCPUやStorage同士は何の関連もありませんが、OSがうまくやってくれるので協調して動作が可能なわけです。
一方、その視点でクラウドOSを考えると下記のようになります。
基本的な構図は同じように見えますが、スコープが異なります。
通常のOSではOSが管理するコンポーネントはいわゆるパーツですが、クラウドOSが管理するコンポーネントはノードです。
また、クラウドOS上で動作するものはVMを提供する各種ハイパーバイザOSで、通常のアプリではないですね。
OpenStackに期待されるもの
簡単に言ってしまえば「オンプレミスのAWS」というモチベーションが大きいです。
-
リソースの効率利用
-
コントローラによる集中管理
-
インフラ構築の効率化
これらは昨今のVMwareやXen, Hyper-Vなどといった仮想化ソフトウェアの浸透に伴い、イメージしやすくなっているかと思いますが、クラウドOSによる効果はOSとクラウドOSの違いと同じく、スコープが異なります。
従来の仮想化ソフトウェアでは仮想化の範囲がノード内、あるいは複数ノードに限られ、ノード同士をつなぐネットワークやセキュリティについてはカバーしきれない点がありました。
一方で、OpenStackをはじめとするクラウドOSではスコープにネットワーク機能を含み、クラウドOSから制御が可能になります。
ですので、いわゆるインフラ構築で面倒なネットワーク設定もAWSのようにWebからポチポチできるというような感じでしょうか。
これまでVMwareとかでネットワーク関係を制御できなかったのでは、CiscoやJuniperといったネットワーク機器が外部からホイホイ触れなかったことにあります。
もちろん仮想スイッチ機能である程度のことはできましたが、オーバーレイ方式なので物理経路の制御まではできないですね。
クラウドOSがネットワーク関係を制御できるのはクラウドOS上のネットワーク機能が共通のAPIを持つ機器によって構成されることにあります。OpenFlowスイッチとかそのあたりですね。
OpenStackのコンポーネント
OpenStackは機能毎にソフトウェアが分かれており、クラウドOSとしての動作は各コンポーネントがREST APIやRPCで相互通信することで実現します。AWSが各サービスの集合体であることと似ています。以下各主要コンポーネントの概要。
-
Nova
コンピュート機能を提供。Amazon EC2に相当。
-
Cinder
ブロックストレージ機能を提供。Amazon EBSに相当。
-
Swift
オブジェクトストレージ機能を提供。Amazon S3に相当。
-
Keystone
認証機能を提供。IAMに相当。
-
Glance
マシンイメージ管理機能を提供。AMIに相当。
-
Newtron
ネットワーク機能を提供。旧称Quantum。Amazon Route 53やAmazon VPC、ELBに相当。
-
Horizon
Web管理機能を提供。マネジメントコンソールに相当。
この図がわかりやすい。
引用 : VPSのインフラにOpenStackを採用した「お名前.com VPS」開発者に聞く ― Impress Internet Watch
参考
上記、Impress記事のほか下記の記事がOpenStackやクラウドOSの理解に役立ちます。
-
OpenStackクラウド基盤構築・ハンズオンセミナー講義資料
TopSEというNPO団体が主催する有料セミナーでも使われた資料たち。非常によくまとまっていてたいへん助かります。
-
OpenStackと各コンポーネント概要までカバー。結構なボリューム。
-
クラウドOSへのモチベーション的なところや事例紹介あり。