全般

Q: Amazon EC2 Auto Scaling とは何ですか?

Amazon EC2 Auto Scaling は、Amazon EC2 のインスタンスを自動的に作成または終了してアプリケーションの負荷を処理する Amazon EC2 インスタンスの数を調整できる、完全マネージド型サービスです。Amazon EC2 Auto Scaling では、異常なインスタンスを検出して置き換えることにより、EC2 インスタンスのフリートを管理できます。また、お客様が定義する条件に応じて Amazon EC2 のキャパシティーのスケールアップ/スケールダウンを自動的に行って、アプリケーションの可用性を維持できます。Amazon EC2 Auto Scaling を使用することで、需要が急激に上昇したときには Amazon EC2 インスタンスの数を自動的に増やしてパフォーマンスを維持し、需要が落ち着いた状態にあるときにはインスタンスの数を減らしてコストを削減できます。

Q.Amazon EC2 Auto Scaling と AWS Auto Scaling はそれぞれどのような場合に使用すればよいですか?

複数のサービスにまたがる複数のリソースのスケーリングを管理する場合は、AWS Auto Scaling をご使用ください。AWS Auto Scaling では、事前に定義されたスケーリング戦略を使って、複数の EC2 Auto Scaling グループやその他のリソースに対する動的なスケーリングポリシーを定義できます。AWS Auto Scaling を使ってアプリケーション内のスケーラブルなすべてのリソースに対するスケーリングポリシーを設定する方が、個々のサービスコンソールでリソースごとのスケーリングポリシーを管理するより時間がかからず、しかも簡単です。AWS Auto Scaling に含まれる事前に定義されたスケーリング戦略でスケーリングポリシーを簡単に設定できます。EC2 リソース用の予測スケーリングを生成するためには、AWS Auto Scaling も利用するべきです。

スケーリング対象が Amazon EC2 Auto Scaling グループのみの場合や、目的が EC2 フリートの正常性の維持のみの場合は、EC2 Auto Scaling をご使用ください。また、Amazon EC2 Auto Scaling グループを作成、設定する必要がある場合や、スケジュールに基づくスケーリングポリシーやステップスケーリングポリシーを設定する必要がある場合も、EC2 Auto Scaling をご使用ください (AWS Auto Scaling は、ターゲット追跡スケーリングポリシーのみに対応しています)。

EC2 Auto Scaling グループの作成、設定には、AWS Auto Scaling ではなく、EC2 コンソール、Auto Scaling API、または CloudFormation をご使用ください。AWS Auto Scaling は、既存の EC2 Auto Scaling グループに対する動的なスケーリングポリシーを設定するためのサービスです。

Q: Amazon EC2 Auto Scaling を使用することにより、どのような利点がありますか?

Amazon EC2 Auto Scaling を使用することで、Amazon EC2 インスタンスの可用性を維持できます。実行している Amazon EC2 インスタンスの数にかかわらず、Amazon EC2 Auto Scaling では、障害の発生した Amazon EC2 インスタンスを検出し、そのインスタンスを自動的に置き換えることができます。これによって、お客様が期待するコンピューティング性能をアプリケーションで確保できます。Amazon EC2 Auto Scaling を使用すれば、アプリケーションの需要曲線に従って Amazon EC2 フリートを自動的にスケーリングできるため、事前に Amazon EC2 のキャパシティーを手動でプロビジョニングする必要性が軽減されます。例えば、お客様の Amazon EC2 フリートの平均使用量が高い場合に新たな Amazon EC2 インスタンスを ASG に追加するといった条件を設定できます。同様に、CPU の利用率が低いときにインスタンスの数を減らす条件も設定できます。また、Amazon CloudWatch を使用することにより、アラームを送信してスケーリングアクティビティをトリガーすることができます。また、Elastic Load Balancing (ELB) を使用して、ASG 内のインスタンスにトラフィックを分散させることもできます。負荷の変化が予測できる場合には、Amazon EC2 Auto Scaling でスケジュールを設定し、スケーリングアクティビティを計画できます。Amazon EC2 Auto Scaling を使用すれば、Amazon EC2 フリートの使用率を最適化できます。

Q: フリート管理とは何ですか? また、動的スケーリングとの違いを教えてください。

アプリケーションを実行する複数の Amazon EC2 インスタンスのことを、「フリート」と呼んでいます。フリート管理は、異常なインスタンスを自動的に置き換えて、フリートのキャパシティーを一定に保つ機能です。Amazon EC2 Auto Scaling のフリート管理では、アプリケーションによるトラフィックの受信や EC2 インスタンスの正常な動作を保証します。Auto Scaling のヘルスチェックで不合格になったインスタンスは、自動的に置き換えることができます。

Amazon EC2 Auto Scaling の動的スケーリングは、負荷などのメトリクスに応じてキャパシティーを自動的に増減する機能です。たとえば、CPU の使用率が急増して 80% を超えると (アラームを設定している場合)、Amazon EC2 Auto Scaling によって新しいインスタンスが動的に追加されます。

Q: ターゲットの追跡とは何ですか?

ターゲットの追跡は、いくつかの簡単なステップでアプリケーションの動的スケーリングをセットアップできる、新しいタイプのスケーリングポリシー機能です。ターゲットの追跡では、CPU 使用率、リクエスト数といったアプリケーションの負荷メトリクスを選択し、ターゲット値を設定します。設定されたターゲット値を基に、Amazon EC2 Auto Scaling は ASG グループ内の EC2 インスタンスの数を調整します。この機能は、ご自分の希望する温度に環境を調節し維持できる温度調節器のようなシステムとお考えいただけばわかりやすいかもしれません。例えば、大量にあるウェブサーバーの CPU の使用率を 50% で維持するようにターゲットの追跡を設定できます。そうすると、Amazon EC2 Auto Scaling は 必要時に EC2 インスタンスの起動や終了を行って、CPU の使用率が平均して 50% を維持するようにします。

Q: EC2 Auto Scaling グループ (ASG) とは何ですか?

Amazon EC2 Auto Scaling グループ (ASG) は、類似する特性を共有する EC2 インスタンスの集合です。このグループは、フリート管理や動的スケーリング用の論理的なグループとみなされます。例えば、複数のインスタンスで動作する単一のアプリケーションがある場合、グループのインスタンス数を増やすことでアプリケーションのパフォーマンス向上を図ることができます。また、需要が少ないときには、インスタンス数を減らすことでコストを削減できます。Amazon EC2 Auto Scaling では、お客様が指定した条件に基づき、インスタンスで障害が発生しても、グループ内のインスタンスの数が一定になるよう自動的に調整します。ASG の詳細については、Amazon EC2 Auto Scaling ユーザーガイドをご覧ください。

Q: ASG を削除すると、Amazon EC2 インスタンスはどうなりますか?

EC2 Auto Scaling グループ (ASG) に実行中のインスタンスが含まれており、その ASG の削除を選択した場合、インスタンスは終了し、ASG は削除されます。

Q: EC2 Auto Scaling によって EC2 Auto Scaling グループ内の EC2 インスタンスの起動や終了がいつ行われているか把握するにはどうすればよいですか?

Amazon EC2 Auto Scaling を使用してアプリケーションを自動的にスケールしている場合は、EC2 Auto Scaling で EC2 Auto Scaling グループ内の EC2 インスタンスの作成や削除がいつ行われているか把握することをお勧めします。Amazon SNS は、登録しているクライアントやエンドポイントへの通知の配信や送信を調整、管理するサービスです。EC2 Auto Scaling グループのスケーリングが発生した場合に常に SNS 通知を送信するよう EC2 Auto Scaling を設定できます。Amazon SNS では、HTTP/HTTPS POST、E メール (プレーンテキストまたは JSON 形式の SMTP)、または Amazon SQS キューのメッセージ投稿で通知を配信できます。例えば、「autoscaling: EC2_INSTANCE_TERMINATE」通知タイプを使用するように EC2 Auto Scaling グループを設定すると、EC2 Auto Scaling グループでインスタンスを削除したときに、E メールで通知が送信されます。この E メールには、インスタンス ID やインスタンスの削除理由など、削除されたインスタンスの詳細が含まれます。

詳細については、「EC2 Auto Scaling グループスケーリング時の Amazon SNS 通知の取得」をご覧ください。

Q: 起動設定とは何ですか?

起動設定は EC2 Auto Scaling グループが EC2 インスタンスを作成する場合に使用するテンプレートです。起動設定を作成するときには、Amazon マシンイメージ (AMI) の ID、インスタンスタイプ、キーペア、1 つ以上のセキュリティグループ、ブロックデバイスマッピングなどの情報を指定します。これは EC2 インスタンスを単独で作成する場合に指定する情報と同じものです。EC2 Auto Scaling グループを作成する場合は、起動設定を指定する必要があります。作成した起動設定は複数の EC2 Auto Scaling グループで指定できます。ただし、1 つの EC2 Auto Scaling グループに指定できる起動設定は一度に 1 つのみで、グループを作成した後に起動設定を変更することはできません。したがって、EC2 Auto Scaling グループの起動設定を変更するには、新しい起動設定を作成し、その起動設定を使用するように EC2 Auto Scaling グループを更新する必要があります。EC2 Auto Scaling グループの起動設定を変更した場合、変更後に作成されるインスタンスは新しい設定パラメータを使用しますが、既存のインスタンスは影響を受けません。詳細については、EC2 Auto Scaling ユーザーガイドの起動設定セクションをご参照ください。

Q: EC2 Auto Scaling グループにはインスタンスをいくつ含めることができますか?

EC2 Auto Scaling グループには、EC2 クォータの範囲内であれば、いくつでもインスタンスを含めることができます。

Q: スケーリングアクティビティによって、Amazon EC2 インスタンスの数が上限に達すると、どうなりますか?

Amazon EC2 Auto Scaling では、お客様が実行できる Amazon EC2 インスタンス数の上限を超えてスケールすることはできません。さらに多くの Amazon EC2 インスタンスが必要な場合は、Amazon EC2 インスタンス申請フォームをご記入ください。

Q: EC2 Auto Scaling グループを複数の AWS リージョンに分散できますか?

EC2 Auto Scaling グループはリージョン単位となっています。複数のアベイラビリティーゾーンに分散させることは可能ですが、複数の AWS リージョンに分散させることはできません。

Q: EC2 Auto Scaling グループ内の複数のインスタンス全体に変更を実施するにはどうすればよいですか?

AWS CodeDeploy または CloudFormation を使用して、EC2 Auto Scaling グループ内の複数のインスタンスへのコード変更をオーケストレーションできます。

Q: EC2 Auto Scaling グループにデータをインストールしており、後で新しいインスタンスを動的に作成る場合、データは新しいインスタンスにコピーされますか?

データは既存のインスタンスから新しいインスタンスに自動的にコピーされません。ライフサイクルフックを使用してデータをコピーするか、レプリカを含む Amazon RDS データベースを使用できます。

Q: 既存のインスタンスから EC2 Auto Scaling グループを作成すると、新しい AMI (Amazon マシンイメージ) が作成されますか?

既存のインスタンスから Auto Scaling グループを作成しても、新しい AMI は作成されません。詳細については、「Creating an Auto Scaling Group Using an EC2 Instance」をご参照ください。

Q: Amazon EC2 Auto Scaling はどのようにキャパシティーのバランスを取っているのですか?

Well-Architected アプリケーションのベストプラクティスは、複数のアベイラビリティーゾーン間でリソースを均等化することです。これにより、集計システムの可用性が大幅に向上します。EC2 Auto Scaling グループの設定で複数のアベイラビリティーゾーンを構成していれば、Amazon EC2 Auto Scaling によって、複数のゾーン間で EC2 インスタンスが自動的に均等化されます。Amazon EC2 Auto Scaling では常に、フリート全体にわたりゾーン間でできる限り均等になるように新しいインスタンスを作成します。さらに、Amazon EC2 Auto Scaling では、リクエスト済みインスタンスタイプに利用できるキャパシティーがあるアベイラビリティーゾーンでのみ起動します。

Q: ライフサイクルフックとは何ですか?

ライフサイクルフックを使用すると、インスタンスの作成や削除の前にアクションを実行できます。これは、ソフトウェア環境を Amazon マシンイメージ (AMI) に変換していない場合に非常に役立ちます。例えば、作成フック (Launch) により、Amazon EC2 Auto Scaling がロードバランサーへの接続に進む前に、インスタンスのソフトウェア構成を実行して、トラフィックを処理できるように準備を整えておくことができます。インスタンスの RunCommand を呼び出す AWS Lambda 関数に作成フックを接続することによりこれを実現できます。削除フック (Terminate) は、インスタンスを削除する前にインスタンスから重要なデータを収集するというような場合に役立ちます。例えば、削除フックを使用して、インスタンスを削除するときにフリートのログファイルを Amazon S3 バケットにコピーすることにより、ログファイルを保存しておくことができます。

詳細については、Amazon EC2 Auto Scaling ユーザーガイドの「Amazon EC2 Auto Scaling ライフサイクルフック」をご覧ください。

Q: 「異常な」インスタンスにはどのような特徴がありますか?

異常なインスタンスは、何らかの理由でハードウェアに不具合 (ディスク不良など) が発生している、または、ユーザー設定の ELB ヘルスチェックに合格しなかったインスタンスのことです。Amazon EC2 Auto Scaling では、各 EC2 インスタンスでヘルスチェックを定期的に実行しています。インスタンスが Elastic Load Balancing ロードバランサーに接続されている場合は、ELB ヘルスチェックも実行できます。

Q: ヘルスチェックをカスタマイズすることはできますか?

はい。SetInstanceHealth という API を使用して、インスタンスの状態を「UNHEALTHY」に変更できます。これにより、インスタンスは終了または置き換えられることになります。

Q: ヘルスチェックを一時停止することはできますか? (異常なインスタンスを評価する場合など)

はい、一時停止できます。Amazon EC2 Auto Scaling のヘルスチェックを一時停止するには、SuspendProcesses API を使用します。自動ヘルスチェックを再開するには、ResumeProcesses API を使用します。

Q: どのヘルスチェックタイプを選択すればよいですか?

グループで Elastic Load Balancing (ELB) を使用している場合は、ELB ヘルスチェックを選択してください。グループで ELB を使用していない場合は、EC2 ヘルスチェックを選択してください。

Q: Elastic Load Balancing (ELB) を使用していない場合、Amazon EC2 Auto Scaling を使ってヘルスチェックを行い、異常なインスタンスを置き換えることはできますか?

Auto Scaling を使用するために ELB を使用する必要はありません。EC2 ヘルスチェックを使用して、異常なインスタンスを特定し置き換えることができます。

Q: Elastic Load Balancing (ELB) ヘルスチェックは Application Load Balancer や Network Load Balancer と連携しますか? ターゲットグループで異常が発生すると、関連付けられているインスタンスも異常としてマークされますか?

はい。Amazon EC2 Auto Scaling は、ヘルスチェック機能を含め、Application Load Balancer や Network Load Balancer と連携します。

Q: Amazon EC2 Auto Scaling を使用して、インスタンスを追加せずにボリュームのみを追加する方法はありますか?

ボリュームは新しいインスタンスを追加したときにインスタンスにアタッチされます。Amazon EC2 Auto Scaling では、既存のボリュームが容量に達した場合でもボリュームは自動的に追加されません。EC2 API を使用すれば、既存のインスタンスにボリュームを追加できます。

Q: 「ステートフルなインスタンス」とはどういう意味ですか?

ステートフルなインスタンスは、そのインスタンスにのみ存在するデータがあるインスタンスを指します。一般に、ステートフルなインスタンスを削除すると、そのインスタンス上のデータ (またはステート情報) は失われます。ライフサイクルフックを使用して、終了前にステートフルインスタンスからデータをコピーするか、インスタンス保護を有効にして Amazon EC2 Auto Scaling が終了しないようにすることを検討できます。

障害のあるインスタンスの置換

Q: Amazon EC2 Auto Scaling では障害のあるインスタンスをどのように置き換えているのですか?

ヘルスチェックで障害のあるインスタンスが検出されると、そのインスタンスは Amazon EC2 Auto Scaling によって自動的に削除され、新しいインスタンスに置き換えられます。Elastic Load Balancing ロードバランサーを使用している場合は、Amazon EC2 Auto Scaling によってロードバランサーから障害のあるインスタンスが正常にデタッチされ、新しいインスタンスがプロビジョニングされて、ロードバランサーにアタッチされます。この操作はすべて自動的に行われるため、お客様が手動でインスタンスの置き換えに対応する必要はありません。

Q: スケールインの際、Amazon EC2 Auto Scaling が終了するインスタンスを制御する方法、およびインスタンス上のデータを保護する方法を教えてください。

Amazon EC2 Auto Scaling によるインスタンスの作成 (スケールアウト) およびグループからのインスタンスの削除 (スケールイン) は、Amazon EC2 Auto Scaling グループごとに制御します。インスタンスをアタッチ/デタッチして、グループのサイズを手動でスケーリングできます。また、スケーリングポリシーを使用して、このプロセスを自動化することもできます。Amazon EC2 Auto Scaling を使って自動的にスケールインする場合は、Amazon EC2 Auto Scaling が最初に削除するインスタンスを指定する必要があります。これは、削除ポリシーを使用して構成できます。インスタンス保護を使用して、指定したインスタンスを Amazon EC2 Auto Scaling によるスケールインの削除対象から除外することもできます。インスタンスにデータがあり、インスタンスがスケールインされてもそのデータを永続化する必要がある場合は、S3、RDS、または DynamoDB などのサービスを使用して、インスタンスから確実に保存できます。

Q: Amazon EC2 Auto Scaling で異常なサーバーを検出した後、inService 状態で新しいインスタンスをスピンアップするまでの所要時間はどれくらいですか?

数分以内です。置き換えの大半は 5 分未満で行われ、平均は 5 分を大幅に下回ります。所要時間は、インスタンスの AMI の起動にかかる時間など、さまざまな要因によって異なります。

Q: Elastic Load Balancing (ELB) でインスタンスの異常を検出してオフラインに移行すると判断した場合、障害のあるインスタンスに送信された以前のリクエストはキューに入り、グループ内の別のインスタンスに再度ルーティングされますか?

ELB でインスタンスの異常を検出した場合、そのインスタンスへのリクエストのルーティングは停止されます。ただし、インスタンスの異常を検出する前に、そのインスタンスへの一部のリクエストは失敗する可能性があります。

Q: Elastic Load Balancing (ELB) を使用していない場合、障害が発生したときにグループ内の別のサーバーにユーザーを振り向けるにはどうすればよいですか?

Route53 と連携させることができます (現在、Amazon EC2 Auto Scaling はサポート対象外ですが、多くのお客様が利用しています)。専用のリバースプロキシも使用できます。あるいは、内部マイクロサービス向けにサービス検出ソリューションを使用することもできます。

セキュリティ

Q: Amazon EC2 Auto Scaling リソースへのアクセスを制御するにはどうすればよいですか?

Amazon EC2 Auto Scaling は、AWS Identity and Access Management (IAM) と統合しているため、以下のことが可能です。

  • 会社の AWS アカウントでユーザーとグループを作成する
  • AWS アカウントの各ユーザーに一意のセキュリティ認証情報を割り当てる
  • AWS リソースを使用してタスクを実行するためのアクセス許可をユーザーごとに制御する
  • 別の AWS アカウントのユーザーと AWS リソースを共有できるようにする
  • AWS アカウントのロールを作成し、そのロールを継承できるユーザーまたはサービスを定義する
  • 会社の既存のアイデンティティを使用して、AWS リソースを使用してタスクを実行するためのアクセス許可を付与する

例えば、DescribeAutoScalingGroupsDescribeLaunchConfigurationsDescribeScalingActivitiesDescribePolicies の API オペレーションのみ使用可能なアクセス許可を Managers グループに付与する IAM ポリシーを作成できます。Managers グループのユーザーは、Amazon EC2 Auto Scaling のすべてのグループと起動設定でそれらのオペレーションを使用できます。Amazon EC2 Auto Scaling のリソースレベルのアクセス許可では、特定の EC2 Auto Scaling グループや起動設定へのアクセスを制限できます。

詳細については、Amazon EC2 Auto Scaling ユーザーガイドの「Amazon EC2 Auto Scaling リソースに対するアクセスのコントロール」セクションをご覧ください。

Q: Amazon EC2 Auto Scaling で Windows インスタンス上のデフォルト管理者パスワードを定義できますか?

CreateLaunchConfiguration の Key Name パラメータを使用してキーペアをインスタンスに関連付けることができます。その後 EC2 の GetPasswordData API を使用します。また、AWS マネジメントコンソールを使って定義することもできます。

Q: Amazon EC2 Auto Scaling グループを作成すると、自動的に EC2 インスタンスに CloudWatch エージェントがインストールされますか?

AMI に CloudWatch エージェントが含まれていれば、EC2 Auto Scaling グループの作成時にそのエージェントが EC2 インスタンスに自動的にインストールされます。ストックの Amazon Linux AMI を使用する場合は、手動でインストールする必要があります (yum 経由でのインストールをお勧めします)。

コスト最適化

Q: 単一の ASG を作成し、そのグループ内で購入オプションが異なるインスタンスをスケールできますか?

はい。EC2 キャパシティーのプロビジョニングと自動スケーリングは、単一の Auto Scaling グループにおいて、EC2 のインスタンスタイプ、アベイラビリティーゾーン、購入オプション (オンデマンド/リザーブド/スポット) が異なっていても可能です。オンデマンドとスポットのキャパシティーの間で希望する分割を定義したり、アプリケーションで機能するインスタンスタイプを選択したり、EC2 Auto Scaling が各購入モデル内で ASG キャパシティーを配分する方法を指定したりするオプションがあります。

Q: ASG を使用して、スポットインスタンスのみ、またはオンデマンドインスタンスと RI のみを起動、および管理できますか?

はい。ASG を設定して、すべてのキャパシティーがスポットインスタンスのみ、またはすべてのキャパシティーがオンデマンドインスタンスと RI のみになるように指定できます。

Q: オンデマンドインスタンスと RI でキャパシティーの基準値を設定し、スポットインスタンスで ASG をスケールアウトすることはできますか?

はい。購入モデルを組み合わせて ASG を設定するときに、グループに対してオンデマンドインスタンスを割り当てるキャパシティーの基準値を指定できます。ASG がスケールインまたはスケールアウトすると、EC2 Auto Scaling は、オンデマンドインスタンスで基準のキャパシティーを処理します。それを超えるものは、スポットインスタンスのみ、またはオンデマンドまたはスポットインスタンスの指定された割合の組み合わせで処理します。

Q: ASG の設定を変更して、購入モデルの組み合わせや複数のインスタンスタイプの指定に関するさまざまなプロパティを更新できますか?

はい。ASG の他のパラメータと同様、お客様は既存の ASG を更新し、購入モデルの組み合わせや複数のインスタンスタイプの指定に関係する 1 つまたはすべてのパラメータ (インスタンスタイプ、オンデマンドインスタンスの優先順位、オンデマンドインスタンスとスポットインスタンスの構成比、割り当て戦略など) を変更できます。

Q: ASG のオンデマンドインスタンスに RI 割引を使用することはできますか?

はい。たとえば、C4 インスタンスの RI があり、EC2 Auto Scaling が C4 を起動した場合、オンデマンドインスタンス向けの RI 料金を受け取ります。

Q: Auto Scaling グループで異なるサイズのインスタンス (CPU コア、メモリ) を指定できますか?

はい。リージョンで利用できるインスタンスタイプであればどのインスタンスタイプでも指定できます。さらに、インスタンスタイプごとにオプションで重み付けを指定できます。この指定では、各インスタンスがアプリケーションのパフォーマンスに貢献するキャパシティーユニットを定義します。

Q: お気に入りのインスタンスタイプがアベイラビリティーゾーンで利用できない場合はどうなりますか?

あるアベイラビリティーゾーンで、指定されたインスタンスタイプのいずれも利用できない場合、Auto Scaling では、作成先を変更し、Auto Scaling グループに関連付けられた別のアベイラビリティーゾーンでインスタンスを作成します。Auto Scaling では、常にコンピューティングのバランスをアベイラビリティーゾーン全体で保つようにしますが、あるアベイラビリティーゾーンで利用できるインスタンスタイプが全くない場合は、再ターゲットを行います。

料金

Q: Amazon EC2 Auto Scaling の使用コストはどのくらいですか?

EC2 インスタンスに対する Amazon EC2 Auto Scaling のフリート管理については、追加料金は発生しません。Amazon EC2 Auto Scaling の動的スケーリング機能は Amazon CloudWatch でご利用いただます。この機能についても追加料金は発生しません。Amazon EC2 および Amazon CloudWatch サービスの料金が適用され、別々に課金されます。

Amazon EC2 Auto Scaling 料金の詳細

料金ページを見る
始める準備はできましたか?
サインアップ
ご不明な点がおありですか?
お問い合わせ