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だめなわけね...


2013年8月13日火曜日

【未解決】CloudStack上のコンソール表示しようとしたら、「~.realhostip.com のサーバからの応答が一定時間以内に返ってきませんでした」というエラーが出た

先に書きますが..まだ【未解決】です。

前の記事で書いた環境
単一PC上にCloudStack4.1をインストールして、
いざインスタンスを立ち上げ
コンソール画面を開こうとしたら

前回の記事の環境


「接続がタイムアウトしました
 192-168-XXX-XXX.realhostip.com のサーバからの応答が
 一定時間以内に返ってきませんでした。」

とでてきて接続できない問題が発生した。

グローバル設定の consoleproxy.url.domain
かかれているドメイン名を使ったFQDNなのだけど、
クライアントPC上でlookupするとDHCPで割り当てられた
ルータへいってしまい誰もどこにあるかわからない。

でしらべてみると、

How to Replace realhostip.com with Your Own Domain Name

という記事に、
ゾーン内にbind9(DNS)きってローカルネット側に
192-168-XXX-YYY.realhostip.com192.168.XXX.YYYであると
正引きできるようにすれば良いみたいなことが書かれている。

ドメイン名は上記のグローバル設定変更でかえることができる。


bind9を入れる気力がなかったので.
クライアントPCのhostsに直接書き込んで対処した。

Windows7ならC:\Windows\System32\drivers\etc\hostsを
ノートパッド(管理者権限起動)で
192.168.11.141        192-168-11-141.realhostip.com
192.168.11.142        192-168-11-141.realhostip.com


と男らしく書いていく。

本格的にCloudStack運用する場合はDNSサーバは必要だな..


でもそれだけじゃないな..結局のところ192.168.11.xセグメントに
192.168.11.1と192.168.11.100という2つのルータがつながっているようなもの
なので、これをなんとかするにはきちんとrouteコマンドで処理しとかないと..

routeコマンドで「192.168.11.141~160」へ通信する場合は
192.168.11.100をゲートウェイにしてねという設定を実行し無くてはならない。

ルーティング変更目的でrouteコマンドをWindowsで使用する場合は、
コマンドプロンプトを管理者権限であげること。
(route PRINTでテーブルの状態見るくらいなら通常起動でもOK)

で、ここではたと気づいたのだけど、
CloudStack管理下のセグメントを着る場合はCIDR表記ができるようにしとけばよかった..
そうすればrouteコマンドでプライベートアドレス範囲はこのゲートウェイというように
綺麗に1発で指定できる。
そうしないと192.168.11.141/32から192.168.11.160/32まで2回routeコマンド打たないと
いけなくなるんじゃ..

サブネット計算苦手な人はこちらの計算サイト(IPv4)があります。

IPの範囲指定する場合はできるだけCIDRで切れる範囲を
選ぶようにしよう..

で次にクライアントPC上で以下のrouteコマンドを1つづつ発行した。

route add 192.168.XXX.YYY mask 255.255.255.255 192.168.11.100 metric 1

そして再度管理コンソールからコンソール画面開こうとしたのだけど..
あれ?ひらかない..

CloudStack All in One サーバ(192.168.11.100)からプライベートセグメントへの
ルーティングがない..

管理サーバからは、いくつかネットワーク設定があるが

cloud0: オートナンバ用
cloudbr0: サーバのNICへつながるブリッジ
eth0: 物理的なNICをさす
virbr0: 192.168.122.1(KVMインストールするとできる)

だろうからvnet0~9があやしいのだけど..
どのネットワークがインスタンスが使用しているのかがわからないので
ルーティングしようがない..


うーん、All in Oneサーバはクライアントも兼ねないと駄目かな..

taskselしてUbuntu Desktopインストール
して管理サーバ上でブラウザあげて
そこで管理コンソールを開けるか..


2013年8月12日月曜日

NIC1枚しか無い物理PCへCloudStack4.1をインストールする

前の記事でKVM重ねがけで実現していましたが、
やっぱり残念なので再度KVM重ねがけなしで
管理サーバ、DBサーバ、ストレージ、ホストすべて
1台の物理PCしかもNIC1枚で構築しなおしてみました。


ただ..この環境でセットアップすると
インスタンス作成まではうまくいきますが、
管理コンソール上のコンソール画面が動作しません。

All in Oneサーバ上でブラウザを開いても駄目でした。

詳細は次の記事に書いていますが..
KVM重ねがけの場合は親サーバから各セグメントが見えているので
親サーバ上のブラウザからなら問題なくコンソールは上がるのですが...




0. 用意したもの


・インターネット接続可能なセグメントに接続されたPC1台
 MouseComputer
 Core i7 1.2GHz×8
 HDD 500GB/Mem 8GB
 NIC 1枚(DHCP範囲外で固定IP割り当て、Proxyなし)
 ※PCによってはBIOSでIntelVTを有効化する必要がある
Ubuntu Server 12.04.2LTS CD-ROM
・Buffalo製WZR-HP-G450H
 家庭用ルータ
 デフォルト設定(リセットスイッチ押下→iフィルタオフ)
 LAN側:
  ルータのIP192.168.11.1
  DHCP有効範囲:192.168.11.2~65
  ※66番目以降は自由に固定IPを使える
・インターネット接続
 ルータのWAN側に接続
 プロクシ無しで接続できる
・クライアントPC(ルータにつながり、ブラウザが入っていればOK)

1. OSのインストール

  • Ubuntu Server12.04.2LTS CD-ROMメディアを挿入し電源オン
  • 日本語
  • Ubuntu Serverをインストール(I)
  • はい
  • 日本
  • 日本語
  • 日本語 - 日本語(かな 86) ※各自のキーボードによる
  • Alt + Shift
  • 戻る ※DHCPが引けたが固定IPを振る
  • ネットワークを手動で設定
  • 192.168.11.100
  • 255.255.255.0
  • 192.168.11.1
  • 192.168.11.1
  • william
  • royal ※ドメイン名は適当に変更すること
  • cloud ※OSアカウントは適当に変更すること
  • cloud ※OSアカウントは適当に変更すること
  • cloud ※パスワードは適当に変更すること
  • cloud
  • はい
  • いいえ
  • はい
  • ガイド - ディスク全体を使いLVMをセットアップする
  • SCSI1 (0,0,0) (sda) - 500.1 GB ATA Hitachi HDS72105 ※環境による
  • はい
  • はい
  • 499.8GB ※環境による
  • はい
  • いいえ
  • 空欄で次へ
  • 自動的にアップデートしない ※適宜変更
  • 続ける
  • はい
  • PCからCD-ROMを取り出す
  • 続ける ※再起動
  • cloud ※OSアカウントは適当に変更すること
  • cloud
  • sudo su -
  • cloud
  • vi .profile
 (最終行へ以下の1行を追加)
 export LANG=C
  • exit
  • sudo su -
  • cloud
  • vi /etc/sysctl.conf
 (最終行へ以下の2行を追加)
 net.ipv6.conf.all.disable_ipv6 = 1
 net.ipv6.conf.default.disable_ipv6 = 1
  • sysctl -p
  • vi /etc/apt/sources.list.d/cloudstack.list
 (新規:以下の行を追加)
 deb http://cloudstack.apt-get.eu/ubuntu precise 4.1
  • wget -O - http://cloudstack.apt-get.eu/release.asc|apt-key add -


2. プライマリ/セカンダリストレージ構築

  • aptitude update && aptitude -y dist-upgrade && aptitude -y install ssh openntpd nfs-kernel-server bridge-utils
  • vi /etc/network/interfaces
 (iface eth0 inet static以降を以下のように変更)
 iface eth0 inet manual
 iface cloudbr0 inet static
  address 192.18.11.100
  netmask 255.255.255.0
  network 192.168.11.0
  broadcast 192.168.11.255
  gateway 192.168.11.1
  dns-nameservers 192.168.11.1
  dns-search royal
  bridge-ports eth0
  bridge-stp off
 auto cloudbr0
  • mkdir -p /export/primary /export/secondary
  • vi /etc/exports
 (最終行に以下の1行を追加)
 /export *(rw,async,no_root_squash,no_subtree_check)
  • exportfs -a
  • vi /etc/modprobe.d/nfs_lockd.conf
 (新規:以下の1行を追加)
 options lockd nlm_udpport=32769 nlm_tcpport=32803
  • vi /etc/default/nfs-kernel-server
 (修正前)
 RPCMOUNTDOPTS=--manage-gids
 (修正後)
 RCPMOUNTDOPTS="--port 892"
  • vi /etc/default/nfs-common
 (修正前)
 STATDOPTS=
 (修正後)
 STATDOPTS="--port 662 --outgoing-port 2020"
  • ufw allow 111
  • ufw allow 662
  • ufw allow 32769/udp
  • ufw allow 32803/tcp
  • ufw allow 2049
  • ufw allow 892
  • reboot

3. 管理サーバの構築

  • cloud ※OSへログインするユーザ
  • cloud
  • sudo su -
  • cloud ※聞かれない場合あり
  • aptitude -y install mysql-server cloudstack-management
  • cloud ※MySQLのrootパスワード
  • cloud
  • vi /etc/mysql/my.cnf
 ([mysqld]セクション内に以下の5行を追加)
 innodb_rollback_on_timeout=1
 innodb_lock_wait_timeout=600
 max_connections=350
 log-bin=mysql-bin
 binlog-format = 'ROW'
  • service mysql restart
  • cloudstack-setup-databases cloud:cloud@localhost --deploy-as=root:cloud
  • cloudstack-setup-management
  • mkdir -p /mnt/secondary
  • mount -t nfs 192.168.11.100:/export/secondary /mnt/secondary
  • mount -t nfs 192.168.0.1:/export/secondary /mnt/secondary
  • /usr/share/cloudstack-common/scripts/storage/secondary/cloud-install-sys-mount-tmplt -m /mnt/secondary -u http://download.cloud.com/templates/acton/acton-systemvm-02062012.qcow2.bz2 -h kvm -F
  • umount /mnt/secondary
  • cd /mnt
  • rmdir secondary
  • reboot


4. ホストの構築

  • cloud ※OSログインユーザ
  • cloud
  • sudo su -
  • cloud ※聞かれない場合あり
  • passwd root
  • cloud ※OSのルートパスワードを設定
  • cloud
  • aptutude -y install kvm qemu-utils qemu-kvm libvirt-bin virtinst cloudstack-agent
  • vi /etc/default/libvirt-bin
 (修正前)
 libvirtd_opts="-d"
 (修正後)
 libvirtd_opts="-d -l"
  • vi /etc/init/libvirt-bin.conf
 (修正前:11行目)
 env libvirtd_opts="-d"
 (修正後:11行目)
 env libvirtd_opts="-d -l"
  • vi /etc/libvirtd/libvirtd.conf
 (以下の行をコメントアウト)
 listen_tls = 0
 listen_tcp = 1
 tcp_port = "16509"
 mdns_adv = 0
 (修正前)
 #auth_tcp = "sasl"
 (修正後)
 auth_tcp = "none"
  • service libvirt-bin restart
  • ln -s /etc/apparmor.d/usr.sbin.libvirtd /etc/apparmor.d/disable/
  • ln -s /etc/apparmor.d/usr.lib.libvirt.virt-aa-helper /etc/apparmor.d/disable/
  • apparmor_parser -R /etc/apparmor.d/usr.sbin.libvirtd
  • apparmor_parser -R /etc/apparmor.d/usr.lib.libvirt.virt-aa-helper
  • ufw allow proto tcp from any to any port 22
  • ufw allow proto tcp from any to any port 3922
  • ufw allow proto tcp from any to any port 1798
  • ufw allow proto tcp from any to any port 16509
  • ufw allow proto tcp from any to any port 5900:6100
  • ufw allow proto tcp from any to any port 49152:49216
  • ufw allow proto tcp from any to any port 9090
  • ufw allow proto tcp from any to any port 8250
  • ufw allow proto tcp from any to any port 8080
  • vi /etc/idmapd.conf
 (修正前)
 #Domain = localdomain
 (修正後)
 Domain = royal
  • vi /etc/sudores
 (11行目に以下の1行を追加し強制保存
 Defaults:cloud !requiretty
  • reboot

5. ゾーンの構築

※クライアントPCをルータの無線LANに接続(優先でもOK)
 DHCPにより192.168.11.2~65のいずれか1つ割り当てられる
※インターネットオプションでプロクシなし設定にしておく
  • ブラウザを起動
  • http://192.168.11.100:8080/client を開く
  • Language欄を「Japanese」に変更
  • ユーザ名「admin
  • パスワード「password
  • ドメインは空欄のまま
  • 「ログオン」ボタン押下

  • 「CloudStackを使用したことがあるので、このガイドをスキップする」押下

  • 「インフラストラクチャ」押下


  • ゾーンの「すべてを表示」押下


  • 「+ゾーンの追加」押下


  • 「基本」をチェック
  • 「Next」押下


  • 名前に「zone01」と入力
  • DNS1に「192.168.11.1」と入力 ※publicネットワークのDNS(NAT)として
  • 内部DNS1に「192.168.11.1」と入力 ※privateネットワークのDNS(NAT)として
  • ハイパーバイザを「KVM」に変更
  • 「Next」押下


  • 管理の「Edit」押下


  • KVMトラフィックラベルに「cloudbr0」と入力 ※privateネットワーク
  • 「OK」押下


  • ゲストの「Edit」押下


  • KVMトラフィックラベルに「cloudbr0」と入力 ※publicネットワーク
  • 「OK」押下


  • トラフィックの種類上の「ストレージ」アイコンをドラッグしてPhysical Network 1の破線部内へドロップ
  • ストレージの「Edit」押下


  • KVMトラフィックラベルに「cloudbr0」と入力 ※storageネットワーク
  • 「OK」押下
  • 「Next」押下


  • ポッド名に「pod01」と入力 ※privateネットワークの情報を設定
  • 予約済みシステムゲートウェイに「192.168.11.1」を入力
  • 予約済みシステムネットマスクに「255.255.255.0」を入力
  • 予約済み開始システムIPアドレスに「192.168.11.121」を入力
  • 予約済み終了システムIPアドレスに「192.168.11.140」を入力
  • 「Next」押下


  • ゲストゲートウェイに「192.168.11.1」を入力 ※publicネットワークの情報を設定
  • ゲストネットマスクに「255.255.255.0」を入力
  • ゲストの開始IPアドレスに「192.168.11.141」を入力 ※非DHCPなので4より上を適当に割り当てる
  • ゲストの終了IPアドレスに「192.168.11.160」を入力
  • 「Next」押下


  • ゲートウェイに「192.168.11.1」と入力 ※storageネットワークセグメントで記述
  • ネットマスクに「255.255.255.0」と入力
  • VLANは空欄のままにする
  • 開始IPアドレスに「192.168.11.161」と入力
  • 終了IPアドレスに「192.168.11.180」と入力
  • 「追加」押下


  • 「Next」押下


  • クラスタ名に「cluster01」と入力
  • 「Next」押下


  • ホスト名に「192.168.11.100」と入力 ※privateネットワークのIPアドレス
  • ユーザ名に「root」と入力
  • パスワードに「cloud」と入力
  • ホストタグは空欄のままにする
  • 「Next」押下


  • 名前に「primary01」と入力
  • プロトコルは「nfs」のままにする
  • サーバーに「192.168.11.100」と入力 ※本来はホストのIPアドレスをstorageネットワークアドレスで記述
  • Pathに「/export/primary」と入力
  • ストレージタグは空欄のままにする
  • 「Next」押下


  • NFSサーバーに「192.168.11.100」と入力 ※本来はホストのIPアドレスをstorageネットワークアドレスで記述
  • パスに「/export/secondary」と入力
  • 「Next」押下


  • 「Launch zone」押下 ※時間が少し掛かる
※ゾーンを有効化するかのダイアログが表示される

  • 「はい」押下
※管理コンソール画面に戻る

  • 右の「インフラストラクチャ」を押下


  • 「更新」を押下
  • システムVMの「すべてを表示」を押下


  • 2つのVMが存在し、ステータスが両方「Running」になるまで待機(結構時間がかかる)


  • 画面左の「テンプレート」を押下


  • 「CentOS 5.5(64-bit) no GUI (KVM)」をクリック


  • 準備完了欄が「Yes」となるまで待機(すこじ時間がかかる)

6. テスト

※Ubuntu Server12.04.2LTSのISOイメージを取り込み、インスタンスを起動するところまで

6.1 ISOイメージの取り込み

※管理コンソールが立ち上がり、adminでログイン済みの状態

  • 画面左の「テンプレート」を押下


  • 画面上のビューの選択を「ISO」に変更


  • 画面右上の「+ISOの登録」を押下


ここではUbuntuサイトを指しているので、特にグローバル設定変更は不要。
もし192.168.11.100上にApache2をインストールしてローカルのHTTPサーバ
からダウンロードしたい場合は、
secstorage.allowed.internal.sites」にCIDR表記でIP範囲指定する。
例えば「192.168.11.0/24」とすればよい。
  • ゾーンは「All Zone」のままにする
  • 起動可能はチェックのままにする
  • OSの種類を「Ubuntu 12.04 (64-bit)」に変更する
  • 抽出可能のチェックはないままとする
  • パブリックをチェックする
  • おすすめをチェックする
  • 「OK」押下
  • 「Ubuntu Server 12.04.2 LTS」をクリックする
  • 準備完了欄が「Yes」になるまで待機(更新ボタンで再表示して確認する)

6.2 インスタンス作成

  • 画面左の「インスタンス」を押下する
  • 画面右上の「+インスタンスの追加」を押下
  • ゾーンの選択は「zone01」のままとする
  • ISOまたはテンプレートの選択は「ISO」をチェック
  • 「次へ」押下
  • おすすめタブのUbuntu Server 12.04.2 LTSがチェックされているままとする
  • Hypervisorは「KVM」のままとする
  • 「次へ」押下
  • 「Small Instance」をチェックしたままにする
  • 「次へ」押下
  • 「Small」をチェックしたままにする
  • 「次へ」押下
  • 「default」をチェックする
  • 名前(オプション)欄に「Test」と入力する
  • グループへの追加(オプション)欄を空欄のままとする
  • 「VMの起動」押下
  • 画面左の「インスタンス」を押下する
  • 「Test」をクリックし、詳細タブの一番上にアイコン群がならぶまで待機する
  • アイコン群の右端のアイコン(コンソールの表示)をクリックする
  • ※UbuntuのインストーラのLanguage選択が出ればOK、あとは継続するかは適宜

以上



【注意】
最初にも書きましたが、インスタンスまでは作成されますが
コンソール画面をひらくとエラーになります。
現在調査中です。


最初、1つのLANに複数のセグメントを混ぜようかと思ったが、
KVMかさねがけによるKMのNAT設定を使ったなんちゃってルーティングがないので
同一セグメントを切り分けして設定した。

cloudbr0というブリッジを1つ作成し、
192.168.11.2~192.168.11.65はそのままルータのDHCP割り当てさせておき、
192.168.11.121~192.168.11.140 を管理ネットワーク(private)に、
192.168.11.141~192.168.11.160をゲストネットワーク(public)に、
192.168.11.161~192.168.11.180storageネットワークに
固定IP領域をそれぞれに割り振る。

このため3つのネットワークの
デフォルトゲートウェイは192.168.11.1
サブネットは255.255.255.0
DNSサーバはNATなのでルータのLAN側IPアドレス192.168.11.1
割り当てる。



やはりSecondary Storage VMで起動停止を繰り返す問題は、
渡しの場合ufwコマンドで設定するポートが足りなかったのだと思う。





2013年8月7日水曜日

CloudStack4.1.0をNIC1枚のPC(Ubuntu Server12.04.2)へKVMかさねがけしてインストールする

物理PC(NIC1枚)上にKVMかさねがけせずにUbuntu Server12.04.2を使って、管理サーバ、DBサーバ、ストレージ、ホスト全部1台にインストールする方法はこちら。ここに記載している手順よりシンプルですが..Consoleが上がりません..




NICが1枚しか刺さっていない1台の物理PCへ、
Ubuntu12.04.2LTSを使って、
4.2がでてきそうなこの時期に
CloudStack4.1をインストールしてみた。



物理構成(用意したもの)は以下の図のとおり。
あとUbuntu Server 12.04.2 LTSをCD-ROMへ予め焼いてある状態で、
インターネット接続はproxyなしで動作する環境になっています。



先に結論を書いておきますが、
上記のスペックでKVM重ねがけ構成した場合、
親サーバ側のOSがパニックを起こしてストップするため、
実用に耐えません



物理PC上に定義したネットワークは以下の図の通り。



KVMの親ガメ子ガメの2段構成。
管理サーバとストレージを分けたのは、
ゾーンの有効化に何度も失敗して管理サーバだけを上げ直せるように
ストレージを親ガメ側に用意しました。
ISOイメージはprivateネットワークをつかってHTTPダウンロード出来るようにしています。
#要グローバル設定変更

ネットワーク構成がこの枝とよくわからないと思うので論理構成を
別の絵にしてみました。



クライアントPCにrouteコマンド使わせるなんて
ホントは嫌だったけどしょうがない..

上記の物理構成の状態からインストルする手順をすべて
書き下したものが以下。


1. 物理マシンのセットアップ

1.1 OSのインストール


  • Ubuntu Server12.04.2LTS CD-ROMメディアを挿入し電源オン
  • 日本語
  • Ubuntu Serverをインストール(I)
  • はい
  • 日本
  • 日本語
  • 日本語 - 日本語(かな 86) ※各自のキーボードによる
  • Alt + Shift
  • 戻る ※DHCPが引けたが固定IPを振る
  • ネットワークを手動で設定
  • 192.168.11.100
  • 255.255.255.0
  • 192.168.11.1
  • 192.168.11.1
  • william
  • royal ※ドメイン名は適当に変更すること
  • cloud ※OSアカウントは適当に変更すること
  • cloud ※OSアカウントは適当に変更すること
  • cloud ※パスワードは適当に変更すること
  • cloud
  • はい
  • いいえ
  • はい
  • ガイド - ディスク全体を使いLVMをセットアップする
  • SCSI1 (0,0,0) (sda) - 500.1 GB ATA Hitachi HDS72105 ※環境による
  • はい
  • はい
  • 499.8GB ※環境による
  • はい
  • いいえ
  • 空欄で次へ
  • 自動的にアップデートしない ※適宜変更
  • 続ける
  • はい
  • PCからCD-ROMを取り出す
  • 続ける ※再起動


1.2 プライマリ/セカンダリストレージ構築


  • cloud ※OSアカウントは適当に変更すること
  • cloud
  • sudo su -
  • cloud
  • vi .profile

 (最終行へ以下の1行を追加)
 export LANG=C

  • exit
  • sudo su -
  • cloud
  • vi /etc/sysctl.conf

 (最終行へ以下の2行を追加)
  net.ipv6.conf.all.disable_ipv6 = 1
 net.ipv6.conf.default.disable_ipv6 = 1

  • sysctl -p
  • aptitude update && aptitude -y dist-upgrade && aptitude -y install ssh openntpd nfs-kernel-server bridge-utils kvm qemu-utils qemu-kvm libvirt-bin virtinst apache2 virt-manager
  • vi /etc/network/interfaces

 (iface eth0 inet static以降を以下のように変更)
 iface eth0 inet manual
 iface br0 inet static
  address 192.18.11.100
  netmask 255.255.255.0
  network 192.168.11.0
  broadcast 192.168.11.255
  gateway 192.168.11.1
  dns-nameservers 192.168.11.1
  dns-search royal
  bridge-ports eth0
  bridge-stp off
 auto br0

  • vi /etc/default/libvirt-bin

 (修正前)
 libvirtd_opts="-d"
 (修正後)
 libvirtd_opts="-d -l"

  • vi /etc/init/libvirt-bin.conf

 (修正前:11行目)
 env libvirtd_opts="-d"
 (修正後:11行目)
 env libvirtd_opts="-d -l"

  • vi /etc/libvirtd/libvirtd.conf

 (以下の行をコメントアウト)
 listen_tls = 0
 listen_tcp = 1
 tcp_port = "16509"
 mdns_adv = 0
 (修正前)
 #auth_tcp = "sasl"
 (修正後)
 auth_tcp = "none"

  • service libvirt-bin restart
  • ln -s /etc/apparmor.d/usr.sbin.libvirtd /etc/apparmor.d/disable/
  • ln -s /etc/apparmor.d/usr.lib.libvirt.virt-aa-helper /etc/apparmor.d/disable/
  • apparmor_parser -R /etc/apparmor.d/usr.sbin.libvirtd
  • apparmor_parser -R /etc/apparmor.d/usr.lib.libvirt.virt-aa-helper
  • ufw allow proto tcp from any to any port 22
  • ufw allow proto tcp from any to any port 3922
  • ufw allow proto tcp from any to any port 80
  • ufw allow proto tcp from any to any port 8080
  • mkdir -p /export/primary /export/secondary
  • vi /etc/exports

 (最終行に以下の1行を追加)
 /export *(rw,async,no_root_squash,no_subtree_check)

  • exportfs -a
  • vi /etc/modprobe.d/nfs_lockd.conf

 (新規:以下の1行を追加)
 options lockd nlm_udpport=32769 nlm_tcpport=32803

  • vi /etc/default/nfs-kernel-server

 (修正前)
 RPCMOUNTDOPTS=--manage-gids
 (修正後)
 RCPMOUNTDOPTS="--port 892"

  •  vi /etc/default/nfs-common

 (修正前)
 STATDOPTS=
 (修正後)
 STATDOPTS="--port 662 --outgoing-port 2020"

  • ufw allow 111
  • ufw allow 662
  • ufw allow 32769/udp
  • ufw allow 32803/tcp
  • ufw allow 2049
  • ufw allow 892
  • vi /etc/idmapd.conf

 (修正前)
 #Domain = localdomain
 (修正後)
 Domain = royal

  • vi /etc/hosts

 (以下の様に変更・追加)
 #192.168.11.100 william.royal william
 192.168.100.1 william.royal william
 192.168.100.2 george.royal george
 192.168.100.3 catherine.royal catherine

  • reboot
  • cloud ※OSアカウントは適当に変更すること
  • cloud
  • sudo su -
  • cloud ※不要な場合もあり
  • ifconfig -a ※br0にIPアドレスが振られているのを確認
  • tasksel
  • Ubuntu desktopをチェック(スペースキー)
  • OK ※結構時間が掛かる
  • reboot


1.3 仮想マシン用ネットワーク設定


  • cloud ※パスワードは適当に変更すること
  • 画面左上2番めにあるFireFoxをクリック ※ブラウザ起動
  • 検索欄に「Ubuntu Serverdownload」と入力
  • 「Download Ubuntu Server | Ubuntu」をクリック
  • 「Get Ubuntu 12.04 LTS」をクリック
  • OK
  • ※ダウンロード終了後
  • 画面左上2番めにフォルダマークのアイコン(Home Folder)をクリック
  • 左にある「ダウンロード」フォルダをクリック
  • 「ubuntu-12.04.2-server-amd64.iso」を右クリック
  • 「Move to」>「Home」を選択
  • 左上のUbuntuマークのアイコン(Dash Home)をクリック
  • 検索欄に「Term」と入力
  • Byobu Terminalを選択 ※Terminalならなんでも可
  • sudo su -
  • cloud ※不要な場合もあり
  • cd /var/www
  • mkdir -p images
  • chmod a+rwx images
  • cd images
  • mv ~cloud/ubuntu-12.04.2-server-amd64.iso .
  • chmod a+rw ./ubuntu-12.04.2-server-amd64.iso
  • ※余裕があればブラウザで「http://192.168.100.1/images/ubuntu-12.04.2-server-amd64.iso」を指定しダウンロード出来るようになっていることを確認しておく
  • virt-manager & ※KVM管理コンソールが起動
  • 「localhost(QEMU)」行をダブルクリック ※Connection Details画面がポップアップ
  • 「Virtual Networks」タブを選択
  • 左下「+」ボタン押下 ※Create a new virtual network画面がポップアップ
  • 「Forward」ボタン押下
  • Network Name欄に「private」と入力
  • 「Forward」ボタン押下
  • Network欄に「192.168.100.0/24」と入力
  • 「Forward」ボタン押下
  • Enable DHCPのチェックをはずす
  • 「Forward」ボタン押下
  • 「Forwarding to physical network」をチェック ※Modeは「NAT」のまま
  • 「Forward」ボタン押下
  • 「Finish」ボタン押下
  • 左下「+」ボタン押下 ※Create a new virtual network画面がポップアップ
  • 「Forward」ボタン押下
  • Network Name欄に「public」と入力
  • 「Forward」ボタン押下
  • Network欄に「192.168.200.0/24」と入力
  • 「Forward」ボタン押下
  • Enable DHCPのチェックをはずす
  • 「Forward」ボタン押下
  • 「Forwarding to physical network」をチェック ※Modeは「NAT」のまま
  • 「Forward」ボタン押下
  • 「Finish」ボタン押下
  • 左下「+」ボタン押下 ※Create a new virtual network画面がポップアップ
  • 「Forward」ボタン押下
  • Network Name欄に「storage」と入力
  • 「Forward」ボタン押下
  • Network欄に「192.168.0.0/24」と入力
  • 「Forward」ボタン押下
  • Enable DHCPのチェックをはずす
  • 「Forward」ボタン押下
  • 「Forwarding to physical network」をチェック ※Modeは「NAT」のまま
  • 「Forward」ボタン押下
  • 「Finish」ボタン押下
  • 画面左上の「×」を押して画面を閉じる



2. 管理サーバ用仮想マシンのセットアップ

2.1 仮想マシンの構築


  • ※virt-managerが上がっている状態
  • 左上のアイコン(Create a new virtual machine)押下
  • Name欄に「management」と入力
  • 「Local install media(ISO images or CDROM)」をチェック
  • 「Forward」ボタン押下
  • 「Use ISO image」をチェック
  • 「Browse...」ボタン押下
  • 「Browse Local」ボタン押下
  • Place欄の「File System」をクリック
  • 「var」>「www」>「images」>「ubuntu-12.04.2-server-amd64.iso」を選択
  • 「Open」ボタン押下
  • OS type欄を「Linux」に変更
  • Version欄を「Ubuntu 12.04 LTS (Precise Pangolin)」に変更
  • 「Forward」ボタン押下
  • Memory(RAM)は「1024」MBのままにする
  • CPUsは「1」のままにする
  • 「Forward」ボタン押下
  • 「Enable storage for this virtual machine」をチェック
  • 「Create a disk image on the computer's hard drive」をチェック
  • 「10.0」GBへ変更
  • ※管理サーバは8.0GBではインストール出来ない (セカンダリストレージのテンプレートが展開できない)
  • 「Allocate entire disk now」のチェックをはずす
  • 「Forward」ボタン押下
  • 「Customize configuration before install」をチェック
  • Advanced optionsを「Virtual network 'private':NAT」に変更
  • 「Finish」ボタン押下
  • ※仮想マシンがすぐに起動せずVirtual Machine画面が表示
  • 「NIC:xx:xx:xx」をクリック ※xx:xx:xxは毎回変わる
  • Device model欄を「e1000」に変更
  • 「Apply」ボタン押下
  • 「Add Hardware」ボタン押下
  • 左側上の「Network」を選択
  • Host device欄を「Virtual network 'public':NAT」に変更
  • Device model欄を「e1000」に変更
  • 「Finish」ボタン押下
  • 「Add Hardware」ボタン押下
  • 左側上の「Network」を選択
  • Host device欄を「Virtual network 'storage':NAT」に変更
  • Device model欄を「e1000」に変更
  • 「Finish」ボタン押下
  • 画面左上の「Begin installation」ボタン押下
  • ※画面コンソールが立ち上がりOSのインストールが開始
  • 日本語
  • 画面コンソール上にマウスカーソルを移動しクリック ※コンソールから脱出する場合はCtl+Alt押下
  • Ubuntu Serverをインストール(I)
  • はい
  • 日本
  • 日本語
  • 日本語 - 日本語 (かな86)
  • Alt + Shift
  • eth0: Intel Corporation 82540EM Gigabit Ethernet Controller
  • 続ける
  • ネットワークを手動で設定
  • 192.168.100.2 ※eth0は最初に設定したprivateを割り当てたネットワーク
  • 255.255.255.0
  • 192.168.100.1
  • 192.168.100.1 ※NAT設定しているので
  • george
  • royal
  • cloud ※OSアカウントは適当に変更すること
  • cloud ※OSアカウントは適当に変更すること
  • cloud ※パスワードは適当に変更すること
  • cloud
  • はい
  • いいえ
  • はい
  • ガイド - ディスク全体を使いLVMをセットアップする
  • 仮想ディスク 1 (vda) - 10.7 GB Virtio Block Device
  • はい
  • 10.5 GB
  • はい
  • (空欄のまま)続ける
  • 自動的にアップデートしない
  • (なにも選択せずに)続ける
  • はい
  • 続ける ※再起動


2.2 管理サーバのセットアップ


  • cloud ※OSアカウントは適当に変更すること
  • cloud
  • sudo su -
  • cloud
  • vi .profile

 (最終行へ以下の1行を追加)
 export LANG=C

  • exit
  • sudo su -
  • cloud
  • vi /etc/sysctl.conf

 (最終行へ以下の2行を追加)
  net.ipv6.conf.all.disable_ipv6 = 1
 net.ipv6.conf.default.disable_ipv6 = 1

  • sysctl -p
  • vi /etc/apt/sources.list.d/cloudstack.list

 (新規:以下の行を追加)
 deb http://cloudstack.apt-get.eu/ubuntu precise 4.1

  • wget -O - http://cloudstack.apt-get.eu/release.asc|apt-key add -
  • aptutude update && aptitude -y dist-upgrade && aptitude -y install ssh ntp nfs-common bridge-utils mysql-server cloudstack-management
  • cloud ※MySQLのrootパスワード
  • cloud
  • vi /etc/ntp.conf

 (serverから始まる行をすべてコメントアウト)
 (以下の1行を追加)
 server 192.168.100.1

  • service ntp restart
  • vi /etc/mysql/my.cnf

 ([mysqld]セクション内に以下の5行を追加)
 innodb_rollback_on_timeout=1
 innodb_lock_wait_timeout=600
 max_connections=350
 log-bin=mysql-bin
 binlog-format = 'ROW'

  • service mysql restart
  • cloudstack-setup-databases cloud:cloud@localhost --deploy-as=root:cloud
  • vi /etc/sudores

 (11行目に以下の1行を追加し強制保存)
 Defaults:cloud !requiretty

  • vi /etc/network/interfaces

 (eth0以降の設定を以下のように変更)
 auto eth0
 iface eth0 inet manual
 iface cloudbr0 inet static
  addres 192.168.100.2
  netmask 255.255.255.0
  network 192.168.100.0
  broadcast 192.168.100.255
  gateway 192.168.100.1
  metric 10
  dns-nameservers 192.168.100.1
  dns-search royal
  bridge-ports eth0
  bridge-stp off
 auto cloudbr0
 auto eth1
 iface eth1 inet manual
 iface cloudbr1 inet static
  addres 192.168.200.2
  netmask 255.255.255.0
  network 192.168.200.0
  broadcast 192.168.200.255
  metric 20
  bridge-ports eth1
  bridge-stp off
 auto cloudbr1
 auto eth2
 iface eth2 inet manual
 iface cloudbr2 inet static
  addres 192.168.0.2
  netmask 255.255.255.0
  network 192.168.0.0
  broadcast 192.168.0.255
  metric 30
  bridge-ports eth2
  bridge-stp off
 auto cloudbr2

  • ufw allow proto tcp from any to any port 22
  • ufw allow proto tcp from any to any port 3922
  • ufw allow proto tcp from any to any port 9090
  • ufw allow proto tcp from any to any port 8250
  • ufw allow proto tcp from any to any port 8080
  • vi /etc/idmapd.conf

 (修正前)
 #Domain = localdomain
 (修正後)
 Domain = royal

  • vi /etc/hosts

 (以下の様に変更・追加)
 192.168.100.1 william.royal william
 192.168.100.2 george.royal george
 192.168.100.3 catherine.royal catherine

  • reboot
  • cloud ※OSアカウントは適当に変更すること
  • cloud
  • sudo su -
  • reboot ※デフォルトNICがprivateネットワークになっていない場合があるのでもう1回リブート
  • cloud ※OSアカウントは適当に変更すること
  • cloud
  • sudo su -
  • cloud ※不要な場合あり
  • ping www.google.com ※pingが通らない場合はネットワーク設定に誤りあり
  • ping 192.168.0.1 ※pingが通らない場合はネットワーク設定に誤りあり
  • cloudstack-setup-management
  • mkdir -p /mnt/secondary
  • mount -t nfs 192.168.0.1:/export/secondary /mnt/secondary
  • /usr/share/cloudstack-common/scripts/storage/secondary/cloud-install-sys-mount-tmplt -m /mnt/secondary -u http://download.cloud.com/templates/acton/acton-systemvm-02062012.qcow2.bz2 -h kvm -F
  • umount /mnt/secondary
  • cd /mnt
  • rmdir secondary
  • reboot



3. ホスト用仮想マシンのセットアップ

3.1 仮想マシンの構築


  • ※物理マシン上にvirt-managerが上がっている状態
  • 左上のアイコン(Create a new virtual machine)押下
  • Name欄に「agent」と入力
  • 「Local install media(ISO images or CDROM)」をチェック
  • 「Forward」ボタン押下
  • 「Use ISO image」をチェック
  • 「Browse...」ボタン押下
  • 「Browse Local」ボタン押下
  • Place欄の「File System」をクリック
  • 「var」>「www」>「images」>「ubuntu-12.04.2-server-amd64.iso」を選択
  • 「Open」ボタン押下
  • OS type欄を「Linux」に変更
  • Version欄を「Ubuntu 12.04 LTS (Precise Pangolin)」に変更
  • 「Forward」ボタン押下
  • Memory(RAM)は「3913」MBにする ※めいいっぱいとる
  • CPUsは「8」にする ※めいいっぱいとる
  • 「Forward」ボタン押下
  • 「Enable storage for this virtual machine」をチェック
  • 「Create a disk image on the computer's hard drive」をチェック
  • 「10.0」GBへ変更
  • ※管理サーバは8.0GBではインストール出来ない
  •  (セカンダリストレージのテンプレートが展開できない)
  • 「Allocate entire disk now」のチェックをはずす
  • 「Forward」ボタン押下
  • 「Customize configuration before install」をチェック
  • Advanced optionsを「Virtual network 'private':NAT」に変更
  • 「Finish」ボタン押下
  • ※仮想マシンがすぐに起動せずVirtual Machine画面が表示
  • 「NIC:xx:xx:xx」をクリック ※xx:xx:xxは毎回変わる
  • Device model欄を「e1000」に変更
  • 「Apply」ボタン押下
  • 「Add Hardware」ボタン押下
  • 左側上の「Network」を選択
  • Host device欄を「Virtual network 'public':NAT」に変更
  • Device model欄を「e1000」に変更
  • 「Finish」ボタン押下
  • 「Add Hardware」ボタン押下
  • 左側上の「Network」を選択
  • Host device欄を「Virtual network 'storage':NAT」に変更
  • Device model欄を「e1000」に変更
  • 「Finish」ボタン押下
  • 画面左上の「Begin installation」ボタン押下
  • ※画面コンソールが立ち上がりOSのインストールが開始
  • 日本語
  • 画面コンソール上にマウスカーソルを移動しクリック ※コンソールから脱出する場合はCtl+Alt押下
  • Ubuntu Serverをインストール(I)
  • はい
  • 日本
  • 日本語
  • 日本語 - 日本語 (かな86)
  • Alt + Shift
  • eth0: Intel Corporation 82540EM Gigabit Ethernet Controller
  • 続ける
  • ネットワークを手動で設定
  • 192.168.100.3 ※eth0は最初に設定したprivateを割り当てたネットワーク
  • 255.255.255.0
  • 192.168.100.1
  • 192.168.100.1 ※NAT設定しているので
  • catherine
  • royal
  • cloud ※OSアカウントは適当に変更すること
  • cloud ※OSアカウントは適当に変更すること
  • cloud ※パスワードは適当に変更すること
  • cloud
  • はい
  • いいえ
  • はい
  • ガイド - ディスク全体を使いLVMをセットアップする
  • 仮想ディスク 1 (vda) - 10.7 GB Virtio Block Device
  • はい
  • 10.5 GB
  • はい
  • (空欄のまま)続ける
  • 自動的にアップデートしない
  • (なにも選択せずに)続ける
  • はい
  • 続ける ※再起動



3.2 ホストのセットアップ


  • cloud ※OSアカウントは適当に変更すること
  • cloud
  • sudo su -
  • cloud
  • vi .profile

 (最終行へ以下の1行を追加)
 export LANG=C

  • exit
  • sudo su -
  • cloud
  • vi /etc/sysctl.conf

 (最終行へ以下の2行を追加)
 net.ipv6.conf.all.disable_ipv6 = 1
 net.ipv6.conf.default.disable_ipv6 = 1

  • sysctl -p
  • vi /etc/apt/sources.list.d/cloudstack.list

 (新規:以下の行を追加)
 deb http://cloudstack.apt-get.eu/ubuntu precise 4.1

  • wget -O - http://cloudstack.apt-get.eu/release.asc|apt-key add -
  • aptutude update && aptitude -y dist-upgrade && aptitude -y install ssh ntp nfs-common bridge-utils kvm qemu-utils qemu-kvm libvirt-bin virtinst cloudstack-agent
  • vi /etc/default/libvirt-bin

 (修正前)
 libvirtd_opts="-d"
 (修正後)
 libvirtd_opts="-d -l"

  • vi /etc/init/libvirt-bin.conf

 (修正前:11行目)
 env libvirtd_opts="-d"
 (修正後:11行目)
 env libvirtd_opts="-d -l"

  • vi /etc/libvirtd/libvirtd.conf

 (以下の行をコメントアウト)
 listen_tls = 0
 listen_tcp = 1
 tcp_port = "16509"
 mdns_adv = 0
 (修正前)
 #auth_tcp = "sasl"
 (修正後)
 auth_tcp = "none"

  • service libvirt-bin restart
  • ln -s /etc/apparmor.d/usr.sbin.libvirtd /etc/apparmor.d/disable/
  • ln -s /etc/apparmor.d/usr.lib.libvirt.virt-aa-helper /etc/apparmor.d/disable/
  • apparmor_parser -R /etc/apparmor.d/usr.sbin.libvirtd
  • apparmor_parser -R /etc/apparmor.d/usr.lib.libvirt.virt-aa-helper
  • ufw allow proto tcp from any to any port 22
  • ufw allow proto tcp from any to any port 3922
  • ufw allow proto tcp from any to any port 1798
  • ufw allow proto tcp from any to any port 16509
  • ufw allow proto tcp from any to any port 5900:6100
  • ufw allow proto tcp from any to any port 49152:49216
  • ufw allow proto tcp from any to any port 9090
  • ufw allow proto tcp from any to any port 8250
  • ufw allow proto tcp from any to any port 8080
  • vi /etc/idmapd.conf

 (修正前)
 #Domain = localdomain
 (修正後)
 Domain = royal

  • vi /etc/hosts

 (以下の様に変更・追加)
 192.168.100.1 william.royal william
 192.168.100.2 george.royal george
 192.168.100.3 catherine.royal catherine

  • vi /etc/network/interfaces

 (eth0以降の設定を以下のように変更)
 auto eth0
 iface eth0 inet manual
 iface cloudbr0 inet static
  addres 192.168.100.3
  netmask 255.255.255.0
  network 192.168.100.0
  broadcast 192.168.100.255
  gateway 192.168.100.1
  metric 10
  dns-nameservers 192.168.100.1
  dns-search royal
  bridge-ports eth0
  bridge-stp off
 auto cloudbr0
 auto eth1
 iface eth1 inet manual
 iface cloudbr1 inet static
  addres 192.168.200.3
  netmask 255.255.255.0
  network 192.168.200.0
  broadcast 192.168.200.255
  metric 20
  bridge-ports eth1
  bridge-stp off
 auto cloudbr1
 auto eth2
 iface eth2 inet manual
 iface cloudbr2 inet static
  addres 192.168.0.3
  netmask 255.255.255.0
  network 192.168.0.0
  broadcast 192.168.0.255
  metric 30
  bridge-ports eth2
  bridge-stp off
 auto cloudbr2

  • reboot
  • cloud
  • sudo su -
  • cloud ※聞かれない場合あり
  • passwd
  • cloud ※rootのパスワード
  • cloud


4. ゾーンの構築


  • ※物理マシンにもどる
  • 画面左上のFirefoxアイコン(Firefoxウェブブラウザ)押下
  • (ブラウザが既に上がっている場合は不要)
  • http://192.168.100.2:8080/client を開く
  • Language欄を「Japanese」に変更
  • ユーザ名「admin」
  • パスワード「password」
  • ドメインは空欄のまま
  • 「ログオン」ボタン押下
  • 「CloudStackを使用したことがあるので、このガイドをスキップする」押下
  • 「インフラストラクチャ」押下
  • ゾーンの「すべてを表示」押下
  • 「+ゾーンの追加」押下
  • 「基本」をチェック
  • 「Next」押下
  • 名前に「zone01」と入力
  • DNS1に「192.168.200.1」と入力 ※publicネットワークのDNS(NAT)として
  • 内部DNS1に「192.168.100.1」と入力 ※privateネットワークのDNS(NAT)として
  • ハイパーバイザを「KVM」に変更
  • 「Next」押下
  • 管理の「Edit」押下
  • KVMトラフィックラベルに「cloudbr0」と入力 ※privateネットワーク
  • 「OK」押下
  • ゲストの「Edit」押下
  • KVMトラフィックラベルに「cloudbr1」と入力 ※publicネットワーク
  • 「OK」押下
  • トラフィックの種類上の「ストレージ」アイコンをドラッグしてPhysical Network 1の破線部内へドロップ
  • ストレージの「Edit」押下
  • KVMトラフィックラベルに「cloudbr2」と入力 ※storageネットワーク
  • 「OK」押下
  • 「Next」押下
  • ポッド名に「pod01」と入力 ※podの設定ではprivateネットワークの情報を設定する
  • 予約済みシステムゲートウェイに「192.168.100.1」を入力
  • 予約済みシステムネットマスクに「255.255.255.0」を入力
  • 予約済み開始システムIPアドレスに「192.168.100.101」を入力 ※非DHCPなので4より上を適当に割り当てる
  • 予約済み終了システムIPアドレスに「192.168.100.200」を入力
  • 「Next」押下
  • ゲストゲートウェイに「192.168.200.1」を入力 ※ゲストなのでpublicネットワークセグメントで記述
  • ゲストネットマスクに「255.255.255.0」を入力
  • ゲストの開始IPアドレスに「192.168.200.101」を入力 ※非DHCPなので4より上を適当に割り当てる
  • ゲストの終了IPアドレスに「192.168.200.200」を入力
  • 「Next」押下
  • ゲートウェイに「192.168.0.1」と入力 ※storageネットワークセグメントで記述
  • ネットマスクに「255.255.255.0」と入力
  • VLANは空欄のままにする
  • 開始IPアドレスに「192.168.0.101」と入力
  • 終了IPアドレスに「192.168.0.200」と入力
  • 「追加」押下
  • 「Next」押下
  • クラスタ名に「cluster01」と入力
  • 「Next」押下
  • ホスト名に「192.168.100.3」と入力 ※ホストのIPアドレスをprivateネットワークアドレスで記述
  • ユーザ名に「root」と入力
  • パスワードに「cloud」と入力
  • ホストタグは空欄のままにする
  • 「Next」押下
  • 名前に「primary01」と入力
  • プロトコルは「nfs」のままにする
  • サーバーに「192.168.0.1」と入力 ※物理PCのIPをstorageネットワーク指定
  • Pathに「/export/primary」と入力
  • ストレージタグは空欄のままにする
  • 「Next」押下
  • NFSサーバーに「192.168.0.1」と入力 ※物理PCのIPをstorageネットワーク指定
  • パスに「/export/secondary」と入力
  • 「Next」押下
  • 「Launch zone」押下
  • ※ゾーンを有効化するかのダイアログが表示される
  • ※ここからセカンダリVMの起動失敗するケースが多いので管理サーバの/var/log/cloudstack/management/management-server.logをtail -fで見ておいたほうが良い
  • 「はい」押下
  • ※管理コンソール画面に戻る
  • 右ではなく上の「インフラストラクチャ」を押下
  • 更新を押下
  • システムVMの「すべてを表示」を押下
  • 2つのVMが存在し、ステータスが両方「Running」になるまで待機(結構時間がかかる)
  • 画面左の「テンプレート」を押下
  • 「CentOS 5.5(64-bit) no GUI (KVM)」をクリック
  • 準備完了欄が「Yes」となるまで待機(すこじ時間がかかる)



5. テスト

※Ubuntu Server12.04.2LTSのISOイメージを取り込み、インスタンスを起動するところまで


5.1 ISOイメージの取り込み

※管理コンソールが立ち上がり、adminでログイン済みの状態
  • 画面左の「グローバル設定」を押下する
  • 画面右上の検索欄に「secstorage」と入力
  • 名前が「secstorage.allowed.internal.sites」の操作欄のアイコンをクリック
  • 値欄に「192.168.100.0/24」と入力する ※もっとサブネット絞って範囲狭めても良い
  • 「OK」を押す
  • 画面右上の「admin cloud」>「ログオフ」を選択
  • ※管理サーバのコンソール画面へ(ログイン画面)
  • cloud ※OSのユーザ名、適当に変更する
  • cloud ※OSのパスワード、適当に変更する
  • sudo reboot
  • cloud ※聞かれない場合あり
  • ※再起動されたら、画面コンソールのログイン画面へ
  • ユーザ名に「admin」と入力する
  • パスワードに「password」と入力する
  • 「ログイン」押下
  • 画面左の「テンプレート」を押下
  • 画面上のビューの選択を「ISO」に変更
  • 画面右上の「+ISOの登録」を押下
  • 名前欄に「Ubuntu Server 12.04.2 LTS」と入力
  • 説明欄に「Downloaded YYYY/MM/DD」と入力
  • URL欄に「http://192.168.100.1/images/ubuntu-12.04.2-server-amd64.iso」と入力
  • ゾーンは「All Zone」のままにする
  • 起動可能はチェックのままにする
  • OSの種類を「Ubuntu 12.04 (64-bit)」に変更する
  • 抽出可能のチェックはないままとする
  • パブリックをチェックする
  • おすすめをチェックする
  • 「OK」押下
  • 「Ubuntu Server 12.04.2 LTS」をクリックする
  • 準備完了欄が「Yes」になるまで待機(更新ボタンで再表示して確認する)


5.2 インスタンス作成


  • 画面左の「インスタンス」を押下する
  • 画面右上の「+インスタンスの追加」を押下
  • ゾーンの選択は「zone01」のままとする
  • ISOまたはテンプレートの選択は「ISO」をチェック
  • 「次へ」押下
  • おすすめタブのUbuntu Server 12.04.2 LTSがチェックされているままとする
  • Hypervisorは「KVM」のままとする
  • 「次へ」押下
  • 「Small Instance」をチェックしたままにする
  • 「次へ」押下
  • 「Small」をチェックしたままにする
  • 「次へ」押下
  • 「default」をチェックする
  • 名前(オプション)欄に「Test」と入力する
  • グループへの追加(オプション)欄を空欄のままとする
  • 「VMの起動」押下
  • 画面左の「インスタンス」を押下する
  • 「Test」をクリックし、詳細タブの一番上にアイコン群がならぶまで待機する
  • アイコン群の右端のアイコン(コンソールの表示)をクリックする
  • ※UbuntuのインストーラのLanguage選択が出ればOK、あとは継続するかは適宜

以上


なぜ、コンソールの表示までで止まっているのかというと、
このままUbuntuをインストールしている最中に

親ガメ(192.168.11.100)のOSがパニックを起こしてしまいました..

CloudStackを試す場合は孫ガメまで作らないといけないので
メモリのリソースが足りないのかも..

子供が管理サーバとホストの2インスタンス、
孫がSecondary StorageVM、Console ProxyVMと作成したインスタンスの3つ
仮想マシン計5個動かしてることになるから..


実用に耐えないのはわかっていたけど..
もうちょっと色々させて欲しかったなあ...


OS型でないESXiにしたほうがいいのかなあ..

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

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