全般

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 は、アプリケーションのスケーリング計画を定義するにあたって、より的確なガイダンスを必要とする場合や、Amazon DynamoDB のテーブルやインデックス、Amazon ECS のタスクなど、EC2 以外の複数のリソースをスケーリングする必要がある場合に使用することをお勧めします。現時点で AWS Auto Scaling を使用するには、AWS CloudFormation または AWS Elastic Beanstalk を使用してアプリケーションを作成する必要があります。AWS Auto Scaling では、アプリケーションのすべてのスケーリングポリシーを 1 か所で管理して、簡単かつ直感的に調整を行うことができます。

Amazon EC2 Auto Scaling は、 Amazon EC2 Auto Scaling グループをスケーリングするだけでよい場合、または EC2 フリートの正常性を維持するだけでよい場合に使用してください。

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 インスタンスを Auto Scaling グループに追加するといった条件を設定できます。同様に、CPU の利用率が低いときにインスタンスの数を減らす条件も設定できます。また、Amazon CloudWatch を使用することにより、アラームを送信してスケーリングアクティビティをトリガーすることができます。また、Elastic Load Balancing (ELB) を使用して、Amazon EC2 Auto Scaling グループ内のインスタンスにトラフィックを分散させることもできます。負荷の変化を予測できる場合には、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 が EC2 Auto Scaling グループ内の EC2 インスタンスの数を調整します。この機能は、ご自分の希望する温度に環境を調節し維持できる温度調節器のようなシステムとお考えいただけば分かりやすいかもしれません。たとえば、大量にあるウェブサーバーの CPU の使用率を 50% で維持するようにターゲットの追跡を設定できます。そうすると、Amazon EC2 Auto Scaling は EC2 インスタンスの作成や削除を行って、CPU の使用率が平均して 50% にとどまるようにします。

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

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

Q: EC2 Auto Scaling グループを削除すると、Amazon EC2 インスタンスはどうなりますか?

EC2 Auto Scaling グループに実行中のインスタンスが含まれている場合、その Amazon EC2 Auto Scaling グループの削除を指定すると、グループに含まれるインスタンスが削除され、その後 EC2 Auto Scaling グループが削除されます。

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 グループ内で異なるタイプの EC2 インスタンスを作成できますか?

EC2 Auto Scaling グループは、インスタンスのタイプがすべて同じ場合に最適化されます。異なるタイプのインスタンスを Auto Scaling グループにアタッチするには、AttachInstances API を使用します。また、起動設定を編集して、グループ内で異なるタイプの新しいインスタンスを作成することもできます。なお、この操作を行っても既存のインスタンスには影響しません。

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 がロードバランサーへの接続に進む前に、トラフィックを処理する準備を整えておくように、インスタンスのソフトウェアを構成できます。このための 1 つ方法が、インスタンスの 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) ヘルスチェックはアプリケーションロードバランサーやネットワークロードバランサーと連携しますか?ターゲットグループで異常が発生すると、それに関連付けられているインスタンスも異常としてマークされますか?

はい。Amazon EC2 Auto Scaling は、ヘルスチェック機能を含め、アプリケーションロードバランサーやネットワークロードバランサーと連携します。

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

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

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

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

Q: EC2 インスタンスの作成に Ansible スクリプトを使っています。Amazon EC2 Auto Scaling で Ansible を使用するにはどうすればよいですか?

Auto Scaling で Ansible を使用する方法の詳細については、Ansible のウェブサイトをご覧ください。

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

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 のリソースを使用してタスクを実行するようにアクセス許可を与える

例えば、DescribeAutoScalingGroups、DescribeLaunchConfigurations、DescribeScalingActivities、DescribePolicies の 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: Amazon EC2 Auto Scaling の使用コストはどのくらいですか?

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

Amazon EC2 Auto Scaling 料金の詳細

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