第18回:Eucalyptusの最近の動向


 今回は、最近のEucalyptusに関する情報として、Eucalyptus 2.0.3(セキュリティアップデート)、Eucalyptus 3.0(今夏リリース予定)をご紹介します。また後半では、ふだん筆者らがEucalyptusを運用するうえで使用する(他愛もない)ワンライナーを少しご紹介していきます。

Eucalyptus 2.0.3

 5月25日(米国時間)に、Eucalyptus 2.0.3がリリースされました。このリリースは2.0.2同様にセキュリティアップデートになります。なお、今回はEucalyptus本体だけでなく、依存ライブラリである「Eucalyptus用Rampart/Cライブラリ」(euca-rampartc-1.3.0-6.el5.x86_64.rpm)もアップデートが必要となります。

 Eucalyptusのセキュリティ情報のページによると、今回のセキュリティアップデートを適用した後の制限事項として、同じコマンドやAPIを矢継ぎ早にくり返し発呼すると、Eucalyptusは攻撃を未然に防ぐために、リクエストに対して失敗を返す場合があるかもしれません。現在この現象を回避するには1秒ほどコマンドやAPIの発呼間隔を空けてください。
http://open.eucalyptus.com/news/2011-05-25-eucalyptus-203

Eucalyptus 3.0

 Eucalyptus社のプレスリリースによると、Eucalyptus 3.0を今夏にリリースする予定だそうです。Eucalyptus 3.0で実装が予定されている主な機能を以下に挙げます。

◆ 高可用性 (HA)
 3.0では、いままでのEucalyptusで最大の課題であった単一故障点を回避するためのアーキテクチャを実装する予定です。各コンポーネントで故障が発生した際に自動でリカバリされるようになり、クラウド管理者に対する自動通知機能も提供されます。この機能ではほかに、各コンポーネントの状態監視やリカバリを容易にするためのツールなどを提供します。

◆ Eucalyptus版IAM (EIAM)
 EIAMはAWSのIAMと互換性を持った、認証およびアカウント管理システムです。このEIAM機能はユーザIDやグループIDの管理や、それらのアカウント情報に対してリソース割り当てやアクセス制御などを提供します。またEIAM機能の一部として、大規模なレポーティング管理フレームワークを組込みました。このフレームワークは、ユーザやグループが使用したリソースについてのレポートをクラウド管理者が利用できるようにします。

◆ AD/LDAP統合
 3.0ではActiveDirectoryもしくはLDAPと連携するディレクトリサービス統合モジュールが提供されます。このモジュールを使うことによって、組織内に既に存在しているディレクトリサービスと連携し、ユーザやグループの情報をEucalyptusでも使用できるようにし、アカウント管理のコストを減らすことができます。

◆ Windowsゲスト対応
 EucalyptusでWindowsゲストを稼働させる機能を提供します。また、Windowsのマシンイメージ(EMI)の作成を簡素化するいくつかの支援ツールも提供されます。これらのツールのなかには、システム管理者がエンタープライズ向けのWindowsライセンスサーバー(例えばKMS)を利用して、インスタンスに対するボリュームアクティベートを管理するのを支援するものもあります。

◆ EBS起動機能
 EBS起動機能は、(インスタンスとして起動可能な)EBSボリュームを用いてインスタンスを起動する機能を提供します。この機能はAmazon EC2におけるEBS起動のように、インスタンスデータの永続化およびインスタンスを起動(再開)する時間を短縮します。

 さらに、上記の機能以外に以下のバグフィックスが含まれる予定です。

  • X.509証明書が複数回ダウンロードされた場合、(イメージがNCにダウンロードされなくなるために)Walrusは古いX.509証明書を使用して「アップロードされたマシンイメージ」を復号することを阻止します。
  • Enterprise Edition固有の問題ですが、Ephemeral0がメタデータに存在しなかったために"cloud-init"が動かないという問題を修正。
  • インスタンス同士がPublic IPで通信できない問題を修正。
  • 一度登録を解放したコンポーネントを再度CLCに登録すると、CLCは正常にコンポーネントを認識できない場合がある問題を修正。とくにCCは同じ名前で再登録した場合など。
  • グループ名が30文字を超える場合にインスタンスを起動できない問題を修正。
  • WalrusがCLCと別ホストで稼動しているときにOOM状態に陥いっていた問題を修正。この問題はSCでも同様に発生する可能性があります。
  • EBSボリュームが間違ったインスタンスにアタッチされる問題を修正。この問題に陥いると一度アタッチしたボリュームをデタッチできなくなっていました。

 

ワンライナー

 Eucalyptusを運用していると、しばしばeuca2oolsに含まれているコマンドだけでは運用や操作が辛くなる場合があります。もちろん、euca2oolsだけでは運用や操作が厳しい場合には大抵はEC2 APIやS3 APIを叩くプログラムを作成しますが、稀に「別にプログラムを用意するほどではない」という程度の簡単な、しかし手動では手間がかかる操作が発生します。例えば、大規模分散処理を行なうためにインスタンスを大量に起動し、EBSボリュームを大量にアタッチし、作業や処理が終ったあとに環境を後片付けするときなどは「一度に○○したい」という欲求が発生します。以下ではそのような「環境の後片付け」でなるべく手を抜くワンライナーを紹介します。

◆ 全インスタンスの停止
 euca-terminate-instancesは引数に複数のインスタンスを指定することで、一度に複数のインスタンスを停止することができますが、とは言えいちいち引数に複数のインスタンスIDを指定するのは面倒です。このような場合、以下のようなコマンドの組合せで自分が起動している全インスタンスを簡単に停止させることができます。ただし管理者権限を持っている場合は、全ユーザーのインスタンスを停止してしまうので注意して実行してください。

# 以下は説明のためにワンライナーを4行に分割して記述しています。
euca-describe-instances | \      # インスタンスの一覧を取得
grep running |                   # 取得した一覧でrunningになっているものを抽出
awk '{print $2}'| \              # 出力の2列目(インスタンスID)を抽出
xargs euca-terminate-instances   # 抽出した結果を以って停止

◆ 全ボリューム/スナップショットの削除
 普通の運用では「一度で全ボリュームを削除」という要求はあまり発生しないですが、それでも稀に「所有する全てのボリュームを削除」したい場合があります。しかし、euca-describe-volumeは引数に1つしかボリュームを指定することができないため、以下のようなコマンドの組み合わせで、自分が所有している全ボリュームを簡単に削除することができます。なお、上記同様に管理者権限を持っている場合は、全ユーザのボリュームを削除してしまうので注意して実行してください。

# 以下は説明のためにワンライナーを4行に分割して記述しています。
euca-describe-volumes | \                   # ボリュームの一覧を取得
grep available | \                          # 取得した一覧でavailableになっているものを抽出
awk '{print "euca-delete-volume",$2}' | \   # 出力の2列目(ボリュームID)を抽出し整形
sh                                          # 抽出した結果を以って削除

 なお、全スナップショットを削除する場合は以下のようになります。

# 以下は説明のためにワンライナーを4行に分割して記述しています。
euca-describe-snapshots | \                   # スナップショットの一覧を取得
grep completed | \                            # 取得した一覧でcomplatedになっているものを抽出
awk '{print "euca-delete-snapshot", $2}' | \  # 出力の2列目(スナップショットID)を抽出し整形
sh                                            # 抽出した結果を以って削除

◆ 全セキュリティグループの削除
 "default"以外の全セキュリティグループを削除する場合は以下のようなコマンドを組み合わせて実行します。なお、上記同様に管理者権限を持っている場合は、全ユーザのセキュリティグループを削除してしまうので注意して実行してください。

# 以下は説明のためにワンライナーを5行に分割して記述しています。
euca-describe-groups | \                     # セキュリティグループの一覧を取得
grep ^GROUP | \                              # グループ名の一覧を抽出
grep -v 'default[[:space:]]*default[[:space:]]*group' | \  # "default"グループを除外
awk '{print "euca-delete-group",$3}' | \     # 出力の1列目(セキュリティグループ名)の取得
sh                                           # 抽出した結果を以って削除

◆ 全キーペアの削除
 上記らに比べて最も稀ですが、自分が所有する全キーペアを削除する場合は以下のようなコマンドを組み合わせて実行します。なお上記らとは違い、いくら管理者権限を有していても、euca-describe-keypairsの出力には他のユーザのキーペアに関する情報は出力されません。

# 以下は説明のためにワンライナーを3行に分割して記述しています。
euca-describe-keypairs | \                  # キーペアの一覧を取得
awk '{print "euca-delete-keypair",$2}' | \  # 取得した一覧を整形
sh                                          # 抽出した結果を以って削除

 

イベント告知

 6月24日(金)に、「第52回先端ソフトウェア科学・工学に関するGRACEセミナー」が国立情報学研究所にて開催されます。筆者も第1部で「Eucalyptusで作るプライベートクラウド構築」というタイトルの講演をさせていただくことになりました。第2部では、前回の連載で紹介しました「edubase Cloud」のハンズオンチュートリアルがあります。詳しくは、セミナーの案内ページを参照してください。

 


羽深 修
Eucalyptus歴はまだ1年ですが、周囲からはEucalyptus中毒と勘違いされているようです。Japan Eucalyptus User Groupの活動に参加し、オープンソースカンファレンスでネタなどを披露しています。度々Eucalyptusへのパッチも書いてます。ちなみに仕事ではCentOS + Xenという環境でEucalyptusを利用していますが、自宅のEucalyptus環境はGentoo Linux + KVMで動かしています。

志田 隆弘
主にEucalyptusやクラウドとはあまり関係のない分野でちょこちょこと活動していました。Eucalyptusはバージョン 1.3の頃からいじり始め、かれこれ2年近くEucalyptusに浸かった生活をしています。Eucalyptus 1.4が出たタイミングで、Tanacasinoという名前のGUIクライアントを作ったりしていました。最新のEucalyptusで動作するので、ぜひ使ってみてください。

田中 智文
志田さんとともに初期の頃からEucalyptusの調査・検証・使用してきました。志田さんの作成したTanacasinoのメンテナンスと機能拡張を行っています。新婚ほやほやなので家でのハック活動時間が少ないですが、Walrus Clientを作ってみたりbotoを使ってEucalyptusを操作して遊んでいます。

 

関連情報
(羽深 修/志田 隆弘/田中 智文)
2011/6/10 06:00