BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース AWSがAuto Scalingライフサイクルを拡張,フックを追加

AWSがAuto Scalingライフサイクルを拡張,フックを追加

原文(投稿日:2014/09/30)へのリンク

Amazon Web Serviceは先頃,Amazon EC2マネージドサービスのインスタンスのコントロールの改善を目的として,同社のAuto Scalingサービスにいくつかの機能追加を行った。Pending あるいはTerminatingへのライフサイクル状態遷移時,さらには実行中のインスタンスにも新設されるStandby状態を使用することで,フックによるカスタム操作の実行が可能になる。さらには新しいDetachInstances APIアクションによって,Auto Scalingグループからインスタンスを削除することもできる。

Auto ScalingはAmazon CloudWatchのメトリクスを基準にした条件判定に従って, ”Amazon EC2インスタンスを必要に応じて起動あるいは停止することでロードの変化に対応する,レジリエントで高度にスケーラブルなアプリケーション"を構築するための,AWSの重要なコンポーネントである。AWSの備える多数の測定基準と同じように,CloudWatchもカスタムメトリクスを公開することにより,それぞれAuto Scaling条件を自由に定義することが可能だ。

Auto Scalingストラテジのおもなユースケースは,コスト管理と操作上のフレキシビリティ上の必要に応じた,ポリシベースまたはスケジュールベースのスケールインとスケールアウト,および不正なEC2インスタンスのリプレースを基本とする状態チェックの2つである。Auto Scalingは独立したサービスとしても利用可能だが,AWS CloudFormationAWS Elastic BeanstalkAWS OpsWorksなどすべてのアプリケーションサービスに対して,サービス設定レイヤを通じて組み入れて,それぞれのサービスを支援することも可能である。

AWS Auto Scaling基本ダイアグラム

Auto Scalingには,ライフサイクル遷移に関する通知をベースとしたAmazon SNSが提供されているが,それらの通知に対する反応として実行されるカスタムアクションは,遷移そのものが完了した後にのみ適用される。これに対してPutLifecycleHook APIの実行を通じて生成されるライフサイクルフックでは,ユーザの希望するカスタムアクションを行うまでPendingあるいはTerminatingへの遷移を一時停止しておいて,実行後にCompleteLifecycleAction APIを使用して遷移を完了させる,というオペレーションが可能になる。

AWSでは,イベントの実行結果の順序について,次のように説明している。

  1. スケールインないしスケールアウトのイベントに対して,Auto Scalingがインスタンスの起動あるいは停止によって対処する。
  2. インスタンスをwait状態に移行させる。インスタンスの状態は,"Pending:Wait"あるいは"Terminating:Wait"のいずれかになる。
  3. ライフサイクルフックに定義された通知対象に対して,メッセージが送信される。メッセージには,起動または停止されたインスタンスに関する情報,およびライフサイクルアクションのコントロールに使用可能なトークンが含まれている。
  4. この時点では,手動でAutoScalingに対して継続を指示するか,もしくはライフサイクルフックのタイムアウト時間が満了するまで,インスタンスはwait状態のままになる。

RecordLifecycleActionHeartbeat APIアクションを使用すれば,最大で48時間まで(デフォルトは1時間),インスタンスをどちらかの一時的な'wait'状態に維持することも可能だ。

'Pending'あるいは'Terminating'状態に対する'Wait'と'Proceed'操作と同じように,メンテナンスやトラブル対応作業を実施するために,'InService'状態のインスタンスを一時的に'Standby'にしたり,再び元の状態に戻したりする操作もできるようになった。Auto ScalingグループがElastic Load Balancerに関連付けられている場合,Standby状態のインスタンスは登録を一時的に解除される。

AWSは,3つの主要なインスタンスの状態について,それぞれに典型的なユースケースを示している。

Pending状態のインスタンスへのソフトウェアのインストールは以前から可能で,これまでも広く行われていた(ユーザデータをEC2インスタンスに渡すなどの方法で)が,新たな'Pending:Wait'状態では,手作業が必要な場合のシナリオを実行できるようになる。さらに重要なのは,'Terminating:Wait'状態によって,これまではまったく不可能だったインスタンス終了時のインスペクションが可能になることだ。

最後に,既存のAttachInstances APIアクションを補完するDetachInstances APIアクションも追加された。このAPIは2014年1月に,実行中のAmazon EC2インスタンスからAuto Scalingグループを生成するオプションと合わせて導入されたものだ。これらのメソッドによって,ひとつのAuto Scalingグループから別のものに移動したり,あるいは他の方法では例えば起動時の遅延を伴うような,プロビジョニング済みのインスタンスを容易に獲得できるインスタンスファクトリを提供するといった,さまざまなカスタムプロビジョニングシナリオを実現することができる。

Auto Scaling APIリファレンスには,すべてのAPIアクションが要約されている。より詳細な説明は開発者ガイドで確認することができる。これらAPIはAWSコマンドラインインターフェースから直接,AWS Tools for Windows PowerShellを使って,あるいは各種のAWS SDKを通じてプログラム的に利用可能だ。Auto Scaling関連のトピックに関するサポートは,Amazon Elastic Compute Cloud (EC2)フォーラムを通じて提供されている。

この記事に星をつける

おすすめ度
スタイル

BT