OpenStackって??
OpenstackはIaasクラウド環境が構築できるOSSです。Iaasクラウド環境というと、出来上がった物理サーバーが1台ポンとあれば、そのサーバースペックに合う程度の数台のネットワークが構築できます。
ちょっと作り手の言い方に近いですかね。ちょいと利用側寄りの言い回しにすると、こんな環境が欲しいな〜、ボタンをポチッとな!とすると、開発が予め用意しておいた環境がドーン!と出来上がります。
インフラ事業者のクラウドサービスってそんな感じですよね。
ドーンといえばDockerですが、ググってみると複数のDockerでソフトウェアネットワークを構築できるWeaveってのもあるようですね。
複数のDockerサーバで独自ネットワークを構築する「Weave」
Openstackじたい企業レベルでも使われていますし、サンプルの設定ファイルを公開されているページもあるので個人ユーザーレベルでも環境構築はできますし、なによりインフラの勉強にもとてもとてもいいものです。
とてもとてもいいものです。と言いながらも、以前に弄ったときよりも少しばかり敷居が高くなった感じがしました。というのも〜と続けたい所ですが、まったく意味が分からない文章になりそうなので、何故かということをこれから順を追って説明します。
前回にOpenStackを弄った時と今回の違いについて何点か
前回、OpenStackを弄ったのは2013年の12月頃のようでした。なつかしや。
Openstack リリース履歴を見てみると
Grizzly 2013年4月4日
Havana 2013年10月17日
Icehouse 2014年4月17日
havanaが既にリリースされていましたが、日記にアップしていたのはGrizzlyでした。
その時は
Keystone Glance Cinder Nova Horizon
という5つのコンポーネントと1つのノードというオールインワン構成で、ちょっと例えるとKVMで構築したVPSにちょっとしたネットワークが使えまっせという程度のもので、ネットワークまわりにはNova-networkというものを使っていました。
今回使ったIcehouseというのがNova-network非推奨ということで、上の5つ以外のコンポーネントである
Neutronというコンポーネントを使うことを推奨しています。
ここでコンポーネントについて少し補足します。なんのこっちゃですよね。
コンポーネントについて
:Nova → Compute Service
Iaasのオーケストレーション。ってことですが、インフラの設定・管理の自動化を担っているところにあたり、仮想VMの管理を担当しています。
サポートするハイパーバイザには、KVM、LXC、QEMU、UML、VMware vSphere、Xen、Hyper-V、BareMetalがあります。
ほぼほぼ網羅していますね。
:Cinder → Block Storage
ストレージのコントールと管理をしてます。
LVMだと少し空きを作ってVGを作ればOKなので、LVMで作成するのが楽かなと。
:Glance → Image Service
仮想OSイメージを管理します。扱えるイメージについて
vhd vmdk vdi iso qcow2 aki ari ami
最後の3個はAmazonのものです。isoは生のディストリと同じで、ほかはパッケージですね。
:Keystone → Identity Service
ユーザー管理、各コンポーネントへの認証・権限などの管理をします。
トークンです。
:Horizon → Dashboard
webフロントエンドを提供します。
いわゆるユーザーインターフェースですが、ここはユーザーが自由に作れるそうです。
Ubuntu独自のものもありますが、参考サイトでは削除していました。
続いて今回増えたもの
:Neutron → Network Service
仮想ネットワーク(SDN)の管理・提供です。
SDNについては全く知識もないので、今回苦戦した原因でもありますね。
こんな風に色々な知識が必要となってきます。
その他の違う点について
さきほど、前回OpenStackを弄った時は、5つのコンポーネントと1つのノードでと書きました。
今回は1つのノードでの構成での構築が全く上手く行かず・・・。
断念して、結局マニュアルに沿った構成で、3つのノードをバーチャルボックスで用意しました。
うう・・。
- コントローラーノード: 1 CPU、1GB メモリ、10GB ストレージ
- ネットワークノード: 1 CPU、512 MB メモリ、10GB ストレージ
- コンピュートノード: 1 CPU、1GB メモリ、10GB ストレージ
という構成になっています。
物理サーバーを3台上記のスペックでというなら分かりませんが、今回はバーチャルボックスを使ってゲストOSを3台用意して、ホストPCのスペックの都合上、サンプルの環境からも大幅に下回るスペックになっているために正直重くて検証レベルにしか使えませんでした。
検証環境
ホストOS
Ubuntu 14.04
i3 3.10GHz 4Core Mem 4GB
ゲストOS
1 コントローラノード
Ubuntu 14.04
i3 3.1Ghz 1Core Mem 1GB
2 ネットワークノード
Ubuntu 14.04
i3 3.1Ghz 1Core Mem 512GB
3 コンピュートノード
Ubuntu 14.04
i3 3.1Ghz 1Core Mem 1GB
設定ファイル
参考サイト
OPENSTACK インストールガイド
2done.org OpenStackインストール手順のようなもの(Icehouse版)
設定ファイルについては、割り振っているIPアドレス、パスワードなどなど以外は参考サイトのサンプルの完コピになってしまっています。完全コピーです。
ノードを1つのオールインワン構成でと何とかやろうと思っていましたが、半月ほど時間を費やしてもなかなか進まなかったので、郷に入っては郷に従えってことで3つのノード構成にしたらあっさり動きました。
久々の断念です。まだまだです。
参考サイトの通りに3つのノード構成で構築して、設定ファイルもろもろはそのままコピーしてIPアドレスだったりパスワードだったりを自分の環境に合わせてやれば、ちゃんと動きます。
なぜ1つのノードでは上手く動かなかったのかについては今後の課題で。
ソースはどうやって見るのか
OSSなのでだれでも見る事ができます。
OpenstackのGithub
Gitですんで、git cloneできます。試しにNovaをGit cloneしてみて、中身を見てみました。
好き放題見れます。
/home/takeken]$ ls openstack/nova/ CONTRIBUTING.rst README.rst etc requirements.txt test-requirements.txt HACKING.rst babel.cfg nova run_tests.sh tools LICENSE contrib openstack-common.conf setup.cfg tox.ini MANIFEST.in doc plugins setup.py
見ると分かるのですが、Pythonです。
Pythonです。
Pythonです。
Pytnonだああああー!!
ちょっと本題から逸れた小話になりますが、ここ半年ほどの日記のタイトルからも分かるようにRubyな日々を過ごしてきたところなのですが、アクセスランキングが、Ruby関連の20回超ある記事よりも、2・3回しかやっていないPythonの記事のほうがアクセスが多いことに多少なりのショックを受けており。
そんなに良い記事が書けていないのかと。。。
GoogleのSEOでかなり減点対象となるらしい事柄に盗作ってのがあるようですが、もちろん盗作しているわけではなく、サンプルコードを参照して使ったりしているので、その辺もあるのだろうか?
改めてアクセスランキングを見ると、多少しょぼくてもオリジナリティのある記事のほうがランキング上位になっているので、サンプルコードの利用も検索結果には影響があるのかもしれませぬ。
Rubyの記事は確かにオリジナリティには欠けています。
ってことで今後の課題として、できるだけオリジナル要素のみで日記の内容を構成するという目標を作ります。
そもそも最近は日記っぽくもなくなってきていたので、その辺も裏目に出たのかもしれませんなぁ。
閑話休題、今回の完敗に関わらず、Openstackをもうちょいしっかりと弄りたいので、Rubyの勉強がひと段落して、作成しつつあるスクリプトも完成させて、ある程度の納得ができたらPythonもまたやろうかなぁ。
マルチに勉強を進めると脳に良いって記事もこないだ見かけたことだし、同時に勉強を進めてもいいかもめ〜。
クラウドな時代です
動かしてみようというタイトルで動かし方の説明が全くないのですがw
まぁまぁ、そこは置いときます。
To Be Continue … ってやつですよ。
次回じゃないけどね。
クラウドな時代ですが、物理サーバー3台用意するコストと同レベルのクラウド環境のコストと天秤にかけてみるってのも、なかなか面白いかもしれないなぁと思っただけで特に調べていません。