Amazon Elastic Compute Cloud (Amazon EC2) Auto Scaling グループが正しくスケーリングしていません。これを解決するにはどうすればよいですか?
解決方法
スケーリングの問題に基づき、Amazon EC2 Auto Scaling の設定で以下のチェックを実行してください。
Amazon EC2 Auto Scaling グループが、設定したスケーリングポリシーに従っていない
スケーリングポリシーをチェックして、ひとつのイベントが複数のポリシーをトリガーしているかどうかを確認します。2 つのポリシーを同時に評価されると、Amazon EC2 Auto Scaling はより大きな影響を与えるポリシーに従います。たとえば、2 つのインスタンスを追加する 1 つのポリシーと、4 つのインスタンスを追加する別なポリシーがあるとします。この場合、Amazon EC2 Auto Scaling は、両方のポリシーが同時にトリガーされると 4 つのインスタンスを追加します。
Amazon EC2 Auto Scaling グループがスケールインではなくスケールアウトしている
スケールアウトポリシーとスケールインポリシーが同時にトリガーされるかどうかを確認します。スケールアウトポリシーとスケールインポリシーが同時にトリガーされると、Amazon EC2 Auto Scaling はスケールアウトポリシーに従ってアベイラビリティーを確認します。
スケールアウトポリシーとスケールインポリシーが同時にトリガーされるかどうかを確認するには、次の手順を実行します:
Amazon EC2 Auto Scaling グループが CloudWatch アラームまたはヘルスチェックの置き換えに応答していない
- Auto Scaling グループがインスタンスの最小数または最大数に達しているかどうかを確認します。指定された最小容量または最大容量を確認するには、Amazon EC2 コンソールを使用して Amazon EC2 Auto Scaling グループの詳細を確認します。最小容量または最大容量のためにスケーリングがブロックされた場合、Amazon EC2 Auto Scaling はグループのアクティビティ履歴にエラーメッセージを表示しません。
- Auto Scaling グループの中断されたプロセスを確認します。終了、起動、またはアラーム通知プロセスが中断されている場合、Amazon EC2 Auto Scaling は CloudWatch スケーリングポリシーを実行できません。ReplaceUnhealthy プロセスまたはヘルスチェックプロセスが中断された場合、Amazon EC2 Auto Scaling はヘルスチェックの評価を実行できません。
- 単純なスケーリングポリシーを使用している場合は、インスタンスがクールダウン期間内にあるかどうかを確認します。シンプルなスケーリングポリシーは、クールダウン期間が終了するまで中断されます。
- ステップスケーリングポリシーまたはターゲットトラッキングポリシーを使用している場合は、インスタンスのウォームアップが進行中かどうかを確認します。ウォームアップ時間を指定した場合、インスタンスはウォームアップが終了するまでは Auto Scaling グループはインスタンスをグループメトリックにカウントしません。
- CloudWatch アラームをチェックして、スケーリングアクティビティを正しくトリガーさせます。詳細については Amazon CloudWatch アラームによって Auto Scaling グループのスケーリングがトリガーされるようにする方法を参照してください。
- Amazon EC2 Auto Scaling グループにライフサイクルフック が設定されているかどうかを確認します。ライフサイクルフックがある場合は、ライフサイクルフックを完了するか、タイムアウト期間が終了するまで待機する必要があります。詳細については、次のセクション「スケーリングアクティビティ中に、インスタンスが Pending:Wait または Terminating:Wait に留まってしまう」を参照してください。
スケーリングアクティビティ中に、インスタンスが Pending:Wait またはr Terminating:Wait に留まってしまう
Amazon EC2 Auto Scaling グループの ライフサイクルフック を設定した場合、インスタンスは Pending:Wait または Terminating:Wait ステートで一時停止されることがあります。ステップスケーリングポリシーを除いて、他のスケーリングアクティビティは、インスタンスが Pending:Wait または Terminating:Wait ステートから離れるまで中断されます。
ライフサイクルフックが設定されているかどうかを判断するには、次の AWS コマンドラインインターフェイス (AWS CLI) コマンドを実行します:
aws autoscaling describe-lifecycle-hooks --auto-scaling-group-name my-asg-name
注: AWS CLI コマンドの実行時にエラーが発生した場合は、AWS CLI の最新バージョンを使用していることを確認してください。
スケーリングプロセスを続行するには、タイムアウト期間が終了するのを待つ (デフォルトでは 1 時間) か、ライフサイクルフックを完了します。
Amazon EC2 コンソールからライフサイクルフックを管理する方法については、「 Amazon EC2 Auto Scaling ライフサイクルフック 」を参照してください。
Amazon EC2 Auto Scaling グループがスケジュールされたアクションに応答しない
- スケジュールされたアクションに対して設定したタイムゾーンを確認します。協定世界時 (UTC) でアクションをスケジュールする必要があります。
- Amazon EC2 コンソールから Amazon EC2 Auto Scaling グループのアクティビティ履歴を確認します。 スケジュールしたアクションと競合するスケーリングアクティビティがあるかどうかを確認します。
- スケールアウトアクションとスケールインアクションをスケジュールしている場合は、ひとつのアクションをスケールアウトに、別のアクションをスケールインにスケジュールしていることを確認してください。スケジュールされた同じアクションをスケールインとスケールアウトの両方に使用することはできません。
Amazon EC2 インスタンスのクォータに達した
EC2 インスタンスのクォータが原因で Amazon EC2 Auto Scaling グループがスケーリングされていない場合は、次のようなメッセージが表示されます:
Launching a new EC2 instance. Status Reason: Your quota allows for 0 more running instance(s).
You requested at least 1. Launching EC2 instance failed.
クォータを引き上げるには、AWS サポートにお問い合わせください。詳細については、AWS service quotasを参照してください。
関連情報
Auto Scaling ライフサイクル
Amazon EC2 Auto Scaling のトラブルシューティング