ラベル devstack の投稿を表示しています。 すべての投稿を表示
ラベル devstack の投稿を表示しています。 すべての投稿を表示

2015/09/16

devstackにlxdコンテナ組み込み やってみたが・・


先の記事では、Shuttle DS57Uというスモール環境にopenstackを構築してみた話を書きました。

インスタンスをkvmからlxdに切り替えてみたいと思って色々試したのですが、残念ながら最後のインスタンス作成で失敗します。
手順は間違っていないと思っているので、手順自体は記録しておこうと思って書きました。

lxd は、lxcとopenstack/novaを繋ぐハイパバイザーってことらしい。
nova-compute-lxd をdevstackに組み込めば良いだけ。
Introduction to nova-compute-lxd が全てを教えてくれています。

Ubuntu 15.04 vividをクリーンインストールする(opensshだけ入れる)

$ sudo apt-get update
$ sudo apt-get install ntp git -y
$ sudo apt-get upgrade -y

ネットワークを固定IPにして、ipv6をディスエーブルする。お好みで。



パスワード要求無しでsudo出来るスーパーユーザを作る

$ sudo adduser stack
「stack ALL=(ALL) NOPASSWD:ALL」 を /etc/sudoers に追記

以降は全てstackユーザでの操作

$ su - stack

最初にnova-compute-lxdを/opt/stackにクローンする
別の場所にすると適応時に面倒なので、素直にここに置く

$ git clone https://github.com/lxc/nova-compute-lxd /opt/stack/nova-compute-lxd
nova-compute-lxd/contrib/devstack/README.first に書かれている通りにdevstackをクローン

$ git clone https://github.com/openstack-dev/devstack /opt/stack/devstack

devstackに対してlxdの設定スクリプトを実行する

$ cd /opt/stack/nova-compute-lxd
$ contrib/devstack/prepare_devstack.sh

すると、/opt/stack/devstackに対して、さくっと色々やってくれます。

/opt/stack/devstack/localrcファイルが作られているので、そこに自分の設定を追記します。
VIRT_DRIVER=lxd
export NON_STANDARD_REQS=1

SERVICE_TOKEN=shuttle01
ADMIN_PASSWORD=admin
MYSQL_PASSWORD=$ADMIN_PASSWORD
RABBIT_PASSWORD=$ADMIN_PASSWORD
SERVICE_PASSWORD=$ADMIN_PASSWORD

LOGFILE=$DEST/logs/stack.sh.log
LOGDAYS=2
な感じ。FIXED_RANGEやFLOATING_RANGEやら追加してもいいでしょう。自分はデフォルトでいいのでこんなもんです。

devstackのインストール&開始

$ cd /opt/stack/devstack
$ ./stack.sh

lxc、lxd、その他諸々、この中で一気にインストールとセットアップが行われます。
30分ほど待つと、めでたく lxdがインテグレーションされたopenstackが稼働します。

しかし残念ながら今のところ、コンテナ起動が成功しません。



クラウドイメージの準備・やってみたものの・・


標準で入っている cirros イメージはlxdコンテナとしては起動できません。

$ wget -O vivid-server-cloudimg-amd64-root.tar.gz https://cloud-images.ubuntu.com/vivi/current/vivid-server-cloudimg-amd64-root.tar.gz

$ source /opt/stack/devstack/openrc
$ glance image-create --name='lxc' --container-format=bare --disk-format=raw < vivid-server-cloudimg-amd64-root.tar.gz

これでイメージが取り込まれます。
が、これを起動したんですが、残念ながら起動できませんでした。

No valid host was found. There are not enough hosts available

になってしまう・・・

nova-compute-lxd/contrib/images/convert-ubuntu-cloud-images.sh というのがあったので

$ sudo ./convert-ubuntu-cloud-images.sh ~/vivid-server-cloudimg-amd64-root.tar.gz ~/vivid-server-cloudimg-amd64-root2.tar.gz
$ glance image-create --name='lxc2' --container-format=bare --disk-format=raw < vivid-server-cloudimg-amd64-root2.tar.gz

でトライしてみましたが、結果は変わらず。

ログを見ると、n-condのでエラーが出ている。
ソースを軽く追いかけると、selected_hostsがない。もしくは見つけられない?状態らしい。
インスタンスが必要とするvCPUの数と用意されている数を比較して足りない場合エラーっていう
処理のところらしいけど。

イメージが同行という以前のところでコケている感じ。まあ、もう少し待って再トライです。

openstackをプアーに体感してみる

lxc使ってみていたら、仮想環境に興味が湧いてしまいまして、色々やってみました。

今まで作ったものをバックアップして、Ubuntu 15.04 (vivid) でOS入れ直し。
このバージョンから仮想化向けの機能が追加されたので、良いかなと思って。

仕事では普通にVMWareを使ってVM構築したり、サーバー立ち上げたりしているけれど、クライアントユーザとして使っているだけだったので、実はあまり仮想化を知らなかったりする。
おもちゃにして使っている Shuttle DS75U を仮想ホストにしてプライベートクラウドしたら、どうなってしまうんだろ?しかも1台だけで、、、という個人的興味でのアプローチです。

lxcが動いているので、CPUの仮想化支援機能は問題ない。動くはずだ。

まずは OpenStack Installation Guide for Ubuntu 14.04 を読んで見るものの・・・
ほー。それぞれのコンポーネント構成は何とか理解するものの、 これを手動でセットアップするのはほぼ不可能に近い。

ということで Ubuntu OpenStack Installer を試みる

嬉しいことに、このインストーラーで入れるとコンピュートノードはlxcで作られる構成にしてくれるらしい。

本格的な構成とシングルマシン用のインストーラーということらしいので Single Installer Guide を頼りに実行してみた。こには
って書いてあるが、見なかったことにしてインストールしてみた。ものすごい時間を要したが特に途中何の問題もなくインストールが完了した。

が、しかし、それぞれのコンポーネント用のインスタンスが8つぐらい稼働しようとする。かなり頑張っていたが、3つ目くらいのインスタンス起動の途中から先に進まなくなった。
それぞれのインスタンスのメモリ設定が4GBとか6GBとかになっていて、実メモリ4GBしかないDS75Uでは太刀打ちできなかった様だ。。。

DevStack を使って入れる

DevStackっていうのは最初からあるインストーラーで、開発者のテスト環境構築にも使われているようで、タイニーな環境でも動こうような構成で入れてくれるらしい。

Ubuntu15.04では途中でこけていたが・・・
実はこの記事を書く前に、やった時にはUbuntu15.04ではインストーラースクリプトが途中でこけてしまう問題があった。DevStack自体が15.04に対応していなかったため、rabibitmqのスタートアップ周りで不具合があったのだ。
やってみると確かに、この部分で失敗した。 問題の箇所に関するバグIssue https://bugs.launchpad.net/devstack/+bug/1449056 を追っていたら、つい最近解決したコミットが!ということでmasterブランチをプルし直して
All-In-One Single Machineに書いてあるとおりにやったら問題なく15.04でも成功した。 やほ~。

ほぼデフォルト状態でのセットアップなので、次は、仮想ノードタイプをkvmからlxcにしたり、ネットワーク周りをいじったりしてみようと思う。