Translate

2013年8月15日木曜日

CloudStack wikiのDevCloudのページの一部を翻訳してみる

All in Oneサーバを頑張って作っていたのだけど
いろいろあって心が折れたので、
DevCloudに転がることにしました。

で、何も見ないでセットアップしたら
なにやらUbuntuがあがって..

..その次何したらいいかさっぱりわからない..


ということでCloudStackのwikiにある
DevCloudという章だけをまず読んでみようと思い
翻訳してみました。

以下翻訳した文章ですが、
参照の際はAt your own riskでお願いします。


-------

はじめに


DevCloudは、VirtualBox(オープンソースtype-2もしくはデスクトップハイパバイザ)上で動作するOVAイメージとして提供される仮想アプライアンスで、CloudStack開発やテスト用として利用することができます。オリジナルのDevCloudはRAMが2GB必要で、VirtualBoxの仮想マシンとして実行するxen.orgのXenサーバがのっているUbuntu Preciseとして動作します。

開発者はCloudStackアーティファクト(jars, wars)やファイルをDevCloudへビルド、デプロイしたり、DevCloud内部でデータベースをデプロイし管理サーバを起動することができます。開発者はDevCloud内部で動作するCloudStackを使ってDevCloudをホストとして追加することなども可能です。現在ではDevCloudは多くの方に利用されており、特にApache CloudStackの初期リリース(4.0.0-incubating)の間などにリリーステストのために利用されています。


VirtualBox/KVM/Fusion?


DevCloudはVirtualBox(やXenServer)もしくはKVMハイパバイザどちらでも使用出来ます。これらのハイパバイザのウチ1つを選択することだけ必要です、そして次に以下のVirtualBoxもしくはLinux KVMのセットアップ章に従って下さい。

XenServerをネストされたハイパバイザで動作させたい場合は、 「CloudStack 開発のために Fusion を使用した XenServer ハイパバイザ」を参照して下さい。
https://cwiki.apache.org/confluence/display/CLOUDSTACK/XenServer+Hypervisor+for+CloudStack+Development+using+Fusion


セットアップ(VirtualBox)


1. DevCloud2.0仮想アプライアンスを入手します

イメージはこのサイトに記載されたプロセスで生成されています。

注意:約900MBあります。


2. VirtualBox4.2もしくは最新版をインストールします

3. 未定義の場合(もしくはVirtualBoxをインストールしたばかりの場合)は、VirtualBox上に"ホストオンリー"ネットワークを作成・設定します

3.1 ネットワークを作成するためには、VirtualBoxの「ファイル」→「環境設定」→「ネットワーク」を選びホストオンリーネットワークを追加してください(訳者注:右上の+マークの着いたNICアイコンを押す)。するとcboxnet0などのような名前で作成されます。(Windowsのみ:ホストオンリーネットワークの追加は実行しなくて構いません、3.2へ進んで下さい)

3.2 3.1で作成したネットワークを設定するために、(訳者注:VirtualBox Host-Only Ethernet Adapterを)右クリックし"ホストオンリーネットワークを編集"を選択して下さい。そしけ"DHCPサーバ"タブ上の"サーバを有効化"のチェックを外して下さい。

3.3 (Windowsのみ)OSの「スタート」→「管理ツール」→「セキュリティが強化されたWindowsファイアウォール」を選択して下さい。「Windowsファイアウォールのプロパティ」(中央のパネル「概要」ブロックの一番下)をクリックし、各プロファイル(ドメイン、パブリック、プライベート)タブの状態欄にある「カスタマイズ」ボタンを押して下さい。そして「VirtualBox Host-Only Network」のチェックを外します。そうすることで、ウィンドウズファイアウォールの通信ブロックは発生しません。

4. DevCloud ova イメージをVirtualBoxへインポートします


4.1 PAEモードがアクティブであるか確認します。(VirtualBoxの)「仮想マシン」→「設定」→「システム」→「プロセッサ」タブを選択し、「PAE/NXを有効化」がチェックされていることを確認します。

(訳者注:インポートは、VirtualBoxの「ファイル」→「仮想アプライアンスのインポート」→「アプライアンスを開く」からovaイメージファイルを選択し、「次へ」→「インポート」を実行します)

5. DevCloud 仮想マシンを開始します(Windowsの場合、vboxnet0を使用していないという注意が表示されることがありますので、デフォルトのホストオンリーネットワークを使用するように編集して下さい)


6. 仮想マシンブート後、ユーザ名「root」パスワード「password」でログインします

 ネットワーク
 DevCloudのデフォルトIPが192.168.56.10となっています。
 (複数のDevCloudを実行させたいなど)もしIPアドレスを変更したい場合は
 /etc/network/interfacesを変更してリブートして下さい。

7. ラップトップ上で管理サーバを動かします:


7.1 必要な場合は、「CloudStack開発環境のセットアップ」を実行します。

7.2 最新のマスタコードをチェックアウトします

7.3 ラップトップ上で管理サーバを起動します:


 mvn -P developer,systemvm clean install
 mvn -P developer -pl developer,tools/devcloud -Ddeploydb
 mvn -pl :cloud-client-ui jetty:run

管理サーバが起動するまで待機します。

8. (mysql-connector-pythonがインストール済みで管理サーバが作動中の)DevCloudをデプロイします


 $ pip install mysql-connector-python (#marvin dependancy)
 $ pip install requests (#reqd for marvin deploying the zone)
 $ mvn -P developer -pl tools/devcloud -Ddeploysvr

 # もしくは、上記のコマンドが動作しない場合は、
 # おそらくMAVEN_OPTSを使用してmvnをデバッグモードで動かしています。
 # marvinを試して下さい
 $ cd tools/devcloud; python ../marvin/marvin/deployDataCenter.py -i devcloud.cfg

上記のコマンドで、いくつかのグローバル設定が登録されているtools/devcloud/devcloud.cfgに定義された設定でゾーンがデプロイされます。コマンド実行後は、管理サーバを再起動させ、グローバル設定を反映させるために既に動作させていたシステムVMを削除して下さい。

9. "ssh root@192.168.56.10"をつかってDevCloudをAll in Oneボックスソリューションとして実行することもできます

(git、java、maven、mkisofsなど)すべてのビルドツール、mysql、nfsはプリインストール、セットアップ済みです。ホストOSで管理サーバを実行する方法を推奨します。そしてIntelliJやEclipseを使ってコード実行やデバッグさせながら動かしたりDevCloudをホスト、ストレージ、ネットワークインフラとしてリプレース/代替として使用することもできます。


セットアップ(Linux KVM)

1. 必要条件:KVMモジュール、libvirtユーティリティ(virsh)がインストールされたLinuxマシンを持っていること

2. ここからDevCloud KVMパッケージをダウンロードして下さい

3. devcloud.tarを展開し、自分がインストールしたい場所へ置き、DevCloudディレクトリへcdしてください

4. DevCloudが使用するネットワークを定義します(rootもしくはlibvirt特権ユーザで動作する)

 virsh net-define devcloud-nat-0.xml
 virsh net-define devcloud-nat-1.xml
 virsh net-start devcloud-nat-0
 virsh net-start devcloud-nat-1
 virsh net-autostart devcloud-nat-0
 virsh net-autostart devcloud-nat-1

5. devcloud.xmlを開き、qcow2ファイルのロケーションを各自のシステムに合った場所に変更して下さい

ほかにもいくつかのlibvirtのバージョンに依存する定義などを変更する必要があります。

6. devcloud.xmlを定義し、仮想マシンを開始します

 virsh define devcloud.xml
 virsh start devcloud

7. VirtualBoxセットアップ手順のステップ6から続けて下さい

 


オプション:拡張ネットワークゾーン


ステップ7をスキップして、拡張ネットワークmarvin設定の1つを使用することができます。完全な機能として、これらは各自のdevcloud上のDNSリゾルバをセットアップする必要があります。セットアップすることで、管理ネットワークは名前解決が可能となります:

 $ apt-get install dnsmasq
 $ python tools/marvin/marvin/deployDataCenter.py -i tools/devcloud/devcloud-advanced.cfg


devcloud上で管理サーバを実行したい場合:

 $ apt-get install dnsmasq
 $ python tools/marvin/marvin/deployDataCenter.py -i tools/devcloud/devcloud-advanced_internal-mgt.cfg

次に基本セットアップで説明されているとおり管理サーバを再起動します。

NATネットワーキングモデルの実装であるため、VirtualBox上でこの設定(KVM内の仮想マシン以外)ではConsole proxyは動作しません。
仮想マシンが外部と通信するためにNATを使用している間は、内部のNATネットワーク上のインターフェイスを持たないためアクセスすることができません(10.0.3.2はVirtualBoxスタック内部でありホスト上にはない)。
仮想マシンがどのポートでlistenしているか知っているのであれば、devcloud上からVNCを手動で接続すさせることは可能です(e.g. 192.168.56.10:0)。ホストオンリーネットワークをパブリックとして利用することで迂回することができますが、その場合仮想マシンは物理パブリックアクセスできず、結果何がテストしたいのかということになってしまいます。



DevCloudを用いたインタラクティブデバッギング


Eclipseなどでインタラクティブでバッグングのためにデバッグモードで管理コンソールを動作させることができます。jettyで実行する代わりに:前章のコマンドを実行し、以下のコマンドを実行します。

 export MAVEN_OPTS="-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=4000,server=y,suspend=n"
 mvn -pl :cloud-client-ui jetty:run
 
 export MAVEN_OPTS=""

トラブルシューティング


グローバル設定のこれらの設定知を確認する:


host(=管理サーバIP)、system.vm.use.local.storage(=true)、適切な管理ネットワークCIDR、secondstorage.allowed.internal.sites

"tiny Linux"テンプレートが選択枝として有効でないのであれば、上記の問題が発生します。

グローバル"host"設定に誤りがあった場合は、仮想マシンのファイル/var/log/cloud/systemvm.logに以下の様なエラーが書き込まれています。

 2013-01-22 18:45:07,987 DEBUG [agent.transport.Request] (StatsCollector-2:null) Seq 1-1613496410: Receive
 2013-01-22 18:45:11,996 INFO  [utils.nio.NioClient] (Agent-Selector:) Connecting to 10.0.3.15:8250


Windowsマシン上の開発:


必ず次の関連パッケージをインストールしなくてはなりません:pythonmysql connector for pythonbash、(cygwinもしくはmsysgitで使用する)tar
もしくは、プロファイル -P developer,systemvm を使用することでスキップ可能です:-P sytemvmを使ってみて下さい。

もしdevcloudが起動に失敗したり、ブラックスクリーンのままであれば、BIOSのVT/VT-d(仮想化テクノロジー)を有効にする必要があります。ブート中にDeleteボタンを押しBIOS設定を変更して下さい。

ランダムなWindowsマシンにいくつかのバグが時々発生します:


(訳者注:えーっ!)

com.cloud.api.doc.ApiXmlDocWriter ClassNotFoundbuild-apidoc.shの以下の行を

 java -cp $CP com.cloud.api.doc.ApiXmlDocWriter -d "$DISTDIR" $*
次のように修正して下さい。
 java -cp .$CP com.cloud.api.doc.ApiXmlDocWriter -d "$DISTDIR" $*

Devcloudノートはいつもアラートを発生させます:git global configautocrlftrueとなっていないか確認してください

'-pl'(ピーエル)を'papa'、'lima'内で使用して下さい、'-p1'(ピーイチ)を使用しないで下さい


maven3を使用して下さい、古いバージョンのものは使用しないで下さい

Ubuntu上にmaven3をインストールする手順は http://superuser.com/a/298063 を参照して下さい。

デフォルトでJettyが存在しない場合、pom.xmlに以下のpluginタグを使って、mavenの処理に含めることができます:

 
  org.mortbay.jetty
  maven-jetty-plugin
  6.1.12
 


mysqlデータベースパスワードとしてNULLをセットする必要があるかもしれません

E.g. http://stackoverflow.com/questions/3032054/how-to-remove-mysql-root-password もし動作しない場合は、rootユーザのパスワードとして非NULL値に変更しファイル incubator-cloudstack/utils/db.properties.override を作成してパスワードを提供し db.root.password を更新して下さい。

もしmavenpythonを発見できない理由でビルドを失敗したのであれば、
 mvn -P developer,systemvm clean install
を実行した結果以下の様なエラーメッセージが表示されます。
 [INFO] Apache CloudStack apidoc Tools .................... SUCCESS [41.071s]
 [INFO] Apache CloudStack Developer Tools ................. SUCCESS [0.125s]
 [INFO] Apache CloudStack Developer Tools: marvin ......... FAILURE [0.158s]
 [INFO] Apache CloudStack Developer Tools: cloudmonkey cli  SKIPPED
 [INFO] ------------------------------------------------------------------------
 [INFO] BUILD FAILURE
 [INFO] ------------------------------------------------------------------------
 [INFO] Total time: 10:28.807s
 [INFO] Finished at: Tue Dec 04 17:16:54 PST 2012
 [INFO] Final Memory: 34M/145M
 [INFO] ------------------------------------------------------------------------
 [ERROR] Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.2.1:exec (compile) on project cloud-marvin: Command execution failed. Cannot run program "python" (in directory "C:\src\asf-acl\incubator-cloudstack\tools\marvin\marvin"): CreateProcess error=2, The system cannot find the file specified -> [Help 1]

以下の方法でビルドして下さい。

 mvn -P systemvm clean install


--------------------

なるほど管理サーバ側は外で構築してもいいし、仮想アプライアンスの中で作ってもいい..か。
XenServer自体使ったことがないから、管理サーバ別だしでやってみるか..


にしても..
ハイパバイザ重ねがけって結局Console Proxyだめなわけね...


0 件のコメント:

o1-previewにナップサック問題を解かせてみた

Azure環境上にあるo1-previewを使って、以下のナップサック問題を解かせてみました。   ナップサック問題とは、ナップサックにものを入れるときどれを何個入れればいいかを計算する問題です。数学では数理最適化手法を使う際の例でよく出てきます。 Azure OpenAI Se...