openstackを自力で一から頑張って構築していこうという試みを始めます。
検証目的の場合であれば、centosのpackstackのような自動インストールツールを使うべきです。 実用的な運用を目指していこうという主旨の上でやっていきます。
筆者自身も構築途中ということもあり、時間をかけて記事を出していく予定なので、よろしくお願いします。
注意:わからなくなり断念する可能性がありますが、ご了承のほどお願いします。
Part1ではopenstackの構造を わかった範囲 で説明させていただきます。
openstackの特徴
そもそもopenstackの特徴として、IaaS(Infrastructure as a Service)の環境を自分たちでも簡単に構築できる点です。
また、openstackにはコンポーネントというものがあり、イメージファイルを管理するGlanceやユーザ情報を管理しているKeystoneなどのように機能別に分かれているのが特徴です。
コンポーネントに分ける利点として、一つのサービスが止まってもすべてが死なないだろうという考えがあるからです。
一つ死んだらまずいんじゃね?と言われるとその通りですが、少しでもサービスの全停止を防ぐためという目的があるからです。
openstackの構築形式
openstackの構築の形式として、以下の2つがあります。
- すべてのコンポーネントを一台のサーバーに導入する(All in one)
- コンポーネントをノードごとにサーバーに分けて導入する
前者の一台のサーバーにすべてのコンポーネントを導入する方法はあまり、おすすめできません。ノードごとにサーバーを分けてコンポーネントを導入する方法を推奨します。
理由として、All in oneで設計してしまうと、物理的にサーバーが故障した場合に対処しづらい点があるからです。
各ノードごとに分けて構築していると、死んだサーバーのノードのみを復旧できるからです。それにより、リスク回避ができます。すべてのサービスが瞬時に使えなくなるということがなくなるという利点があるからです。
これらによって、各ノードごとにコンポーネントを分けてサーバーに導入するのをおすすめしています。
主なコンポーネント(絶対に必要なもの)
- Keystone
- Nova
- Glance
- Neutron
- Horizon
- Cinder
- Swift(必須ではない)
この上記のコンポーネントが必須となります。重要なものなので、一応リストに入れておきました。
各コンポーネントの紹介はこれからやっていきます。
Keystone
Keystoneとはそれぞれのコンポーネントに対するユーザや認証情報を管理しています。
openstackでややこしくなるところでもあります。
プロジェクトやユーザ情報などを登録します。ユーザごとに権限を割り当てることができるのでopenstackの根幹に関わる重要なコンポーネントです。
Nova
Novaとはコンピュートノードで使われています。
仮想マシンの作成や起動などの制御に使われている。
KVMなどの仮想マシンを操作するコンポーネントと思っていただいても大丈夫です。
仮想マシンを管理するものであって仮想マシンではないので、注意してください。
Glance
isoデータなどの仮想ディスクイメージを管理しているコンポーネントです。
isoデータのみではなく、vdiやvhdなどのVMイメージなどの保存などを提供しています。
Neutron
ネットワークを管理しているコンポーネントです。
L2やL3スイッチのネットワークを作成することが可能になります。
Horizon
WebGUIを管理しているコンポーネントです。
Cinder
永続的なデータを提供するコンポーネントです。
VMとつなげて、提供するということもありVM上で使用するストレージを管理するというふうに筆者は思っています。(間違っていたら、コメント下さい
Swift
分散型のストレージサービスを提供するコンポーネントです。
また、REST APIでアクセスをさせるのでVMが起動・停止にかかわらずアクセスできる点がメリットです。画像ファイルやログファイルを保存するのに特化しています。
まとめ
このように必須のコンポーネントだけでもこれだけあります。なかなかややこしいのが現状です。この回ではopenstackを構築していく上での基本事項を紹介させていただきました。 次回のPart2からいよいよ闇の構築をしていきます
Part1.5でこの記事に書いていないコンポーネントを紹介する予定です…(あくまで、予定です…)