Wakame-VDC on Eucalyptus

Wakame ユーザの皆さんこんにちは、日本 Eucalyptus ユーザ会です。これは「Wakame-vdc / OpenVNet Advent Calendar 2014」の17日目のエントリです。

ちなみに昨日は @hansode さんのエントリ「#WakameVdc / #OpenVNet 開発環境の改善履歴」でした。@hansode さんのエントリを読んでると自分も同じような環境を作りたくなってウズウズしてくるので、皆さんも是非読んでみてください。

ところで、OpenStack に関わる人は OpenStacker、CloudStack に関わる人は CloudStacker、Eucalyptus に関わる人は Eucalyptoid という名称があるのですが、Wakame-VDC / OpenVNet の場合は何て呼ぶんでしょうか? Wakamen? OpenVNetian? 知りたいものです。

さて、本題に入りましょう。今日はタイトルにもあるように、Eucalyptus のインスタンス上で Wakame-VDC を動かすという試みです。12/03 のエントリ12/10 のエントリ と同様に、KVM の Guest VM 上で動いている Eucalyptus 環境のインスタンス上で構築します。ですので、Wakame-VDC は Guest VM ではなく Nested VM で動くため、使用するのはハイパーバイザではなくコンテナを選ぶことになります。(Nested VM の上にさらに VM を起動するのは無理という話らしいので…)

で、使用した Eucalyptus のマシンイメージは Eucalyptus 本家が配布している CentOS 6.5 のマシンイメージを使用します。

こんな感じで起動したインスタンスに接続し、Wakame-VDC をインストールするために必要なリポジトリ情報を登録して必要なパッケージ類をインストールします。

sudo curl -o /etc/yum.repos.d/wakame-vdc.repo -R https://raw.githubusercontent.com/axsh/wakame-vdc/master/rpmbuild/wakame-vdc.repo
sudo yum install -y wakame-vdc-dcmgr-vmapp-config
sudo yum install -y wakame-vdc-hva-lxc-vmapp-config
sudo yum install -y wakame-vdc-webui-vmapp-config

次に Wakame-VDC のセットアップスクリプトをダウンロードし、OpenVZ に関する記述を lxc に変更します。

wget "https://raw.githubusercontent.com/axsh/wakame-vdc/master/scripts/install_guide_demo_data.sh"
sed -i -e 's/openvz/lxc/' install_guide_demo_data.sh

次に、VM のネットワーク設定を変更し、eth0 を br0 にぶら下げます。設定の内容は以下のような感じです。

# cat /etc/sysconfig/network-scripts/ifcfg-eth0 
DEVICE="eth0"
ONBOOT="yes"
BRIDGE="br0"
NM_CONTROLLED="no"

# cat /etc/sysconfig/network-scripts/ifcfg-br0 
DEVICE="br0"
BOOTPROTO="dhcp"
IPV6INIT="yes"
NM_CONTROLLED="no"
ONBOOT="yes"
TYPE="Bridge"

そして、ダウンロードしたセットアップスクリプトを実行します。

chmod +x install_guide_demo_data.sh 
NETWORK='10.0.0.0' PREFIX='8' DHCP_RANGE_START='10.0.0.100' DHCP_RANGE_END='10.0.0.200' ./install_guide_demo_data.sh
sudo service rabbitmq-server start

最後に Wakame-VDC の各種サービスを起動します。

sudo start vdc-dcmgr
sudo start vdc-collector
sudo start vdc-hva
sudo start vdc-webui

で、インスタンスの 9000 番ポートに接続します。

おぉっ!エクセレンッ!!!

では、あっさりと動いた Wakame-VDC に敬意を表してインスタンスを起動してみます。

よしきた terminated。見事にインスタンス起動失敗。そーこなくちゃ。

第一、OpenStack, CloudStack と失敗しているのに、Wakame-VDC だけ成功しちゃぁ、やれインチキだのやれエコヒイキだのいわれかねません。いやいや、そんなことないんですよ?ただ Eucalyptus や Wakame-VDC がちょっとばかり「簡単に構築できすぎちゃう」だけなんですけどね?(釣り針

ということで、まぁ、結果的には今回も失敗です。ちなみに vdc-hva のログには以下のようなエラーが出ていました。

2014-12-16 14:55:25 JobContext thr=LocalStore[1/2] [INFO]: Job complete c6297697cd662fff0ee78a34a80ee2aefa309368 (Local ID: 6d2780f60c6fb7ce4cae1d6f6482f9d5f3fc99ba)[ run_local_store ]: 9.391360679 sec
2014-12-16 14:55:25 JobContext thr=JobWorker[0/1] [INFO]: Job start c6297697cd662fff0ee78a34a80ee2aefa309368 (Local ID: e27a7bdf0e2d9c2fafb7001a6786e46e9ad9d4a2)[ run_local_store ]
I, [2014-12-16T14:55:25.315100 #13376]  INFO -- HvaHandler: Session ID: c6297697cd662fff0ee78a34a80ee2aefa309368: Instance UUID: i-lg8xxzce: Booting instance
2014-12-16 14:55:31 JobContext thr=JobWorker[0/1] [ERROR]: Job failed c6297697cd662fff0ee78a34a80ee2aefa309368 [ run_local_store ]: No such file or directory - lxc-version
2014-12-16 14:55:31 JobContext thr=JobWorker[0/1] [ERROR]: Caught Errno::ENOENT: No such file or directory - lxc-version
        /opt/axsh/wakame-vdc/dcmgr/lib/dcmgr/drivers/hypervisor/linux_hypervisor/linux_container/lxc.rb:50:in ``'
        /opt/axsh/wakame-vdc/dcmgr/lib/dcmgr/drivers/hypervisor/linux_hypervisor/linux_container/lxc.rb:50:in `initialize'
        /opt/axsh/wakame-vdc/dcmgr/lib/dcmgr/drivers/hypervisor/linux_hypervisor/linux_container/lxc.rb:162:in `new'
        /opt/axsh/wakame-vdc/dcmgr/lib/dcmgr/drivers/hypervisor/linux_hypervisor/linux_container/lxc.rb:162:in `block in <class:Lxc>'
        /opt/axsh/wakame-vdc/dcmgr/lib/dcmgr/task.rb:95:in `call'
        /opt/axsh/wakame-vdc/dcmgr/lib/dcmgr/task.rb:95:in `new_task_class'
        /opt/axsh/wakame-vdc/dcmgr/lib/dcmgr/task.rb:243:in `invoke'
        /opt/axsh/wakame-vdc/dcmgr/lib/dcmgr/rpc/hva_handler.rb:212:in `setup_metadata_drive'
        /opt/axsh/wakame-vdc/dcmgr/lib/dcmgr/rpc/hva_handler.rb:319:in `block in <class:HvaHandler>'
        /opt/axsh/wakame-vdc/dcmgr/vendor/bundle/ruby/2.0.0/gems/isono-0.2.19/lib/isono/runner/rpc_server.rb:69:in `instance_eval'
        /opt/axsh/wakame-vdc/dcmgr/vendor/bundle/ruby/2.0.0/gems/isono-0.2.19/lib/isono/runner/rpc_server.rb:69:in `block in job'
        /opt/axsh/wakame-vdc/dcmgr/vendor/bundle/ruby/2.0.0/gems/isono-0.2.19/lib/isono/rack/proc.rb:25:in `instance_eval'
        /opt/axsh/wakame-vdc/dcmgr/vendor/bundle/ruby/2.0.0/gems/isono-0.2.19/lib/isono/rack/proc.rb:25:in `call'
        /opt/axsh/wakame-vdc/dcmgr/vendor/bundle/ruby/2.0.0/gems/isono-0.2.19/lib/isono/rack/map.rb:52:in `call'
        /opt/axsh/wakame-vdc/dcmgr/vendor/bundle/ruby/2.0.0/gems/isono-0.2.19/lib/isono/rack/map.rb:52:in `call'
        /opt/axsh/wakame-vdc/dcmgr/vendor/bundle/ruby/2.0.0/gems/isono-0.2.19/lib/isono/rack/builder.rb:36:in `call'
        /opt/axsh/wakame-vdc/dcmgr/vendor/bundle/ruby/2.0.0/gems/isono-0.2.19/lib/isono/rack/job.rb:59:in `block (2 levels) in call'
        /opt/axsh/wakame-vdc/dcmgr/vendor/bundle/ruby/2.0.0/gems/isono-0.2.19/lib/isono/node_modules/job_worker.rb:67:in `call'
        /opt/axsh/wakame-vdc/dcmgr/vendor/bundle/ruby/2.0.0/gems/isono-0.2.19/lib/isono/node_modules/job_worker.rb:67:in `block in start'
        /opt/axsh/wakame-vdc/dcmgr/vendor/bundle/ruby/2.0.0/gems/isono-0.2.19/lib/isono/thread_pool.rb:32:in `call'
        /opt/axsh/wakame-vdc/dcmgr/vendor/bundle/ruby/2.0.0/gems/isono-0.2.19/lib/isono/thread_pool.rb:32:in `block (2 levels) in initialize'
I, [2014-12-16T14:55:31.785715 #13376]  INFO -- HvaHandler: Session ID: c6297697cd662fff0ee78a34a80ee2aefa309368: Instance UUID: i-lg8xxzce: teminating instance
E, [2014-12-16T14:55:31.811701 #13376] ERROR -- HvaHandler: Session ID: c6297697cd662fff0ee78a34a80ee2aefa309368: Instance UUID: i-lg8xxzce: Ignoring error: Errno::ENOENT No such file or directory - lxc-version from /opt/axsh/wakame-vdc/dcmgr/lib/dcmgr/drivers/hypervisor/linux_hypervisor/linux_container/lxc.rb:50:in ``'
I, [2014-12-16T14:55:31.833609 #13376]  INFO -- LinuxLocalStore: Session ID: c6297697cd662fff0ee78a34a80ee2aefa309368: Executing command: rm '/var/lib/wakame-vdc/instances/i-lg8xxzce/vol-ya4ijon8'
D, [2014-12-16T14:55:31.919764 #13376] DEBUG -- LinuxLocalStore: Session ID: c6297697cd662fff0ee78a34a80ee2aefa309368: Command Result: success (exit code=0) Command PID: 13555
D, [2014-12-16T14:55:31.955083 #13376] DEBUG -- ServiceNetfilter: event caught: hva.demo1/vnic_destroyed: vif-0na1mbvw
D, [2014-12-16T14:55:31.955609 #13376] DEBUG -- ServiceNetfilter: vnic not found in cache: vif-0na1mbvw
2014-12-16 15:13:16 ThreadPool thr=InstanceMonitor[0/1] [ERROR]: Caught RuntimeError: response was received already.
        /opt/axsh/wakame-vdc/dcmgr/vendor/bundle/ruby/2.0.0/gems/isono-0.2.19/lib/isono/node_modules/rpc_channel.rb:450:in `wait'
        /opt/axsh/wakame-vdc/dcmgr/vendor/bundle/ruby/2.0.0/gems/isono-0.2.19/lib/isono/node_modules/rpc_channel.rb:153:in `request'
        /opt/axsh/wakame-vdc/dcmgr/lib/dcmgr/node_modules/instance_monitor.rb:31:in `check_instance'
        /opt/axsh/wakame-vdc/dcmgr/lib/dcmgr/node_modules/instance_monitor.rb:12:in `block (3 levels) in <class:InstanceMonitor>'
        /opt/axsh/wakame-vdc/dcmgr/vendor/bundle/ruby/2.0.0/gems/isono-0.2.19/lib/isono/thread_pool.rb:32:in `call'
        /opt/axsh/wakame-vdc/dcmgr/vendor/bundle/ruby/2.0.0/gems/isono-0.2.19/lib/isono/thread_pool.rb:32:in `block (2 levels) in initialize'

さて、明日のエントリは @shida1234 さんの「Wakame LiveDVDを体育座りで待つ話」です。お楽しみに。