Auto ScalingはApplication Load Balancer (ALB) と統合されており、ALBのサーバーグループ内のサーバーを自動的にスケールインまたはスケールアウトできます。 イベントトリガータスクを作成した後、Auto ScalingはALBのサーバーグループでElastic Compute Service (ECS) を動的にスケールインまたはスケールアウトできます。 これにより、ALBの可用性を確保し、リソースの浪費を防ぎます。
例:
ニュースウェブサイトが最新のニュースをリリースすると、ページビュー (PV) の数が大幅に増加し、現在のサーバーのサービス容量を超える可能性があります。 その結果、サーバは、入ってくる要求に応答しないことがある。 ユーザーは、ニュースが時間の経過とともに消えるにつれてサーバーのワークロードが減少したときにwebページをロードできます。 このWebサイトでのユーザートラフィックの変動は予測できないため、ワークロード管理がより困難になります。
このシナリオでは、CloudMonitorがECSインスタンスのCPU使用率などのリソース使用率を監視できるようにするイベントトリガタスクを作成できます。 これにより、システムは自動的にECSインスタンスをALBサーバーグループに追加または削除できます。 スケーリンググループがALBサーバーグループに関連付けられた後、スケーリンググループ内のECSインスタンスに対して自動的または手動でトリガーされるスケールインおよびスケールアウトアクティビティは、ALBサーバーグループと同期されます。 リクエストは、トラフィックボリュームとヘルスチェックステータスに基づいてECSインスタンスに配信され、高いサービス可用性を確保します。
次の例では、ALBは転送ルールに基づいてリクエストをECS01に配信します。 ECS01のCPU使用率が指定されたしきい値に達すると、ECSインスタンスが作成され、スケーリングルールとイベントトリガータスクに基づいてサーバーグループに追加されます。 ECS01のCPU使用率が指定されたしきい値を下回ると、ECSインスタンスはサーバーグループから削除され、リリースされます。
前提条件
少なくとも1つのALBインスタンスが作成され、実行中です。 詳細については、「ALBインスタンスの作成」をご参照ください。
ALBインスタンス用にサーバーグループが作成され、ECSインスタンスがサーバーグループに追加されます。 サーバーグループのステータスが [使用可能] です。 この例では、サーバーグループの名前はRS1、ECSインスタンスの名前はECS01です。
ECS01用にカスタムイメージが作成されます。 詳細については、「インスタンスからのカスタムイメージの作成」をご参照ください。
ALBインスタンスのヘルスチェックが有効になっています。 詳細については、「ヘルスチェック管理」をご参照ください。
ALBインスタンスに対して少なくとも1つのリスナーが作成されます。 詳細については、「HTTPリスナーの追加」をご参照ください。
ALBインスタンスとスケーリンググループは、同じ仮想プライベートクラウド (VPC) にデプロイされています。
ステップ1: スケーリンググループの作成
にログインします。Auto Scalingコンソール.
左側のナビゲーションウィンドウで、スケーリンググループ.
上部のナビゲーションバーで、リージョンを選択します。
[Auto Scaling] ページに移動します。 ビジネス要件に基づいて、スケーリンググループを作成するか、既存のスケーリンググループを使用できます。 [作成] をクリックし、パラメーターを設定します。 次の表に、いくつかのパラメーターを示します。
パラメーター
説明
インスタンス設定ソース
[スクラッチから作成] を選択します。
最小インスタンス数
スケーリンググループ内のインスタンス数が指定された最小インスタンス数未満の場合、インスタンス数が最小数に達するまでAuto scalingは自動的にスケールアウトします。 この例では、少なくとも1つのECSインスタンスが必要であることを指定する1が選択されています。
最大インスタンス数
スケーリンググループ内のインスタンス数が指定された最大インスタンス数を超える場合、インスタンス数が最大数に達するまでAuto scalingは自動的にスケールインします。 この例では、2が選択されています。これは、サーバーグループに追加できるECSインスタンスを1つだけ指定します。
デフォルトのクールダウン時間
スケールインまたはスケールアウトアクティビティが完了した後、次のスケールインまたはスケールアウトアクティビティは、指定されたクールダウン時間が終了するまで開始されません。 このパラメーターは、イベントトリガータスクでのみ使用できます。 この例では、0が選択されています。 ビジネス要件に基づいて値を指定します。
VPCとvSwitch
ECS01のVPCとvSwitchを選択します。
ALBとNLBサーバーグループの関連付け
サーバーグループを選択し、ポートと重みを指定します。
ビジネス要件に基づいて他のパラメーターを設定し、[OK] をクリックします。 [スケーリンググループ] ページでスケーリンググループを表示できます。
手順2: スケーリンググループの設定テンプレートを作成する
[スケーリンググループ] ページで、[操作] 列の [詳細] をクリックします。 [インスタンス設定ソース] タブで、[スケーリング設定] をクリックします。
[スケーリング設定] タブで、[スケーリング設定の作成] をクリックし、パラメーターを設定します。 次の表に、いくつかのパラメーターを示します。 ビジネス要件に基づいて他のパラメーターを設定します。
パラメーター
説明
[課金方法]
ECSインスタンスの課金方法を選択します。 この例では、従量課金が選択されています。
インスタンス設定モード
この例では、[インスタンスタイプの指定] が選択されています。
インスタンスタイプの選択
この例では、ECS01のタイプが選択されています。
画像の選択
この例では、ECS01のカスタムイメージが選択されています。
[セキュリティグループ]
この例では、ECS01のセキュリティグループが選択されています。
[作成] をクリックします。 [スケーリング設定のプレビュー] メッセージで、[作成] をクリックします。
[スケーリング設定が作成されます] ダイアログボックスで、[有効にする] をクリックして、設定およびスケーリンググループを有効にします。
ステップ3: スケーリングルールの作成
[スケーリンググループ] ページで、管理するスケーリンググループを見つけ、[操作] 列の [詳細] をクリックします。 [スケーリングルールとイベントトリガータスク] タブで、[スケーリングルール] タブをクリックします。
自動スケールアウトルールを作成します。 [スケーリングルール] タブで、[スケーリングルールの作成] をクリックし、次のパラメーターを設定し、[OK] をクリックします。
パラメーター
説明
ルール名
1つのECSインスタンスを自動的に追加するなど、スケーリングルールの名前を入力します。
ルールタイプ
この例では、[シンプルスケーリングルール] が選択されています。
操作
この例では、[Add 1 Instance] が選択されています。
自動スケールインルールを作成します。 [スケーリングルール] タブで、[スケーリングルールの作成] をクリックし、次のパラメーターを設定し、[OK] をクリックします。
パラメーター
説明
ルール名
1つのECSインスタンスを自動的に削除するなど、スケーリングルールの名前を入力します。
ルールタイプ
この例では、[シンプルスケーリングルール] が選択されています。
操作
この例では、[1インスタンスの削除] が選択されています。
ステップ4: イベントトリガータスクを作成し、スケーリングルールに関連付ける
左側のナビゲーションウィンドウで、
を選択します。[イベントトリガータスク] ページで、[システムモニタリング] タブをクリックし、[イベントトリガータスクの作成] をクリックします。
自動スケールアウトをトリガーするイベントトリガータスクを作成します。 [イベントトリガータスクの作成] をクリックします。 表示されるダイアログボックスで、パラメーターを設定し、[OK] をクリックします。 次の表に、いくつかのパラメーターを示します。
パラメーター
説明
名前
1つのECSインスタンスを自動的に追加するなど、タスクの名前を入力します。
リソース監視
ステップ1で作成したスケーリンググループを選択します。
アラート条件
この例では、アラート条件はCPU使用率、最大 (最大) >= 60% に設定されています。
統計期間
この例では、1分が選択されています。
トリガー後
この例では、1回が選択されています。
トリガールール
手順3で作成した自動スケールアウトルールを選択します。
自動スケールインをトリガーするイベントトリガータスクを作成します。 [イベントトリガータスクの作成] をクリックします。 表示されるダイアログボックスで、パラメーターを設定し、[OK] をクリックします。 次の表に、いくつかのパラメーターを示します。
パラメーター
説明
名前
1つのECSインスタンスを自動的に削除するなど、タスクの名前を入力します。
リソース監視
ステップ1で作成したスケーリンググループを選択します。
アラート条件
この例では、アラート条件はCPU使用率、最大 (最大) <= 30% に設定されています。
統計期間
この例では、1分が選択されています。
トリガー後
この例では、1回が選択されています。
トリガールール
手順3で作成した自動スケールインルールを選択します。
ステップ5: ECSインスタンスをスケーリンググループに追加する
Auto Scalingは、モニタリングデータとイベントトリガータスクに基づいて、バックエンドサーバーの数を自動的に調整します。 そのため、監視するECSインスタンスをスケーリンググループに追加する必要があります。
[スケーリンググループ] ページで、管理するスケーリンググループを見つけ、[操作] 列の [詳細] をクリックします。 [インスタンス] タブで、[手動で追加] タブをクリックします。
次に、[既存のインスタンスの追加] をクリックします。 表示されるページで、ECS01を選択し、[追加] をクリックします。
[手動で追加] タブでECS01を表示できます。
ステップ6: バックエンドサーバーを自動的に追加および削除できるかどうかをテストする
ストレステストツールを使用して、ECSインスタンスを作成してALBサーバーグループに追加できるように、ECS01のCPU使用率を60% に増やし、イベントトリガータスクをトリガーします。 ALBコンソールで、ECSインスタンスがサーバーグループに追加されているかどうかを確認できます。 ストレステストが終了し、ECS01のCPU使用率が30% を下回った後、ECSインスタンスを自動的に削除するためにイベントトリガータスクが再度トリガーされるかどうかを確認します。
ECS01にログインし、次のコマンドを実行してストレステストツールをインストールします。
sudo yum install -y epel-release sudo yum install -y stress
次のコマンドを実行して、ECS01でストレステストを実行します。 ストレステストは60秒続きます。
sudo stress --cpu 1 --io 4 --vm 2 --vm-bytes 128M --timeout 60s &
[スケーリンググループ] ページに戻り、イベントトリガータスクのステータスがアラートになるまで数分待ちます。
スケーリンググループページに移動します。 スケールアウトアクティビティの後、[インスタンス /容量] 列に表示される [インスタンスの総数] が1つ増加したことを確認できます。 これは、ECSインスタンスが作成され、スケーリンググループに追加されたことを示します。
ALBコンソールにログインします。
左側のナビゲーションウィンドウで、
を選択します。サーバーグループのIDをクリックし、[バックエンドサーバー] タブをクリックします。 このタブでは、サーバーグループに2つのバックエンドサーバーが含まれていることを確認できます。
ESS-XX
形式のECSインスタンスがAuto Scalingによって追加されます。60秒のストレステストが終了したら、Auto ScalingコンソールとALBコンソールにログインして、ECSインスタンスがサーバーグループから自動的に削除されるかどうかを確認できます。
関連ドキュメント
Auto Scalingの詳細については、Auto Scalingとは
Auto Scalingは、サーバーを自動的にスケーリングできるスケジュール済みタスクをサポートします。 詳細については、「スケジュール済みタスクを使用したインスタンス番号の設定」をご参照ください。
Auto ScalingはCloudMonitorと統合されており、モニタリングメトリックや予測メトリック値に基づくリソーススケーリングなどの高度な機能をサポートしています。 詳細については、「スケーリングルールの管理」をご参照ください。