制御対象 Auto Scaling インスタンスはスケールイン中に終了 - Amazon EC2 Auto Scaling (日本語)

英語の翻訳が提供されている場合で、内容が矛盾する場合には、英語版がオリジナルとして取り扱われます。翻訳は機械翻訳により提供されています。

制御対象 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つ選択されます。

選択した可用性ゾーン内で、デフォルトの終了ポリシーの動作は、次のとおりです。

  1. 終了するオンデマンドまたはスポットインスタンスの配分戦略に残りのインスタンスが合うように、終了するインスタンスを決定します。これは、 Auto Scaling 混合インスタンス ポリシーを指定するグループ。 配分戦略.

    たとえば、インスタンスの起動後、インスタンスタイプの優先順を変更します。スケールインイベントが発生すると、Amazon EC2 Auto Scaling は、優先度の低いインスタンスタイプからオンデマンドインスタンスを段階的に減らそうとします。

  2. どのインスタンスが最も古い起動テンプレートまたは起動設定を使用しているかを判断します。

    1. [起動テンプレートを使用する Auto Scaling グループの場合]

      最も古い起動テンプレートを使用している (ただし起動設定を使用していない) インスタンスを判断します。Amazon EC2 Auto Scaling は、起動テンプレートを使用しているインスタンスを終了する前に、起動設定を使用しているインスタンスを終了します。

    2. [起動設定を使用する Auto Scaling グループの場合]

      どのインスタンスが最も古い起動設定を使用しているかを判断します。

  3. 上記のすべての基準を適用した後で、終了する保護されていないインスタンスが複数ある場合は、どのインスタンスが次の課金時間に最も近いかを判断します。次の課金時間に最も近い保護されていないインスタンスが複数ある場合、これらのインスタンスのいずれかをランダムに終了します。

    次の課金時間に最も近いインスタンスを終了すると、時間単価のインスタンスを最大限に活用できます。または、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つの可用性ゾーンがグループによって使用される他の可用性ゾーンよりも多くのインスタンスを持つ場合です。

終了ポリシーをカスタマイズするには (コンソール)

  1. https://console.aws.amazon.com/ec2/ で Amazon EC2 コンソールを開きます。

  2. ナビゲーションペインの [AUTO SCALING] で、[Auto Scaling グループ] を選択します。

  3. グループ [Auto Scaling] の横にあるチェックボックスをオンにします。

    [Auto Scaling グループ] ページの下部に分割ペインが開き、選択したグループに関する情報が表示されます。

  4. [詳細] タブで、[高度な設定]、[編集] の順に選択します。(旧コンソール: [詳細] タブで、[編集] を選択します)。

  5. [終了ポリシー] で、1 つまたは複数の終了ポリシーを選択します。複数のポリシーを選択する場合は、適用する順にリストします。[デフォルト] ポリシーを使用する場合は、リストの最後のポリシーとします。

  6. [Update] を選択します。

終了ポリシーをカスタマイズするには (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 終了保護を有効にします。詳細については、以下を参照してください。 終端保護の有効化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 (インスタンスのスケールイン保護を有効にする)] オプションを選択します。

インスタンスのスケールイン保護を有効にする (古いコンソール)

Auto Scaling グループを作成するとき、[Configure Auto Scaling group details (Auto Scaling グループ詳細の設定)] ページの [高度な詳細] で、[Instance Protection (インスタンスの保護)] から [Protect From Scale In] オプションを選択します。

インスタンスのスケールイン保護を有効にする (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 グループのインスタンスのスケールイン保護の設定は、有効または無効にすることができます。インスタンスのスケールイン保護設定を有効にすると、有効化後に起動したすべての新しいインスタンスでは、インスタンスのスケールイン保護が有効になります。以前に起動したインスタンスは、インスタンスごとに個別にインスタンスのスケールイン保護設定を有効にしない限り、スケールインから保護されません。

グループのインスタンスのスケールイン保護の設定を変更する (コンソール)

  1. https://console.aws.amazon.com/ec2/ で Amazon EC2 コンソールを開きます。

  2. ナビゲーションペインの [AUTO SCALING] で、[Auto Scaling グループ] を選択します。

  3. Auto Scaling グループの横にあるチェックボックスをオンにします。

    [Auto Scaling グループ] ページの下部に分割ペインが開き、選択したグループに関する情報が表示されます。

  4. [詳細] タブで、[高度な設定]、[編集] の順に選択します。(旧コンソール: [詳細] タブで、[編集] を選択します)。

  5. [インスタンスのスケールイン保護] で、[インスタンスのスケールイン保護を有効にする] を選択します。(古いコンソール: [Instance Protection (インスタンスの保護)] で、[Protect From Scale In (スケールインから保護)] を選択します)。

  6. [Update] を選択します。

グループのインスタンスのスケールイン保護設定を変更する (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 グループからインスタンスのスケールイン保護の設定を取得します。ただし、インスタンスにおけるインスタンスのスケールイン保護はいつでも有効または無効にできます。

インスタンスに対するインスタンスのスケールイン保護設定を変更する (コンソール)

  1. https://console.aws.amazon.com/ec2/ で Amazon EC2 コンソールを開きます。

  2. ナビゲーションペインの [AUTO SCALING] で、[Auto Scaling グループ] を選択します。

  3. Auto Scaling グループの横にあるチェックボックスをオンにします。

    [Auto Scaling グループ] ページの下部に分割ペインが開き、選択したグループに関する情報が表示されます。

  4. [Instance management (インスタンス管理)] タブの [Instances (インスタンス)] で、インスタンスを選択します。(古いコンソール: [Instances (インスタンス)] タブでは、インスタンスを選択できます)。

  5. インスタンスのスケールイン保護を有効にするには、[Actions (アクション)]、[Set scale-in protection (スケールイン保護を設定)] の順に選択します。プロンプトが表示されると、[Set scale-in protection (スケールイン保護を設定)] を選択します。

  6. インスタンスのスケールイン保護を無効にするには、[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-name my-asg --protected-from-scale-in

次のコマンドを使用して、指定したインスタンスにおけるインスタンスのスケールイン保護を無効にします。

aws autoscaling set-instance-protection --instance-ids i-5f2e8a0d --auto-scaling-group-name my-asg --no-protected-from-scale-in