チュートリアル: スケーリングとロードバランシングを使用するアプリケーションのセットアップ - Amazon EC2 Auto Scaling

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

チュートリアル: スケーリングとロードバランシングを使用するアプリケーションのセットアップ

重要

このチュートリアルを進める前に、まず「最初の Auto Scaling グループの作成」の入門チュートリアルを確認することをお勧めします。

Auto Scaling グループを Elastic Load Balancing ロードバランサーに登録すると、負荷分散されたアプリケーションをセットアップできます。Elastic Load Balancing は Amazon EC2 Auto Scaling と連携し、受信トラフィックを正常な Amazon EC2 インスタンスに分散させます。これにより、アプリケーションのスケーラビリティと可用性が向上します。複数のアベイラビリティーゾーン内で Elastic Load Balancing を有効にして、アプリケーションの耐障害性を向上させることができます。

このチュートリアルでは、Auto Scaling グループの作成時に負荷分散されたアプリケーションをセットアップする基本的なステップについて説明します。完了すると、アーキテクチャは次の図表のようになります。


      Application Load Balancer を持つ Auto Scaling グループ。

Elastic Load Balancing では、異なる種類のロードバランサーがサポートされています。このチュートリアルでは、Application Load Balancer を使用することをお勧めします。

アーキテクチャへのロードバランサーの導入の詳細については、「Elastic Load Balancing を使用して Auto Scaling グループ内のインスタンス全体にトラフィックを分散させる」を参照してください。

前提条件

  • ロードバランサーおよびターゲットグループ。Auto Scaling グループに使用するロードバランサーと同じアベイラビリティゾーンを選択していることを確認します。詳細については、Elastic Load Balancing ユーザーガイドの Elastic Load Balancing で使用開始 を参照してください。

  • 起動テンプレートまたは起動設定に対応したセキュリティグループ。セキュリティグループは、リスナーポート (HTTP トラフィックの場合は通常、ポート 80) および Elastic Load Balancing でヘルスチェックに使用するポートの両方で、ロードバランサーからのアクセスが許可されている必要があります。詳細については、該当するドキュメントを参照してください。

    インスタンスにパブリック IP アドレスがある場合は、オプションでインスタンスに接続するための SSH トラフィックを許可することもできます。

  • (オプション) アプリケーションにアクセス権を付与する IAM ロール。 AWS

  • (オプション) Amazon EC2 インスタンスのソーステンプレートとして定義された Amazon マシンイメージ (AMI)。作成するには、インスタンスを起動します。IAM ロール (作成した場合) と、ユーザーデータとして必要な設定スクリプトを指定します。インスタンスに接続し、それをカスタマイズします。たとえば、ソフトウェアやアプリケーションのインストール、データのコピー、追加の EBS ボリュームのアタッチを行うことができます。インスタンスが正しく設定されたことを確認するために、インスタンスでアプリケーションをテストします。この更新された設定をカスタム AMI として保存します。後で使用しないインスタンスは、終了できます。この新しいカスタム AMI から起動されるインスタンスには、AMI の作成時に追加したカスタマイズが含まれます。

  • Virtual Private Cloud (VPC)。このチュートリアルではデフォルトの VPC を参照していますが、独自の VPC を使用することもできます。後者の場合は、VPC に、作業中のリージョンの各アベイラビリティーゾーンにマッピングされたサブネットがあることを確認してください。ロードバランサーを作成するには、2 つ以上のパブリックサブネットが必要です。Auto Scaling グループを作成してロードバランサーに登録するには、2 つのプライベートサブネットまたは 2 つのパブリックサブネットが必要です。

ステップ 1: 起動テンプレートまたは起動設定を設定する

このチュートリアルでは、起動テンプレートまたは起動設定を使用します。

起動テンプレートを選択または作成します。

使用する起動テンプレートが既に存在している場合は、以下の手順を使用して起動テンプレートを選択します。

既存の起動テンプレートを選択するには
  1. Amazon EC2 コンソールの起動テンプレートページを開きます。

  2. 画面上部のナビゲーションバーで、ロードバランサーが作成されたリージョンを選択します。

  3. 起動テンプレートを削除します。

  4. Actions、[Auto Scaling グループの作成] を選択します。

または、新しい起動テンプレートを作成するために、次の手順を使用します。

起動テンプレートを作成するには
  1. Amazon EC2 コンソールの起動テンプレートページを開きます。

  2. 画面上部のナビゲーションバーで、ロードバランサーが作成されたリージョンを選択します。

  3. [起動テンプレートの作成] を選択します。

  4. 名前を入力し、起動テンプレートの最初のバージョンの説明を加えます。

  5. [Application and OS Images (Amazon Machine Image)] (アプリケーションおよび OS イメージ (Amazon マシンイメージ)) で、インスタンス用の AMI の ID を選択します。利用可能なすべての AMI を検索するか、[Recent] (最新) または [クイックスタート] リストから選択できます。必要な AMI が表示されない場合は、[その他の AMI を閲覧する] を選択して、完全な AMI カタログを参照します。

  6. [インスタンスタイプ] には、指定した AMI と互換性のあるインスタンス用のハードウェア設定を選択します。

  7. (オプション) [キーペア (ログイン)] で、インスタンスに接続するときに使用するキーペアを選択します。

  8. [Network settings] (ネットワーク設定) で、[Advanced network configuration] (高度なネットワーク設定) を展開し、以下を実行します。

    1. [Add network interface] (ネットワークインターフェイスを追加) を選択して、プライマリネットワークインターフェイスを追加します。

    2. Auto-assign public IP では、インスタンスがパブリック IPv4 アドレスを受け取るかどうかを指定します。デフォルトでは、EC2 インスタンスがデフォルトのサブネットで起動された場合、またはパブリック IPv4 アドレスを自動的に割り当てるように設定されたサブネットでインスタンスが起動された場合、Amazon EC2 はパブリック IPv4 アドレスを割り当てます。インスタンスに接続する必要がない場合は、[Disable] を選択して、グループ内のインスタンスがインターネットから直接トラフィックを受信しないようにできます。この場合、トラフィックの受信はロードバランサーからのみになります。

    3. セキュリティグループ ID を使用する場合、ロードバランサーと同じ VPC のインスタンスのセキュリティグループを指定します。

    4. [Delete on termination (終了時に削除)] を使用する場合、Yes (はい)を選択してください。これにより、Auto Scaling グループをスケールインしてネットワークインターフェイスがアタッチされているインスタンスを終了するときに、ネットワークインターフェイスが削除されます。

  9. (オプション) 認証情報をインスタンスに安全に配布するには、[Advanced details (詳細設定)] の [IAM instance profile (IAM インスタンスプロファイル)] に、IAM ロールの Amazon リソースネーム (ARN) を入力します。

  10. (オプション) インスタンスにユーザーデータまたは設定スクリプトを指定するには、[Advanced details]、[User data] に設定スクリプトを貼り付けます。

  11. [起動テンプレートの作成] を選択します。

  12. 確認ページで、[Auto Scaling グループの作成] を選択します。

起動設定を作成または選択する

注記

新しいアプリケーションでは起動設定を使用しないことを強くお勧めします。なぜなら、起動設定は従来の機能であり、計画的な投資もないからです。また、2023 年 6 月 1 日以降に作成された新しいアカウントには、コンソールから新しい起動設定を作成することはできません。詳細については、「起動設定」を参照してください。

既存の起動設定を選択するには
  1. Amazon EC2 コンソールの [起動設定ページ] を開きます。

  2. 上部のナビゲーションバーで、ロードバランサーが作成されたリージョンを選択します。

  3. 起動設定を選択します。

  4. Actions、[Auto Scaling グループの作成] を選択します。

または、新しい起動設定を作成するために、次の手順を使用します。

起動設定を作成するには
  1. Amazon EC2 コンソールの [起動設定ページ] を開きます。確認を求めるプロンプトが表示されたら、[起動設定を表示] を選択して、[起動設定] ページを表示することを確認します。

  2. 上部のナビゲーションバーで、ロードバランサーが作成されたリージョンを選択します。

  3. [Create launch configuration (起動設定の作成)] を選択して、起動設定の名前を入力します。

  4. [Amazon マシンイメージ (AMI)] には、検索基準としてインスタンスの AMI の ID を入力します。

  5. [インスタンスタイプ] では、インスタンスのハードウェア設定を選択します。

  6. [Additional configuration (追加設定)] 以下のフィールドに注意してください。

    1. (オプション) 認証情報を EC2 インスタンスに安全に配布するには、[IAM インスタンスプロファイル] で、IAM ロールを選択します。詳細については、「Amazon EC2 インスタンスで実行中のアプリケーション用の IAM ロール」を参照してください。

    2. (オプション) インスタンスにユーザーデータまたは設定スクリプトを指定するには、[Advanced details (高度な詳細)]、[User data] に設定スクリプトを貼り付けます。

    3. (オプション) [Advanced details (高度な詳細)] の [IP アドレスタイプ] は、デフォルト値のままにします。Auto Scaling グループを作成する際には、デフォルト VPC 内のデフォルトサブネットなど、パブリック IP アドレッシング属性が有効なサブネットを使用することにより、Auto Scaling グループ内のインスタンスにパブリック IP アドレスを割り当てることができます。または、インスタンスに接続する必要がない場合は、グループ内のインスタンスがインターネットから直接トラフィックを受信することのないよう、[パブリック IP アドレスをどのインスタンスにも割り当てないでください] を選択することもできます。この場合、トラフィックの受信はロードバランサーからのみになります。

  7. セキュリティグループを使用する場合、ロードバランサーと同じ VPC から既存のセキュリティグループを選択します。Create a new security group (新しいセキュリティグループの作成)オプションを選択すると、Linux を実行する Amazon EC2 インスタンスに対してデフォルトの SSH ルールが設定されます。デフォルトの RDP ロールは、Windows を実行する Amazon EC2 インスタンスに対して設定されます。

  8. [Key pair (login) (キーペア (ログイン)] で、[Key pair options (キーペアのオプション)] の下にあるオプションを選択します。

    すでに Amazon EC2 インスタンスキーペアを設定している場合は、ここで選択できます。

    Amazon EC2 インスタンスのキーペアがまだない場合は、[Create a new key pair (新しいキーペアの作成)] を選択して、わかりやすい名前を付けます。[Download key pair (キーペアのダウンロード)] を選択し、コンピュータにダウンロードします。

    重要

    インスタンスに接続する必要がある場合は、[Proceed without a key pair (キーペアなしで続行する)] を選択しないでください。

  9. 確認チェックボックスをオンにし、[Create launch configuration (起動設定の作成) ] を選択します。

  10. 新しい起動設定の名前の横にあるチェックボックスを選択し、アクション,Auto Scaling グループの作成を選択してください。

ステップ 2: Auto Scaling グループを作成する

起動テンプレートまたは起動設定を作成または選択した後、以下の手順に従って中断していた作業を続行します。

Auto Scaling グループを作成する
  1. [Choose launch template or configuration (起動テンプレートまたは起動設定を選択する)] ページで [Auto Scaling グループ名] にAuto Scaling グループの名前を入力します。

  2. [Launch template only] [起動テンプレート] で、スケールアウト時に Auto Scaling グループで使用する起動テンプレートのバージョン (デフォルト、最新、または特定のバージョン) を選択します。

  3. [次へ] をクリックします。

    [Choose instance launch options] (インスタンス起動オプションの選択) ページが表示されます。このページでは、Auto Scaling グループで使用する VPC ネットワーク設定を選択し、オンデマンドインスタンスとスポットインスタンスを起動するためのオプションを選択できます (起動テンプレートを選択した場合)。

  4. [Network] (ネットワーク) セクションの [VPC] で、ロードバランサーに使用した VPC を選択します。デフォルトの VPC を選択した場合は、インスタンスへのインターネット接続を提供するように自動的に設定されます。この VPC には、リージョンの各アベイラビリティーゾーンのパブリックサブネットが含まれます。

  5. [Availability Zones and subnets] (アベイラビリティゾーンとサブネット) で、ロードバランサーがあるアベイラビリティーゾーンに基づいて、含める各アベイラビリティーゾーンから 1 つ以上のサブネットを選択します。詳細については、「VPC サブネットを選択する場合の考慮事項」を参照してください。

  6. [起動テンプレートのみ] [Instance type requirements] (インスタンスタイプの要件) セクションで、デフォルト設定を使用して、この手順を簡略化します。(起動テンプレートを上書きしないでください。) このチュートリアルでは、起動テンプレートで指定されたインスタンスタイプを使用して、オンデマンドインスタンスのみを起動します。

  7. [Next] (次へ) を選択して、[Configure advanced options] (詳細オプションの設定) ページに移動します。

  8. グループを既存のロードバランサーにアタッチするには、[Load balancing] (ロードバランシング) セクションで [Attach to an existing load balancer] (既存のロードバランサーにアタッチする) を選択します。[Choose from your load balancer target groups] (ロードバランサーのターゲットグループから選択する) または [Choose from Classic Load Balancers] (Classic Load Balancer から選択する) も選択できます。その後、作成した Application Load Balancer または Network Load Balancer のターゲットグループの名前を選択するか、Classic Load Balancer の名前を選択できます。

  9. (オプション)Elastic Load Balancing ヘルスチェックを使用するには、[ヘルスチェック] で、ヘルスチェックタイプの[ELB] を選択します。

  10. Auto Scaling グループの設定が完了したら、[Skip to review (スキップして確認)] を選択します。

  11. [確認] ページで、Auto Scaling グループの詳細を確認します。[Edit] を選択して、変更を加えることができます。完了したら、[Auto Scaling グループの作成] を選択します。

ロードバランサーがアタッチされた Auto Scaling グループを作成すると、ロードバランサーは新しいインスタンスがオンラインになると自動的に登録します。この時点ではインスタンスが 1 つしかないため、登録するインスタンスは多くありません。ただし、グループの希望キャパシティーを更新することで、インスタンスを追加できるようになりました。 step-by-step 手順については、を参照してくださいAuto Scaling グループの希望キャパシティを変更

ステップ 3: ロードバランサーがアタッチされたことを確認する

ロードバランサーがアタッチされたことを確認するには
  1. Amazon EC2 コンソールの Auto Scaling グループページ から、Auto Scaling グループの横にあるチェックボックスを選択します。

  2. [詳細] タブの [Load balancing] には、アタッチされているロードバランサーターゲットグループまたは Classic Load Balancer が表示されます。

  3. [アクティビティ]タブのアクティビティ履歴で、インスタンスが正常に起動したことを確認できます。[Status] 列は Auto Scaling グループがインスタンスを正常に起動したかどうかを表示します。インスタンスの起動に失敗した場合は、Amazon EC2 Auto Scaling をトラブルシューティングする にインスタンスの起動に関する一般的な問題のトラブルシューティングのヒントがあります。

  4. [インスタンス管理] タブの [インスタンス] で、インスタンスがトラフィックを受け取る準備ができたことを確認できます。当初、インスタンスの状態は Pending です。インスタンスがトラフィックを受信できるようになったら、そのステータスは InService です。[Health Status] 列には、インスタンスのAmazon EC2 Auto Scaling ヘルスチェックの結果が表示されます。インスタンスが正常とマークされていても、ロードバランサーは、ロードバランサーのヘルスチェックに合格したインスタンスにのみ、トラフィックを送信します。

  5. インスタンスがロードバランサーに登録されていることを確認します。Amazon EC2 コンソールのターゲットグループページを開きます。ターゲットグループを選択し、[ターゲット] タブを選択します。インスタンスの状態が initial の場合、おそらく登録中であるか、まだヘルスチェック中です。インスタンスの状態が healthy になると、使用できる状態です。

ステップ 4: 次のステップ

このチュートリアルを完了したので、さらに詳しい内容に進むことができます。

  • Amazon EC2 Auto Scaling は、Auto Scaling グループが使用するヘルスチェックのステータスに基づいてインスタンスが正常かどうかを判断します。ロードバランサーのヘルスチェックを有効にし、インスタンスがヘルスチェックに失敗した場合、Auto Scaling グループはそのインスタンスを異常と見なして置き換えます。詳細については、「ヘルスチェック」を参照してください。

  • 同じリージョン内の追加のアベイラビリティーゾーンにアプリケーションを拡張して、サービス中断が発生した場合の耐障害性を向上させることができます。詳細については、「アベイラビリティーゾーンを追加する」を参照してください。

  • Auto Scaling グループを設定することで、ターゲット追跡スケーリングポリシーを使用できます。これにより、インスタンスの需要の変化に応じて、インスタンスの数が自動的に増減します。これにより、グループはアプリケーションが受信するトラフィック量の変化に対応できます。詳細については、「ターゲット追跡スケーリングポリシー」を参照してください。

ステップ 5:クリーンアップ

このチュートリアル用に作成したリソースを使用し終えたら、不要な料金の発生を回避するため、クリーンアップを検討してください。

Auto Scaling グループを削除するには
  1. Amazon EC2 コンソールで Auto Scaling グループのページを開きます。

  2. Auto Scaling グループの横にあるチェックボックスを選択します。

  3. [削除] をクリックします。

  4. 確認を求められたら、delete を入力して指定された Auto Scaling グループの削除を確認し、[Delete] (削除) を選択します。

    [Name (名前)] 列のロードアイコンに、Auto Scaling グループが削除されたことが示されます。削除が行われると、[Desired] (必要)、[Min] (最小)、[Max] (最大) 列には、Auto Scaling グループのインスタンス数として 0 と表示されます。インスタンスを終了し、グループを削除するには数分かかります。リストを更新して、現在の状態を確認します。

起動テンプレートを維持する場合は、この手順をスキップします。

起動テンプレートを削除するには
  1. Amazon EC2 コンソールの起動テンプレートページを開きます。

  2. 起動テンプレートを選択します。

  3. [アクション]、[テンプレートの削除] の順に選択します。

  4. 確認を求められたら、Delete を入力して指定した起動テンプレートの削除を確認し、[Delete] (削除) を選択します。

起動設定を維持する場合は、以下の手順をスキップします。

起動設定を削除するには
  1. Amazon EC2 コンソールの [起動設定ページ] を開きます。

  2. 起動設定を選択します。

  3. [Actions]、[Delete launch configuration] の順に選択します。

  4. 確認を求めるメッセージが表示されたら、[削除] を選択します。

将来使用できるように、ロードバランサーを保持する場合は、次の手順をスキップします。

ロードバランサーを削除するには
  1. Amazon EC2 コンソールで [ロードバランサーページ] を開きます 。

  2. ロードバランサーを選択してから、[Actions (アクション)]、[Delete (削除)] の順に選択します。

  3. 確認を求めるメッセージが表示されたら、[Yes、Delete] を選択します。

ターゲットグループを削除するには
  1. Amazon EC2 コンソールのターゲットグループページを開きます。

  2. ターゲットグループを選択し、[Actions (アクション)]、[Delete (削除)] を選択します。

  3. 確認を求めるメッセージが表示されたら、[Yes、Delete] を選択します。

AWS CloudFormationでは、テンプレートファイルを使用してリソースのコレクションを 1 つのユニット (スタック) としてまとめて作成および削除することで、 AWS インフラストラクチャデプロイを予測どおりに繰り返し作成およびプロビジョニングできます。詳細については、『AWS CloudFormation ユーザーガイド』を参照してください。

スタックテンプレートを使用して、Auto Scaling グループと Application Load Balancer をプロビジョニングする方法のチュートリアルは、「AWS CloudFormation ユーザーガイド」の「チュートリアル: スケーラブルなロードバランシングウェブサーバーの作成」を参照してください。このチュートリアルとサンプルテンプレートは、実際のニーズに合わせて、同様のテンプレートを作成する際の開始点として使用できます。