メニュー
Amazon Elastic Compute Cloud
Linux インスタンス用ユーザーガイド

チュートリアル: Amazon EC2 のアプリケーションの可用性の向上

単一の EC2 インスタンスで開始したアプリやウェブサイトが、時間が立つにつれてトラフィックが増加し、需要を満たすために複数のインスタンスが必要な時点まで来ているとします。AMI から複数の EC2 インスタンスを起動し、Elastic Load Balancing を使用してアプリケーションの受信トラフィックをこれらの EC2 インスタンスに分配できます。これにより、アプリケーションの可用性が向上します。複数のアベイラビリティーゾーンにインスタンスを置くことで、アプリケーションの耐障害性も向上します。片方のアベイラビリティーゾーンが停止すると、トラフィックがもう片方のアベイラビリティーゾーンにルーティングされます。

Auto Scaling を使用して、アプリケーション用に実行するインスタンスを常に最小数に維持できます。Auto Scaling はインスタンスやアプリケーションの不具合を検出し、自動的に置き換えて、アプリケーションの可用性を維持します。また、Auto Scaling を使用して、必要に応じて指定した条件に従って Amazon EC2 の容量を自動的にスケールできます。

このチュートリアルでは、Auto Scaling で Elastic Load Balancing を使用して、ロードバランサーの背後の正常な EC2 インスタンスの指定数を確実に維持します。トラフィックはロードバランサーにアクセスし、その後インスタンスにルーティングされるので、これらのインスタンスにパブリック IP アドレスが必要ないことに注目してください。詳細については、「Auto Scaling」および「Elastic Load Balancing」を参照してください。

 Auto Scaling と Elastic Load Balancing を使用したアーキテクチャー

前提条件

このチュートリアルでは、以下を実行済みであることを前提としています。

  1. デフォルトの仮想プライベートクラウド (VPC) がない場合は、複数のアベイラビリティーゾーンに 1 つのパブリックサブネットを持つ VPC を作成します。詳細については、「Virtual Private Cloud (VPC) の作成」を参照してください。

  2. VPC でインスタンスを起動します。

  3. インスタンスに接続し、それをカスタマイズします。たとえば、ソフトウェアとアプリケーションをインストールしたり、データをコピーしたり、追加の EBS ボリュームをアタッチしたりできます。インスタンスでのウェブサーバーの設定については、「チュートリアル: Amazon Linux への LAMP ウェブサーバーのインストール」を参照してください。

  4. インスタンスが正しく設定されたことを確認するために、インスタンスでアプリケーションをテストします。

  5. インスタンスからカスタム Amazon Machine Image (AMI) を作成します。詳細については「Amazon EBS-Backed Linux AMI の作成」または「Instance Store-Backed Linux AMI の作成」を参照してください。

  6. (オプション) 必要がなくなった場合、インスタンスを終了します。

  7. アプリケーションに必要な AWS へのアクセスを付与する IAM ロールを作成します。詳細については、「IAM コンソールを使用して IAM ロールを作成するには」を参照してください。

アプリケーションのスケーリングと負荷分散

以下の手順を使用して、ロードバランサーの作成、インスタンスの起動設定の作成、複数のインスタンスを持つ Auto Scaling グループの作成、Auto Scaling グループへのロードバランサーの関連付けを行います。

アプリケーションのスケーリングと負荷分散を行うには

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

  2. ナビゲーションペインの [LOAD BALANCING] で [Load Balancers] を選択します。

  3. [Create Load Balancer] を選択します。

  4. [Application Load Balancer] を選択し、[Continue] を選択します。

  5. [Configure Load Balancer] ページで、以下を実行します。

    1. [Name] に、ロードバランサーの名前を入力します。たとえば「my-lb」です。

    2. [Scheme] で、デフォルト値 [internet-facing] を保持します。

    3. [Listeners] では、デフォルトを保持します。これは、ポート 80 で HTTP トラフィックを受け付けるリスナーです。

    4. [Availability Zones] で、インスタンスに使用する VPC を選択します。アベイラビリティーゾーンを選択してから、そのアベイラビリティーゾーンのパブリックサブセットを選択します。2 番目のアベイラビリティーゾーンに対して、この操作を繰り返します。

    5. [Next: Configure Security Settings] を選択します。

  6. このチュートリアルでは、セキュアリスナーを使用しません。[Next: Configure Security Groups] を選択します。

  7. [Configure Security Groups] ページで、次の手順を完了します。

    1. [Create a new security group] を選択します。

    2. セキュリティグループの名前と説明を入力するか、デフォルトの名前と説明を維持します。この新しいセキュリティグループには、リスナーに設定されたポートへのトラフィックを許可するルールが含まれます。

    3. [Next: Configure Routing] を選択します。

  8. [Configure Routing] ページで、以下を実行します。

    1. [Target group] で、デフォルトの [New target group] を保持します。

    2. [Name] に、ターゲットグループの名前を入力します。

    3. [Protocol] は HTTP、[Port] は 80 を保持します。

    4. [Health checks] は、デフォルトプロトコルと パスを保持します。

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

  9. Auto Scaling を使用して EC2 インスタンスをターゲットグループに追加するため、[Register Targets] ページで [Next: Review] を選択して次のページに進みます。

  10. [Review] ページで、[Create ] を選択します。ロードバランサーが作成されたら、[Close] を選択します。

  11. ナビゲーションペインの [AUTO SCALING] で、[Launch Configurations] を選択します。

    • Auto Scaling を初めて使用する場合は、ウェルカムページを参照してください。[Create Auto Scaling group] を選択して Create Auto Scaling Group ウィザードを起動してから、[Create launch configuration] を選択します。

    • その他の場合は、[Create launch configuration] を選択します。

  12. [Choose AMI] ページで、[My AMIs] タブを選択し、「前提条件」で作成した AMI を選択します。

  13. [Choose Type] ページでインスタンスタイプを選択してから、[Next: Configure details] を選択します。

  14. [Configure details] ページで、以下を実行します。

    1. [Name] に起動設定の名前を入力します (例: my-launch-config)。

    2. [IAM role] で、「前提条件」で作成した IAM ロールを選択します。

    3. (オプション) 起動スクリプトを実行する必要がある場合は、[Advanced Details] を展開して [User data] にスクリプトを入力します。

    4. [Skip to review] を選択します。

  15. [Review] ページで、[Edit security groups] を選択します。既存のセキュリティグループを選択することも、新しいセキュリティグループを作成することもできます。このセキュリティグループは、ロードバランサーからの HTTP トラフィックおよびヘルスチェックを許可する必要があります。インスタンスにパブリック IP アドレスがある場合は、インスタンスに接続する必要がある場合はオプションで SSH トラフィックを許可できます。完了したら、[Review] を選択します。

  16. [Review] ページで、[Create launch configuration] を選択します。

  17. プロンプトが表示されたら、既存のキーペアを選択するか、新しいキーペアを作成するか、またはキーペアなしで先に進みます。確認チェックボックスをオンにし、[Create launch configuration (起動設定の作成) ] を選択します。

  18. 起動設定を作成した後、Auto Scaling グループを作成する必要があります。

    • Auto Scaling の使用が初めてで Create Auto Scaling group ウィザードを使用している場合は、自動的に次のステップに移動します。

    • その他の場合は、[Create an Auto Scaling group using this launch configuration] を選択します。

  19. [Configure Auto Scaling group details] ページで、以下を実行します。

    1. [Group name] に、Auto Scaling グループの名前を入力します。たとえば「my-asg」です。

    2. [Group size] で、インスタンスの値を入力します (2 など)。各アベイラビリティーゾーンのインスタンスをおよそ同数にすることが推奨されていることに注意してください。

    3. [Network] から使用する VPC を選択し、[Subnet] から 2 つのパブリックサブネットを選択します。

    4. [Advanced Details] で、[Receive traffic from one or more load balancers] を選択します。[Target Groups] からターゲットグループを選択します。

    5. [Next: Configure scaling policies] を選択します。

  20. Auto Scaling にグループを指定したサイズに維持させるので、[Configure scaling policies] ページで、[Review] を選択します。後からこの Auto Scaling グループを手動でスケールしたり、グループをスケジュールでスケールするように構成したり、オンデマンドでグループをスケールするように構成したりできることに注目してください。

  21. [Review] ページで、[Create Auto Scaling group] を選択します。

  22. グループが作成されたら、[Close] を選択します。

ロードバランサーをテストする

クライアントがロードバランサーにリクエストを送信すると、ロードバランサーは、登録されたいずれかのインスタンスにリクエストをルーティングします。

ロードバランサーをテストするには

  1. インスタンスの準備が完了していることを確認します。[Auto Scaling Groups] ページから Auto Scaling グループを選択して、[Instances] タブを選択します。当初、インスタンスの状態は Pending です。状態が InService になると、使用する準備が整っています。

  2. インスタンスがロードバランサーに登録されていることを確認します。[Target Groups] ページからターゲットグループを選択して、[Targets] タブを選択します。インスタンスの状態が initial である場合は、まだ登録中の可能性があります。インスタンスの状態が healthy になると、使用できる状態です。インスタンスの準備が整ったら、次のようにしてロードバランサーをテストできます。

  3. [Load Balancers] ページからロードバランサーを選択します。

  4. [Description] タブで、DNS 名を見つけます。この名前は次の形式です。

    my-lb-xxxxxxxxxx.us-west-2.elb.amazonaws.com
  5. ウェブブラウザで、ロードバランサーの DNS 名をアドレスバーに貼り付けて、Enter キーを押します。ウェブサイトが表示されることを確認します。