実際にOpenNebula?を用いてゲストOSを構築してみましょう。 このページはOpenNebula?公式の、A VM with Context & Network 1.4を参考にしています。
フロントエンドノードの構築、
クラスタノードの構築、
仮想ネットワークの構築は何れも終わっているものとします。
またクラスタノードはKVMノードとして登録しているものとします。
ゲストOSのイメージはttylinuxを使用します。
公式ドキュメントで使用しているイメージは、設定ファイルのテンプレートなどもあるので、
ここでも同じ物を使用します。
フロントエンドノード上で、下記のコマンドを実行します。
# mkdir -p one-template # cd one-template # wget http://dev.opennebula.org/attachments/download/170/ttylinux.tar.gz # tar xvzf ttylinux.tar.gz
ttylinux.tar.gzを解凍したファイルの中に、ttylinux.oneがあります。 これがゲストOSの定義を行うファイルです。
NAME = ttylinux CPU = 0.1 MEMORY = 64 DISK = [ source = "/path/to/ttylinux.img", target = "hda", readonly = "no" ] NIC = [ NETWORK = "Small network" ] FEATURES=[ acpi="no" ] #CONTEXT = [ # hostname = "$NAME", # ip_public = "PUBLIC_IP", # files = "/path/to/init.sh /path/to/id_dsa.pub", # target = "hdc", # root_pubkey = "id_dsa.pub", # username = "opennebula", # user_pubkey = "id_dsa.pub" #]
#はコメントです。今回は、コメントアウトしたまま使用します。
まずはDISKの項目にある、"/path/to/ttylinux.img"を適切な値に変更します。
例えば、/home/nanodayo/one-templateに、イメージをダウンロードした場合は
"/home/nanodayo/one-template/ttylinux.img"に書き換えます。
ここで指定したファイルが、後でクラスタノードの適切な場所にコピーされるため、
フロントエンドノード上のパスを指定すればOKです。
続いて、NICの項目も変更します。
デフォルトの設定では、付属のsmall_network.netを元に作ったネットワークを使用していますが、
ここでは仮想ネットワークの構築で構築した、vnet0を使用します。
そしてテンプレートにはありませんが、OSという項目も必ず必要になります。 変更後のttylinux.oneは以下のようになります。
NAME = ttylinux CPU = 0.1 MEMORY = 64 OS=[ BOOT = "hd" ] DISK = [ source = "/home/nanodayo/one-template/ttylinux.img", target = "hda", readonly = "no" ] NIC = [ NETWORK = "vnet0" ] FEATURES=[ acpi="no" ] GRAPHICS = [ type = "vnc", listen = "0.0.0.0", port = "5910" ] #CONTEXT = [ # hostname = "$NAME", # ip_public = "PUBLIC_IP", # files = "/path/to/init.sh /path/to/id_dsa.pub", # target = "hdc", # root_pubkey = "id_dsa.pub", # username = "opennebula", # user_pubkey = "id_dsa.pub" #]
GRAPHICSという項目も追加してあります。
必須ではありませんが、画面の出力を見ることができるので、
トラブルシューティングがしやすくなります。
またsshと異なり、ゲストOSへの接続性がなくても使用できるというメリットもあります。
listenとportの項目では、クラスタノードが待ち受けるIPアドレスとport番号をそれぞれ指定します。
ファイルから、ゲストOSをフロントエンドノードへ登録します。下記のコマンドを実行します。
# onevm create ttylinux.one
登録後、onevm listでゲストOSの一覧を確認できます。
# onevm list ID NAME STAT CPU MEM HOSTNAME TIME 1 ttylinux pend 0 0 00 00:03:46
仮想ネットワーク同様、個々のゲストOSの情報はonevm show <ゲストOS>で参照できます。 ゲストOSの指定は、IDでもNAMEでも行えます。
# onevm show ttylinux VID : 1 UID : 0 STATE : PENDING LCM STATE : LCM_INIT DEPLOY ID : MEMORY : 0 CPU : 0 LAST POLL : 0 START TIME : 07/02 16:17:18 STOP TIME : 01/01 09:00:00 NET TX : 0 NET RX : 0 ....: Template :.... CPU : 0.1 DISK : READONLY=no,SOURCE=/home/nanodayo/opennebula/ttylinux.img,TARGET=hda FEATURES : ACPI=no MEMORY : 64 NAME : ttylinux NIC : BRIDGE=virbr0,IP=192.168.1.2,MAC=00:03:c0:a8:7a:02,NETWORK=vnet0,VNID=1 OS : BOOT=hd
ゲストOSに割り当てられたIPアドレスも表示されています。
後でログインする際に必要になるので覚えておきましょう。
実際にクラスタノードでゲストOSを起動させるには、onevm deployコマンドを使用します。
# onevm deploy <vm_id> <host_id>
<vm_id>にはゲストOSのID、<host_id>にはクラスタノードのIDをそれぞれ指定します。
onevm deployを実行すると、実際にファイルのコピーなどが行われます。
onevm deploy実行後、起動を確認します。 sshでログインできます。
# ssh root@192.168.122.2 root@192.168.122.2's password: Chop wood, carry water. #
パスワードは password となっています。 ログイン出来れば成功です。
sshでログインできない時には、VNCで調べてみましょう。
この例では、クラスタノードのport 5910版に対してVNCで接続することができます。
A VM with Context & Network 1.4
Virtual Machine Definition File 1.4