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 件のコメント:

既存アプリケーションをK8s上でコンテナ化して動かす場合の設計注意事項メモ

既存アプリをK8sなどのコンテナにして動かすには、どこを注意すればいいか..ちょっと調べたときの注意事項をメモにした。   1. The Twelve Factors (日本語訳からの転記) コードベース   バージョン管理されている1つのコードベースと複数のデプロイ 依存関係 ...