〜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 |
以降の操作も、すべて「Cluster」ノードで行います。
入手したクレデンシャルファイルを展開し、中に含まれた設定ファイル「eucarc」から設定を読み込みます。これにより、構築したUECの各種情報やサーバの場所などが環境変数としてセットされます。
もしも「Cluster」以外から操作したい場合は、このcreds.zipをほかのマシンにコピーしてください。また、このファイルは「UECで構築したサーバの利用権」と同義ですので、ほかの人が入手可能な場所に設置してはいけません。このファイルさえあれば、「Cluster」にアクセスできるネットワーク上の別のマシンから、UECを操作することができてしまいます。
unzip creds.zip |
「Cluster」にはUECを操作するためのユーザーランドコマンドがすでにインストールされていますので、利用可能なマシンの一覧を確認してみましょう。euca-describe-availability-zones verboseを実行すると、利用可能なマシン種別と「空きスロット」の一覧が取得できます。
$ euca-describe-availability-zones verbose |
稼働させる仮想マシンのアーキテクチャをシェル変数にセットします。
ARCH=amd64 |
さらに、仮想マシンを初期登録するために、以下のeuca-bundle-image/euca-upload-imageコマンドを入力し、EKI(カーネル)・ERI(RAMディスク)を登録し、それらを結び付けた仮想マシンイメージファイル「EMI」を作成します。
# RELEASE=karmic |
ここまでの操作が終わったら、euca-run-instancesで仮想マシンを起動します。仮想マシンの起動にはしばらく時間がかかるので、euca-describe-instancesを実行しながら、ステータスが「running」になるのを待ちましょう。runningになれば、次のコマンドで「仮想マシンに割り当てられたIPアドレス」を調べ、sshでコンソールを取ることができます。
# IPADDR=$(euca-describe-instances | grep $EMI | grep running | awk '{print $4}') |
利用するUECのイメージによっては、起動中にkernel panicなどでうまく起動できない場合があります。このような場合は、euca-describe-instancesで稼働しているインスタンスを確認して、euca-get-console-output(インスタンスID)とすることで、コンソールに出力された内容を取得できます。トラブルシューティングに役立つでしょう。
$ euca-describe-instances |
利用が終了したら、euca-terminate-instances i-35AB072Cなどを実行して、インスタンスを破棄します。前述のとおり、永続性の必要なデータはサーバ上に置いておけないことに注意してください。
以降はeuca-describe-imagesで登録された「EMI」を検索し、euca-run-instancesすることで、必要に応じて仮想マシンを起動できるようになります。
$ euca-run-instances emi-4118125D |
ここまで見てきたとおり、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 |
|
||||||
|
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フォーラム全記事インデックス |
- 【 pidof 】コマンド――コマンド名からプロセスIDを探す (2017/7/27)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、コマンド名からプロセスIDを探す「pidof」コマンドです。 - Linuxの「ジョブコントロール」をマスターしよう (2017/7/21)
今回は、コマンドライン環境でのジョブコントロールを試してみましょう。X環境を持たないサーバ管理やリモート接続時に役立つ操作です - 【 pidstat 】コマンド――プロセスのリソース使用量を表示する (2017/7/21)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、プロセスごとのCPUの使用率やI/Oデバイスの使用状況を表示する「pidstat」コマンドです。 - 【 iostat 】コマンド――I/Oデバイスの使用状況を表示する (2017/7/20)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、I/Oデバイスの使用状況を表示する「iostat」コマンドです。
|
|