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

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

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

重要

このチュートリアルに進む前に、以下の概要チュートリアルを確認することをお勧めします。Amazon EC2 Auto Scaling の開始方法

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

このチュートリアルでは、Auto Scaling グループの作成時に負荷分散されたアプリケーションをセットアップする基本的なステップについて説明します。既存の Auto Scaling グループをロードバランサーに登録するには、代わりに「ロードバランサーのアタッチ」を参照してください。

Elastic Load Balancing は、Application Load Balancer、Network Load Balancer、クラシックロードバランサー など、さまざまなタイプのロードバランサーをサポートしています。ほとんどの場合、Application Load Balancer または Network Load Balancer を使用することをお勧めします。ただし、Classic Load Balancer は引き続き使用できます (アプリケーションが必要とする機能をサポートしている場合)。詳細については、「Elastic Load Balancing および Amazon EC2 Auto Scaling」を参照してください。

この負荷分散されたスケーラブルなアーキテクチャを動的トラフィック用にデプロイする手順は、次のステップで構成されます。

  • (オプション) インスタンスのテンプレートとして機能する起動テンプレートまたは起動設定を作成します。必要に応じて、起動テンプレートまたは起動設定のいずれかの手順を選択できます。独自の起動テンプレートまたは起動設定を使用する場合は、このステップをスキップします。

  • 次に、Auto Scaling グループを作成し、ロードバランサーをアタッチします。

  • 最後に、ロードバランサーがアタッチされたことを確認します。

Prerequisites

  • 使用するロードバランサーとターゲットグループが作成されている。Application Load Balancer または Network Load Balancer を使用すると、Auto Scaling グループはロードバランサーに関連付けられているターゲットグループに登録されます。Auto Scaling グループに有効にするロードバランサーと同じアベイラビリティゾーンを選択していることを確認します。詳細については、Elastic Load Balancing の「 の開始方法」を参照してください。Elastic Load Balancing ユーザーガイド

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

    • 』の「ターゲットセキュリティグループ」 Application Load Balancer 用ユーザーガイド

    • 』の「ターゲットセキュリティグループ」 Network Load Balancer 用ユーザーガイド

    • の「VPC 内のインスタンスのセキュリティグループ」 クラシックロードバランサー 用ユーザーガイド

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

  • (オプション) アプリケーションに必要な AWS へのアクセスを付与する IAM ロールがある。

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

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

アプリケーションのデプロイ (コンソール)

以下のセクションでは、アプリケーションをデプロイするプロセスを順を追って説明します。

起動テンプレートを作成する

起動テンプレートまたは起動設定が必要です。使用する起動テンプレートが既に存在している場合は、このステップをスキップします。

起動テンプレートを作成するには (コンソール)

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

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

  3. ナビゲーションペインで、[インスタンス] の [テンプレートの起動] を選択します。

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

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

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

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

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

  9. [ネットワークインターフェイス] で、以下の操作を実行します。

    1. [Add network interface] を選択します。このチュートリアルでは、このオプションを使用してネットワークインターフェイスを指定します。

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

    3. [セキュリティグループ ID] で、ロードバランサーと同じ VPC からインスタンスのセキュリティグループを指定します。

    4. [終了時に削除] で [はい] を選択すると、Auto Scaling グループをスケールインしてネットワークインターフェイスがアタッチされているインスタンスを終了するときに、ネットワークインターフェイスが削除されます。

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

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

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

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

起動設定を作成する

使用する起動設定が既に存在している場合は、このステップをスキップできます。

起動設定を作成するには (コンソール)

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

  2. ナビゲーションペインの [AUTO SCALING] で、[起動設定] を選択します。

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

  4. [起動設定の作成] を選択し、起動設定の名前を入力します。

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

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

  7. [Additional configuration (追加設定)] で、次のフィールドに注意してください。

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

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

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

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

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

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

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

    重要

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

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

  11. 新しい起動設定の名前の横にあるチェックボックスをオンにし、[Actions]、[Create Auto Scaling group] の順に選択します。

Auto Scaling グループの作成

上記の手順を完了したら、ウィザードを続行して Auto Scaling グループを作成できます。

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

グループを作成するには (コンソール)Auto Scaling

  1. [Auto Scaling グループ] ページにまだ移動していない場合は、次の操作を行います。

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

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

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

  3. [起動テンプレートまたは設定の選択] ページの [Auto Scaling グループ名] に、Auto Scaling グループの名前を入力します。

  4. [テンプレートの起動] で、次のいずれかのオプションを選択します。

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

    2. [起動設定のみ] [Switch to launch configuration (起動設定に切換え] を選択し、作成した起動設定を選択します。

  5. [Next] を選択します。

    [設定の指定] ページが表示されます。このページでは、ネットワーク設定を指定し、複数のインスタンスタイプのオンデマンドインスタンスとスポットインスタンス間で多様化を有効にためのオプションを選択できます (起動テンプレートを選択した場合)。

  6. [起動テンプレートのみ] [購入オプションとインスタンスタイプ] を [起動テンプレートに準拠する] に設定したままにし、起動テンプレートで指定されている EC2 インスタンスタイプと購入オプションを使用します。

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

  8. [Subnet (サブネット)] では、ロードバランサーがあるアベイラビリティーゾーンに基づいて、含めるアベイラビリティーゾーンから 1 つ以上のサブネットを選択します。

  9. [Next] を選択します。

  10. [詳細オプションの設定] ページの [ロードバランシング] で、[ロードバランシングを有効にする] を選択します。

  11. 次のいずれかを行ってください。

    1. [ロードバランサーのターゲットグループ] を選択し、作成したロードバランサーのターゲットグループを選択します。

    2. クラシックロードバランサー を選択し、ロードバランサーを選択します。

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

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

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

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

(オプション) ロードバランサーがアタッチされたことを確認する

ロードバランサーがアタッチされたことを確認するには (コンソール)

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

  2. [詳細] タブの [負荷分散] には、アタッチされているロードバランサーターゲットグループまたは クラシックロードバランサー が表示されます。

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

  4. インスタンスがロードバランサーに登録されていることを確認します。EC2 コンソールのナビゲーションペインで、[ロードバランシング] の下の [ターゲットグループ] を選択します。ターゲットグループを選択し、[ターゲット] タブを選択します。インスタンスの状態が initial である場合、インスタンスがまだ登録の途中であるか、正常と見なされるのに必要なヘルスチェックの最小数に合格しなかったと考えられます。インスタンスの状態が healthy になると、使用できる状態です。

アプリケーションのデプロイ (AWS CLI)

以下のセクションでは、アプリケーションをデプロイするプロセスを順を追って説明します。

起動テンプレートを作成する

使用する起動テンプレートが既に存在している場合は、このステップをスキップします。

起動テンプレートを作成するには

次の create-launch-template コマンドを使用して、起動テンプレートを作成する情報が含まれている JSON ファイルを渡します。

aws ec2 create-launch-template --launch-template-name my-launch-template --version-description my-version-description \ --launch-template-data '{"NetworkInterfaces":[{"DeviceIndex":0,"Groups":["sg-903004f8"],"DeleteOnTermination":true}],"ImageId":"ami-01e24be29428c15b2","InstanceType":"t2.micro"}'

起動設定を作成する

使用する起動設定が既に存在している場合は、このステップをスキップできます。

起動設定を作成するには

次の create-launch-configuration コマンドを使用します。

aws autoscaling create-launch-configuration --launch-configuration-name my-launch-config \ --image-id ami-01e24be29428c15b2 --instance-type t2.micro --security-groups sg-903004f8

ロードバランサーを使用して Auto Scaling グループを作成する

Auto Scaling グループを作成するときに既存のグループにロードバランサーをアタッチできます。起動設定あるいは起動テンプレートのいずれかを使用して、Auto Scaling グループが起動するインスタンスを自動的に設定することができます。

Classic Load Balancer がアタッチされた Auto Scaling グループを作成するには

次の create-auto-scaling-group コマンドと --load-balancer-names オプションを使用して、Classic Load Balancer をアタッチした Auto Scaling グループを作成します。

aws autoscaling create-auto-scaling-group --auto-scaling-group-name my-asg \ --launch-configuration-name my-launch-config \ --vpc-zone-identifier "subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782" \ --load-balancer-names "my-load-balancer" \ --max-size 5 --min-size 1 --desired-capacity 2

Application Load Balancer あるいは Network Load Balancer へのターゲットグループがアタッチされた Auto Scaling グループを作成するには

次の create-auto-scaling-group コマンドと --target-group-arns オプションを使用して、ターゲットグループをアタッチした Auto Scaling グループを作成します。

aws autoscaling create-auto-scaling-group --auto-scaling-group-name my-asg \ --launch-template "LaunchTemplateName=my-launch-template,Version=1" \ --vpc-zone-identifier "subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782" \ --target-group-arns "arn:aws:elasticloadbalancing:region:123456789012:targetgroup/my-targets/1234567890123456" \ --max-size 5 --min-size 1 --desired-capacity 2

次のステップ

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

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

  • スケーリング用の自動スケジュールを作成する方法については、「スケジュールに基づくスケーリング」を参照してください。1 回限りのスケーリングアクションまたは定期的なスケーリングアクションを使用して、Auto Scaling グループによるスケーリングをスケジュールする手順について説明されています。

  • Elastic Load Balancing ヘルスチェックを使用するように Auto Scaling グループを設定できます。ロードバランサーのヘルスチェックを有効にして、インスタンスがヘルスチェックに失敗した場合、Auto Scaling グループはインスタンスを異常と見なし、これを置き換えます。詳細については、「ELB ヘルスチェックの追加」を参照してください。

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

AWS リソースのクリーンアップ

これでチュートリアルは完了です。使用していないリソースのアカウントに不必要な料金が発生することを防ぐには、このチュートリアル専用に作成したリソースをクリーンアップする必要があります。手順については、「Auto Scaling インフラストラクチャの削除」を参照してください。