Eucalyptus環境を使ってみる(その7) ~ euca-run-instances ~

2011.08.05

今回はキーペアの作成から始めます
インスタンスを起動してsshで接続するためにはキーペアを作成する必要があるためキーペアを作成します。

euca-add-keypair key02 > ~/.euca/admin/keypairs/key02.pk
chmod 400 ~/.euca/admin/keypairs/key02.pk

作成したキーペアを以下のコマンドで確認します。

euca-describe-keypairs

インスタンスを起動してsshで接続するためにはセキュリティグループも設定する必要があります。Eucalyptusではユーザーごとにdefaultという名前のセキュリティグループが1つ用意されていますが、最初は何も設定されていないためsshを利用できるように設定します。

euca-authorize –P tcp –p 22 –s 192.168.1.0/22 default

これでようやく一通りの設定は完了です。

それでは実際に作成したマシンイメージを起動してみます!やっとここまで来たかw
(マシンイメージ:emi-330511C7)

cd ~/.euca/admin/keypairs
euca-run-instances –k key02 –t m1.small –n 1 emi-330511C7
watch –d euca-describe-instances

でインスタンスの起動を確認しようと思いましたが、、、いっこうにpendingのままステータスが変らない><
結局1時間放置した状態でも結果がpendingのままなので、何か問題があるのだと思い調査開始したもののCLC/CC側のログを見てみてもよくわからん。

で、Node Controller側のログ(nc.log)を見てみると、Walrusへのリクエストでエラーになっていました。(192.168.1.159に対してUnreachable)

ということでNode Controller側のネットワーク設定を変更
デフォルトゲートウェイをCloud ControllerのIPアドレスに設定変更(ここでは10.100.0.1)

これで一旦Node Controllerのサービスを再起動。
念のためCLC/CC側のサービスも再起動

NC側

/etc/init.d/network restart
/etc/eucalyptus-nc restart

CLC/CC側

/etc/eucalyptus-cc restart
/etc/eucalyptus-cloud restart

で、再度インスタンスを起動してみる

cd ~/.euca/admin/keypairs
euca-run-instances –k key02 –t m1.small –n 1 emi-330511C7

これで起動するかと思いきや、、、
FinishedVerify: Not enough resources available: addresses (try --addressing private)となってしまいました。

メッセージの通り、--addressing privateのオプションを付けてインスタンスを起動してみた。

euca-run-instances –k key02 –t m1.small --addressing private –n 1 emi-330511C7
watch –d euca-describe-instances

しばらくして、ようやくrunningになって無事起動しました。。。
しかし、これではpublic IPが振られないので、意図した起動状態ではありません><

ちょっと調べてみたらeucalyptus.confの設定の中にVNET_PUBLICIPSの項目がありましたw
これ設定してないからNot enough resources available: addressesになるんですね。。。

早速、CLC/CC側のeucalyptus.confをviで編集してみます。

205行目あたりのVNET_ADDRSPERNETを指定します。
VNET_ADDRSPERNET=”64

206行目あたりのVNET_PUBLICIPSを指定します。
VNET_PUBLICIPS="192.168.3.1 192.168.3.2 192.168.3.3 192.168.3.4 192.168.3.5 192.168.3.6 192.168.3.7"

上は192.168.3.1~192.168.3.7まで指定していますが、192.168.3.64まで実際は指定(半角スペース区切り)しています。

VNET_PUBLICIPS="192.168.3.1-192.168.3.64"
という指定でもいいかもしれませんが、あえて1個ずつ指定しています。

再度CLC/CC側のサービスを再起動して、インスタンスを起動

CLC/CC側

/etc/eucalyptus-cc restart
/etc/eucalyptus-cloud restart
euca-run-instances –k key02 –t m1.small –n 1 emi-330511C7

これで大丈夫だろうと思ったが、、、
またFinishedVerify: Not enough resources available: addresses (try --addressing private)となってしまいました。
う~ん、手詰まりです。。。いろいろ調査してみても同じ様なメッセージで起動しない方がいっぱいおられるようです。
--addressing privateをつければ起動、つけなければエラー。設定の間違いしか無いように思えます

という事でいろいろ試してみましたが、結果は同じでした。基本に戻り1.6のマニュアルを見てみたら、下記の記述があった。

WARNING : If you edit a networking related value in eucalyptus.conf, you will need to perform a clean restart of the CC($EUCALYPTUS/etc/init.d/eucalyptus-cc cleanrestart) for changes to take effect. Make sure to terminate all VM instances before performing the clean restart.

そういえばVNET_MODEを”SYSTEM”から”MANAGED”に変えたり”MANAGED”から”MANAGED-NOVLAN”に変えたりVNET_ADDRSPERNETを追加したり試行錯誤してたので、ダメもとでクリーンリスタートさせました。ってかcleanrestartって何なんだ???まぁ深く考えずにネットワークに関連する設定を変更したら必要と割り切りますw

ダメもとで再度下記コマンドで期待通りに立ち上がるかを試してみました。

/etc/eucalyptus-cc stop
/etc/eucalyptus-cloud stop
/etc/eucalyptus-cc cleanrestart
/etc/eucalyptus-cloud start
euca-run-instances –k key02 –t m1.small –n 1 emi-330511C7
RESERVATION	r-4313080B	admin	default
INSTANCE	i-46F708A9	emi-330511C7	192.168.3.1	10.0.2.2	running 	key02 	0 	m1.small 
2011-08-03T05:50:34.196Z 	cluster1 	eki-5DAF1247 	eri-5882121E

なんと!public IPが割り振られ(192.168.3.1)、インスタンスまで起動が確認できました。

ふ~、ここまでたどり着くのに3時間くらいかかってしまったが、期待通り起動できたので今日はこの辺で終わり