hiroshi akutsuの日記

主にプログラミング関係のこと

CentOS【Wakame vdcのテスト環境を構築する】

現在通っている産業技術大学院大学(AIIT)のクラウドインフラ構築特論という授業でWakame vdcを仮想環境上にインストールする課題があったのだけど、自分のローカル環境にインストールするのに結構ハマって苦労したので、インストール方法の記録を残したいと思います。

環境は以下のとおり。
・ホストOS:MacBookAir OSX yosemite
VirtualBox:4.3.20
・ゲストOS:CentOS 6.5
※ホストは64ビットOSである必要があります。
CentOS 6.6以降は現時点では対応していないようですのでインストールガイドに則り6.5で入れます。

やりたいことは以下の通り。

VirtualBox上にインストールしたゲストOS上にWakameの動作をテストするための環境を構築したい。
②ホストがノートPCで、様々なLANにつなぐことが想定されるので、ゲストのIPアドレスを固定化したい。BridgeではなくNATとホストオンリーネットワークの2アダプタ構成としたい。
③ホストからsshでwakameで立ち上げたインスタンスにログインしたい。
④ゲストOSは、コンソールだけだとネットワーク設定をミスして繋がんなくなったりした時にコマンドのコピペなどができなくて不便なのでデスクトップ版を入れたい。

基本的にはインストールガイド(下記リンク)の通りに行うのですが、そこに書かれていない設定などもいくつかあります。


install guide · axsh/wakame-vdc Wiki · GitHub


ハマりポイントがいくつもあったので、そこらへんは丁寧に書いていこうと思います。

まずVirtualBoxの設定から。この辺はインストールガイドになかったので丁寧に。


新規でイメージを作成します。名前は適当に、タイプはLinuxを選びバージョンはRed Hat(64bit)
f:id:hakoniwahaniwa:20141230190725p:plain

次にメモリを割り当てます。3ギガぐらいあれば理想ですが、2ギガで作りました。
f:id:hakoniwahaniwa:20141230194202p:plain

ハードドライブは追加で「続ける」
f:id:hakoniwahaniwa:20141230194238p:plain

ファイルタイプはVDIで「続ける」
f:id:hakoniwahaniwa:20141230194319p:plain

可変サイズで「続ける」
f:id:hakoniwahaniwa:20141230194709p:plain

デモなので20ギガぐらいで「作成」
f:id:hakoniwahaniwa:20141230194822p:plain


これで仮想の箱(インスタンス)ができました。


次に箱のネットワーク設定です。
環境設定からホストオンリーネットワークの設定をします。
f:id:hakoniwahaniwa:20141230195240p:plain

ネットワークから「ホストオンリーネットワーク」を選び右側の+のボタンをクリックし、ネットワークを追加します。私の場合はすでに作ってあるホストオンリーネットワークがいくつかあったので、vboxnet2というのができました。
f:id:hakoniwahaniwa:20141230195447p:plain

右側のドライバーのようなボタンをクリックし、アダプターのIPを以下のように設定します。192.168.58.1のゲートウェイのIPは非常に重要です。
f:id:hakoniwahaniwa:20141230195557p:plain

DHCP設定は特に何もしません。
f:id:hakoniwahaniwa:20141230195633p:plain

続いて箱のネットワーク設定をします。
アダプター1を以下のようにします。先ほど作成したホストオンリーネットワーク「vboxnet2」をプルダウンから間違えないよう選択します。
最終的にはこのvboxnet2のネットワークにインスタンスごとにローカルアドレスを割り振る形になります。
またプロミスキャスモードを「すべて許可」にします。
f:id:hakoniwahaniwa:20141230195848p:plain

次にゲストOSがWANに出ていくためのNATを設定します。
アダプター2を有効にし、NATを選びます。
f:id:hakoniwahaniwa:20141230200134p:plain

これでようやくCentOSのインストールです。
ストレージのCD/DVDドライブにCentOS 6.5のCentOS-6.5-x86_64-bin-DVD1.isoをセットして起動します。
f:id:hakoniwahaniwa:20141230201440p:plain



ディスクのチェックはSkipしましたが、時間があればOKで
f:id:hakoniwahaniwa:20141230201946p:plain

MacBookAirでインストールするとなぜかハードウェアが未対応的なエラーが出ますがOKで
f:id:hakoniwahaniwa:20141230202059p:plain

言語は日本語
f:id:hakoniwahaniwa:20141230202141p:plain

キーボードも日本語
f:id:hakoniwahaniwa:20141230202217p:plain

基本ストレージを選択
f:id:hakoniwahaniwa:20141230202253p:plain

データを破棄を選択
f:id:hakoniwahaniwa:20141230202336p:plain

ホスト名は適当に
f:id:hakoniwahaniwa:20141230202403p:plain


タイムゾーンはアジア/東京
f:id:hakoniwahaniwa:20141230202459p:plain

パスワードは忘れないやつ
f:id:hakoniwahaniwa:20141230202544p:plain

すべての領域を使用するで
f:id:hakoniwahaniwa:20141230202616p:plain

変更をディスクに書き込む
f:id:hakoniwahaniwa:20141230202650p:plain

Minimal Desktopを選択し他は何も選ばず「次」
f:id:hakoniwahaniwa:20141230202736p:plain

インストールが開始されます。
f:id:hakoniwahaniwa:20141230202813p:plain


しばらく待って下記画面が出たら再起動
f:id:hakoniwahaniwa:20141230203757p:plain

再起動後は下記画面になります。次へ
f:id:hakoniwahaniwa:20141230203844p:plain


同意して次
f:id:hakoniwahaniwa:20141230203926p:plain


ユーザーは適当に
f:id:hakoniwahaniwa:20141230204010p:plain

NTPはまだネットワークが繋がっていないので特に使わず次
f:id:hakoniwahaniwa:20141230204105p:plain

Kdumpを無効にして「はい」
f:id:hakoniwahaniwa:20141230204220p:plain

再起動
f:id:hakoniwahaniwa:20141230204252p:plain



ようやくこれでCentOSが使えるようになりました。

インストール後のCentOS側の設定

インストール直後はネットワークは繋がっていない状態だと思います。最初の方で重要なネットワーク周りの設定をやっていきます。

端末を立ち上げます。
f:id:hakoniwahaniwa:20141230204446p:plain


まずvisudoで一般ユーザからsudoできるようにします。
suコマンドでスーパーユーザになり、visudoコマンドで

$ su
# visudo

akutsu ALL=(ALL) ALL

を追加
f:id:hakoniwahaniwa:20141230204728p:plain

次にSelinuxを無効にします。スーパーユーザのまま

# vi /etc/selinux/config

でdisabledに。
f:id:hakoniwahaniwa:20141230205845p:plain


ここで再起動します。

# shutdown -r now

wakameのinstall guideにはwakameをインストール後にネットワークを設定していますが、まずインターネットに繋がないといけないので先にネットワークの設定をしてしまいます。



スーパーユーザになり

# vi /etc/sysconfig/network-scripts/ifcfg-eth0

をし、eth0を編集します。

ifcfg-eth0の設定は以下のようになります。
※HWADDRとUUIDはデフォルトで入っている内容のまま変更しないで、それ以外の内容を変更します。
f:id:hakoniwahaniwa:20141230210559p:plain

次にifcfg-br0を追加します。

# vi /etc/sysconfig/network-scripts/ifcfg-br0

ゲートウェイの設定はここで書いてはいけません。ゲートウェイはインターネットに出るため、NAT側(dhcp)で自動で設定されます。
f:id:hakoniwahaniwa:20141230211147p:plain

次にeth1の設定をします。eth1はNATのアダプタです。onbootをyesに変えるだけです。
f:id:hakoniwahaniwa:20141230211614p:plain

これで

# service network restart

をし、ネットワークを再起動します。
下記のようにすべてOKになると外につながると思います。
f:id:hakoniwahaniwa:20141230211819p:plain

あとはinstall guideの設定をひたすらやっていきます。

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

ここまで終わったら再起動します。

$ sudo shutdown -r now

再起動後、新たにネットワークのインタフェース「venet0」が追加されています。

しかし、ここで

$ sudo service network restart

をするとこのvenet0だけこけます。
f:id:hakoniwahaniwa:20141230212754p:plain

なのでvenet0を編集します。

$ sudo vi /etc/sysconfig/network-scripts/ifcfg-venet0

で以下のようにNM_CONTROLLED=noを追記
f:id:hakoniwahaniwa:20141230212947p:plain

これで

$ sudo service network restart

をするときちんとOKが表示されるようになると思います。


install guideではこの後ネットワーク周りの設定を行っていますが、今回の記事では先にネットワーク周りは設定済みなのでそこは飛ばして、install guideのManual Configurationから続けていきます。

$ sudo cp /opt/axsh/wakame-vdc/dcmgr/config/dcmgr.conf.example /etc/wakame-vdc/dcmgr.conf
$ sudo cp /opt/axsh/wakame-vdc/dcmgr/config/hva.conf.example /etc/wakame-vdc/hva.conf
$ sudo cp /opt/axsh/wakame-vdc/frontend/dcmgr_gui/config/database.yml.example /etc/wakame-vdc/dcmgr_gui/database.yml
$ sudo cp /opt/axsh/wakame-vdc/frontend/dcmgr_gui/config/dcmgr_gui.yml.example /etc/wakame-vdc/dcmgr_gui/dcmgr_gui.yml
$ sudo cp /opt/axsh/wakame-vdc/frontend/dcmgr_gui/config/instance_spec.yml.example /etc/wakame-vdc/dcmgr_gui/instance_spec.yml
$ sudo cp /opt/axsh/wakame-vdc/frontend/dcmgr_gui/config/load_balancer_spec.yml.example /etc/wakame-vdc/dcmgr_gui/load_balancer_spec.yml
$ sudo service mysqld start
$ mysqladmin -uroot create wakame_dcmgr
$ cd /opt/axsh/wakame-vdc/dcmgr
$ /opt/axsh/wakame-vdc/ruby/bin/rake db:up

ここまでやったら1つファイルの中身を編集します。(install guide通りです)

$ sudo vi /etc/default/vdc-hva

でNODE_ID=demo1の前のコメントアウト(#)を外します。
f:id:hakoniwahaniwa:20141230213446p:plain


引き続きinstall guideの設定に戻り、残りをやっていきます。

$ /opt/axsh/wakame-vdc/dcmgr/bin/vdc-manage host add hva.demo1 \
   --uuid hn-demo1 \
   --display-name "demo HVA 1" \
   --cpu-cores 100 \
   --memory-size 10240 \
   --hypervisor openvz \
   --arch x86_64 \
   --disk-space 102400 \
   --force

$ sudo mkdir -p /var/lib/wakame-vdc/images
$ cd /var/lib/wakame-vdc/images
$ sudo curl -O http://dlc.wakame.axsh.jp.s3.amazonaws.com/demo/vmimage/ubuntu-lucid-kvm-md-32.raw.gz
$ /opt/axsh/wakame-vdc/dcmgr/bin/vdc-manage

ここまでやるとwakameのvdc-manageプロンプトが立ち上がります。
引き続き以下の内容を入力していきます。

backupstorage add \
  --uuid bkst-local \
  --display-name "local storage" \
  --base-uri "file:///var/lib/wakame-vdc/images/" \
  --storage-type local \
  --description "storage on the local filesystem"


backupobject add \
  --uuid bo-lucid5d \
  --display-name "Ubuntu 10.04 (Lucid Lynx) root partition" \
  --storage-id bkst-local \
  --object-key ubuntu-lucid-kvm-md-32.raw.gz \
  --size 149084 \
  --allocation-size 359940 \
  --container-format gz \
  --checksum 1f841b195e0fdfd4342709f77325ce29


image add local bo-lucid5d \
  --account-id a-shpoolxx \
  --uuid wmi-lucid5d \
  --root-device uuid:148bc5df-3fc5-4e93-8a16-7328907cb1c0 \
  --display-name "Ubuntu 10.04 (Lucid Lynx)"

以下はinstall guideの内容から今回の環境に合わせて変更してあります。

network add \
  --uuid nw-demo1 \
  --ipv4-network 192.168.58.0 \
  --prefix 24 \
  --ipv4-gw 192.168.58.1 \
  --dns 8.8.8.8 \
  --account-id a-shpoolxx \
  --display-name "demo network"

その次の設定も今回の内容に合わせて変更してください。インスタンスに割り当てられるホストのipは適当に10~199までとし、自身のbr0のip:100はreserveで使われないようにします。

network dhcp addrange nw-demo1 192.168.58.10 192.168.58.199
network reserve nw-demo1 --ipv4 192.168.58.100

あとはもうinstall guide通り

macrange add 525400 1 ffffff --uuid mr-demomacs
network dc add public --uuid dcn-public --description "the network instances are started in"
network dc add-network-mode public securitygroup
network forward nw-demo1 public
exit


$ mysqladmin -uroot create wakame_dcmgr_gui
$ cd /opt/axsh/wakame-vdc/frontend/dcmgr_gui/
$ /opt/axsh/wakame-vdc/ruby/bin/rake db:init


$ /opt/axsh/wakame-vdc/frontend/dcmgr_gui/bin/gui-manage

ここでもgui-manageプロンプトが立ち上がります。

account add --name default --uuid a-shpoolxx
user add --name "demo user" --uuid u-demo --password demo --login-id demo
user associate u-demo --account-ids a-shpoolxx
exit

$ sudo service rabbitmq-server start
$ sudo service mysqld start
$ sudo start vdc-dcmgr
$ sudo start vdc-collector
$ sudo start vdc-hva
$ sudo start vdc-webui

これでサーバが立ち上がったのであとはインスタンス起動



ホストのMacからインスタンスの立ち上げとインスタンスへのssh

ホストのWebブラウザから192.168.58.100:9000にアクセスします。
ユーザーとパスワードは両方ともdemoで
f:id:hakoniwahaniwa:20141230215808p:plain

まずセキュリティグループの設定です。
「NETWORK & SECURITY」の「Security Groups」で「Create Security Groups」をクリックします。
f:id:hakoniwahaniwa:20141230221244p:plain

sshが通るよう22ポートを開けます。
f:id:hakoniwahaniwa:20141230220451p:plain


次にkey pairsの画面に行きsshキーを取得します。
「Create Key Pairs」をクリックします。
f:id:hakoniwahaniwa:20141230220915p:plain

適当に名前を入れてCreateをクリック
f:id:hakoniwahaniwa:20141230221012p:plain

ダウンロードしたキーペアを保存します。
f:id:hakoniwahaniwa:20141230221339p:plain

次にMachine Imagesの画面に行って
Ubuntu 10.04を選んで「Launch Instance」をクリック
f:id:hakoniwahaniwa:20141230221527p:plain

Instance Nameを適当に入れ、Security Groupsを「>」をクリックして右のフィールドへ移動、Vifで「[nw-demo1]demo network」を選択し、「Launch」をクリック。
f:id:hakoniwahaniwa:20141230221840p:plain
f:id:hakoniwahaniwa:20141230221829p:plain

そしてInstanceの画面にいき、Stateがinitializingからrunningに変わるのを待ちます。

f:id:hakoniwahaniwa:20141230222032p:plain
f:id:hakoniwahaniwa:20141230222043p:plain

あとはsshをしてみるのみです。
そのまえに、macだとkeyファイルのパーミッションが400とかじゃないとアラートが出るので、ターミナルを開いてパーミッションを変更します。

~$ chmod 400 Downloads/ssh-wx6or7aj.pem
~$ ssh -i Downloads/ssh-wx6or7aj.pem -l ubuntu 192.168.58.10

f:id:hakoniwahaniwa:20141230222914p:plain

これでやっとログインできました。
今回はここまでです。これでホストがたとえインターネットに接続されていなくても、wakame環境をいじり倒すことができるようになります。


どうでしたでしょうか。何か不備があればご指摘ください。
非常に長い手順を踏みますが、慣れてしまえば1時間ぐらいあればできると思います。まあ、あまりこの手順になれることもないと思いますが……。

自分は恥ずかしい話、ホストOSやvirtualBoxのネットワーク設定を色々変えて20回以上インストールに失敗したので最後の方は手順を暗記し相当速くなりました。
まあこれも勉強ですね。
今回はこれで終了です。