「翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。」
スケールイン中に終了するAuto Scalingインスタンスを制御する
各 Auto Scaling グループでは、ネットワークアーキテクチャに対してインスタンスを追加 (スケールアウト) したり、インスタンスを削除 (スケールイン) したりするタイミングを制御できます。希望する容量を調整してグループのサイズを手動でスケーリングするか、スケジュールに基づくスケーリングまたはスケーリングポリシーを使用してこのプロセスを自動化できます。
このトピックでは、デフォルトの終了ポリシーおよび独自のカスタマイズされた終了ポリシーの設定に使用できるオプションについて説明します。終了ポリシーを使用すると、スケールインイベントが発生したときにどのインスタンスを最初に終了するかを制御できます。
また、インスタンスのスケールイン保護を有効にして、自動スケールイン中に特定のインスタンスが終了しないようにする方法についても説明します。Auto Scaling グループのインスタンスの場合、スケールインイベントが発生したときにインスタンスを保護するには、Amazon EC2 Auto Scaling の機能を使用します。インスタンスが誤って終了されないように保護する場合は、Amazon EC2 終了保護を使用します。
Auto Scaling混合インスタンスポリシーを持つグループについては、以下の点に注意してください。
-
Amazon EC2 Auto Scaling 最初に、2 つのタイプ (スポットまたはオンデマンド) のどちらを終了するかを識別します。次に、各アベイラビリティーゾーンで終了ポリシーを個別に適用し、どのインスタンス (特定された購入オプション内) でどのアベイラビリティーゾーンを終了するかを識別します。これにより、アベイラビリティーゾーン間のアベイラビリティーゾーン間のアベイラビリティーゾーン間のアベイラビリティーゾーン間のアベイラビリティーゾーン間のアベイラビリティーゾーン間のアベイラビリティーバランスが調整されます。同じ原則は、インスタンスタイプに対して重みが定義された混合インスタンス設定を使用する Auto Scaling グループにも適用されます。
目次
デフォルトの終了ポリシー
このデフォルトの終了ポリシーは、高可用性を得るためにインスタンスがアベイラビリティーゾーンに均等に配分されるように設計されています。デフォルトのポリシーは汎用性と柔軟性があり、さまざまなシナリオに対応できます。
が終了するインスタンスAmazon EC2 Auto Scalingを選択する前に、まずインスタンスが最も多いアベイラビリティーゾーンと、スケールインから保護されていないインスタンスが 1 つ以上決定されます。
選択したアベイラビリティーゾーン内では、デフォルトの終了ポリシーの動作は次のとおりです。
-
終了するオンデマンドまたはスポットインスタンスの配分戦略に残りのインスタンスが合うように、終了するインスタンスを決定します。これはAuto Scaling、配分戦略を使用する混合インスタンスポリシーを指定する グループにのみ適用されます。
たとえば、インスタンスの起動後、インスタンスタイプの優先順を変更します。スケールインイベントが発生すると、Amazon EC2 Auto Scaling は、優先度の低いインスタンスタイプからオンデマンドインスタンスを段階的に減らそうとします。
-
どのインスタンスが最も古い起動テンプレートまたは起動設定を使用しているかを判断します。
-
[起動テンプレートを使用する Auto Scaling グループの場合]
最も古い起動テンプレートを使用している (ただし起動設定を使用していない) インスタンスを判断します。Amazon EC2 Auto Scaling は、起動テンプレートを使用しているインスタンスを終了する前に、起動設定を使用しているインスタンスを終了します。
-
[起動設定を使用する Auto Scaling グループの場合]
どのインスタンスが最も古い起動設定を使用しているかを判断します。
-
-
上記のすべての基準を適用した後で、終了する保護されていないインスタンスが複数ある場合は、どのインスタンスが次の課金時間に最も近いかを判断します。次の課金時間に最も近い保護されていないインスタンスが複数ある場合、これらのインスタンスのいずれかをランダムに終了します。
次の課金時間に最も近いインスタンスを終了すると、時間単価のインスタンスを最大限に活用できます。または、Auto Scaling グループが Amazon Linux または Ubuntu を使用している場合は、EC2 の使用に対して 1 秒あたりの料金が発生します。詳細については、「Amazon EC2 料金表
」を参照してください。
終了ポリシーのカスタマイズ
アプリケーションの目的のバージョンのインスタンスを保持するなど、一般的なユースケースをサポートするために、デフォルトのポリシーをカスタマイズされたポリシーに置き換えることもできます。
終了ポリシーをカスタマイズするとき、グループに使用されている他のアベイラビリティーゾーンより多くのインスタンスが含まれるアベイラビリティーゾーンがある場合、終了ポリシーはそのバランスのとれていないアベイラビリティーゾーンのインスタンスに適用されます。グループで使用されているアベイラビリティーゾーン間でバランスがとれている場合、終了ポリシーはグループのすべてのアベイラビリティーゾーンに適用されます。
Amazon EC2 Auto Scaling では、次の終了ポリシーがサポートされています。
-
Default
。デフォルトの終了のポリシーに従って、インスタンスを終了します。このポリシーは、スポット配分戦略を他のポリシーよりも先に評価して、スポットインスタンスが終了または置き換えられるたびに最適なプールのスポットインスタンスを引き続き利用できるようにする場合に役立ちます。また、たとえば、起動設定をオフにして起動テンプレートの使用を開始するときにも便利です。 -
AllocationStrategy
。Auto Scaling グループのインスタンスを終了して、残りのインスタンスを、終了するインスタンスのタイプ (スポットインスタンスまたはオンデマンドインスタンス) の配分戦略に合わせます。このポリシーは、優先するインスタンスタイプが変更されたときに便利です。スポット配分戦略がlowest-price
の場合、N 個の最低価格のスポットプール間で、スポットインスタンスの分散バランスを徐々に再調整できます。スポット配分戦略がcapacity-optimized
の場合、使用可能なスポット容量がより多いスポットプール間で、スポットインスタンスの分散バランスを徐々に再調整できます。優先度の低いタイプのオンデマンドインスタンスを優先度の高いタイプのオンデマンドインスタンスに徐々に置き換えることもできます。 -
OldestLaunchTemplate
。最も古い起動テンプレートを使用するインスタンスを終了します。このポリシーでは、現在の起動テンプレートを使用していないインスタンスが最初に終了され、その後、現在の起動テンプレートのうち最も古いバージョンを使用しているインスタンスが終了されます。このポリシーは、グループを更新し、以前の設定を使用しているインスタンスを廃止する場合に便利です。 -
OldestLaunchConfiguration
。最も古い起動設定のインスタンスを削除します。このポリシーは、グループを更新し、以前の設定を使用しているインスタンスを廃止する場合に便利です。 -
ClosestToNextInstanceHour
。次の課金時間に最も近いインスタンスを削除します。これにより、時間単価のインスタンスを最大限に活用できます。 -
NewestInstance
。グループ内の最も新しいインスタンスを削除します。このポリシーは、新しい起動設定をテストするが、新しい設定は本稼働環境には保持しない場合に便利です。 -
OldestInstance
。グループ内の最も古いインスタンスを削除します。このオプションは、Auto Scaling グループ内のインスタンスを新しい EC2 インスタンスタイプにアップグレードする場合に役立ちます。より古いタイプのインスタンスをより新しいタイプのインスタンスに徐々に置き換えることができます。注記 Amazon EC2 Auto Scaling は、どの終了ポリシーが使用されているかに関係なく、アベイラビリティーゾーン間で常にインスタンスのバランスを取ります。その結果、新しく追加されたアベイラビリティーゾーンがある場合や、グループで使用されている他のアベイラビリティーゾーンよりも 1 つのアベイラビリティーゾーンにインスタンスが多い場合、より古いインスタンスより前に新しいインスタンスが終了することがあります。
終了ポリシーをカスタマイズするには (コンソール)
-
Open the Amazon EC2 Auto Scaling console at https://console.aws.amazon.com/ec2autoscaling/
. -
グループ [Auto Scaling] の横にあるチェックボックスをオンにします。
[Auto Scaling グループ] ページの下部に分割ペインが開き、選択したグループに関する情報が表示されます。
-
[詳細] タブで、[高度な設定]、[編集] の順に選択します。
-
[終了ポリシー] で、1 つまたは複数の終了ポリシーを選択します。複数のポリシーを選択する場合は、適用する順にリストします。[デフォルト] ポリシーを使用する場合は、リストの最後のポリシーとします。
-
[更新] を選択します。
終了ポリシーをカスタマイズするには (AWS CLI)
以下のいずれかのコマンドを使用します。
これらのポリシーを個別に使用することも、ポリシーのリストに組み合わせることもできます。たとえば、次のコマンドを使用して、最初に Auto Scaling ポリシーを使用し、その後で
OldestLaunchConfiguration
ポリシーを使用するように ClosestToNextInstanceHour
グループを更新します。
aws autoscaling update-auto-scaling-group --auto-scaling-group-name
my-asg
--termination-policies "OldestLaunchConfiguration" "ClosestToNextInstanceHour"
Default
の終了ポリシーを使用する場合、終了ポリシーのリストでは最後のポリシーになるように指定します。たとえば、 --termination-policies
"OldestLaunchConfiguration" "Default"
などです。
インスタンスのスケールイン保護
スケールイン時に Auto Scaling グループが特定のインスタンスを終了できるかどうかを制御するには、インスタンスのスケールイン保護を使用します。インスタンスのスケールイン保護の設定は、Auto Scaling グループまたは個別の Auto Scaling インスタンスで有効にできます。Auto Scaling グループがインスタンスを起動すると、インスタンスは Auto Scaling グループのインスタンスのスケールイン保護の設定を受け継ぎます。Auto Scaling グループまたは Auto Scaling インスタンスのインスタンススケールイン保護の設定はいつでも変更できます。
インスタンスのスケールイン保護は、インスタンスの状態が InService
の場合に開始されます。終了されない設定のインスタンスをデタッチすると、インスタンスのスケールイン保護の設定は失われます。インスタンスをグループに再度アタッチすると、グループの現在のインスタンスのスケールイン保護を受け継ぎます。
Auto Scaling グループのすべてのインスタンスがスケールイン時の終了から保護されていて、スケールインイベントが発生した場合、必要容量は減ります。ただし、Auto Scaling グループはインスタンスのスケールイン保護の設定が無効になるまで、必要な数のインスタンスを終了することはできません。
インスタンスのスケールイン保護は、次の状況から Auto Scaling インスタンスを保護することはできません。
-
Amazon EC2 コンソール、
terminate-instances
コマンド、TerminateInstances
アクションのいずれかを使用して、手動で終了します。手動の終了より Auto Scaling インスタンスを保護するには、Amazon EC2 終了保護を有効にします。詳細については、の「削除保護https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/terminating-instances.html#Using_ChangingDisableAPITerminationの有効化」を参照してくださいLinux インスタンス用 Amazon EC2 ユーザーガイド。 -
インスタンスがヘルスチェックに失敗した場合のヘルスチェックの置換。詳細については、「 」を参照してくださいAuto Scaling インスタンスのヘルスチェック Amazon EC2 Auto Scaling による異常なインスタンスの終了を防止するには、
ReplaceUnhealthy
プロセスを停止します。詳細については、「 」を参照してくださいスケーリングプロセスの中断と再開 -
スポットインスタンスの中断。容量が使用できなくなった場合、またはスポット料金が上限価格を超えた場合、スポットインスタンスは終了されます。
グループのインスタンスのスケールイン保護を有効にする
Auto Scaling グループを作成する際にインスタンスのスケールイン保護を有効にすることができます。デフォルトでは、インスタンスのスケールイン保護は無効になっています。
インスタンスのスケールイン保護を有効にするには (コンソール)
Auto Scaling グループを作成するとき、[Configure group size and scaling policies (グループサイズとスケーリングポリシーの設定)] ページの [Instance scale-in protection (インスタンスのスケールイン保護)] で、[Enable instance scale-in protection (インスタンスのスケールイン保護を有効にする)] オプションを選択します。
インスタンスのスケールイン保護を有効にする (AWS CLI)
以下の create-auto-scaling-group コマンドを使用して、インスタンスのスケールイン保護を有効にします。
aws autoscaling create-auto-scaling-group --auto-scaling-group-name
my-asg
--new-instances-protected-from-scale-in ...
グループのインスタンスのスケールイン保護設定を変更する
Auto Scaling グループのインスタンスのスケールイン保護の設定は、有効または無効にすることができます。インスタンスのスケールイン保護設定を有効にすると、有効化後に起動したすべての新しいインスタンスでは、インスタンスのスケールイン保護が有効になります。以前に起動したインスタンスは、インスタンスごとに個別にインスタンスのスケールイン保護設定を有効にしない限り、スケールインから保護されません。
グループのインスタンスのスケールイン保護の設定を変更するには (コンソール)
-
Open the Amazon EC2 Auto Scaling console at https://console.aws.amazon.com/ec2autoscaling/
. -
Auto Scaling グループの横にあるチェックボックスをオンにします。
[Auto Scaling グループ] ページの下部に分割ペインが開き、選択したグループに関する情報が表示されます。
-
[詳細] タブで、[高度な設定]、[編集] の順に選択します。
-
[インスタンスのスケールイン保護] で、[インスタンスのスケールイン保護を有効にする] を選択します。
-
[更新] を選択します。
グループのインスタンスのスケールイン保護設定を変更する (AWS CLI)
以下の update-auto-scaling-group コマンドを使用して、指定した Auto Scaling グループのインスタンスのスケールイン保護を有効にします。
aws autoscaling update-auto-scaling-group --auto-scaling-group-name
my-asg
--new-instances-protected-from-scale-in
次のコマンドを使用して、指定したグループのインスタンスのスケールイン保護を無効にします。
aws autoscaling update-auto-scaling-group --auto-scaling-group-name
my-asg
--no-new-instances-protected-from-scale-in
インスタンスのインスタンススケールイン保護設定を変更する
デフォルトで、インスタンスは所属する Auto Scaling グループからインスタンスのスケールイン保護の設定を取得します。ただし、インスタンスにおけるインスタンスのスケールイン保護はいつでも有効または無効にできます。
インスタンスのインスタンスのスケールイン保護の設定を変更するには (コンソール)
-
Open the Amazon EC2 Auto Scaling console at https://console.aws.amazon.com/ec2autoscaling/
. -
Auto Scaling グループの横にあるチェックボックスをオンにします。
[Auto Scaling グループ] ページの下部に分割ペインが開き、選択したグループに関する情報が表示されます。
-
[Instance management (インスタンス管理)] タブの [Instances (インスタンス)] で、インスタンスを選択します。
-
インスタンスのスケールイン保護を有効にするには、[Actions (アクション)]、[Set scale-in protection (スケールイン保護を設定)] の順に選択します。プロンプトが表示されると、[Set scale-in protection (スケールイン保護を設定)] を選択します。
-
インスタンスのスケールイン保護を無効にするには、[Actions (アクション)]、[Remove scale-in protection (スケールイン保護の削除)] の順に選択します。プロンプトが表示されたら、[Remove scale-in protection (スケールイン保護の削除)] を選択します。
インスタンスに対するインスタンスのスケールイン保護設定を変更する (AWS CLI)
以下の set-instance-protection コマンドを使用して、指定したインスタンスに対するインスタンスのスケールイン保護を有効にします。
aws autoscaling set-instance-protection --instance-ids
i-5f2e8a0d
--auto-scaling-group-namemy-asg
--protected-from-scale-in
次のコマンドを使用して、指定したインスタンスにおけるインスタンスのスケールイン保護を無効にします。
aws autoscaling set-instance-protection --instance-ids
i-5f2e8a0d
--auto-scaling-group-namemy-asg
--no-protected-from-scale-in