Amazon EC2 Auto Scaling グループが正しくスケーリングされません。
解決策
注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI で発生したエラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。
Amazon EC2 Auto Scaling グループがスケーリングポリシーに準拠していない
スケーリングポリシーを確認し、単一のイベントが複数のポリシーを呼び出していないかを確認します。2 つのポリシーが同時にスケーリングされる場合、EC2 Auto Scaling は影響が大きい側のポリシーに従います。たとえば、あるポリシーは 2 個の Amazon Elastic Compute Cloud (Amazon EC2) インスタンスを追加し、他のポリシーは 4 インスタンスを追加する場合、両ポリシーが同時にスケーリングする際には、EC2 Auto Scaling は 4 インスタンスを追加します。
複数のターゲット追跡スケーリングポリシーがある場合、これらのポリシーのうちの片方のみがスケールアウトします。ただし、Amazon EC2 Auto Scaling がスケールインアクションを実行するには、すべてのターゲット追跡スケーリングポリシーが同時にスケールインできる状態になっている必要があります。
Amazon EC2 Auto Scaling グループがスケールインしておらず、スケールアウトしている
スケールアウトポリシーとスケールインポリシーが同時にスケーリングされていないかを確認します。両方のポリシーが同時にスケーリングする際は、Amazon EC2 Auto Scaling はスケールアウトポリシーに従って可用性を確認します。
スケールアウトポリシーとスケールインポリシーが同時にスケーリングしていないかを確認するには、次の操作を行います。
Amazon EC2 Auto Scaling グループが CloudWatch アラームまたはヘルスチェックの交換に応答しない
グループが CloudWatch アラームまたはヘルスチェックの交換に応答しない理由を特定するには、次の操作を行います。
- グループがインスタンスの最小数または最大数に達しているかどうかを確認します。インスタンスのキャパシティを確認するには、Amazon EC2 コンソールでグループの詳細を確認します。グループがキャパシティに達していても、Amazon EC2 Auto Scaling はグループのアクティビティ履歴にエラーメッセージを表示しません。
- グループでの、停止中のプロセスを確認します。Amazon EC2 Auto Scaling は、停止中であり、ステータスが Terminate、Launch、AlarmNotification であるプロセスの CloudWatch スケーリングポリシーを評価しません。また、Amazon EC2 Auto Scaling は、停止中であり、ステータスが ReplaceUnhealthy または HealthCheck であるプロセスのヘルスチェックの置き換えを評価しません。
- グループ内のいずれかのインスタンスでスケールイン保護が有効かどうかを確認してください。インスタンスでスケールイン保護が有効な場合、Amazon EC2 Auto Scaling はインスタンスを使用してグループをスケールダウンしません。グループをスケールダウンするには、スケールイン保護を無効にする必要があります。
- 簡易スケーリングポリシーを設定した場合は、インスタンスがクールダウン期間内にあるかどうかを確認します。簡易スケーリングポリシーは、クールダウン期間が終了するまでアクティビティを開始しません。
- ターゲットの追跡スケーリングポリシーでグループがスケールダウンされない場合は、そのポリシーでスケールイン部分が無効になっていないかを確認します。
- スケーリングポリシーが無効になっているかどうかを確認します。スケーリングポリシーを無効にしても、グループは変更されません。
- ステップスケーリングポリシーのステップ調整が、アラーム違反の規模に対応できるように設定済みかどうかを確認します。
- ステップスケーリングポリシーまたはターゲット追跡スケーリングポリシーが設定済みの場合は、インスタンスのウォームアップが進行中かどうかを確認します。Amazon EC2 Auto Scaling は、ウォームアップ期間が終了するまで、インスタンスをグループメトリクスにカウントしません。
- CloudWatch アラームがスケーリングアクティビティを正しく呼び出すことを確認します。
- ライフサイクルフックを設定した場合は、そのライフサイクルフックを完了するか、タイムアウト期間が終了するまで待機します。
スケーリングアクティビティ中に、インスタンスが Pending:Wait または Terminating:Wait に留まってしまう
グループにライフサイクルフックを設定した場合、インスタンスが Pending:Wait または Termination:Wait 状態になる場合があります。簡易スケーリングポリシーで開始するスケーリングアクティビティは、インスタンスの状態が Pending:Wait または Terminating:Wait ではなくなるまで停止します。
ライフサイクルフックを設定済みかどうかを確認するには、describe-lifecycle-hooks コマンドを実行します。
aws autoscaling describe-lifecycle-hooks --auto-scaling-group-name my-asg-name
スケーリングプロセスを続行するには、タイムアウト期間が終了するまで待機します。その後、ライフサイクルフックを完了します。
注: デフォルトでは、タイムアウト期間は 1 時間です。
Amazon EC2 コンソールでライフサイクルフックを管理する方法の詳細は、「Amazon EC2 Auto Scaling のライフサイクルフック」を参照してください。
Amazon EC2 Auto Scaling グループがスケジュールされたアクションに応答しない
グループがスケジュールされたスケーリングアクションに応答しない場合は、次の手順を実行します。
- スケジュールされたアクションにタイムゾーンが設定済みかどうかを確認します。タイムゾーンを設定していない場合は、スケジュールされたアクションを作成します。
注: スケジュールされたアクションは、デフォルトでは協定世界時 (UTC) で設定されます。タイムゾーンを設定した場合は、アクションがそのタイムゾーンに基づいて実行されることを確認してください。
- Amazon EC2 コンソールでグループのアクティビティ履歴を参照し、スケーリングアクティビティが予定されているアクションと競合していないかどうかを判断します。
- スケールアウトアクションとスケールインアクションをスケジュールする場合は、1 つのアクションをスケールアウトに、別のアクションをスケールインにスケジュールしていることを確認します。同一のスケジュールされたアクションを使用してスケールインとスケールアウトの両方を行うことはできません。
EC2 インスタンスのクォータに達している
EC2 インスタンスのクォータに達したことが原因でグループがスケーリングされない場合は、次のようなメッセージが表示されます。
「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 のサービスクォータ」を参照してください。
関連情報
Amazon EC2 Auto Scaling インスタンスのライフサイクル
Amazon EC2 Auto Scaling に関する問題のトラブルシューティング