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