全般

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 が削除されます。

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 やインスタンスの削除理由など、削除されたインスタンスの詳細が含まれます。

詳細については、Auto Scaling グループスケーリング時の 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 は作成されません。詳細については、EC2 インスタンスを使用した Auto Scaling グループの作成をご覧ください。

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: 「異常な (Unhealthy)」インスタンスにはどのような特徴がありますか?

異常なインスタンスは、何らかの理由でハードウェアに不具合 (ディスク不良など) が発生している、または、ユーザー設定の 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 のみを作成し、管理できますか?

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

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 料金の詳細

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