OpenStackはじめてみる(知識整理)。

# はじめに #

**「ねんがんの　OpenStack　で　あそぶぞ　！」**

というわけでかねてから触ってみたいと思っていたOpenStackを触っていきますが、今回はまずOpenStackというソフトが何なのかをざっくり理解します。

# OpenStackとは #
[OpenStack](http://www.openstack.org/)は[CloudStack](http://cloudstack.apache.org/)や[Eucalyptus](https://github.com/eucalyptus/eucalyptus/wiki)同様、最近は **クラウドOS** と呼ばれるソフトウェアに分類されます。<br> **「自前でAWSが作れる」** ソフトというと理解しやすいかもしれません。

![WS000003.JPG](https://qiita-image-store.s3.amazonaws.com/0/45253/f43c4cfa-06b7-6379-cdbd-8f2bea469cab.jpeg)


Googleトレンドでもこの通り、人気急上昇中です。<br>(Eucalyptusはググラビリティが低いので参考になりません)

## クラウドOS？ ##
クラウドOSの前に少し通常のOSの立ち位置を考えましょう。<br>OSというのは下記のように、あるコンピュータ上のリソースを管理し、OS上で動作するアプリケーションにリソースを供給します。

![WS000001.JPG](https://qiita-image-store.s3.amazonaws.com/0/45253/8884dad1-7f68-b51a-9f1f-8b4f2a34ed95.jpeg)

それぞれのCPUやStorage同士は何の関連もありませんが、OSがうまくやってくれるので協調して動作が可能なわけです。
一方、その視点でクラウドOSを考えると下記のようになります。

![WS000000.JPG](https://qiita-image-store.s3.amazonaws.com/0/45253/cd77aed9-b04b-dc59-780b-92bd9df44878.jpeg)

基本的な構図は同じように見えますが、スコープが異なります。
通常の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が各サービスの集合体であることと似ています。以下各主要コンポーネントの概要。

![openstack-horizon.png](https://qiita-image-store.s3.amazonaws.com/0/45253/b23aab39-d2c3-cc14-9f9d-afe1b0c1e14e.png)

- **Nova**

    コンピュート機能を提供。Amazon EC2に相当。

- **Cinder**

    ブロックストレージ機能を提供。Amazon EBSに相当。

- **Swift**

    オブジェクトストレージ機能を提供。Amazon S3に相当。

- **Keystone**

    認証機能を提供。IAMに相当。

- **Glance**

    マシンイメージ管理機能を提供。AMIに相当。

- **Newtron**

    ネットワーク機能を提供。旧称Quantum。Amazon Route 53やAmazon VPC、ELBに相当。

- **Horizon**

    Web管理機能を提供。マネジメントコンソールに相当。

この図がわかりやすい。

![openstack_01.png](https://qiita-image-store.s3.amazonaws.com/0/45253/348d5a10-1888-d6ce-6231-d4245d298691.png)

引用 : [VPSのインフラにOpenStackを採用した「お名前.com VPS」開発者に聞く ― Impress Internet Watch](http://internet.watch.impress.co.jp/docs/interview/20130212_586815.html)

# 参考 #
上記、Impress記事のほか下記の記事がOpenStackやクラウドOSの理解に役立ちます。

- [OpenStackクラウド基盤構築・ハンズオンセミナー講義資料](http://d.hatena.ne.jp/enakai00/20140106/1388978670)

    TopSEというNPO団体が主催する有料セミナーでも使われた資料たち。非常によくまとまっていてたいへん助かります。

- [OpenStack勉強会 ― slideshare](http://www.slideshare.net/obara13/open-stack-16166193?qid=3207b677-5c4e-4dc1-80de-c2ea356e1526&v=qf1&b=&from_search=4)

    OpenStackと各コンポーネント概要までカバー。結構なボリューム。

- [OpenStackによる、実践オンプレミスクラウド](http://www.slideshare.net/thatsdone/q-con-tokyonttdataopenstackdist2?qid=3207b677-5c4e-4dc1-80de-c2ea356e1526&v=qf1&b=&from_search=9)

    クラウドOSへのモチベーション的なところや事例紹介あり。