私の AWS Elastic Beanstalk 環境は、期待どおりにスケーリングしません。
解決策
前提条件:
- Amazon Elastic Compute Cloud (Amazon EC2) インスタンスには、AWS リージョンでスケーリングを行うのに十分な容量が必要です。この容量は、AWS Auto Scaling グループ設定で定義したインスタンスの最大数に基づきます。
- アプリケーションのインストールと構成の要件に基づき、クールダウン期間が適用されます。
- デフォルトの Amazon CloudWatch メトリクスまたは Locust を使用して負荷テストを行い、スケーリングを開始するのに最適なメトリクスを特定する必要があります。
スケーリングトリガーを構成するには、Elastic Beanstalk コンソールまたはオプション設定を使用します。
Elastic Beanstalk コンソールでスケーリングトリガーを構成する
- Elastic Beanstalk コンソールを開き、環境を選択します。
- 使用する環境のナビゲーションペインで [構成] を選択します。
- [インスタンスのトラフィックとスケーリング] で [編集] を選択します。
- [キャパシティ] の [スケーリングトリガー] で目的のトリガーオプションを選択し、[適用] を選択します。
注: Elastic Beanstalk では、aws:autoscaling:trigger 名前空間の自動スケーリング設定に関する構成オプションを使用できます。設定が適用されるリソースは、当該リソースにおいて、このネームスペースの設定を管理します。
オプション設定でスケーリングトリガーを構成する
オプション設定 で .ebextensions を使用してスケーリング設定を変更します。スケーリングトリガーを設定する構成ファイルにアクセスする方法については、GitHub のウェブサイトで autoscaling-triggers-customize.config を参照してください。
次の構成ファイルの例では、CPU 使用率に基づくスケーリングトリガーを変更します。連続する 2 分間において、インスタンス全体の CPU 使用率が 80 % を超過する現象が 3 回発生した場合、Auto Scaling は、Auto Scaling グループにインスタンスを 1 つ追加します。同じ期間にインスタンス全体の CPU 使用率が 20% を下回った場合、Auto Scaling グループ は、1 つのインスタンスを Auto Scaling グループから削除します。
option_settings:
aws:autoscaling:trigger:
MeasureName: CPUUtilization
Statistic: Average
Unit: Percent
Period: '2'
EvaluationPeriods: '3'
UpperThreshold: '80'
UpperBreachScaleIncrement: '1'
LowerThreshold: '20'
LowerBreachScaleIncrement: '-1'
次の例は、アプリケーション zip ファイル内の **.ebextensions ** ディレクトリと autoscaling-triggers-customize.config ファイルの構造を示しています。
~/my-app/
|-- .ebextensions/
| |-- autoscaling-triggers-customize.config
| `-- other.config
|-- other application files
関連情報
Elastic Beanstalk 環境の Auto Scaling トリガー