AWS Elastic Beanstalk 環境にある Amazon Elastic Compute Cloud (Amazon EC2) Auto Scaling の問題を診断して解決したいと考えています。
解決策
Elastic Beanstalk での Auto Scaling の問題は、インスタンスの起動失敗、ヘルスチェックの問題、またはスケーリングポリシーの設定ミスが原因で発生する可能性があります。
Amazon EC2 Auto Scaling グループがインスタンスの置換を繰り返す
Amazon EC2 Auto Scaling グループが Amazon EC2 インスタンスを予期せず停止した理由を特定します。Amazon EC2 Auto Scaling グループが異常なインスタンスを停止した場合は、インスタンスのヘルスチェックステータスを確認します。ヘルスチェックの失敗を解決するには、「Troubleshoot unhealthy instances in Amazon EC2 Auto Scaling」(Amazon EC2 Auto Scaling での異常なインスタンスのトラブルシューティング) を参照してください。
Elastic Beanstalk アプリケーションログをダウンロードして、ヘルスチェックの問題の原因を調べることもできます。デプロイの失敗については、以下のファイルを確認してください。
- /var/log/eb-engine.log
- /var/log/cfn-init-cmd.log
- /var/log/cfn-init.log
アプリケーショントラフィックの問題を特定するには、次のウェブサーバーアクセスログとエラーログを確認してください。
- /var/log/nginx/access.log
- /var/log/nginx/error.log
- (Apache のみ) /var/log/httpd/access_log
- (Apache のみ) /var/log/httpd/error_log
Windows インスタンスを使用している場合は、デプロイの失敗について以下のファイルを確認してください。
- CloudFormation 初期化ログについては、C:\cfn\log\cfn-init.log を確認します。
- Elastic Beanstalk ログについては、C:\Program Files\Amazon\ElasticBeanstalk\logs\ を確認します。
Windows インスタンスでのアプリケーショントラフィックの問題を特定するには、次のログファイルを確認してください。
- Microsoft Internet Information Services (IIS) のアクセスログについては、C:\inetpub\logs\LogFiles\W3SVC1\ を確認します。
- HTTP エラーログについては、C:\Windows\System32\LogFiles\HTTPERR\ を確認します。
- アプリケーション、システム、セキュリティなどの Windows イベントログについては、Windows イベントビューアコンソールを確認します。詳細については、Microsoft Learn のウェブサイトで「Event Viewer」(イベントビューア) を参照してください。
Amazon EC2 Auto Scaling グループが、CPU 使用率が 100% になるまでスケーリングしない
Amazon EC2 Auto Scaling グループが Average 統計を使用している場合、Amazon EC2 Auto Scaling グループはトラフィックの急激な増加に応答しない可能性があります。その結果、平均が設定したしきい値を下回っているのに、CPU 使用率の最大値が 100% に達することがあります。
この問題を解決するには、統計設定を Average から Maximum に変更します。
Amazon Auto Scaling グループで不必要なスケーリングイベントが頻繁に発生する
しきい値設定の幅が狭いと、スケールアップトリガーとスケールダウントリガーの間にウィンドウが生じて、事後的なスケーリングサイクルが発生します。
この問題を解決するには、次の手順を実行します。
- Amazon CloudWatch アラームの [上限しきい値] と [下限しきい値] の設定の差を広げます。
- クールダウン期間を設けます。
- 負荷テストを実行してから、アプリケーションの過去の負荷パターンと以前の CloudWatch メトリクスを使用してこれらの設定を微調整します。例えば、過去の CPU 使用率、メモリ使用率、ディスク使用率、ネットワーク帯域幅使用率を使用します。
関連情報
Using Locust on AWS Elastic Beanstalk for Distributed Load Generation and Testing (AWS Elastic Beanstalk での Locust による分散された負荷の生成およびテスト)