このチュートリアルでは、Cloud Monitor でサイトモニタリングタスクを設定し、Application Load Balancer (ALB) の背後でアプリケーション障害が検出されたときに、新しい Elastic Compute Service (ECS) インスタンスを自動的にスケールアウトする方法について説明します。このチュートリアルを完了すると、ご利用のシステムは障害を検出し、手動介入なしで回復できるようになります。
学習目標
このチュートリアルでは、以下の方法を学びます。
Auto Scaling でスケーリンググループとスケーリングルールを作成し、スケールアウトの動作を定義する。
Cloud Monitor でサイトモニタリングタスクを作成し、ALB でホストされているアプリケーションを監視する。
サイトモニタリングのアラートをスケーリングルールにリンクさせ、障害発生時にインスタンスが自動的に作成されるようにする。
アプリケーション障害をシミュレートして、エンドツーエンドのフローを検証する。
仕組み
このソリューションは、Cloud Monitor のサイトモニタリング (スケジュールされた検出) と Auto Scaling を組み合わせることで、ALB の背後にあるアプリケーションに自動的な障害回復機能を提供します。
サイトモニタリングによるアプリケーションの探測 -- Cloud Monitor は、ご利用の ALB インスタンスのパブリック IP アドレスに定期的にリクエストを送信し、アプリケーションが到達可能かどうかを確認します。
アラートによる Auto Scaling のトリガー -- サイトモニタリングがアプリケーションへの到達不能を検出すると、サイトモニタリングアラートが生成されます。このアラートが、設定したスケーリングルールをトリガーします。
新しいインスタンスの作成と ALB への追加 -- Auto Scaling は、カスタムイメージ (Web サービスが自動起動するように設定済み) から新しい ECS インスタンスを起動します。新しいインスタンスは、ALB のバックエンドサーバーグループに追加されます。
サービスの復旧 -- ALB は新しいインスタンスにトラフィックをルーティングし、アプリケーションは再びアクセス可能になります。
このアーキテクチャは、単一障害点をなくすことで、継続的で信頼性の高いサービスを提供します。稼働中の唯一のインスタンスに障害が発生した場合でも、Auto Scaling が代替インスタンスを作成するため、ユーザーが経験するダウンタイムは最小限に抑えられます。
前提条件
開始する前に、以下が完了していることを確認してください。
ECS インスタンスが作成され、Web アプリケーションがデプロイされていること。詳細については、「インスタンスの作成」をご参照ください。
Web サービスがデプロイされ、ECS インスタンスの起動時に実行されるように設定され、カスタムイメージが作成されていること。Auto Scaling が Web サービスをプリインストールして実行中の新しいインスタンスを起動できるように、カスタムイメージが必要です。詳細については、「スナップショットからカスタムイメージを作成」をご参照ください。
ALB インスタンスが作成され、アプリケーションにトラフィックを分散していること。詳細については、「ALB インスタンスの作成」をご参照ください。
ステップ 1:スケーリンググループとスケーリングルールの作成
このステップでは、Auto Scaling で起動テンプレート、スケーリンググループ、スケーリングルールを作成します。起動テンプレートは、新しいインスタンスを作成する際に使用するイメージと構成を Auto Scaling に指示します。スケーリンググループはインスタンスのプールを定義し、スケーリングルールは実行するアクション (例:インスタンスを 1 つ追加) を指定します。
起動テンプレートの作成
ECS コンソールにログインします。
左側のナビゲーションウィンドウで、[デプロイメントとエラスティシティ] > [起動テンプレート] を選択します。
「[テンプレートの作成]」をクリックします。要件に応じて、テンプレートのパラメーターを設定します。詳細については、「ECS コンソールで起動テンプレートを作成する」をご参照ください。> 重要: Web サービス用に作成したカスタムイメージを選択することを確認してください。これにより、Auto Scaling によって起動される新しいインスタンスには、Web サービスがプリインストール済みとなり、起動時に実行状態になります。
スケーリンググループの作成
Auto Scaling コンソールにログインします。
左側のナビゲーションウィンドウで、[スケーリンググループ] をクリックします。[スケーリンググループ] ページで、パラメーターを設定して [作成] をクリックします。スケーリンググループのパラメーター設定方法の詳細については、「スケーリンググループの管理」をご参照ください。
スケーリングルールの作成
左側のナビゲーションウィンドウで、[スケーリンググループ] をクリックします。スケーリンググループページで、作成したスケーリンググループの ID をクリックします。
[スケーリングルールおよびイベントトリガー型タスク] タブをクリックします。次に、[スケーリングルール作成] をクリックします。
スケーリングルールのパラメーターを設定し、[OK] をクリックします。
スケーリングルールのパラメーターの詳細については、「スケーリングルールの管理」をご参照ください。
ステップ 2:サイトモニタリングタスクの作成
このステップでは、Cloud Monitor でサイトモニタリングタスクを作成し、ALB インスタンスのパブリックエンドポイントを監視します。タスクが障害を検出すると、ステップ 1 で作成したスケーリングルールがトリガーされます。
Cloud Monitor コンソールにログインします。
左側のナビゲーションウィンドウで、[ネットワーク分析と監視] > [サイト監視] を選択します。
[モニタリングタスク] タブで、[タスクの作成] をクリックします。
[タスクの作成] ページで、次のセクションを設定します。パラメーター設定の詳細については、「PC を使用してサイトを監視する」をご参照ください。
[基本情報]: [監視対象アドレス] を ALB インスタンスのパブリック IP アドレスに設定します。これは、ユーザーがアクセスするアドレスおよびポート、および Site Monitoring がプローブするアドレスおよびポートです。
検出ポイントの選択: 検出ポイントを選択します。検出ポイントは、アプリケーションに対してモニタリングプローブを送信する地理的位置を決定します。
アラートルールの設定: [操作] 列で、[編集] をクリックします。Auto Scaling を有効化し、手順 1 で作成したスケーリンググループとスケーリングルールを選択して、[OK] をクリックします。その後、[作成] をクリックします。
アラートグループの選択: 左ペインから右ペインにアラートグループを選択し、次に[作成]をクリックします。アラートグループは、アラートがトリガーされたときに誰が通知を受信するかを決定します。
ステップ 3:結果の確認
Web サービスを無効にして、アプリケーション障害をシミュレートします。Auto Scaling 機能によって新しいインスタンスがスケールアウトされ、サービスは引き続きアクセス可能です。
注意事項
スケーリンググループにインスタンス数の上限を設定する。スケーリンググループ内のインスタンスの最小数と最大数を設定して、コストを管理し、過剰プロビジョニングを防ぎます。
自動起動サービスを含むカスタムイメージを使用する。カスタムイメージが起動時に Web サービスを自動的に開始することを確認してください。そうしないと、スケールアウトされたインスタンスはトラフィックを処理しません。
ALB のヘルスチェックを設定する。サイトモニタリングに加えて、ALB でヘルスチェックを設定し、異常なバックエンドサーバーを検出してローテーションから除外します。
クールダウン期間を考慮する。スケーリングアクティビティが完了すると、Auto Scaling はクールダウン期間に入り、その間は追加のスケーリングリクエストが抑制されます。繰り返しのスケーリングトリガーを避けるために、この期間を適切に設定してください。
アラート通知の連絡先を設定する。スケーリングイベントが発生したときに運用チームに通知されるように、アラートグループを設定します。
リソースのクリーンアップ
このチュートリアルをテスト環境で設定した場合、継続的な課金を避けるために、次のリソースを削除してください。
サイト監視タスク: CloudMonitor コンソールで、[ネットワーク分析と監視] > [サイト監視] に移動して、タスクを検索し、削除します。
スケーリンググループとスケーリングルール: Auto Scaling コンソールで、[スケーリンググループ] に移動し、スケーリンググループを選択して、そのスケーリングルールとともに削除します。
起動テンプレート: ECS コンソールで、[デプロイとエラスティシティ] > [起動テンプレート] に移動し、テンプレートを見つけて削除します。
Auto Scaling によって作成された ECS インスタンス:ECS コンソールで、スケーリンググループによって起動されたインスタンスを確認し、不要であれば解放します。
ALB インスタンス:このチュートリアル専用に ALB インスタンスを作成した場合は、SLB コンソールで削除します。
カスタムイメージ:このチュートリアル専用にカスタムイメージを作成した場合は、ECS コンソールで削除します。