〜Amazonとユーカリ、コアラが好きなのはどっち?〜
Ubuntuで始めるクラウドコンピューティング



Ubuntu Japanese Team株式会社創夢
吉田 史
2009/11/25


動作検証と仮想マシンの起動

 「Node」のセットアップが終わった時点で、UECが利用可能になります。ここからは、http://testcases.qa.ubuntu.com/Install/ServerEConfigにある「UECが正しく動作しているかのテスト」の通りに操作してみましょう。

 「Cluster」で下記のコマンドを実行し、「Cluster」から「Node」を検出させます。もし「Node」を追加した場合は、このコマンドを再実行してください。

sudo euca_conf --no-rsync --discover-nodes

 UEC上で仮想マシンを動かすために、クレデンシャルファイル(証明書+設定ファイル)を入手します。「Cluster」で次の操作を行います。

mkdir ~/.priv
chmod go-rwx ~/.priv
cd ~/.priv
sudo euca_conf --get-credentials creds.zip

 以降の操作も、すべて「Cluster」ノードで行います。

 入手したクレデンシャルファイルを展開し、中に含まれた設定ファイル「eucarc」から設定を読み込みます。これにより、構築したUECの各種情報やサーバの場所などが環境変数としてセットされます。

 もしも「Cluster」以外から操作したい場合は、このcreds.zipをほかのマシンにコピーしてください。また、このファイルは「UECで構築したサーバの利用権」と同義ですので、ほかの人が入手可能な場所に設置してはいけません。このファイルさえあれば、「Cluster」にアクセスできるネットワーク上の別のマシンから、UECを操作することができてしまいます。

unzip creds.zip
source eucarc

 「Cluster」にはUECを操作するためのユーザーランドコマンドがすでにインストールされていますので、利用可能なマシンの一覧を確認してみましょう。euca-describe-availability-zones verboseを実行すると、利用可能なマシン種別と「空きスロット」の一覧が取得できます。

$ euca-describe-availability-zones verbose
AVAILABILITYZONE         euca-koala      192.168.200.21
AVAILABILITYZONE         |- vm types     free / max   cpu   ram  disk
AVAILABILITYZONE         |- m1.small     0004 / 0004   1    128     2
AVAILABILITYZONE         |- c1.medium    0004 / 0004   1    256     5
AVAILABILITYZONE         |- m1.large     0002 / 0002   2    512    10
AVAILABILITYZONE         |- m1.xlarge    0002 / 0002   2   1024    20
AVAILABILITYZONE         |- c1.xlarge    0001 / 0001   4   2048    20

 稼働させる仮想マシンのアーキテクチャをシェル変数にセットします。

ARCH=amd64
(もしくは、ARCH=i386)

 さらに、仮想マシンを初期登録するために、以下のeuca-bundle-image/euca-upload-imageコマンドを入力し、EKI(カーネル)・ERI(RAMディスク)を登録し、それらを結び付けた仮想マシンイメージファイル「EMI」を作成します。

# RELEASE=karmic
# TIMESTAMP=$(date +%Y%m%d%H%M%S)
# BUCKET_KERNEL="k-$TIMESTAMP"
# BUCKET_INITRD="r-$TIMESTAMP"
# BUCKET_IMAGE="i-$TIMESTAMP"
# [ $ARCH = "amd64" ] && IARCH=x86_64 || IARCH=i386
# UEC_IMG=$RELEASE-uec-$ARCH
# UEC_KERNEL=$UEC_IMG-vmlinuz-virtual
# UEC_INITRD=$UEC_IMG-initrd-virtual
# URL=http://uec-images.ubuntu.com/$RELEASE/current/
# [ ! -e $UEC_IMG.tar.gz ] && wget $URL/$UEC_IMG.tar.gz # This may take a bit
# [ ! -e $UEC_IMG.img ] && tar -S -xzf $UEC_IMG.tar.gz
# euca-bundle-image -i $UEC_KERNEL -r $IARCH --kernel true
# euca-upload-bundle -b $BUCKET_KERNEL -m /tmp/$UEC_KERNEL.manifest.xml
# EKI=$(euca-register $BUCKET_KERNEL/$UEC_KERNEL.manifest.xml | grep "^IMAGE" | awk '{print $2}') && echo $EKI
# euca-bundle-image -i $UEC_INITRD -r $IARCH --ramdisk true
# euca-upload-bundle -b $BUCKET_INITRD -m /tmp/$UEC_INITRD.manifest.xml
# ERI=$(euca-register $BUCKET_INITRD/$UEC_INITRD.manifest.xml | grep "^IMAGE" | awk '{print $2}') && echo $ERI
# euca-bundle-image -i $UEC_IMG.img -r $IARCH --kernel $EKI --ramdisk $ERI
# euca-upload-bundle -b $BUCKET_IMAGE -m /tmp/$UEC_IMG.img.manifest.xml
# EMI=$(euca-register $BUCKET_IMAGE/$UEC_IMG.img.manifest.xml | grep "^IMAGE" | awk '{print $2}') && echo $EMI
# if [ ! -e mykey.priv ]; then
    touch mykey.priv
    chmod 0600 mykey.priv
    euca-add-keypair mykey > mykey.priv
fi
# euca-authorize default -P tcp -p 22 -s 0.0.0.0/0

 ここまでの操作が終わったら、euca-run-instancesで仮想マシンを起動します。仮想マシンの起動にはしばらく時間がかかるので、euca-describe-instancesを実行しながら、ステータスが「running」になるのを待ちましょう。runningになれば、次のコマンドで「仮想マシンに割り当てられたIPアドレス」を調べ、sshでコンソールを取ることができます。

# IPADDR=$(euca-describe-instances | grep $EMI | grep running | awk '{print $4}')
# ssh -i mykey.priv ubuntu@$IPADDR

 利用するUECのイメージによっては、起動中にkernel panicなどでうまく起動できない場合があります。このような場合は、euca-describe-instancesで稼働しているインスタンスを確認して、euca-get-console-output(インスタンスID)とすることで、コンソールに出力された内容を取得できます。トラブルシューティングに役立つでしょう。

$ euca-describe-instances
RESERVATION     r-4B70080A      admin   default
INSTANCE        i-35AB072C      emi-4118125D    192.168.200.205 172.19.1.2
running         0       m1.small        2009-10-18T11:01:13.467Z       euca-koala      eki-65A71764    eri-487C16DC

$ euca-get-console-output i-35AB072C

 利用が終了したら、euca-terminate-instances i-35AB072Cなどを実行して、インスタンスを破棄します。前述のとおり、永続性の必要なデータはサーバ上に置いておけないことに注意してください。

 以降はeuca-describe-imagesで登録された「EMI」を検索し、euca-run-instancesすることで、必要に応じて仮想マシンを起動できるようになります。

$ euca-run-instances emi-4118125D
RESERVATION     r-4B70080A      admin   admin-default
INSTANCE        i-35AB072C      emi-4118125D    0.0.0.0 0.0.0.0 pending
2009-10-18T11:01:13.467Z        eki-65A71764  eri-487C16DC

 ここまで見てきたとおり、EMI・EKI・ERIの概念は、Amazon EC2のものと同じです。これらのeuca-*コマンドは、EC2のec2-*コマンドと1対1で対応します。EC2向けドキュメントのコマンド操作ガイドを見ながら、「ec2-」を「euca-」に読み替えれば、そのまま操作可能です。

UEC/Eucalyptusの限界と展望

 UEC/Eucalyptusは「Amazon EC2互換」環境ですが、あくまで「インターフェイスの」(≒コマンドライン操作や設計上・API上の)互換性を提供するものです。UEC/Eucalyptusでは、EC2に存在する機能のうちの一部、例えばauto-scalingなどのスケーラビリティ関連機能はまだ未実装です。

 また、「EC2用フロントエンドツールの一部は、Eucalyptusの利用を意識していない」ということを意識しておく必要もあります。

 UEC/EucalyptusはAPIレベルでの「インターフェイス互換」を提供していますので、Amazon EC2をターゲットにしたフロントエンドのほとんどは、「管理するサーバの向き先」をEucalyptusに向けるだけで動作します(API versionを間違えていなければ)。

 ですが多くのツールでは、まだEucalyptus向けの検証や設定インターフェイスの拡張が行われておらず、「運がよければ動くかも」というレベルにとどまっています。特に、ツール内でEC2やS3のサーバ名がハードコードされていることが多く、Eucalyptusで構築した環境へ「向ける」ためには、ソースコードレベルでの修正が必要(例:http://open.eucalyptus.com/wiki/s3curl)な状態です。

 これらのツールの多くはPerlやPython、XULなどで構成されているので、修正はそれほど困難ではありませんが、やや面倒でしょう。これはおそらく時間が解決するタイプの問題であると思われますが(Eucalyptusの利用者が増えれば増えるほど、ツール側の対応も進む)、現状ではコマンドラインで操作する必要があります。

 また、UEC特有の問題として、「最小構成台数が2台から」ということと、「NodeでKVMを動かすため、ハードウェアによる仮想化サポートが必須」という点があります。EucalyptusはXenとKVMに対応しているので、本来はどのようなハードウェアでも動かすことができるのですが、UECでは現状、KVMを必須の要素としています。これはUbuntuがカーネルに大規模なパッチを適用することを嫌って、XenではなくKVMを仮想化ハイパーバイザーとして選択しているためです。

 このため、少し前までのCeleronやPentium DC(デュアルコア)搭載機はVTに対応していない関係上、UECの「Node」とすることができません(これらはWindows 7のXP Modeへの対応と同じ条件であり、現行世代のCeleronなどはVTに対応しているため、この問題も時間が解決してくれるはずです)。2台のうち1台ではハードウェア仮想化サポートが必要というのは、「余っているIntel系CPUを搭載したハードウェア」で実験環境を構築するには不向きといえるでしょう。逆に、ハードウェア資産がAMD製CPUを中心としている場合、多くの機材を投入できるはずです。

 Eucalyptus/UECはまだ駆け出しの技術ですが、コアとなっているKVMなどのハイパーバイザには十分な実績がありますし、Eucalyptusの開発母体であるUCSBでは、実際のデータセンターの運用をEucalyptusで行っています。

 ここまで見てきた通り、Eucalyptus/UECは、「仮想化ソフトウェアを利用した、データセンターの構築・運用のためのミドルウェア」です。仮想化を利用したインフラを構築する場合、独自に実装を作り込むのではなく、Eucalyptus/UECの利用を検討した方が良いでしょう。たいていの場合、自前でインフラミドルウェアを開発するよりもコストを抑え、さらにEC2との互換性を手に入れることができるはずです。

前のページ
3/3

Index
Ubuntuで始めるクラウドコンピューティング
〜Amazonとユーカリ、コアラが好きなのはどっち?〜
  Page 1
 EucalyptusとUEC
 Amazon EC2/S3と同じ環境を手元に
 UEC利用に必要な環境
  Page 2
 UECの導入とセットアップ
Page 3
 動作検証と仮想マシンの起動
 UEC/Eucalyptusの限界と展望

Linux Square全記事インデックス


 Linux Squareフォーラム 仮想化技術関連記事
連載:実践! Xenで実現するサーバ統合
有力な仮想化技術として注目を集めるようになった「Xen」。このXenを活用してサーバ統合を実践していく手順を具体的に紹介します
特集:サーバの仮想化技術とビジネス展開の可能性
jailからUML/VMwareまで
1台のマシンで複数のサーバを動かす「仮想化技術」。VMwareやUMLの登場により、WebサイトだけでなくOS自体を仮想化できるようになった
特集:仮想化技術のアプローチと実装
VMwareから要注目技術Xenまで

1台のサーバで複数の仮想マシンを実行する仮想化技術は、空間コストを引き下げる可能性を持つ。最新の仮想化技術を概観してみよう
特集:仮想OS「User Mode Linux」活用法
技術解説からカーネルカスタマイズまで
Linux上で仮想的なLinuxを動かすUMLの仕組みからインストール/管理方法やIPv6などに対応させるカーネル構築までを徹底解説
特集:仮想化技術の大本命「Xen」を使ってみよう
インストール & Debian環境構築編

高いパフォーマンスで本命の1つとなった仮想マシンモニタ「Xen」。日本語による情報が少ないXenを、実際に動かしてみよう
特集:仮想化技術の大本命「Xen」を使ってみよう
Xen対応カスタムカーネル構築編

Xen環境およびその上で動作する仮想マシン用カーネルを自分で構築しよう。これにより、自由にカスタマイズしたカーネルを利用できる
特集:IPv6、UML、セキュリティ機能の統合
全貌を現したLinuxカーネル2.6[第4章]

今回は、これまでに紹介し切れなかった機能を一気に紹介する。これを読めば、カーネル2.6の正式リリースが楽しみになるだろう
Linux Squareプロダクトレビュー VMware Workstation 4
PC/AT互換機エミュレータとして不動の地位を築いたVMware。その新バージョンがリリースされた。新機能を早速試してみよう
古くて新しい「サーバ仮想化技術」の行方
サーバ仮想化を実現するための技術がソフトウェア、ハードウェアの両面で出そろってきた。ハイパーバイザーのさらなる高速化に向けた動きを紹介する
Linux Squareフォーラム全記事インデックス


Linux & OSS フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Linux & OSS 記事ランキング

本日 月間