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

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

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

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

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

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

前提条件

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

  1. 2 つ以上のアベイラビリティーゾーンに 1 つのパブリックサブネットを持つ Virtual Private Cloud (VPC) を作成した。この作業を行っていない場合は、「Virtual Private Cloud (VPC) の作成」を参照してください。

  2. VPC のインスタンスを起動した。

  3. インスタンスに接続し、カスタマイズした。たとえば、ソフトウェアやアプリケーションのインストール、データのコピー、追加の EBS ボリュームのアタッチを行うことができます。インスタンスでのウェブサーバーの設定については、「チュートリアル: Amazon Linux AMI を使用して 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. [アプリケーションロードバランサー] で [作成] を選択します。

  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. [プロトコル] は HTTP、[ポート] は 80、[ターゲットの種類] はインスタンスで維持します。

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

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

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

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

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

    • Amazon EC2 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 グループを作成する必要があります。

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

    • その他の場合は、[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. Amazon EC2 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 キーを押します。ウェブサイトが表示されることを確認します。