Elastic Load Balancing

Elastic Load Balancing
開発者ガイド
API Version 2012-06-01
Elastic Load Balancing 開発者ガイド
Elastic Load Balancing: 開発者ガイド
Copyright © 2013 Amazon Web Services, Inc. and/or its affiliates. All rights reserved.
The following are trademarks of Amazon Web Services, Inc.: Amazon, Amazon Web Services Design, AWS, Amazon CloudFront,
Cloudfront, Amazon DevPay, DynamoDB, ElastiCache, Amazon EC2, Amazon Elastic Compute Cloud, Amazon Glacier, Kindle, Kindle
Fire, AWS Marketplace Design, Mechanical Turk, Amazon Redshift, Amazon Route 53, Amazon S3, Amazon VPC. In addition,
Amazon.com graphics, logos, page headers, button icons, scripts, and service names are trademarks, or trade dress of Amazon in
the U.S. and/or other countries. Amazon's trademarks and trade dress may not be used in connection with any product or service that
is not Amazon's, in any manner that is likely to cause confusion among customers, or in any manner that disparages or discredits
Amazon.
All other trademarks not owned by Amazon are the property of their respective owners, who may or may not be affiliated with, connected
to, or sponsored by Amazon.
Elastic Load Balancing 開発者ガイド
Elastic Load Balancing 開発者ガイド ..................................................................................................... 1
Elastic Load Balancing とは ................................................................................................................... 4
Elastic Load Balancing の仕組み ............................................................................................................ 5
概念 ......................................................................................................................................................... 6
アーキテクチャの概要 .......................................................................................................................... 12
AWS サービスとの統合 ........................................................................................................................ 14
次のステップ ........................................................................................................................................ 15
Elastic Load Balancing の使用開始 ....................................................................................................... 17
EC2-Classic での基本的なロードバランサーの作成 ............................................................................ 18
CEC2-VPC での基本的なロードバランサーの作成 .............................................................................. 26
デフォルト VPC での基本的なロードバランサーの作成 ..................................................................... 36
Elastic Load Balancing インターフェイスによるセットアップ ........................................................... 44
Elastic Load Balancing コマンドラインインターフェイスのインストール ......................................... 45
Query リクエストを使用した Elastic Load Balancing API の呼び出し ................................................ 52
SOAP API の使用 .................................................................................................................................. 61
SDK の使用 .......................................................................................................................................... 64
ロードバランサーのリスナーの設定 .................................................................................................... 66
Elastic Load Balancing リスナー設定クイックリファレンス ............................................................... 69
ここからどこへ進むべきですか? ........................................................................................................ 71
Elastic Load Balancing の使用 .............................................................................................................. 72
Amazon EC2-Classic への Elastic Load Balancing のデプロイ ........................................................... 74
SSL 暗号設定およびバックエンドサーバー認証を使用したロードバランサーの作成 ............... 75
負荷分散するアプリケーションを追加のアベイラビリティゾーンに拡張するには ................... 97
負荷分散するアプリケーションのアベイラビリティーゾーンの無効化 ................................... 100
Amazon EC2-Classic でのセキュリティグループの管理 .......................................................... 102
Elastic Load Balancing での IPv6 の使用 .................................................................................. 110
Amazon VPC への Elastic Load Balancing のデプロイ ...................................................................... 112
デフォルト VPC とは何ですか? ................................................................................................ 113
インターネット向けロードバランサーと内部向けロードバランサー ....................................... 114
Elastic Load Balancing 用の Amazon VPC の作成 .................................................................... 115
Amazon VPC での基本的な内部向けロードバランサーの作成 ................................................ 115
サブネットにロードバランサーをアタッチするには ............................................................... 125
サブネットからのロードバランサーのデタッチ ....................................................................... 127
Amazon VPC のセキュリティグループの管理 .......................................................................... 129
ロードバランサーへのリスナーの追加 ............................................................................................... 131
ロードバランサーからのリスナーの削除 ........................................................................................... 136
Amazon EC2 インスタンスの登録解除と登録 .................................................................................... 139
ロードバランサーのクロスゾーン負荷分散の有効化または無効化 .................................................... 141
ロードバランサーの SSL 証明書の更新 ............................................................................................. 146
プロキシプロトコルサポートの有効化または無効化 ......................................................................... 152
ロードバランサーのカスタムドメイン名の設定 ................................................................................ 163
ロードバランサーに対する DNS フェイルオーバーの設定 ................................................................ 169
スティッキーセッションの作成 .......................................................................................................... 173
Amazon CloudWatch を使用したロードバランサーの監視 ................................................................ 180
ロードバランサーの削除 ..................................................................................................................... 191
AWS アカウントへのユーザーアクセスコントロール ....................................................................... 194
Elastic Load Balancing のトラブルシューティング ........................................................................... 197
Elastic Load Balancing のトラブルシューティング: API 応答 ........................................................... 198
Elastic Load Balancing のトラブルシューティング: エラーメッセージ ............................................. 199
Elastic Load Balancing のトラブルシューティング: 応答コード ....................................................... 200
Elastic Load Balancing のトラブルシューティング: ヘルスチェック設定 ......................................... 201
Elastic Load Balancing のトラブルシューティング: インスタンスの登録 ......................................... 203
文書の履歴 .......................................................................................................................................... 205
Index ................................................................................................................................................... 209
API Version 2012-06-01
3
Elastic Load Balancing 開発者ガイド
開始する前に
Elastic Load Balancing 開発者ガイド
「Elastic Load Balancing 開発者ガイド」にようこそAmazon Web Services(AWS)では、複数の
Amazon Elastic Compute Cloud(Amazon EC2)インスタンス間で着信アプリケーショントラフィック
を自動的に分散できるよう、Elastic Load Balancing を提供しています。Elastic Load Balancing は問題
のあるインスタンスを検出し、その問題のあるインスタンスが復旧するまで、自動的にトラフィック経
路を正常なインスタンスに変更します。Elastic Load Balancing は、着信トラフィックに応じて、自動
的にそのリクエスト処理能力を拡張します。
「Elastic Load Balancing 開発者ガイド」では、使用を検討する際に役立つように、Elastic Load Balancing
の基本情報をご紹介します。このガイドは、特定のユーザーシナリオにおける Elastic Load Balancing
の使用法を決定する際にも役立ちます。お客様に適した方法を選択することができます。
開始する前に
知りたい情報...
関連トピック
Elastic Load Balancing のビジネスケー
スについて理解する
Elastic Load Balancing の製品情報
Elastic Load Balancing の仕組みについ What is Elastic Load Balancing? (p. 4)
て理解し、Elastic Load Balancing が実
際のユースケースに適しているかどうか
判断する
開始する
基本事項に関する疑問への回答を得るために、Elastic load Balancing とはを参照することをお勧めしま
す。次に、Elastic Load Balancing の使用に慣れるためは、Get Started with Elastic Load Balancing を
参照してください。このチュートリアルでは、基本的なロードバランサーの作成方法を紹介します。
AWS の新規のお客様は、AWS サインアップ日から 12 か月間無料利用枠をご利用いただけます。無料
利用枠には、Amazon EC2 マイクロインスタンス 1 か月あたり 750 時間、Elastic Load Balancing 1 か
月あたり 750 時間、データ処理 15 GB が含まれます。
API Version 2012-06-01
1
Elastic Load Balancing 開発者ガイド
Elastic Load Balancing を使用するには
知りたい情報...
関連トピック
AWS のサインアップ日から12か月間、 AWS 無料使用枠
無料利用枠を使用できるかどうか確認す
る
基本的なロードバランサーを作成し、
ロードバランサーに Amazon EC2 イン
スタンスを登録する方法を確認する
Get Started with Elastic Load Balancing (p. 17)
物理的なハードウェア環境で負荷分散を使用した経験がある場合は、そのような環境でのロードバラン
サーの動作を評価する方法をご存知でしょう。クラウド環境での負荷分散の使用をご検討の場合は、お
客様の負荷分散シナリオに影響を与える可能性がある Elastic Load Balancing のいくつかの機能につい
て知っておく必要があります。
Elastic Load Balancing では、HTTP、HTTPS(保護された HTTP)、TCP、および SSL(保護された
TCP)リスナープロトコルを使用したアプリケーションの負荷分散をサポートしており、フロントエン
ド接続(クライアントからロードバランサーへ)とバックエンド接続(ロードバランサーからバックエ
ンドインスタンスへ)の両方に対してプロトコルを選択することができます。
Elastic Load Balancing では、ロードバランサーの管理に使用できるさまざまなインターフェイスを提
供しています。AWS マネジメントコンソール、コマンドラインインターフェイス(CLI)、または
Query API を使用して、ロードバランサーを作成、アクセス、管理することができます。コマンドライ
ンインターフェイスおよび Query API を使用する場合は、それらをインストールしておく必要があり
ます。
知りたい情報...
関連トピック
実際のユースケースで Elastic Load
Best practices in Evaluating Elastic Load Balancing
Balancing の評価およびテストに使用で
きるベストプラクティスについて理解す
る
Elastic Load Balancing でサポートされ ロードバランサーのリスナーの設定 (p. 66)
ているさまざまなリスナープロトコルに
ついて理解する
Elastic Load Balancing へのアクセスに Elastic Load Balancing インターフェイスによるセットアッ
必要なインターフェイスのインストール プ (p. 44)
方法について理解する
Elastic Load Balancing を使用するには
Elastic Load Balancing は、アプリケーションを効果的に負荷分散するのに役立つさまざまな機能を提
供します。EC2 インスタンスを起動した場所に応じて、Amazon EC2 または Amazon Virtual Private
Cloud(Amazon VPC)内でロードバランサーを作成、使用できます。
知りたい情報...
関連トピック
Elastic Load Balancing でサポートされ Elastic Load Balancing の使用 (p. 72)
ているさまざまな機能の使用方法につい
て理解する
API Version 2012-06-01
2
Elastic Load Balancing 開発者ガイド
Elastic Load Balancing を使用するには
知りたい情報...
関連トピック
Amazon EC2 内で起動したインスタンス Amazon EC2-Classic への Elastic Load Balancing のデプロ
に固有のシナリオについて理解する
イ (p. 74)
Amazon VPC 内で起動したインスタンス Amazon VPC への Elastic Load Balancing のデプロイ (p. 112)
に固有のシナリオについて理解する
Elastic Load Balancing で発生する問題 Elastic Load Balancing のトラブルシューティング (p. 197)
について、考えられる原因と絞り込んで
解決するための手順について理解する
API Version 2012-06-01
3
Elastic Load Balancing 開発者ガイド
Elastic Load Balancing とは
Amazon Web Services(AWS)では、複数の Amazon Elastic Compute Cloud(Amazon EC2)インス
タンス間で着信ウェブトラフィックを自動的に分散できるよう、Elastic Load Balancing をご用意して
います。Elastic Load Balancing を使用すると、情報全体の流れを中断することなく、ニーズの変化に
応じて EC2 インスタンスを追加および削除することができます。いずれかの EC2 インスタンスが失敗
すると、Elastic Load Balancing はまだ実行されている EC2 インスタンスにトラフィック経路を自動的
に変更します。失敗した EC2 インスタンスが回復すると、Elastic Load Balancing はそのインスタンス
へのトラフィックも回復します。Elastic Load Balancing はクライアントにとって単一の通信先となる
だけでなく、ネットワークへの攻撃に対する最前線の防御機能も持ちます。サーバーがメインタスクに
集中できるように、暗号化および復号化の作業を Elastic Load Balancing に任せることができます。
Elastic Load Balancing を使用してアプリケーションへのトラフィックを管理することには、以下のメ
リットがあります。
• 複数のアベイラビリティーゾーン内の Amazon EC2 インスタンス(サーバー)にリクエストを分散
し、1 つのインスタンスのみが過負荷になるリスクを最小限に抑えます。あるアベイラビリティー
ゾーン全体がオフラインになった場合、Elastic Load Balancing は他のアベイラビリティーゾーン内
のインスタンスにトラフィックをルーティングします。
• 正常なインスタンスにのみリクエストが送信されるように、ロードバランサーに登録されている
Amazon EC2 インスタンスの状態を常に監視します。インスタンスに不具合が生じた場合、Elastic
Load Balancing はそのインスタンスへのトラフィックの送信を停止し、残りの正常なインスタンス
全体に負荷を分散します。
• 安全な(HTTPS/SSL)接続を使用しているネットワークで、エンドツーエンドのトラフィック暗号
化をサポートします。
• Amazon EC2 インスタンスから暗号化および復号化の作業を引き継いで、ロードバランサーで集中
管理します。
• 特定の Amazon EC2 インスタンスでユーザーセッションを維持するスティッキーセッション機能を
サポートします。
• ロードバランサーをドメイン名に関連付けます。インターネットに公開されるコンピュータはロード
バランサーだけなので、ロードバランサーが管理するインスタンスについてパブリックドメイン名を
作成および管理する必要がありません。代わりにロードバランサーのインスタンスのドメインレコー
ドを参照し、必要に応じて規模を拡張または縮小(処理能力を追加または削除)することができま
す。処理能力の拡大または縮小を行うたびにレコードを更新する必要はありません。
• Elastic Load Balancing を Amazon Virtual Private Cloud(Amazon VPC)で使用する場合は、追加の
ネットワークおよびセキュリティオプションを提供するために、ロードバランサーに関連付けられて
いるセキュリティグループを作成および管理できます。
• インターネットプロトコルバージョン 4(IPv4)とインターネットプロトコルバージョン 6(IPv6)
の両方をサポートします。
API Version 2012-06-01
4
Elastic Load Balancing 開発者ガイド
Elastic Load Balancing の仕組み
すべてのアマゾン ウェブ サービスと同様に、使用した分に応じてお支払いください。Elastic Load
Balancing では、サービスが稼動する時間に対して1時間単位で、またお客様のロードバランサーを経
由して転送されるデータ量に応じて GB 単位で課金されます。Elastic Load Balancing の最新の料金情
報については、Elastic Load Balancing Pricing を参照してください。
AWS の新規のお客様は、AWS サインアップ日から 12 か月間無料利用枠をご利用いただけます。無料
利用枠には、Amazon EC2 マイクロインスタンス 1 か月あたり 750 時間、Elastic Load Balancing 1 か
月あたり 750 時間、データ処理 15 GB が含まれます。無料利用枠については、AWS 無料利用枠を参
照してください。
Elastic Load Balancing の仕組み
Elastic Load Balancing はロードバランサーとコントローラサービスの 2 つのコンポーネントから構成
されます。ロードバランサーはトラフィックを監視し、インターネット経由で送信されたリクエストを
処理します。コントローラサービスは、ロードバランサーを監視して、必要に応じて処理能力を追加お
よび削除し、ロードバランサーが正常に機能していることを確認します。
ロードバランサーの使用を開始するには、まずロードバランサーを作成する必要があります。作成する
各ロードバランサーには、一意のドメインネームシステム(DNS)の名前が必要です。例えば、us-east-1a
で myLB という名前のロードバランサーを作成した場合、そのロードバランサーには
myLB-1234567890.us-east-1.elb.amazonaws.com のような名前が付けられます。
ロードバランサーに、負荷分散を行うインスタンスを登録する必要があります。インスタンスは、イン
スタンスに関連付けられた IP アドレスを使用してロードバランサーに登録されます。インスタンスを
停止して再起動すると、インスタンスに関連付けられている IP アドレスが変わります。このため、ロー
ドバランサーは再起動したインスタンスにトラフィックをルーティングできなくなります。Elastic Load
Balancing では、インスタンスを停止した後でロードバランサーからインスタンスを登録解除し、再起
動後にロードバランサーにインスタンスを登録することができます。
ロードバランサーは、登録されているインスタンスへの着信トラフィックを監視し、ルーティングしま
す。また、ロードバランサーはインスタンスの状態を監視して、トラフィックが正常なインスタンスに
ルーティングされるよう保証します。ロードバランサーは、不具合のあるインスタンスを検出すると、
そのインスタンスへのトラフィックのルーティングを停止し、インスタンスが正常な状態に戻るとルー
ティングを再開します。Elastic Load Balancing は、インスタンスが正常か不具合があるかに関係なく、
指定した設定を使用してインスタンスのヘルスチェックを行います。
Amazon Elastic Compute Cloud(Amazon EC2)では複数のアベイラビリティーゾーンでインスタンス
を起動できます。着信アプリケーショントラフィックは、1 つのアベイラビリティーゾーンの複数のイ
ンスタンスで負荷分散するよう設定することも、同じリージョン内の複数のアベイラビリティーゾーン
の複数のインスタンスで負荷分散するよう設定することも可能です。例えば、2 つのアベイラビリティー
ゾーンの複数のインスタンスで負荷分散を行うよう選択した場合、一方のアベイラビリティーゾーンの
すべてのインスタンスに不具合が生じると、ロードバランサーはもう一方の利用可能ゾーンの正常なイ
ンスタンスにトラフィックをルーティングします。複数のアベイラビリティーゾーンを使用する場合
は、ロードバランサーに登録されている各アベイラビリティーゾーンで処理能力をほぼ同等に保つこと
が重要です。
Elastic Load Balancing で Auto Scaling を使用すると、さまざまなトラフィックレベルに合わせてバッ
クエンドの処理能力を簡単に増減できます。例えば、ロードバランサーの背後の正常なインスタンスの
数が2つに減った場合に、2つもしくはそれ以上のインスタンスを起動するように宣言する条件を設定す
ることができます。あるいは、ロードバランサーの待ち時間を監視し、待ち時間が一定期間(3秒など)
を超えると処理能力を拡大するように条件を設定することができます。また、時とともに変化するアプ
リケーションの処理能力の要件に応じて、AWS Management Console を使用して、ロードバランサー
が使用するインスタンスの登録または登録解除を行うこともできます。
API Version 2012-06-01
5
Elastic Load Balancing 開発者ガイド
概念
概念
Topics
• ロードバランサー (p. 6)
• アベイラビリティーゾーンとリージョン (p. 7)
• リクエストルーティング (p. 7)
• EC2 インスタンスの登録 (p. 8)
• ヘルスチェック (p. 8)
• スティッキーセッション (p. 9)
• HTTP メソッド (p. 9)
• HTTPS Support (p. 10)
• Proxy Protocol (p. 10)
• X-Forwarded ヘッダー (p. 11)
このトピックでは、ロードバランサーを作成する前に理解しておく必要がある Elastic Load Balancing
の基本について紹介します。
ロードバランサー
ロードバランサーは、負荷分散されたアプリケーションに対するすべてのリクエストの送信先です。各
ロードバランサーは複数の EC2 インスタンスにリクエストを分散できます。ロードバランサーは DNS
名と一連のポートによって表されます。ロードバランサーは、EC2 リージョン内の複数のアベイラビ
リティーゾーンに配置することができますが、複数のリージョンに配置することはできません。
特定のリージョン内のロードバランサーを作成または操作するには、対応するリージョンのサービスエ
ンドポイントを使用します。Elastic Load Balancing でサポートされているリージョンおよびエンドポ
イントについては、リージョンとエンドポイントを参照してください。
Elastic Load Balancing は、作成する各ロードバランサーのインスタンスに対して自動的に DNS 名を生
成します。通常、DNS 名にはロードバランサーが作成される AWS リージョンの名前が含まれます。
例えば、us-east-1aで myLB という名前のロードバランサーを作成した場合、そのロードバランサーの
DNS 名は myLB-1234567890.us-east-1.elb.amazonaws.com のようになります。 ロードバラン
サーに接続するには、インターネットに接続したウェブブラウザのアドレスフィールドに Elastic Load
Balancing で生成された DNS 名を貼り付ける必要があります。
ロードバランサーの DNS 名ではなく www.example.com のようなユーザーが分かりやすいドメイン名
を使用する場合は、カスタムドメイン名を作成して、カスタムドメイン名とロードバランサーの DNS
名を関連付けます。作成したカスタムドメイン名を使用してロードバランサーにリクエストを送ると、
ロードバランサーの DNS 名に解決されます。
ロードバランサーのカスタムドメイン名の作成および使用の詳細については、ロードバランサーのカス
タムドメイン名の設定 (p. 163)を参照してください。
ロードバランサーを作成するときには、ロードバランサーのリスナーの設定を指定する必要がありま
す。リスナーは、受信リクエストの接続がないかを監視するプロセスです。リスナーは、フロントエン
ド(ロードバランサー)およびバックエンド(バックエンドインスタンス)接続用のプロトコルとポー
ト番号を使用して設定します。Elastic Load Balancing でサポートされるポートおよびプロトコルにつ
いては、「ロードバランサーのリスナーの設定 (p. 66)を参照してください。
API Version 2012-06-01
6
Elastic Load Balancing 開発者ガイド
アベイラビリティーゾーンとリージョン
アベイラビリティーゾーンとリージョン
あるリージョンの 1 つまたは複数のアベイラビリティーゾーンの EC2 インスタンスで受信したリクエ
ストを分散するよう、Elastic Load Balancing を設定することができます。ロードバランサーは、複数
のリージョン間ではトラフィックを分散しません。
重要なアプリケーションでは、受信トラフィックを複数のアベイラビリティーゾーンに分散することを
お勧めします。トラフィックを複数のアベイラビリティーゾーンに分散するには、使用する予定のすべ
てのアベイラビリティーゾーン内の Amazon EC2 インスタンスを起動し、ロードバランサーに対して
アベイラビリティーゾーンを有効にして、有効にしたすべてのアベイラビリティーゾーン内の EC2 イ
ンスタンスを登録します。
有効にしたアベイラビリティゾーン内の EC2 インスタンスを登録すると、Elastic Load Balancing は、
トラフィックをそれらのアベイラビリティーゾーン内のインスタンスにルーティングするロードバラン
サーノードをプロビジョニングします。ロードバランサーノードは、登録されたすべてのインスタンス
の状態を継続的に監視します。ロードバランサーノードで異常または登録解除されたインスタンスが検
出された場合、ロードバランサーはそれらのインスタンスへのトラフィックのルーティングを停止しま
す。その代わり、リクエストを残りの正常なインスタンスに送信します。
追加のアベイラビリティーゾーンにインスタンスを登録し、そのアベイラビリティーゾーンをロードバ
ランサーに対して有効にすることで、インスタンスのアベイラビリティーを拡大することができます。
新しいアベイラビリティーゾーンを有効にすると、有効なすべてのアベイラビリティーゾーン間で、
ロードバランサーによるトラフィックの均等なルーティングが始まります。ロードバランサーのアベイ
ラビリティーゾーンの有効化については、Expanding a Load Balanced Application to an Additional
Availability Zone (p. 97) を参照してください。
最初にロードバランサーに対して有効になっているアベイラビリティーゾーンを無効にし、そのアベイ
ラビリティーゾーンのインスタンスの登録を解除すると、インスタンスのアベイラビリティーを縮小す
ることができます。アベイラビリティーゾーンが無効化されると、ロードバランサーは残りの有効なア
ベイラビリティーゾーンにある、登録済みの healthy インスタンスにトラフィックをルーティングしま
す。ロードバランサーのアベイラビリティーゾーンの無効化については、「負荷分散するアプリケー
ションのアベイラビリティーゾーンの無効化 (p. 100)を参照してください。
リクエストルーティング
クライアントがリクエストをロードバランサーに送信する前に、最初にロードバランサーのドメイン名
をドメインネームシステム(DNS)サーバーで解決します。DNS サーバーは DNS ラウンドロビンを
使用して、特定のアベイラビリティーゾーン内のどのロードバランサーノードがリクエストを受信する
かを決定します。
選択されたロードバランサーノードは、leastconns ルーティングアルゴリズムを使用して、同じアベイ
ラビリティーゾーン内の正常なインスタンスにリクエストを送信します。leastconns ルーティングアル
ゴリズムでは、接続数または未処理のリクエスト数が最も少ないバックエンドインスタンスが優先され
ます。
デフォルトでは、ロードバランサーノードは同じアベイラビリティーゾーン内のバックエンドインスタ
ンスにトラフィックをルーティングします。バックエンドインスタンスが各アベイラビリティーゾーン
のリクエストの負荷を確実に処理できるようにするため、各ゾーンにほぼ等しい数のインスタンスが存
在することが重要です。例えば、アベイラビリティーゾーン us-east-1a に 10 個のインスタンス、アベ
イラビリティーゾーン us-east-1b に 2 個のインスタンスがある場合でも、トラフィックは 2 つのアベ
イラビリティーゾーンに等分に分散されます。その結果、us-east-1b 内の 2 個のインスタンスは、
us-east-1a 内の 10 個のインスタンスと同じ量のトラフィックを処理しなければならなくなります。ベ
ストプラクティスとして、各アベイラビリティーゾーンのインスタンス数を同等またはほぼ同等にする
ことをお勧めします。したがって、この例では、インスタンス数を us-east-1a で 10 個、us-east-1b で
2 個にする代わりに、各アベイラビリティーゾーンのインスタンス数が 6 個になるようにインスタンス
を分散します。
API Version 2012-06-01
7
Elastic Load Balancing 開発者ガイド
EC2 インスタンスの登録
属するアベイラビリティーゾーンに関係なく、すべてのバックエンドインスタンスにリクエストのトラ
フィックを等分にルーティングするには、ロードバランサーでクロスゾーン負荷分散を有効にします。
クロスゾーン負荷分散では、各ロードバランサーノードが複数のアベイラビリティーゾーンにリクエス
トをルーティングできるため、すべてのゾーンが等分な量のリクエストトラフィックを受け取ります。
クロスゾーン負荷分散により、各ゾーンに等しい数のバックエンドインスタンスを維持する必要性が軽
減され、1 つ以上のバックエンドインスタンスの消失を処理するアプリケーションの能力が向上しま
す。ただし、耐障害性を高めるために各アベイラビリティーゾーンにおよそ等しい数のインスタンスを
維持することをお勧めします。Elastic Load Balancing と別のアベイラビリティーゾーンにある EC2 イ
ンスタンス間のトラフィックによって EC2 データ転送料金は発生しません。
クライアントが DNS ルックアップをキャッシュする環境では、着信リクエスト用にいずれかのアベイ
ラビリティーゾーンが優先される場合があります。クロスゾーン負荷分散を使用すると、リクエスト負
荷におけるこの不均衡が、リージョン内のすべての利用可能なバックエンドインスタンスに拡散し、動
作が不適切なクライアントがアプリケーションに与える影響が軽減されます。
Note
ロードバランサーを Amazon Virtual Private Cloud(Amazon VPC)内にデプロイする場合は、
VPC のサブネット間でトラフィックがルーティングされるようにセキュリティグループルール
とネットワーク ACL を設定してください。ルールが正しく設定されていない場合は、別のサ
ブネットのロードバランサーノードから他のサブネットのインスタンスにアクセスできない可
能性があります。Amazon VPC 内にロードバランサーをデプロイする方法の詳細については、
Amazon VPC への Elastic Load Balancing のデプロイ (p. 112) を参照してください。VPC にデ
プロイしたロードバランサー用のセキュリティグループの設定については、Amazon VPC のセ
キュリティグループの管理 (p. 129) を参照してください。
ロードバランサーのクロスゾーン負荷分散を有効化または無効化する手順については、ロードバラン
サーのクロスゾーン負荷分散の有効化または無効化 (p. 141) を参照してください。
EC2 インスタンスの登録
ロードバランサーを作成したら、そのロードバランサーの EC2 インスタンスを登録する必要がありま
す。EC2 インスタンスは、あるリージョンの 1 つまたは複数のアベイラビリティーゾーンに配置する
ことができます。Elastic Load Balancing は、登録されたすべての EC2 インスタンスに対して定期的に
ヘルスチェックを実行し、登録された正常な EC2 インスタンスのロードバランサーの DNS 名に、受
信したすべてのリクエストを自動的に分散します。EC2 インスタンスのヘルスチェックについては、
「ヘルスチェック (p. 8)を参照してください。
登録された EC2 インスタンスを停止して起動する場合は、停止したインスタンスをロードバランサー
から登録解除した後、再起動したインスタンスを登録することをお勧めします。そうしないと、ロード
バランサーがヘルスチェックを実行できず、再起動したインスタンスにトラフィックをルーティングで
きない可能性があります。ロードバランサーからインスタンスを登録解除して再登録する方法について
は、Amazon EC2 インスタンスの登録解除と登録 (p. 139) を参照してください。
ヘルスチェック
Elastic Load Balancing は、指定した設定に基づいて、登録されたそれぞれの Amazon EC2 インスタン
スのヘルスチェックを定期的に行います。Elastic Load Balancing で unhealthy インスタンスが検出さ
れると、そのインスタンスへのトラフィックの送信が停止され、トラフィックのルーティングが healthy
インスタンスに変更されます。
ロードバランサーは、ロードバランサーを設定したときに指定したプロトコル、ポート、URL、タイム
アウト、インターバルを使用して、インスタンスのヘルスチェックを実行します。例えば、ロードバラ
ンサーがリクエストを http://node IP address:80/index.htm に 5 秒ごとに送信するように、インスタ
ンスのヘルスチェックを設定することができます。ウェブサーバーの応答は 3 秒以内で許容します。
ロードバランサーが 2 回の試行後も応答しない場合、ノードのサービスを停止します。ロードバラン
API Version 2012-06-01
8
Elastic Load Balancing 開発者ガイド
スティッキーセッション
サーの応答が 2 回成功したら、ノードのサービスを再開します。ヘルスチェック時にサービスが実行さ
れているインスタンスは healthy とマークされ、ヘルスチェック時にサービスが実行されていないイン
スタンスは unhealthy とマークされます。
ロードバランサーに登録された EC2 インスタンスのヘルスチェックの設定については、「Amazon EC2
インスタンスのヘルスチェック設定 (p. 20)を参照してください。
登録されたインスタンスが、いくつかの理由からヘルスチェックに失敗する場合があります。ヘルス
チェックの失敗理由として最も多いのは、EC2 インスタンスがロードバランサーへの接続を閉じてい
る場合や、EC2 インスタンスからの応答がタイムアウトになった場合です。考えられる原因、および
失敗したヘルスチェックの問題を解決するための手順については、「Elastic Load Balancing のトラブ
ルシューティング: ヘルスチェック設定 (p. 201)を参照してください。
スティッキーセッション
デフォルトでは、ロードバランサーは負荷が最小になるように、各リクエストを個別にアプリケーショ
ンインスタンスにルーティングします。しかし、スティッキーセッション機能(セッションアフィニ
ティとも呼ばれます)を使用することで、特定のユーザーのセッションを特定のアプリケーションイン
スタンスにバインドさせることができます。これにより、セッション中にそのユーザーから来たリクエ
ストをすべて同じアプリケーションインスタンスに送信することができます。
スティッキーセッションの管理において重要なのは、ロードバランサーがユーザーのリクエストを同じ
アプリケーションインスタンスにルーティングし続ける期間の決定です。アプリケーションに独自の
セッション Cookie がある場合は、アプリケーションのセッション Cookie で指定された期間に従うセッ
ション Cookie を作成するよう、Elastic Load Balancing を設定することができます。アプリケーション
に独自のセッション Cookie がない場合は、独自の維持期間を指定して、セッション Cookie を作成す
るよう Elastic Load Balancing を設定することができます。維持期間は、ロードバランサーの
HTTP/HTTPS リスナーに対してのみ関連付けることができます。
• 期間ベースのセッション維持を許可する Cookie の作成については、期間ベースのセッション維持の
有効化 (p. 173) を参照してください。
• アプリケーション固有のセッション維持を許可する Cookie の作成については、アプリケーション制
御によるセッション維持の有効化 (p. 177) を参照してください。
アプリケーションインスタンスは、常に 2 つの Cookie を送受信する必要があります。維持期間を定義
する Cookie と、AWSELB という名前の Elastic Load Balancing の特別な Cookie(アプリケーション
インスタンスへのマッピングが含まれています)の 2 つです。
HTTP メソッド
HTTP メソッド(HTTP 動詞ともいう)は、HTTP リクエストを受信するリソースに対して実行するア
クションを指定します。HTTP リクエストの標準メソッドは、RFC 2616、「 Hypertext Transfer
Protocol-HTTP/1.1」に定義されています。標準メソッドには GET、POST、PUT、HEAD、および
OPTIONS があります。ウェブアプリケーションによっては、HTTP/1.1 メソッドの拡張である新しい
メソッドを必要とします(また、実装する場合もあります)。このような HTTP 拡張は標準外とする
ことができます。HTTP 拡張メソッドの代表的な例には PATCH、REPORT、MKCOL、PROPFIND、
MOVE、および LOCK などがあります。Elastic Load Balancing では、標準 HTTP メソッドも標準外の
HTTP メソッドもすべて受け付けます。
ロードバランサーは、HTTP リクエストを受信すると、誤った形式のリクエストがないかどうかをチェッ
クすると共に、メソッドの長さをチェックします。ロードバランサーへの HTTP リクエスト内のメソッ
ドの長さの合計は、127 文字以下にする必要があります。これら 2 つのチェックを渡す HTTP リクエ
ストは、ロードバランサーによりバックエンド EC2 インスタンスに送信されます。リクエストのメソッ
ドフィールドの形式が誤っている場合は HTTP 400: BAD_REQUEST (p. 199) エラーメッセージが返さ
れます。リクエストのメソッドフィールドの長さが 127 文字を超える場合は、HTTP 405:
METHOD_NOT_ALLOWED (p. 199) エラーメッセージが返されます。
API Version 2012-06-01
9
Elastic Load Balancing 開発者ガイド
HTTPS Support
バックエンド EC2 インスタンスが有効なリクエストを処理する方法は、リクエストに含まれるメソッ
ドを実行し、その応答をクライアントに返信することです。サポートされているメソッドもサポートさ
れていないメソッドも処理するように、バックエンドインスタンスを設定しておく必要があります。
HTTPS Support
HTTPS Support は、暗号化された接続で SSL/TLS プロトコルを使用できるようにするための機能です
(SSL オフロード とも呼ばれます)。この機能により、ロードバランサーとの HTTPS セッションを
開始するクライアント間の接続トラフィック、およびロードバランサーとバックエンドインスタンスの
間の接続のトラフィックを暗号化できるようになります。
ロードバランサーの HTTPS サポートを有効にするには、ロードバランサーに SSL サーバー証明書を
インストールする必要があります。バックエンドインスタンスにリクエストを送信する前に、ロードバ
ランサーは証明書を使用してリクエストを終了し、次にリクエストを復号化します。
HTTPS/SSL をロードバランサーで使用する方法については、「Elastic Load Balancing で HTTPS/SSL
プロトコルを使用するメリット (p. 67)を参照してください。HTTPS を使用するロードバランサーの作
成については、「SSL 暗号設定およびバックエンドサーバー認証を使用したロードバランサーの作
成 (p. 75)を参照してください。SSL 証明書の作成およびアップロードについては、AWS Identity and
Access Management のドキュメントで Creating and Uploading Server Certificatesを参照してくださ
い。
Proxy Protocol
Proxy Protocol ヘッダーは、TCP/SSL 接続用に設定されたロードバランサーを使用する場合に、クラ
イアントの IP アドレスを識別するのに役立ちます。ロードバランサーはクライアントとバックエンド
インスタンスの間のトラフィックを傍受するため、バックエンドインスタンス内のアクセスログには、
発信元クライアントの IP アドレスでなく、ロードバランサーの IP アドレスが含まれています。Proxy
Protocol を有効化すると、ロードバランサーはクライアントのポート番号、発信元 IP アドレス、およ
び送信先 IP アドレスなどの接続情報が含まれるヘッダーが追加されるようにします。これにより、ヘッ
ダーがリクエストの一部としてバックエンドインスタンスに送信されます。リクエストの 1 行めを解析
して、クライアントの IP アドレスとポート番号を取得することができます。
Proxy Protocol の行は 1 行であり、キャリッジリターンとラインフィード("\r\n")で終わります。
次のような形式になります。
PROXY_STRING + single space + INET_PROTOCOL + single space + CLIENT_IP + single
space + PROXY_IP + single space + CLIENT_PORT + single space + PROXY_PORT +
"\r\n"
次に IPv4 Proxy Protocol の例を示します。
PROXY TCP4 198.51.100.22
203.0.113.7
35646
80\r\n
IPv6 の Proxy Protocol の行も基本的には同じ形式ですが、相違は TCP6 で始まることと、アドレスが
IPv6 の形式であることです。
次に IPv6 Proxy Protocol の例を示します。
PROXY TCP6 2001:DB8::21f:5bff:febf:ce22:8a2e 2001:DB8::12f:8baa:eafc:ce29:6b2e
35646 80\r\n
クライアントが IPv6 に接続すると、ヘッダー内のプロキシのアドレスはロードバランサーのパブリッ
ク IPv6 アドレスになります。この IPv6 アドレスは、プレフィックスが ipv6 または dualstack であ
るロードバランサー DNS 名から解決される IP アドレスに一致します。クライアントが IPv4 に接続す
API Version 2012-06-01
10
Elastic Load Balancing 開発者ガイド
X-Forwarded ヘッダー
ると、ヘッダー内のプロキシのアドレスはロードバランサーのプライベート IPv4 アドレスになるため、
Amazon Elastic Compute Cloud(Amazon EC2)ネットワーク外の DNS ルックアップでは解決できな
くなります。
Proxy Protocol ヘッダーの有効化については、「プロキシプロトコルサポートの有効化または無効
化 (p. 152)を参照してください。
X-Forwarded ヘッダー
HTTP リクエストと HTTP レスポンスは、ヘッダーフィールドを使用して HTTP メッセージに関する
情報を送信します。ヘッダーフィールドはコロンで区切られた名前と値のペアであり、キャリッジリ
ターン(CR)とラインフィード(LF)で区切ります。HTTP ヘッダーフィールドの標準セットが RFC
2616 の「Message Headers」で定義されています。アプリケーションで広く使用されている標準以外
の HTTP ヘッダーもあります。標準以外の HTTP ヘッダーには、X-Forwarded というプレフィックス
が付いている場合があります。Elastic Load Balancing は以下の X-Forwarded ヘッダーをサポートし
ています。
X-Forwarded-For
X-Forwarded-For リクエストヘッダーは、HTTP/HTTPS ロードバランサーを使用する場合に、クラ
イアントの IP アドレスを識別するのに役立ちます。ロードバランサーはクライアント/サーバー間のト
ラフィックをインターセプトするので、サーバーアクセスログにはロードバランサーの IP アドレスの
みが含まれます。クライアントの IP アドレスを確認するには、X-Forwarded-For リクエストヘッダー
を使用します。Elastic Load Balancing は、クライアントの IP アドレスを X-Forwarded-For リクエ
ストヘッダーに格納し、このヘッダーをサーバーに渡します。
X-Forwarded-For リクエストヘッダーは以下のような形式です。
X-Forwarded-For: clientIPAddress
以下の例は、IP アドレスが X-Forwarded-For のクライアントの 203.0.113.7 リクエストヘッダー
です。
X-Forwarded-For: 203.0.113.7
以下の例は、IPv6 アドレスが X-Forwarded-For のクライアントの
2001:DB8::21f:5bff:febf:ce22:8a2e リクエストヘッダーです。
X-Forwarded-For: 2001:DB8::21f:5bff:febf:ce22:8a2e
X-Forwarded-For リクエストヘッダーの clientIPAddress には、リクエストと共に渡される後続
プロキシそれぞれの IP アドレスが続きます。最後の IP アドレスは、バックエンドのアプリケーション
インスタンスに接続するための IP アドレスです。例えば、HTTP リクエストがロードバランサーに着
信した時点で既にヘッダーを含んでいる場合、リクエストの送信元 IP アドレスがヘッダーの末尾に付
加され、その後にロードバランサーの IP アドレスが続いています。このような場合、X-Forwarded-For
リクエストヘッダーは次の形式になります。
X-Forwarded-For: clientIPAddress, previousRequestIPAddress, LoadBalancerIPAddress
複数のアベイラビリティゾーンでバックエンドアプリケーションインスタンスをご利用の場合、
X-Forwarded-For リクエストヘッダーには 1 つ以上のロードバランサーの IP アドレスが含まれま
す。Elastic Load Balancing がアベイラビリティーゾーンごとに異なるロードバランサーを使用するた
め、クライアントリクエストはバックエンドアプリケーションインスタンスに到達する前に、あるロー
ドバランサーから別のロードバランサーに渡されることがあります。例えば、アベイラビリティーゾー
API Version 2012-06-01
11
Elastic Load Balancing 開発者ガイド
アーキテクチャの概要
ン us-east-1a と us-east-1b でバックエンドインスタンスをご利用で、クライアントリクエストがまず
us-east-1a のロードバランサーによって処理されるとします。us-east-1a のインスタンスが不具合があ
るか、または登録解除されている場合、あるいはスティッキーセッションが使用され、バックエンドイ
ンスタンスが us-east-1b にある場合、us-east-1a のロードバランサーは、us-east-1b のロードバラン
サーにリクエストをルーティングします。次に、各ロードバランサーはその IP アドレスを
X-Forwarded-For リクエストヘッダーに追加します。
クライアントリクエストに複数のロードバランサーが含まれている場合、X-Forwarded-For リクエス
トヘッダーは次の形式になります。
X-Forwarded-For: clientIPAddress, previousLoadBalancerIPAddress-1, previousLoad
BalancerIPAddress-2
以下の例は、us-east-1b アベイラビリティーゾーンのバックエンドアプリケーションインスタンスに到
着した X-Forwarded-For リクエストヘッダーです。クライアント(203.0.113.7)によるリクエス
トが、まず us-east-1a(10.12.33.44)のロードバランサーに到達します。次に、us-east-1a のロー
ドバランサーが us-east-1b(10.73.23.88)のロードバランサーにリクエストをルーティングします。
X-Forwarded-For: 203.0.113.7, 10.12.33.44, 10.73.23.88
X-Forwarded-Proto
X-Forwarded-Proto リクエストヘッダーを使用すると、クライアントがサーバーへの接続に使用し
たプロトコル(HTTP または HTTPS)を識別することができます。サーバーアクセスログには、サー
バーとロードバランサーの間で使用されたプロトコルのみが含まれ、クライアントとロードバランサー
の間で使用されたプロトコルに関する情報は含まれません。クライアントとロードバランサーの間で使
用されたプロトコルを判別するには、X-Forwarded-Proto リクエストヘッダーを使用します。Elastic
Load Balancing は、クライアントとロードバランサーの間で使用されたプロトコルを
X-Forwarded-Proto リクエストヘッダーに格納し、このヘッダーをサーバーに渡します。
アプリケーションやウェブサイトは X-Forwarded-Proto リクエストヘッダーに格納されているプロ
トコルを使用して、適切な URL にリダイレクトする応答を生成できます。
X-Forwarded-Proto リクエストヘッダーは以下のような形式です。
X-Forwarded-Proto: originatingProtocol
次の例には、HTTPS リクエストとしてクライアントから発信されたリクエストの X-Forwarded-Proto
リクエストヘッダーが含まれています。
X-Forwarded-Proto: https
X-Forwarded-Port
X-Forwarded-Port リクエストヘッダーは、HTTP/HTTPS ロードバランサーとクライアントの接続に
使用されるポートを識別するために役立ちます。
アーキテクチャの概要
以下の図は、Elastic Load Balancing のさまざまなコンポーネントがどのように連携するかを示してい
ます。このセクションの残りでは、アプリケーションで提供される URL をクライアントがリクエスト
したときに発生するイベントの流れを順を追って示します。
API Version 2012-06-01
12
Elastic Load Balancing 開発者ガイド
使用できるインターフェイス
この例は、ロードバランサーを作成し、カスタムドメイン名を作成し、DNS の CNAME エントリを使
用してロードバランサーをドメイン名に関連付け、ロードバランサーにインスタンスを登録してあるこ
とを前提としています。
1.
クライアントがアプリケーションにアクセスするために DNS に URL リクエストを送信します。
DNS サーバーが DNS 名を返します(例: myLB-1234567890.us-east-1.elb.amazonaws.com
2.
クライアントが DNS サーバーによって送信された DNS 名の解決を求めます。アプリケーション
インスタンスは amazonaws.com ドメインにあるため、DNS エントリは Amazon によって制御さ
れます。Amazon DNS サーバーが1つ以上の IP アドレスを返します。
3.
次にクライアントは、提供された IP アドレスでマシンへの接続を開きます。このアドレスのイン
スタンスは、作成したロードバランサーです。
4.
ロードバランサーが、選択したアベイラビリティーゾーンに登録されているすべての EC2 アプリ
ケーションインスタンスのヘルスチェックを行い、ヘルスチェックの設定で定義されている状態の
しきい値を満たしたインスタンスに対してトラフィックのルーティングを開始します。
5.
ロードバランサーが、前の手順で識別された正常な EC2 アプリケーションインスタンスに対して、
クライアントリクエストをルーティングします。この時点で、クライアントはロードバランサーを
介していずれかの EC2 インスタンスと通信しています。フロントエンド接続(クライアントから
ロードバランサーへ)とバックエンド接続(ロードバランサーからバックエンドインスタンスへ)
の両方で HTTP、HTTPS、TCP、SSL のいずれかのプロトコルを使用するように、ロードバラン
サーリスナーを設定することができます。
Note
Amazon Route 53 は、可用性および費用対効果の高い AWS の DNS サービスです。Amazon
Route 53 のエイリアスレコードを使用すると、クライアントが 1 回のリクエストだけでド
メイン名を解決できるので、パフォーマンスが向上します。また、エイリアスレコードへ
のクエリは課金されません。
使用できるインターフェイス
ロードバランサーは、次のいずれかのインターフェイスを使用してアクセスおよび操作できます。
API Version 2012-06-01
13
Elastic Load Balancing 開発者ガイド
AWS サービスとの統合
• AWS マネジメントコンソール – シンプルなウェブブラウザインターフェイス。追加のソフトウェア
やツールをインストールしなくても、ロードバランサーを作成および管理できます。AWS サイトで
[Console の利用を申し込む] をクリックすると、コンソールを開くことができます。
• コマンドラインインターフェイス(CLI) – SOAP API をラップする Java ベースのコマンドライン
クライアント。
• プログラムによるインターフェイス – AWS によって提供される SDK、サードパーティライブラリ、
および Elastic Load Balancing の Query API。
AWS によって提供されるコマンドラインインターフェイス、Query API、および SDK のインストール
と使用については、Elastic Load Balancing インターフェイスによるセットアップ (p. 44) を参照してく
ださい。
AWS サービスとの統合
Elastic Load Balancing は、ロードバランサーによってアプリケーションの可用性と拡張性を高めるソ
リューションを提供するために、以下の AWS サービスと統合されています。
アマゾン ウェブ サービ
ソリューション
Amazon EC2
バックエンドアプリケーションインスタンスを実行します。
Auto Scaling
必要に応じて拡大または縮小できるインスタンスの能力グループを作
成します。詳細については、『Auto Scaling Developer Guide』を参照
してください。
Amazon CloudWatch
ロードバランサーが提供するデータを収集し、読み取り可能な、リア
ルタイムに近いメトリックスとして表示します。これらのメトリック
スを使用して、インスタンスの状態を監視できます。Amazon
CloudWatch アラームを作成し、個々のメトリックスが許容範囲外に
なった場合に、Auto Scaling ポリシーに通知を送信することができま
す。ロードバランサーでの Amazon CloudWatch の使用については、
Amazon CloudWatch を使用したロードバランサーの監視 (p. 180) を参
照してください。Amazon CloudWatch については、『Amazon
CloudWatch Developer Guide』を参照してください。
Amazon Route 53
アプリケーションインスタンスに安全で信頼性の高いルーティングを
提供します。Route 53 は DNS サーバーのグローバルネットワーク内
の最も近い DNS サーバーに自動的にクエリをルーティングするため、
待ち時間が短くて済みます。Route 53 を使用すると、
www.example.com のようなわかりやすいドメイン名を 192.0.2.1 のよ
うな IP アドレスに変換することができます。Amazon Route 53 を使
用したロードバランサーのカスタムドメイン名の作成については、
「ロードバランサーのカスタムドメイン名の設定 (p. 163)を参照してく
ださい。Amazon Route 53 については、『Amazon Route 53 Developer
Guide』を参照してください。
API Version 2012-06-01
14
Elastic Load Balancing 開発者ガイド
次のステップ
アマゾン ウェブ サービ
ソリューション
AWS Identity and Access
Management(IAM)
ロードバランサーで使用するための電子サーバー証明書を管理します。
バックエンドインスタンスにリクエストを送信する前に、ロードバラ
ンサーはサーバー証明書を使用してリクエストを終了し、次に復号化
します。サーバー証明書をロードバランサーにアップロードするには、
IAM を使用します。サーバー証明書の作成とアップロードについては、
「Creating and Uploading Server Certificatesを参照してください。
AWS のユーザーおよびユーザーのアクセス許可を管理します。ユー
ザーおよびセキュリティ認証情報を一元管理できます。AWS 製品を使
用できる複数のユーザーの作成と、各ユーザーへの個別のセキュリティ
認証情報の割り当てを、IAM で単一の AWS アカウントを使用して管
理できます。Elastic Load Balancing のリソースに対するユーザーのア
クセス許可の指定については、「AWS アカウントへのユーザーアクセ
スコントロール (p. 194)を参照してください。AWS Identity and Access
Management については、「What Is IAM?を参照してください。
以下の図は、AWS のさまざまなサービスが Elastic Load Balancing にどのように統合されているかを
示しています。
次のステップ
• 基本的なロードバランサーを作成し、新しく作成したロードバランサーに EC2 インスタンスを登録
して、Elastic Load Balancing をテストしてください。Elastic Load Balancing の使用開始 (p. 17) で
は、AWS マネジメントコンソールを使用した基本的なロードバランサーの作成について説明してい
ます。
• Elastic Load Balancing の一般的なユーザーシナリオをご覧ください。その前に、ロードバランサー
へのアクセスに使用する予定のツールやインターフェイスをインストールする必要があります。コマ
ンドラインインターフェイスのインストールおよび Query API の使用については、Elastic Load
Balancing インターフェイスによるセットアップを参照してください。
API Version 2012-06-01
15
Elastic Load Balancing 開発者ガイド
次のステップ
• Amazon EC2 で Elastic Load Balancing を使用する詳しい手順については、Amazon EC2 での Elastic
Load Balancing の使用方法を参照してください。
• Amazon Virtual Private Cloud(VPC)で Elastic Load Balancing を使用する詳しい手順については、
Amazon VPC での Elastic Load Balancing の使用方法を参照してください。
API Version 2012-06-01
16
Elastic Load Balancing 開発者ガイド
Elastic Load Balancing の使用開始
「Elastic Load Balancing とは (p. 4)」を通読して Amazon Elastic Compute Cloud(Amazon EC2)
インスタンスの負荷分散について理解できたら、次は基本的な負荷分散タスクを開始する番です。最初
のタスクはロードバランサーの作成です。
Elastic Load Balancing を使用すると、以下の任意のプラットフォーム内で起動された Amazon EC2 イ
ンスタンスの負荷を分散することができます。
• EC2-Classic – EC2-Classic 内で起動されたインスタンスは、他のお客様と共用していただくフラッ
トネットワークで実行されます。各インスタンスには、EC2-Classic ネットワークの一連のプライ
ベート IP アドレスのうちの 1 つが割り当てられます。また、お客様のインスタンスにはパブリック
IP アドレスを割り当てます。Amazon EC2 の詳細については、What is Amazon EC2?」(『Amazon
Elastic Compute Cloud User Guide』)を参照してください。
• EC2-VPC – EC2-VPC 内で起動されたインスタンスは、お客様の AWS アカウント内では論理上隔離
された仮想プライベートクラウド(VPC)内で実行されます。各インスタンスには、お客様の VPC
の一連のプライベート IP アドレスのうちの 1 つが割り当てられます。お客様は、ご自分に割り当て
られた VPC を完全に管理できます。Amazon VPC の詳細については、『Amazon Virtual Private Cloud
User Guide』の「Amazon VPC とはを参照してください。
AWS アカウントにデフォルト仮想プライベートクラウド(デフォルト VPC)が設定されている場
合、デフォルト以外の VPC 内のサブネットを指定した場合を除いて、インスタンスはデフォルト
VPC 内で起動されます。デフォルト VPC では、EC2-VPC の高度な機能と EC2-Classic の使いやす
さという両方のメリットを得られます。デフォルト VPC で自動的に行われるデフォルトの設定には、
各アベイラビリティーゾーンへのデフォルトのサブネットの設定、インターネットゲートウェイへの
接続、およびデフォルトのセキュリティグループへの関連付けなどがあります。デフォルト VPC と
サブネットの詳細については、Your Default VPC and Subnetsを参照してください。
EC2 を起動した場所を識別する方法については、『Supported Platforms』の「Amazon Compute Cloud
User Guideを参照してください。
EC2-Classic で EC2 インスタンスのロードバランサーを作成する場合は、「EC2-Classic での基本的な
ロードバランサーの作成 (p. 18)を参照してください。
VPC で EC2 インスタンスのロードバランサーを作成する場合は、「CEC2-VPC での基本的なロード
バランサーの作成 (p. 26)を参照してください。
デフォルト VPC で EC2 インスタンスのロードバランサーを作成する場合は、「デフォルト VPC での
基本的なロードバランサーの作成 (p. 36)を参照してください。
API Version 2012-06-01
17
Elastic Load Balancing 開発者ガイド
EC2-Classic での基本的なロードバランサーの作成
EC2-Classic での基本的なロードバランサーの作成
Topics
• ロードバランサーのリスナーの設定 (p. 19)
• Amazon EC2 インスタンスのヘルスチェック設定 (p. 20)
• Amazon EC2 インスタンスの登録 (p. 21)
• 設定の確認とロードバランサーの作成 (p. 22)
• ロードバランサーの作成の確認 (p. 23)
• ロードバランサーの削除 (p. 25)
この入門用チュートリアルでは、EC2-Classic プラットフォームで EC2 インスタンスの基本的なロー
ドバランサーを作成する手順について説明します。
以下のステップバイステップの手順は、ポイントアンドクリック型のウェブベースインターフェイスで
ある AWS マネジメントコンソールを使用した基本的なロードバランサーの作成に役立ちます。コン
ソールで開始する前に、以下のことが完了していることを確認してください。
• アマゾン ウェブ サービス(AWS)にサインアップした。まだ AWS にサインアップしていない場合
は、 http://aws.amazon.com に移動し、[今すぐ申し込む] ボタンをクリックしてください。
Note
AWS の新規のお客様は、AWS サインアップ日から 12 か月間無料利用枠をご利用いただけ
ます。無料利用枠には、Amazon EC2 マイクロインスタンス 1 か月あたり 750 時間、Elastic
Load Balancing 1 か月あたり 750 時間、データ処理 15 GB が含まれます。無料利用枠で使
用可能な内容については、AWS 無料利用枠を参照してください。
• ポート 80 の HTTP アクセスで Amazon EC2 インスタンスを起動している。これらのインスタンス
をロードバランサーに登録します。Amazon EC2 インスタンスの起動については、Amazon Cloud
Compute User Guide のインスタンスの起動と使用を参照してください。
EC2 インスタンスを既に起動している場合は、必ずその EC2 インスタンスが起動されているのと同
じリージョンにロードバランサーを作成します。
以下の手順は、EC2-Classic での基本的なロードバランサーの作成方法を示しています。
1. フロントエンド接続(クライアントからロードバランサー)とバックエンド接続(ロードバランサー
からバックエンドインスタンス)に使用するポートとプロトコルを指定して、ロードバランサーの
リスナーを設定します。
2. Amazon EC2 バックエンドインスタンスのヘルスチェックを設定します。
3. ロードバランサーに Amazon EC2 インスタンスを登録します。
4. 設定を確認し、ロードバランサーを作成します。
5. ロードバランサーが作成されたことを確認します。
6. (省略可能)ロードバランサーを削除します。
Important
作成するロードバランサーはライブ環境で作成されます(サンドボックスで実行されるわけで
はありません)。無料利用枠にサインアップしていない場合は、ロードバランサーを終了する
まで、標準の Elastic Load Balancing 使用料が発生します。入門用チュートリアルの手順を一
気に実行し、終了時にロードバランサーを削除すれば、使用料合計はごくわずかです(通常 1
API Version 2012-06-01
18
Elastic Load Balancing 開発者ガイド
ロードバランサーのリスナーの設定
ドル未満です)。Elastic Load Balancing の使用料金ついては、Elastic Load Balancing 製品ペー
ジを参照してください。
ロードバランサーのリスナーの設定
ロードバランサーのリスナーを設定するには
1.
2.
3.
AWS マネジメントコンソールにサインインして Amazon EC2 コンソール
(https://console.aws.amazon.com/ec2/)を開きます。
Create Load Balancer ウィザードを開始します。
a.
Amazon EC2 コンソールの [ Getting Started] ページにある [EC2 Dashboard] ペインの
[NETWORK & SECURITY] で、 [Load Balancers] をクリックします。
b.
[Load Balancers] ページで、[Create Load Balancers] をクリックします。
[DEFINE LOAD BALANCER] ページで、以下を選択します。
a.
ロードバランサーの名前を入力します(例: my-test-loadbalancer)。
b.
[CreateLB inside] は、このチュートリアルでは EC2 のままにしておきます。
Note
このチュートリアルでは、Amazon EC2 内で起動される EC2 インスタンスにロード
バランサーを作成します。Amazon Virtual Private Cloud(Amazon VPC)内で、EC2
インスタンスにロードバランサーを作成する場合は、CEC2-VPC での基本的なロード
バランサーの作成 (p. 26) を参照してください。
c.
[Listener Configuration] の設定はデフォルト値のままにしておきます。
Important
デフォルト設定の場合、Amazon EC2 HTTP サーバーがアクティブで、ポート 80 で
リクエストを受け付ける必要があります。
API Version 2012-06-01
19
Elastic Load Balancing 開発者ガイド
Amazon EC2 インスタンスのヘルスチェック設定
4.
[Continue] をクリックして Amazon EC2 インスタンスのヘルスチェックを設定します。
Amazon EC2 インスタンスのヘルスチェック設定
Elastic Load Balancing は、指定した設定に基づいて、負荷分散されたそれぞれの Amazon EC2 インス
タンスについて、状態を定期的にチェックします。問題のあるインスタンスを検出した場合、Elastic
Load Balancing はそのインスタンスへのトラフィックの送信を停止し、トラフィックのルートを正常
なインスタンスに変更します。
Amazon EC2 インスタンスのヘルスチェックを設定するには
1.
Create a New Load Balancer ウィザードの [CONFIGURE HEALTH CHECK] ページで次の設定を
行います。
a.
[Ping Protocol] の設定はデフォルト値 HTTP のままにしておきます。
b.
[Ping Port] の設定はデフォルト値 80 のままにしておきます。
Elastic Load Balancing は、選択したポート(この例ではポート 80)に ping を送信し、Amazon
EC2 インスタンスにヘルスチェッククエリを送信します。
Important
Amazon EC2 インスタンスでは、ping ポートで着信トラフィックを受け入れる必要が
あります。この例は、各インスタンスに実行中の HTTP サーバーがあり、ポート 80
で着信トラフィックを受け入れることを前提としています。
c.
[Ping Path] フィールドのデフォルト値を半角のスラッシュ(「/」)で置き換えます。
API Version 2012-06-01
20
Elastic Load Balancing 開発者ガイド
Amazon EC2 インスタンスの登録
d.
2.
Elastic Load Balancing は、[Ping Path] で指定したパスにヘルスチェッククエリを送信します。
この例では、デフォルトページに index.html、default.html または別の名前が付けられ
ていても、Elastic Load Balancing が HTTP サーバーのデフォルトのホームページにクエリを
送信するように半角のスラッシュを使用しています。
[Advanced Options] の設定はデフォルト値のままにしておきます。
[Continue] をクリックして、Amazon EC2 インスタンスを ロードバランサーに登録します。
Amazon EC2 インスタンスの登録
設定の選択が完了しました。次は、Create Load Balancer ウィザードの [ADD EC2 INSTANCES] ペー
ジで、EC2 インスタンスを追加します。
API Version 2012-06-01
21
Elastic Load Balancing 開発者ガイド
設定の確認とロードバランサーの作成
Amazon EC2 インスタンスを登録するには
1.
[ADD EC2 INSTANCES] ページで、[Select] 列のボックスをチェックし、ロードバランサーにイン
スタンスを追加します。
2.
[Continue] をクリックして、設定を確認し、ロードバランサーを作成します。
設定の確認とロードバランサーの作成
EC2 インスタンスのロードバランサーへの登録が完了しました。次は、選択した設定を確認します。
設定を確認するには
1.
Create a New Load Balancer ウィザードの [REVIEW] ページで設定を確認します。各設定の編集
リンクをクリックして、設定を変更できます。
Note
ロードバランサーを作成し終わった後でも、設定を変更することはできます。例えば、
ポート設定やヘルスチェック設定の変更、ロードバランサーへの EC2 インスタンスの追
加または削除が可能です。詳細については、Elastic Load Balancing の使用 (p. 72)を参照
してください。
API Version 2012-06-01
22
Elastic Load Balancing 開発者ガイド
ロードバランサーの作成の確認
2.
[Create] をクリックし、ロードバランサーを作成します。
ロードバランサーの作成の確認
ロードバランサーの作成が完了しました。次は、設定を確認します。
ロードバランサーの作成を確認するには
1.
[REVIEW] ページの [Create] ボタンをクリックすると、確認ウィンドウが開きます。[Close] をク
リックします。
2.
確認ウィンドウを閉じると、[Load Balancers] ページが開きます。新しいロードバランサーが一覧
に表示されます。
API Version 2012-06-01
23
Elastic Load Balancing 開発者ガイド
ロードバランサーの作成の確認
3.
作成したロードバランサーの横にあるチェックボックスを選択します。
[Load Balancer selected] ペインには、ロードバランサーの詳細が表示されます。詳細が仕様と一
致することを確認します。
4.
[Status] 行の説明が一部のインスタンスが実行されていないことを示している場合、インスタンス
がまだ登録中であると考えられます。詳細については、Elastic Load Balancing のトラブルシュー
ティング: インスタンスの登録 (p. 203)を参照してください。
少なくとも 1 つの EC2 インスタンスが InService であることが確認されたら、ロードバランサー
をテストすることができます。ロードバランサーをテストするには、[Description] タブに表示され
た [DNS Name] の値をコピーし、インターネット接続したウェブブラウザのアドレスフィールド
に貼り付けます。ロードバランサーが実行中の場合は、HTTP サーバーのデフォルトページが表示
されます。
これで、基本的なロードバランサーが作成されました。ロードバランサーはライブ環境で作成されてお
り、標準の Elastic Load Balancing usage fees が発生します。ここでロードバランサーを削除すると、
最小時間単位の使用料(通常 1 ドル未満です)で済みます。ロードバランサーの使用を継続していただ
くことも可能です。
Note
AWS の新規のお客様で、現在無料利用枠をご使用中の場合は、ロードバランサーを継続して
ご使用いただけます。使用可能な時間数を確認するには、AWS 無料利用枠を参照してくださ
い。
• ロードバランサーの削除については、次のセクションを参照してください。
• Elastic Load Balancing は、HTTP、HTTPS(セキュア HTTP)、TCP、および SSL(セキュア TCP)
リスナープロトコルを使用したアプリケーションの負荷分散をサポートします。ロードバランサーの
各種設定の概要については、Elastic Load Balancing リスナー設定クイックリファレンス (p. 69) を参
照してください。
• いくつかの一般的な Elastic Load Balancing のユーザーシナリオ、およびアプリケーションの負荷を
複数の Amazon EC2 インスタンスに効果的に分散するための各種タスクについては、Elastic Load
Balancing の使用 (p. 72) を参照してください。
• Elastic Load Balancing 使用料については、Elastic Load Balancing 製品ページを参照してください。
API Version 2012-06-01
24
Elastic Load Balancing 開発者ガイド
ロードバランサーの削除
ロードバランサーの削除
ロードバランサーが利用可能になると、ロードバランサーの実行時間に応じて 1 時間ごと、または 1
時間未満の時間について課金されます。ロードバランサーが不要になった場合は削除できます。
ロードバランサーを削除するには
1.
Amazon EC2 コンソールの [ Getting Started] ページにある [EC2 Dashboard] ペインの [NETWORK
& SECURITY] で、 [Load Balancers] をクリックします。
2.
削除したいロードバランサーの横にあるチェックボックスをオンにし、[Delete] をクリックしま
す。
3.
[Delete Load Balancer] ウィンドウで、[Yes, Delete] をクリックします。
Elastic Load Balancing によってロードバランサーが削除されます。ロードバランサーが削除され
ると、ロードバランサーの課金も停止されます。
Note
ロードバランサーを削除しても、そのロードバランサーに関連付けられた Amazon EC2 イ
ンスタンスは実行し続けます。Amazon EC2 インスタンスが動作している間は、インスタ
ンスの利用料金が発生します。EC2 インスタンスの停止については、Amazon EC2 User
Guide の Stopping and Starting Instances を参照してください。EC2 インスタンスの終了
については、インスタンスの終了を参照してください。
API Version 2012-06-01
25
Elastic Load Balancing 開発者ガイド
CEC2-VPC での基本的なロードバランサーの作成
CEC2-VPC での基本的なロードバランサーの作成
Topics
• ロードバランサーのリスナーの設定 (p. 27)
• Amazon EC2 インスタンスのヘルスチェック設定 (p. 29)
• サブネット内でのロードバランサーインスタンスの起動 (p. 30)
• ロードバランサーへのセキュリティグループの割り当て (p. 31)
• Amazon EC2 インスタンスの登録 (p. 32)
• 設定の確認とロードバランサーの作成 (p. 33)
• ロードバランサーの作成の確認 (p. 33)
• ロードバランサーの削除 (p. 34)
アマゾン ウェブ サービス(AWS) では、AWS クラウドの隔離されたプライベートセクションに仮想
ネットワーク環境を定義することができます。この仮想プライベートクラウド(VPC)内では、プライ
ベート IP アドレス、パブリック IP アドレス、パブリック DNS ホスト名、およびプライベート DNS
ホスト名を持つ、Amazon Elastic Compute Cloud(Amazon EC2)インスタンスを起動できます。これ
らのインスタンスは、インターネットゲートウェイを介してインターネットと通信できます。インター
ネットゲートウェイを使用することで、インスタンスが Amazon EC2 ネットワークエッジを介してイ
ンターネットに接続できます。ロードバランサーを使えば、トラフィックを監視し、この VPC 内で起
動された EC2 インスタンスにルーティングすることもできます。
AWS 仮想プライベートクラウド(Amazon VPC)は、1 つまたは複数のアベイラビリティーゾーンに
またがって作成することができます。1 つのアベイラビリティーゾーンには複数のサブネットを含める
ことができます。Amazon VPC のサブネットとは、アベイラビリティーゾーンを VPC の IP アドレス
範囲の一部で分割したものです。サブネットを使うと、インスタンスをセキュリティや運用上の必要に
応じてグループ化することができます。サブネットは作成されたアベイラビリティーゾーン内に完全に
包含されるものです。
Amazon VPC 内で Amazon EC2 インスタンスを起動する際、1 つまたは複数のセキュリティグループ
に割り当てることができます。セキュリティグループは、インスタンスが受信可能なトラフィックを制
御するファイアウォールです。
AWS アカウントにデフォルト VPC が設定されている場合、デフォルトで、Amazon EC2 インスタン
スがデフォルト VPC 内で起動されます。デフォルト VPC 内で起動された EC2 インスタンスの負荷を
分散するには、デフォルト VPC 内にロードバランサーを作成する必要があります。「詳細については、
「Detecting Your Supported Platforms and Whether You Have a Default VPC」を参照してください。」。
デフォルト VPC 内でのロードバランサーの作成については、「デフォルト VPC での基本的なロード
バランサーの作成 (p. 36)」を参照してください
EC2-VPC に基本的なロードバランサーを作成する手順は以下のとおりです(AWS Management Console
を使用し、ポイントアンドクリック操作で順を追って作成します)。コンソールで開始する前に、以下
のことが完了していることを確認してください。
• アマゾン ウェブ サービス(AWS)にサインアップした。まだ AWS にサインアップしていない場合
は、 http://aws.amazon.com に移動し、[今すぐ申し込む] ボタンをクリックしてください。
Note
AWS の新規のお客様は、AWS サインアップ日から 12 か月間無料利用枠をご利用いただけ
ます。無料利用枠には、Amazon EC2 マイクロインスタンス 1 か月あたり 750 時間、Elastic
Load Balancing 1 か月あたり 750 時間、データ処理 15 GB が含まれます。無料利用枠で使
用可能な内容については、AWS 無料利用枠を参照してください。
API Version 2012-06-01
26
Elastic Load Balancing 開発者ガイド
ロードバランサーのリスナーの設定
• EC2-VPC 内に Elastic Load Balancing ロードバランサーを作成し、使用するには、まずインターネッ
トゲートウェイを使用する VPC を作成し、次にその VPC 内で EC2 インスタンスを起動します。詳
細については、Get Started with Amazon VPCを参照してください。
• VPC に関連付けられた VPC ID、サブネット ID、およびセキュリティグループを書き留めておきま
す。これらは、後でロードバランサーを作成するときに必要となります。
以下の手順は、EC2-VPC での基本的なロードバランサーの作成方法を示しています。
1. フロントエンド接続(クライアントからロードバランサー)とバックエンド接続(ロードバランサー
からバックエンドインスタンス)に使用するポートとプロトコルを指定して、ロードバランサーの
リスナーを設定します。
2. Amazon EC2 バックエンドインスタンスのヘルスチェックを設定します。
3. サブネット内でロードバランサーインスタンスを起動します。
4.
5.
6.
7.
8.
ロードバランサーにセキュリティグループを割り当てます。
ロードバランサーに Amazon EC2 インスタンスを登録します。
設定を確認し、ロードバランサーを作成します。
ロードバランサーが作成されたことを確認します。
(省略可能)ロードバランサーを削除します。
Important
作成するロードバランサーはライブ環境で作成されます(サンドボックスで実行されるわけで
はありません)。無料利用枠にサインアップしていない場合は、ロードバランサーを終了する
まで、標準の Elastic Load Balancing 使用料が発生します。入門用チュートリアルの手順を一
気に実行し、終了時にロードバランサーを削除すれば、使用料合計はごくわずかです(通常 1
ドル未満です)。Elastic Load Balancing の使用料金ついては、Elastic Load Balancing 製品ペー
ジを参照してください。
ロードバランサーのリスナーの設定
ロードバランサーのリスナーを設定するには
1.
AWS マネジメントコンソールにサインインして Amazon EC2 コンソール
(https://console.aws.amazon.com/ec2/)を開きます。
2.
Create Load Balancer ウィザードを開始します。
a.
Amazon EC2 コンソールの [ Getting Started] ページにある [EC2 Dashboard] ペインの
[NETWORK & SECURITY] で、 [Load Balancers] をクリックします。
API Version 2012-06-01
27
Elastic Load Balancing 開発者ガイド
ロードバランサーのリスナーの設定
b.
3.
[Create Load Balancer] をクリックします。
[DEFINE LOAD BALANCER] ページで、以下を選択します。
a.
ロードバランサーの名前を入力します(例: my-test-loadbalancer)。
b.
[Create LB inside] ドロップダウンボックス内の矢印をクリックし、ロードバランサーを作成
する VPC ID を選択します。
[Create an internal load balancer] ボックスは、このチュートリアルでは空白のままにしておき
ます。
c.
Note
このチュートリアルでは、パブリック IP アドレスにされる、パブリックに解決可能
な DNS 名を持つインターネット向けロードバランサーを作成します。プライベート
IP アドレスに解決される、パブリックに解決可能な DNS 名を持つ内部向けロードバ
ランサーを作成する場合には、「Amazon VPC への Elastic Load Balancing のデプロ
イ (p. 112)を参照してください。
d.
[Listener Configuration] の設定は、このチュートリアルではデフォルト値のままにしておきま
す。
Important
デフォルト設定の場合、Amazon EC2 HTTP サーバーがアクティブで、ポート 80 で
リクエストを受け付ける必要があります。
4.
[Continue] をクリックして Amazon EC2 インスタンスのヘルスチェックを設定します。
API Version 2012-06-01
28
Elastic Load Balancing 開発者ガイド
Amazon EC2 インスタンスのヘルスチェック設定
Amazon EC2 インスタンスのヘルスチェック設定
Elastic Load Balancing は、指定した設定に基づいて、負荷分散されたそれぞれの Amazon EC2 インス
タンスについて、状態を定期的にチェックします。問題のあるインスタンスを検出した場合、Elastic
Load Balancing はそのインスタンスへのトラフィックの送信を停止し、トラフィックのルートを正常
なインスタンスに変更します。
Amazon EC2 インスタンスのヘルスチェックを設定するには
1.
Create a New Load Balancer ウィザードの [CONFIGURE HEALTH CHECK] ページで次の設定を
行います。
a.
[Ping Protocol] の設定はデフォルト値 HTTP のままにしておきます。
b.
[Ping Port] の設定はデフォルト値 80 のままにしておきます。
Elastic Load Balancing は、選択したポート(この例ではポート 80)に ping を送信し、Amazon
EC2 インスタンスにヘルスチェッククエリを送信します。
Important
Amazon EC2 インスタンスでは、ping ポートで着信トラフィックを受け入れる必要が
あります。この例は、各インスタンスに実行中の HTTP サーバーがあり、ポート 80
で着信トラフィックを受け入れることを前提としています。
c.
[Ping Path] フィールドのデフォルト値を半角のスラッシュ(「/」)で置き換えます。
d.
Elastic Load Balancing は、[Ping Path] で指定したパスにヘルスチェッククエリを送信します。
この例では、デフォルトページに index.html、default.html または別の名前が付けられ
ていても、Elastic Load Balancing が HTTP サーバーのデフォルトのホームページにクエリを
送信するように半角のスラッシュを使用しています。
[Advanced Options] の設定はデフォルト値のままにしておきます。
API Version 2012-06-01
29
Elastic Load Balancing 開発者ガイド
サブネット内でのロードバランサーインスタンスの起動
2.
[Continue] をクリックして、ロードバランサーインスタンスを起動するサブネットの選択に進みま
す。
サブネット内でのロードバランサーインスタンスの
起動
このステップでは、ロードバランサーインスタンスを起動するサブネットを選択します。
VPC サブネットを選択するには
1.
[ADD EC2 Instances] ページの [Available Subnets] の表で、ロードバランサーインスタンスを起動
するサブネットの左側にある緑色のボタンをクリックします。
API Version 2012-06-01
30
Elastic Load Balancing 開発者ガイド
ロードバランサーへのセキュリティグループの割り当て
選択したサブネットが [Selected Subnets] の表に表示されます。
2.
[Continue] をクリックして、ロードバランサーに割り当てるセキュリティグループの選択に進みま
す。
ロードバランサーへのセキュリティグループの割り
当て
ロードバランサーに対してセキュリティグループを選択するには
1.
既存のセキュリティグループを使用する場合は、ロードバランサーが使用するよう設定したポート
への進入をそのグループが許可することを確認してください。このステップでセキュリティグルー
プを作成すると、これらのポートが開くよう、コンソールによって定義されます。このチュートリ
アルでは、仮想プライベートクラウドに関連付けられたデフォルトのセキュリティグループを使用
します。
[ADD EC2 INSTANCES] ページで [Choose from your existing Security Groups] を選択し、続いて
デフォルトのセキュリティグループを選択します。
API Version 2012-06-01
31
Elastic Load Balancing 開発者ガイド
Amazon EC2 インスタンスの登録
2.
[Continue] をクリックして、EC2 インスタンスを ロードバランサーに登録します。
Amazon EC2 インスタンスの登録
設定の選択が完了しました。次は、Create Load Balancer ウィザードの [ADD INSTANCES] ページで、
EC2 インスタンスを登録します。
VPC 内で起動された EC2 インスタンスを ロードバランサーに登録するには
1.
[ADD EC2 INSTANCES] ページにある [Manually Add Instances to LoadBalancer] の表の [Select]
列で、ロードバランサーに追加したいインスタンスのチェックボックスをオンにします。
API Version 2012-06-01
32
Elastic Load Balancing 開発者ガイド
設定の確認とロードバランサーの作成
Note
マルチホームインスタンス(Elastic Network Interface(ENI)がアタッチされたインスタ
ンス)をロードバランサーに登録すると、ロードバランサーは、インスタンスのプライマ
リ IP アドレス(eth0)にトラフィックをルーティングします。ENI の使用については、
Elastic Network Interface を参照してください。
2.
[Continue] をクリックして、設定を確認し、ロードバランサーを作成します。
設定の確認とロードバランサーの作成
EC2 インスタンスのロードバランサーへの登録が完了しました。次は、選択した設定を確認します。
設定を確認するには
1.
Create a New Load Balancer ウィザードの [REVIEW] ページで設定を確認します。各設定の編集
リンクをクリックして、設定を変更できます。
[Scheme] 行の記述は、ロードバランサーが internet-facing であることを示しています。つま
り、ロードバランサーには、パブリック IP アドレスに解決される、パブリックに解決可能な DNS
名が付いています。
Note
ロードバランサーを作成し終わった後でも、設定を変更することはできます。例えば、
ポート設定やヘルスチェック設定の変更、ロードバランサーへの EC2 インスタンスの追
加または削除が可能です。詳細については、Elastic Load Balancing の使用 (p. 72)を参照
してください。
2.
[Create] をクリックし、ロードバランサーを作成します。
ロードバランサーの作成の確認
ロードバランサーの作成が完了しました。次は、設定を確認します。
ロードバランサーの作成を確認するには
1.
[REVIEW] ページの [Create] ボタンをクリックすると、確認ウィンドウが開きます。[Close] をク
リックします。
API Version 2012-06-01
33
Elastic Load Balancing 開発者ガイド
ロードバランサーの削除
2.
確認ウィンドウを閉じると、[Load Balancers] ページが開きます。新しいロードバランサーが一覧
に表示されます。
作成したロードバランサーの横にあるチェックボックスを選択します。
3.
4.
[Load Balancer selected] ペインには、ロードバランサーの詳細が表示されます。詳細が仕様と一
致することを確認します。
[Status] 行の説明が一部のインスタンスが実行されていないことを示している場合、インスタンス
がまだ登録中であると考えられます。詳細については、Elastic Load Balancing のトラブルシュー
ティング: インスタンスの登録 (p. 203)を参照してください。
少なくとも 1 つの EC2 インスタンスが InService であることが確認されたら、ロードバランサー
をテストすることができます。ロードバランサーをテストするには、[Description] タブに表示され
た [DNS Name] の値をコピーし、インターネット接続したウェブブラウザのアドレスフィールド
に貼り付けます。ロードバランサーが実行中の場合は、HTTP サーバーのデフォルトページが表示
されます。
これで、基本的なロードバランサーが作成されました。ロードバランサーはライブ環境で作成されてお
り、標準の Elastic Load Balancing usage fees が発生します。ここでロードバランサーを削除すると、
最小時間単位の使用料(通常 1 ドル未満です)で済みます。ロードバランサーの使用を継続していただ
くことも可能です。
Note
AWS の新規のお客様で、現在無料利用枠をご使用中の場合は、ロードバランサーを継続して
ご使用いただけます。使用可能な時間数を確認するには、AWS 無料利用枠を参照してくださ
い。
• ロードバランサーの削除については、次のセクションを参照してください。
• Elastic Load Balancing は、HTTP、HTTPS(セキュア HTTP)、TCP、および SSL(セキュア TCP)
リスナープロトコルを使用したアプリケーションの負荷分散をサポートします。ロードバランサーの
各種設定の概要については、Elastic Load Balancing リスナー設定クイックリファレンス (p. 69) を参
照してください。
• Amazon VPC 用のいくつかの一般的な Elastic Load Balancing のユーザーシナリオ、およびアプリ
ケーションの負荷を Amazon VPC 内の複数の Amazon EC2 インスタンスに効果的に分散するための
各種タスクについては、「Amazon VPC への Elastic Load Balancing のデプロイ (p. 112)を参照して
ください。
• Elastic Load Balancing 使用料については、Elastic Load Balancing 製品ページを参照してください。
ロードバランサーの削除
ロードバランサーが利用可能になると、ロードバランサーの実行時間に応じて 1 時間ごと、または 1
時間未満の時間について課金されます。ロードバランサーが不要になった場合は削除できます。
ロードバランサーを削除するには
1.
Amazon EC2 コンソールの [ Getting Started] ページにある [EC2 Dashboard] ペインの [NETWORK
& SECURITY] で、 [Load Balancers] をクリックします。
2.
削除したいロードバランサーの横にあるチェックボックスをオンにし、[Delete] をクリックしま
す。
API Version 2012-06-01
34
Elastic Load Balancing 開発者ガイド
ロードバランサーの削除
3.
[Delete Load Balancer] ウィンドウで、[Yes, Delete] をクリックします。
Elastic Load Balancing によってロードバランサーが削除されます。ロードバランサーが削除され
ると、ロードバランサーの課金も停止されます。
Note
ロードバランサーを削除しても、そのロードバランサーに関連付けられた Amazon EC2 イ
ンスタンスは実行し続けます。Amazon EC2 インスタンスが動作している間は、インスタ
ンスの利用料金が発生します。EC2 インスタンスの停止については、Amazon EC2 User
Guide の Stopping and Starting Instances を参照してください。EC2 インスタンスの終了
については、インスタンスの終了を参照してください。
API Version 2012-06-01
35
Elastic Load Balancing 開発者ガイド
デフォルト VPC での基本的なロードバランサーの作成
デフォルト VPC での基本的なロードバランサーの
作成
Topics
• ロードバランサーのリスナーの設定 (p. 37)
• Amazon EC2 インスタンスのヘルスチェック設定 (p. 39)
• ロードバランサーへのセキュリティグループの割り当て (p. 40)
• Amazon EC2 インスタンスの登録 (p. 40)
• 設定の確認とロードバランサーの作成 (p. 41)
• ロードバランサーの作成の確認 (p. 41)
• ロードバランサーの削除 (p. 42)
アマゾン ウェブ サービス(AWS) では、AWS クラウドの隔離されたプライベートセクションに仮想
ネットワーク環境を定義することができます。この仮想プライベートクラウド(VPC)内では、プライ
ベート IP アドレス、パブリック IP アドレス、パブリック DNS ホスト名、およびプライベート DNS
ホスト名を持つ、Amazon EC2 インスタンスを起動できます。これらのインスタンスは、インターネッ
トゲートウェイを介してインターネットと通信できます。インターネットゲートウェイを使用すること
で、インスタンスが Amazon EC2 ネットワークエッジを介してインターネットに接続できます。ロー
ドバランサーを使えば、トラフィックを監視し、この VPC 内で起動された EC2 インスタンスにルー
ティングすることもできます。
AWS 仮想プライベートクラウド(Amazon VPC)は、1 つまたは複数のアベイラビリティーゾーンに
またがって存在します。1 つのアベイラビリティーゾーンには複数のサブネットを含めることができま
す。Amazon VPC のサブネットとは、アベイラビリティーゾーンを VPC の IP アドレス範囲の一部で
分割したものです。サブネットを使うと、インスタンスをセキュリティや運用上の必要に応じてグルー
プ化することができます。サブネットは作成されたアベイラビリティーゾーン内に完全に包含されるも
のです。
Amazon VPC 内で Amazon EC2 インスタンスを起動する際、1 つまたは複数のセキュリティグループ
に割り当てることができます。セキュリティグループは、インスタンスが受信可能なトラフィックを制
御するファイアウォールです。
AWS アカウントにデフォルト VPC が設定されているときは、デフォルトで、Amazon EC2 インスタ
ンスがデフォルト VPC 内で起動されます。詳細については、「Detecting Your Supported Platforms
and Whether You Have a Default VPC」を参照してください。
デフォルト VPC では、Amazon VPC プラットフォーム(EC2-VPC)の高度なネットワーク機能と
Amazon Elastic Compute Cloud プラットフォーム(EC2-Classic)の使いやすさという両方のメリット
を得られます。
デフォルト VPC で自動的に行われるデフォルトの設定には、各アベイラビリティーゾーンへのデフォ
ルトのサブネットの設定、インターネットゲートウェイへの接続、およびデフォルトのセキュリティグ
ループへの関連付けなどがあります。デフォルト VPC とサブネットの詳細については、Your Default
VPC and Subnetsを参照してください。
サブネットを指定しないでデフォルト VPC 内で 起動した EC2 インスタンスは、自動的にデフォルト
VPC 内のデフォルトサブネットから起動されます。デフォルトでは、アベイラビリティーゾーンが選
択され、インスタンスは、そのアベイラビリティーゾーンに対応するサブネットから起動されます。ま
たは、インスタンス用にアベイラビリティーゾーンを選択することもできます。それには、対応するデ
フォルトサブネットを選択します。
デフォルト VPC 内で起動された EC2 インスタンスの負荷を分散するには、デフォルト VPC 内にロー
ドバランサーを作成する必要があります。デフォルト VPC 内にロードバランサーを作成すると、Elastic
API Version 2012-06-01
36
Elastic Load Balancing 開発者ガイド
ロードバランサーのリスナーの設定
Load Balancing はロードバランサー用に開くよう指定するポートを定義することで、自動的にセキュ
リティグループを作成します。
以下の詳細な手順は、ポイントアンドクリック型のウェブベースインターフェイスである AWS
Management Console を使用した、デフォルト VPC での基本的なロードバランサーの作成に役立ちま
す。コンソールで開始する前に、以下のことが完了していることを確認してください。
• アマゾン ウェブ サービス(AWS)にサインアップした。まだ AWS にサインアップしていない場合
は、 http://aws.amazon.com に移動し、[今すぐ申し込む] ボタンをクリックしてください。
• AWS マネジメントコンソールにサインインして Amazon EC2 コンソール
(https://console.aws.amazon.com/ec2/)を開きます。
• AWS アカウントでデフォルト VPC プラットフォームがサポートされることを確認します。詳細に
ついては、Detecting Your Supported Platforms and Whether You Have a Default VPC を参照してく
ださい。
Note
AWS の新規のお客様は、AWS サインアップ日から 12 か月間無料利用枠をご利用いただけ
ます。無料利用枠には、Amazon EC2 マイクロインスタンス 1 か月あたり 750 時間、Elastic
Load Balancing 1 か月あたり 750 時間、データ処理 15 GB が含まれます。無料利用枠で使
用可能な内容については、AWS 無料利用枠を参照してください。
• デフォルトサブネットとデフォルトセキュリティグループを使用して、デフォルト VPC から Amazon
EC2 インスタンスを起動します。詳細については、Launching an EC2 Instance into Your Default VPC
を参照してください。
以下の手順は、デフォルト VPC での基本的なロードバランサーの作成方法を示しています。
1. フロントエンド接続(クライアントからロードバランサー)とバックエンド接続(ロードバランサー
からバックエンドインスタンス)に使用するポートとプロトコルを指定して、ロードバランサーの
リスナーを設定します。
2. Amazon EC2 バックエンドインスタンスのヘルスチェックを設定します。
3. ロードバランサーにセキュリティグループを割り当てます。
4. ロードバランサーに Amazon EC2 インスタンスを登録します。
5. 設定を確認し、ロードバランサーを作成します。
6. ロードバランサーの作成を確認します。
7. (省略可能)ロードバランサーを削除します。
Important
作成するロードバランサーはライブ環境で作成されます(サンドボックスで実行されるわけで
はありません)。無料利用枠にサインアップしていない場合は、ロードバランサーを終了する
まで、標準の Elastic Load Balancing 使用料が発生します。入門用チュートリアルの手順を一
気に実行し、終了時にロードバランサーを削除すれば、使用料合計はごくわずかです(通常 1
ドル未満です)。Elastic Load Balancing の使用料金ついては、Elastic Load Balancing 製品ペー
ジを参照してください。
ロードバランサーのリスナーの設定
ロードバランサーのリスナーを設定するには
1.
AWS マネジメントコンソールにサインインして Amazon EC2 コンソール
(https://console.aws.amazon.com/ec2/)を開きます。
API Version 2012-06-01
37
Elastic Load Balancing 開発者ガイド
ロードバランサーのリスナーの設定
2.
3.
Create Load Balancer ウィザードを開始します。
a.
Amazon EC2 コンソールの [ Getting Started] ページにある [EC2 Dashboard] ペインの
[NETWORK & SECURITY] で、 [Load Balancers] をクリックします。
b.
[Create Load Balancer] をクリックします。
[DEFINE LOAD BALANCER] ページで、以下を選択します。
a.
ロードバランサーの名前を入力します(例: my-test-loadbalancer)。
b.
[Create LB inside: ] ボックスのエントリ設定は、このチュートリアルではデフォルト値のまま
にしておきます。
[Create an internal load balancer] ボックスは、このチュートリアルでは空白のままにしておき
ます。
c.
Note
このチュートリアルでは、パブリック IP アドレスにされる、パブリックに解決可能
な DNS 名を持つインターネット向けロードバランサーを作成します。プライベート
IP アドレスに解決される、パブリックに解決可能な DNS 名を持つ内部向けロードバ
ランサーを作成する場合には、「Amazon VPC への Elastic Load Balancing のデプロ
イ (p. 112)を参照してください。
d.
[Enable advanced VPC configuration:] ボックスは、このチュートリアルでは空白のままにし
ておきます。
Note
[Enable advanced VPC configuration:] オプションでは、独自のサブネットを指定でき
ます。このオプションは、独自のサブネットを作成済みでデフォルトサブネットの代
わりに使用したい場合に選択します。
e.
[Listener Configuration] の設定は、このチュートリアルではデフォルト値のままにしておきま
す。
API Version 2012-06-01
38
Elastic Load Balancing 開発者ガイド
Amazon EC2 インスタンスのヘルスチェック設定
Important
デフォルト設定の場合、Amazon EC2 HTTP サーバーがアクティブで、ポート 80 で
リクエストを受け付ける必要があります。
4.
[Continue] をクリックして、インスタンスのヘルスチェックの設定に進みます。
Amazon EC2 インスタンスのヘルスチェック設定
Elastic Load Balancing は、指定した設定に基づいて、負荷分散されたそれぞれの Amazon EC2 インス
タンスについて、状態を定期的にチェックします。問題のあるインスタンスを検出した場合、Elastic
Load Balancing はそのインスタンスへのトラフィックの送信を停止し、トラフィックのルートを正常
なインスタンスに変更します。
Amazon EC2 インスタンスのヘルスチェックを設定するには
1.
Create a New Load Balancer ウィザードの [CONFIGURE HEALTH CHECK] ページで次の設定を
行います。
a.
[Ping Protocol] の設定はデフォルト値 HTTP のままにしておきます。
b.
[Ping Port] の設定はデフォルト値 80 のままにしておきます。
Elastic Load Balancing は、選択したポート(この例ではポート 80)に ping を送信し、Amazon
EC2 インスタンスにヘルスチェッククエリを送信します。
Important
Amazon EC2 インスタンスでは、ping ポートで着信トラフィックを受け入れる必要が
あります。この例は、各インスタンスに実行中の HTTP サーバーがあり、ポート 80
で着信トラフィックを受け入れることを前提としています。
c.
[Ping Path] フィールドのデフォルト値を半角のスラッシュ(「/」)で置き換えます。
Elastic Load Balancing は、[Ping Path] で指定したパスにヘルスチェッククエリを送信します。
この例では、デフォルトページに index.html、default.html または別の名前が付けられ
ていても、Elastic Load Balancing が HTTP サーバーのデフォルトのホームページにクエリを
送信するように半角のスラッシュを使用しています。
d.
[Advanced Options] の設定はデフォルト値のままにしておきます。
API Version 2012-06-01
39
Elastic Load Balancing 開発者ガイド
ロードバランサーへのセキュリティグループの割り当て
2.
[Continue] をクリックして、ロードバランサーに割り当てるセキュリティグループの選択に進みま
す。
ロードバランサーへのセキュリティグループの割り
当て
ロードバランサーでセキュリティグループを選択するには
1.
このチュートリアルでは、デフォルト VPC に関連付けられたデフォルトの VPC セキュリティグ
ループを使用します。
[ADD EC2 INSTANCES] ページで [Choose from your existing Security Groups] を選択し、続いて
デフォルトのセキュリティグループを選択します。
既存のデフォルト以外の既存のセキュリティグループを使用する場合は、ロードバランサーが使用
するよう設定したポートへの進入をそのグループが許可することを確認してください。このステッ
プでセキュリティグループを作成すると、これらのポートが開くよう、コンソールによって定義さ
れます。
2.
[Continue] をクリックして、Amazon EC2 インスタンスを ロードバランサーに登録します。
Amazon EC2 インスタンスの登録
設定の選択が完了しました。次は、EC2 インスタンスをロードバランサーに登録します。
API Version 2012-06-01
40
Elastic Load Balancing 開発者ガイド
設定の確認とロードバランサーの作成
VPC 内で起動された EC2 インスタンスを ロードバランサーに登録するには
1.
[ADD EC2 INSTANCES] ページにある [Manually Add Instances to LoadBalancer] の表の [Select]
列で、ロードバランサーに追加したいインスタンスのチェックボックスをオンにします。
Note
マルチホームインスタンス(Elastic Network Interface(ENI)がアタッチされたインスタ
ンス)をロードバランサーに登録すると、ロードバランサーは、インスタンスのプライマ
リ IP アドレス(eth0)にトラフィックをルーティングします。ENI の使用については、
Elastic Network Interface を参照してください。
2.
[Continue] をクリックして、設定を確認し、ロードバランサーを作成します。
設定の確認とロードバランサーの作成
EC2 インスタンスのロードバランサーへの登録が完了しました。次は、選択した設定を確認します。
設定を確認するには
1.
Create a New Load Balancer ウィザードの [REVIEW] ページで設定を確認します。各設定の編集
リンクをクリックして、設定を変更できます。
[Scheme] 行の記述は、ロードバランサーが internet-facing であることを示しています。つま
り、ロードバランサーには、パブリック IP アドレスに解決される、パブリックに解決可能な DNS
名が付いています。
[VPC INFORMATION] の下にリストされている VPC およびサブネットは、AWS アカウント用に
自動的に作成されたデフォルトの VPC とデフォルトのサブネットです。
Note
ロードバランサーを作成し終わった後でも、設定を変更することはできます。例えば、
ポート設定やヘルスチェック設定の変更、ロードバランサーへの EC2 インスタンスの追
加または削除が可能です。詳細については、Amazon VPC への Elastic Load Balancing の
デプロイ (p. 112)を参照してください。
2.
[Create] をクリックし、ロードバランサーを作成します。
ロードバランサーの作成の確認
ロードバランサーの作成が完了しました。次は、設定を確認します。
ロードバランサーが作成されたことを確認するには
1.
[REVIEW] ページの [Create] ボタンをクリックすると、確認ウィンドウが開きます。[Close] をク
リックします。
API Version 2012-06-01
41
Elastic Load Balancing 開発者ガイド
ロードバランサーの削除
2.
確認ウィンドウを閉じると、[Load Balancers] ページが開きます。新しいロードバランサーが一覧
に表示されます。
作成したロードバランサーの横にあるチェックボックスを選択します。
3.
4.
[Load Balancer selected] ペインには、ロードバランサーの詳細が表示されます。詳細が仕様と一
致することを確認します。
[Status] 行の説明が一部のインスタンスが実行されていないことを示している場合、インスタンス
がまだ登録中であると考えられます。詳細については、Elastic Load Balancing のトラブルシュー
ティング: インスタンスの登録 (p. 203)を参照してください。
少なくとも 1 つの EC2 インスタンスが InService であることが確認されたら、ロードバランサー
をテストすることができます。ロードバランサーをテストするには、[Description] タブに表示され
た [DNS Name] の値をコピーし、インターネット接続したウェブブラウザのアドレスフィールド
に貼り付けます。ロードバランサーが実行中の場合は、HTTP サーバーのデフォルトページが表示
されます。
これで、基本的なロードバランサーが作成されました。ロードバランサーはライブ環境で作成されてお
り、標準の Elastic Load Balancing usage fees が発生します。ここでロードバランサーを削除すると、
最小時間単位の使用料(通常 1 ドル未満です)で済みます。ロードバランサーの使用を継続していただ
くことも可能です。
Note
AWS の新規のお客様で、現在無料利用枠をご使用中の場合は、ロードバランサーを継続して
ご使用いただけます。使用可能な時間数を確認するには、AWS 無料利用枠を参照してくださ
い。
• ロードバランサーの削除については、次のセクションを参照してください。
• Elastic Load Balancing は、HTTP、HTTPS(セキュア HTTP)、TCP、および SSL(セキュア TCP)
リスナープロトコルを使用したアプリケーションの負荷分散をサポートします。ロードバランサーの
各種設定の概要については、Elastic Load Balancing リスナー設定クイックリファレンス (p. 69) を参
照してください。
• いくつかの一般的な Elastic Load Balancing のユーザーシナリオ、およびアプリケーションの負荷を
Amazon VPC 内の複数の Amazon EC2 インスタンスに効果的に分散するための各種タスクについて
は、「Amazon VPC への Elastic Load Balancing のデプロイ (p. 112)を参照してください。
• Elastic Load Balancing 使用料については、Elastic Load Balancing 製品ページを参照してください。
ロードバランサーの削除
ロードバランサーが利用可能になると、ロードバランサーの実行時間に応じて 1 時間ごと、または 1
時間未満の時間について課金されます。ロードバランサーが不要になった場合は削除できます。
API Version 2012-06-01
42
Elastic Load Balancing 開発者ガイド
ロードバランサーの削除
ロードバランサーを削除するには
1.
Amazon EC2 コンソールの [ Getting Started] ページにある [EC2 Dashboard] ペインの [NETWORK
& SECURITY] で、 [Load Balancers] をクリックします。
2.
削除したいロードバランサーの横にあるチェックボックスをオンにし、[Delete] をクリックしま
す。
3.
[Delete Load Balancer] ウィンドウで、[Yes, Delete] をクリックします。
Elastic Load Balancing によってロードバランサーが削除されます。ロードバランサーが削除され
ると、ロードバランサーの課金も停止されます。
Note
ロードバランサーを削除しても、そのロードバランサーに関連付けられた Amazon EC2 イ
ンスタンスは実行し続けます。Amazon EC2 インスタンスが動作している間は、インスタ
ンスの利用料金が発生します。EC2 インスタンスの停止については、Amazon EC2 User
Guide の Stopping and Starting Instances を参照してください。EC2 インスタンスの終了
については、インスタンスの終了を参照してください。
API Version 2012-06-01
43
Elastic Load Balancing 開発者ガイド
Elastic Load Balancing インターフェ
イスによるセットアップ
次のいずれかのアマゾン ウェブ サービス(AWS)を使用して、ロードバランサーを作成、アクセス、
および管理することができます: AWS マネジメントコンソール、Elastic Load Balancing コマンドライ
ンインターフェイス(CLI)、AWS コマンドラインインターフェイス、Query API、SOAP API、また
は Elastic Load Balancing 用 SDK。
• AWS Management Console – AWS Management Console は、多数の AWS 製品へのウェブベースの
インターフェイスを提供します。このコンソールを使用して、API に対するリクエストを実行するこ
とができます。AWS Management Console の使用を開始する前に、AWS アカウントのエイリアス
を作成し、そのアカウントを使用してサインインする必要があります。既に AWS アカウントをお持
ちの場合は、新しく作成する必要はありません。Elastic Load Balancing のリクエストに Amazon EC2
コンソールを使用します。まだ AWS にサインアップしていない場合は、
• http://aws.amazon.com に移動し、[今すぐ申し込む] ボタンをクリックしてください。
• AWS マネジメントコンソールにサインインして Amazon EC2 コンソール
(https://console.aws.amazon.com/ec2/)を開きます。
• [Elastic Load Balancing Command Line Interface] – Elastic Load Balancing では、AWS マネジメント
コンソール、API、または SDK を使用しなくても Elastic Load Balancing の機能にアクセスできるコ
マンドラインインターフェイス(CLI)を提供しています。CLI は API のアクションをラップして、
複数の機能を備えたコマンドを提供します。CLI コマンドは Java で作成されており、Windows と
Linux/UNIX/Mac OSX 用のシェルスクリプトが含まれています。シェルスクリプトは自己完結型の
ZIP ファイルとして使用できます。インストールの必要はなく、ダウンロードして解凍するだけで使
用できます。Elastic Load Balancing のコマンドラインインターフェイスのインストールおよび使用
については、Elastic Load Balancing コマンドラインインターフェイスのインストール (p. 45) を参照
してください。
• [AWS Command Line Interface;] – アマゾン ウェブ サービス(AWS)では、Elastic Load Balancing
を含む AWS サービスの広範なセットをサポートする 2 つのコマンドラインインターフェイスを提供
しています。AWS コマンドラインインターフェイス(AWS CLI)を使用し、Windows、Mac、およ
び Linux の AWS サービスを管理および自動化できます。詳細については、AWS コマンドラインイ
ンターフェイスとは?を参照してください。Elastic Load Balancing 用の AWS CLI コマンドの詳細に
ついては、AWS CLI elb を参照してください。また、AWS では PowerShell 環境でスクリプトを作
成するユーザーに、Windows PowerShell 用の AWS ツールも提供しています。詳細については、
What are the AWS Tools for Windows PowerShell? を参照してください。
• Query API – Elastic Load Balancing では Query API を提供しており、これを使用して、プログラム
により Elastic Load Balancing の機能にアクセスすることができます。Query リクエストは、GET や
POST などの HTTP 動詞および Action や Operation などの Query パラメータを使用する HTTP リク
API Version 2012-06-01
44
Elastic Load Balancing 開発者ガイド
Elastic Load Balancing コマンドラインインターフェイスの
インストール
エストまたは HTTPS リクエストです。この文書では Action を使用しますが、Operation もサポート
されており、他の AWS Query API と下位互換性があります。Query API については、Query リクエ
ストを使用した Elastic Load Balancing API の呼び出し (p. 52) を参照してください。
• SOAP API – SOAP ウェブサービスメッセージングプロトコルを使用して Elastic Load Balancing ウェ
ブサービスにアクセスすることができます。このインターフェイスについては、特定のサービスに対
するオペレーションおよびセキュリティモデルを定義するウェブサービス記述言語(WSDL)のド
キュメントで説明されています。WSDL で参照する XML スキーマドキュメントでは、SOAP リクエ
ストおよびレスポンス内のデータ型を厳密に定義しています。SOAP API の使用方法については、
SOAP API の使用 (p. 61) を参照してください。
• AWS SDK – AWS SDK を使用して、開発者は費用効果の高い、スケーラブルで信頼できる AWS イ
ンフラストラクチャサービスを利用するアプリケーションを構築できます。AWS SDK では、ライブ
ラリ、コード例、参照資料がダウンロード可能な単一のパッケージにまとめられているので、数分で
使用を開始できます。Java、.NET、PHP、または Ruby で SDK を使用して、プログラムにより
Elastic Load Balancing にアクセスすることができます。AWS SDK のダウンロードおよび使用につ
いては、SDK の使用 (p. 64) を参照してください。
Elastic Load Balancing コマンドラインインター
フェイスのインストール
このセクションでは、Elastic Load Balancing コマンドラインツールの設定方法について説明します。
コマンドラインツールのインストール手順
タスク 1: コマンドラインインターフェイスをダウンロードする (p. 45)
タスク 2: JAVA_HOME 環境変数を設定する (p. 46)
タスク 3: AWS_ELB_HOME 環境変数を設定する (p. 47)
タスク 4: AWS_CREDENTIAL_FILE 環境変数を設定する (p. 48)
タスク 5: リージョンを設定する (p. 49)
Note
慣例として、コマンドラインテキストには、汎用的な PROMPT> コマンドラインプロンプトを
プレフィックスとして付けます。お使いのコンピュータの実際のコマンドラインプロンプト
は、異なっている可能性があります。また、Linux/UNIX 固有のコマンドを示すには $ 、Windows
固有のコマンドを示すには C:\> を使用します。詳しい手順は説明しませんが、このツール
は Mac OS X でも機能します(Mac OS X のコマンドは Linux/UNIX のコマンドに似ていま
す)。コマンドからの出力例は、その直後にプレフィックスなしで表示されています。
タスク 1: コマンドラインインターフェイスをダウン
ロードする
コマンドラインツールは、Elastic Load Balancing Developer Tools website で ZIP ファイルとして入手
できます。このツールは Java で作成されており、Windows と Linux/UNIX/Mac OSX 用のシェルスク
リプトが含まれています。この ZIP ファイルは自己完結型で、インストールの必要はありません。ダウ
ンロードして解凍してください。
API Version 2012-06-01
45
Elastic Load Balancing 開発者ガイド
タスク 2: JAVA_HOME 環境変数を設定する
ツールを使用するには、若干のセットアップが必要です。以下にそのステップを説明します。
タスク 2: JAVA_HOME 環境変数を設定する
Elastic Load Balancing コマンドラインツールは、コンピュータ上の環境変数(JAVA_HOME)を読み取
り、Java ランタイムを見つけます。このコマンドラインツールを実行するには、Java バージョン 5 以
降が必要です。JRE または JDK のどちらでもかまいません。
JAVA_HOME 環境変数を設定するには
1.
2.
Java 1.5 以降がインストールされていない場合は、今すぐダウンロードしてインストールしてくだ
さい。Linux/UNIX と Windows を含め各種プラットフォーム用の JRE は、http://java.oracle.com/
で参照およびダウンロードすることができます。
JAVA_HOME として、(Java 実行ファイルが格納された)bin という名のサブディレクトリを含む
ディレクトリのフルパスを指定します。例えば、Java 実行ファイルが /usr/jdk/bin ディレクト
リにある場合は、JAVA_HOME を /usr/jdk と指定します。Java 実行ファイルが C:\jdk\bin に
ある場合は、JAVA_HOME を C:\jdk と指定します。
Note
Cygwin を使用している場合は、AWS_ELB_HOME および AWS_CREDENTIAL_FILE に
Linux/UNIX のパスを指定する必要があります(例: C:\usr\bin の代わりに /usr/bin)。ただ
し、JAVA_HOME には Windows のパスを指定します。また、値が引用符で囲まれている場
合や、スペースがエスケープ処理されている場合も、値にはスペースを入れないでくださ
い。
以下の Linux/UNIX の例では、JAVA_HOME として /usr/local/jre/bin ディレクトリの Java 実
行ファイルを指定しています。
$ export JAVA_HOME=/usr/local/jre
以下の Windows の例では、set および setx を使用して、JAVA_HOME として
C:\java\jdk1.6.0_6\bin ディレクトリの Java 実行ファイルを指定しています。set コマンド
は現在のセッションに対して JAVA_HOME を定義し、setx コマンドは変更を永続的なものにしま
す。
C:\> set JAVA_HOME=C:\java\jdk1.6.0_6
C:\> setx JAVA_HOME C:\java\jdk1.6.0_6
Note
• setx コマンドでは、= 記号を使用しません。
• よくある間違いですが、JAVA_HOME に bin ディレクトリを含めないでください。bin を
含めるとコマンドラインツールが動作しません。
• JAVA_HOME の値が引用符で囲まれている場合や、スペースがエスケープ処理されてい
る場合も、値にはスペースを入れないでください。値にスペース文字が含まれる場合、
コマンドラインツールは次の手順で JAVA_HOME をパスに追加するときにエラーを返し
ます。
3.
この Java ディレクトリは、パスの他のバージョンの Java の前に追加してください。
API Version 2012-06-01
46
Elastic Load Balancing 開発者ガイド
タスク 3: AWS_ELB_HOME 環境変数を設定する
Linux および UNIX の場合、PATH は以下の方法で編集できます。
$ export PATH=$JAVA_HOME/bin:$PATH
Windows の場合、構文はわずかに異なります。
C:\> set PATH=%JAVA_HOME%\bin;%PATH%
C:\> setx PATH %JAVA_HOME%\bin;%PATH%
Note
setx コマンドでは、= 記号を使用しません。
4.
Linux/UNIX では、$JAVA_HOME/bin/java -version コマンドを使って JAVA_HOME の設定をテ
ストします。
$ $JAVA_HOME/bin/java -version
java version "1.5.0_09"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_09-b03)
Java HotSpot(TM) Client VM (build 1.5.0_09-b03, mixed mode, sharing)
Windows では構文は異なりますが、出力は同様です。
C:\> %JAVA_HOME%\bin\java -version
java version "1.5.0_09"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_09-b03)
Java HotSpot(TM) Client VM (build 1.5.0_09-b03, mixed mode, sharing)
タスク 3: AWS_ELB_HOME 環境変数を設定する
コマンドラインツールは、環境変数(AWS_ELB_HOME)を使用して、サポートするライブラリを見つけ
ます。ツールを使用するには、この環境変数を設定する必要があります。
AWS_ELB_HOME 環境変数を設定するには
1.
AWS_ELB_HOME として、コマンドラインツールを解凍したディレクトリのパスを指定します。こ
のディレクトリの名前は、ElasticLoadBalancing-w.x.y.z(w、x、y、z はバージョンまたは
リリース番号)のようになっており、bin および lib という名前のサブディレクトリが含まれて
います。
以下の Linux/UNIX の例では、AWS_ELB_HOME として ElasticLoadBalancing-1.0.12.0 ディ
レクトリの /usr/local という名前のディレクトリを指定しています。
$ export AWS_ELB_HOME=/usr/local/ElasticLoadBalancing-1.0.12.0
以下の Windows の例では、AWS_ELB_HOME として ElasticLoadBalancing-1.0.12.0 ディレ
クトリの C:\CLIs という名前のディレクトリを指定しています。
API Version 2012-06-01
47
Elastic Load Balancing 開発者ガイド
タスク 4: AWS_CREDENTIAL_FILE 環境変数を設定する
C:\> set AWS_ELB_HOME=C:\CLIs\ElasticLoadBalancing-1.0.12.0
C:\> setx AWS_ELB_HOME C:\CLIs\ElasticLoadBalancing-1.0.12.0
2.
ツールの bin ディレクトリをシステムの PATH に追加します。このガイドのこれ以降の部分は、
この作業が実行済みであることを前提としています。
Linux および UNIX の場合、PATH は以下の方法で編集できます。
$ export PATH=$PATH:$AWS_ELB_HOME/bin
Windows の場合、構文はわずかに異なります。
C:\> set PATH=%PATH%;%AWS_ELB_HOME%\bin
C:\> setx PATH %PATH%;%AWS_ELB_HOME%\bin
タスク 4: AWS_CREDENTIAL_FILE 環境変数を設定
する
AWS にサインアップした後で、アカウントのアクセスキーを作成する必要があります。アクセスキー
はお客様の AccessKeyId と SecretAccessKey です。アカウントからコマンドが発行されているこ
とをコマンドラインツールに認識させるために、コマンドラインツールにこのアクセスキーを指定する
必要があります。コマンドラインツールは、ローカルシステムに作成された認証情報ファイルからアク
セスキーを読み取ります。
コマンドを発行するたびに --aws-credential-file パラメータを使ってアクセスキーを指定するこ
ともできますし、またはローカルシステムの認証情報を指す環境変数を設定しておくこともできます。
環境変数が正しく設定されていれば、コマンドを発行するたびに --aws-credential-file パラメー
タを指定する必要はありません。以下の手順では、証明書ファイルおよび対応する
AWS_CREDENTIAL_FILE 環境変数を作成する方法を説明しています。
ローカルシステムに認証情報ファイルを作成するには
1.
アクセスキーを取得します。
[Security Credentials] ページからはアクセスキー ID を取得することはできますが、シークレット
アクセスキーを取得することはできません。シークレットアクセスキーを紛失または忘れた場合、
新しいアクセスキーを作成する必要があります。アカウントに新しいアクセスキーを作成するに
は、[Security Credentials] ページに移動します。[Access Keys] セクションで [Create New Root
Key] をクリックします。
2.
3.
シークレットアクセスキーおよびアクセスキー ID を書き留めるか、保管します。
アクセスキー ID と秘密アクセスキーを、credential-file-path.template という名前のファ
イルに追加します。
a.
credential-file-path.template ファイルを開きます。このファイルは、コマンドライ
ンインターフェイス(CLI)アーカイブの中にあります。
b.
c.
d.
アクセスキー ID と秘密アクセスキーをコピーして、このファイルに貼り付けます。
ファイル名を変更して、コンピュータ上の使いやすい場所に保存します。
Linux を使用している場合は、以下のようにファイルへのアクセス許可を設定します。
$ chmod 600 credential-file-name
API Version 2012-06-01
48
Elastic Load Balancing 開発者ガイド
タスク 5: リージョンを設定する
4.
AWS_CREDENTIAL_FILE 環境変数として、作成したファイルの完全修飾パスを設定します。
以下の Linux/UNIX の例では、AWS_CREDENTIAL_FILE として myCredentialFile ディレクトリ
の /usr/local を指定しています。
$ export AWS_CREDENTIAL_FILE=/usr/local/myCredentialFile
以下の Windows の例では、AWS_CREDENTIAL_FILE として myCredentialFile.txt ディレク
トリの C:\aws を指定しています。
C:\> set AWS_CREDENTIAL_FILE=C:\aws\myCredentialFile.txt
C:\> setx AWS_CREDENTIAL_FILE C:\aws\myCredentialFile.txt
タスク 5: リージョンを設定する
Elastic Load Balancing ツールは、デフォルトでは
elasticloadbalancing.us-east-1.amazonaws.com サービスエンドポイント URL で指定された
米国東部(バージニア北部)リージョン(us-east-1)を使用します。インスタンスが別のリージョ
ンにある場合は、その場所を指定する必要があります。例えばインスタンスが欧州(アイルランド)
リージョンにある場合は、--region eu-west-1 パラメータを使用するか AWS_ELB_URL 環境変数を
設定することで、eu-west1 リージョンを使用する必要があります。
このセクションでは、サービスエンドポイント URL を変更することで別のリージョンを指定する方法
を説明します。
別のリージョンを指定するには
1. 利用可能なリージョンについては、Amazon Web Services General Reference のリージョンとエン
ドポイントを参照してください。
2. サービスエンドポイントを変更したい場合は、AWS_ELB_URL 環境変数を設定します。
• 以下の Linux/UNIX の例では、AWS_ELB_URL を EU – アイルランドリージョンに指定します。
$ export AWS_ELB_URL=https://elasticloadbalancing.eu-west-1.amazonaws.com
• 以下の Windows の例では、AWS_ELB_URL を 欧州(アイルランド)リージョンに指定します。
C:\> set AWS_ELB_URL=https://elasticloadbalancing.eu-west-1.amazonaws.com
C:\> setx AWS_ELB_URL https://elasticloadbalancing.eu-west-1.amazonaws.com
API Version 2012-06-01
49
Elastic Load Balancing 開発者ガイド
Elastic Load Balancing コマンドラインインターフェイス
(CLI)がインストールされているかどうかを確認します。
Elastic Load Balancing コマンドラインインターフェ
イス(CLI)がインストールされているかどうかを確
認します。
Elastic Load Balancing CLI のインストールと設定を確認するには
1.
Linux または Windows のワークステーションで、コマンドプロンプトを新しく開きます。
2.
elb-cmd コマンドを入力します。
3.
次のような出力が表示されます。
Command Name
Description
-----------elb-apply-security-groups-to-lb
Balancer.
----------Apply VPC security groups to Load
elb-associate-route53-hosted-zone
Route53 resource record.
Associate LoadBalancer DNS... a
elb-attach-lb-to-subnets
Subnets in VPC.
Attach existing LoadBalancer to
elb-configure-healthcheck
with a LoadBalancer.
Configure the parameters f...tered
elb-create-app-cookie-stickiness-policy Create an application-generated
stickiness policy.
elb-create-lb
Create a new LoadBalancer.
elb-create-lb-cookie-stickiness-policy
policy.
Create an LB-generated stickiness
elb-create-lb-listeners
Create a new LoadBalancer listener.
elb-create-lb-policy
LoadBalancerPolicyType.
Create a LoadBalancer poli...ed
elb-delete-lb
Deletes an existing LoadBalancer.
elb-delete-lb-listeners
LoadBalancer.
Deletes a listener on an existing
elb-delete-lb-policy
Delete a LoadBalancer policy.
elb-deregister-instances-from-lb
Balancer.
Deregisters instances from a Load
elb-describe-instance-health
Describes the state of instances.
elb-describe-lb-policies
Policies.
Describes the details of LoadBalancer
elb-describe-lb-policy-types
Describes the details of LoadBalancer
API Version 2012-06-01
50
Elastic Load Balancing 開発者ガイド
Elastic Load Balancing コマンドラインインターフェイス
(CLI)がインストールされているかどうかを確認します。
PolicyTypes.
elb-describe-lbs
of LoadBalancers.
Describes the state and properties
elb-detach-lb-from-subnets
Subnets in VPC.
Detach existing LoadBalancer from
elb-disable-zones-for-lb
LoadBalancer.
Remove availability zones from an
elb-disassociate-route53-hosted-zone
Route53 resource record.
Disassociate LoadBalancer ... a
elb-enable-zones-for-lb
LoadBalancer.
Add availability zones to existing
elb-register-instances-with-lb
Registers instances to a LoadBalancer.
elb-set-lb-listener-ssl-cert
LoadBalancer port.
Set the SSL Certificate fo...ecified
elb-set-lb-policies-for-backend-server
servers.
Set LoadBalancer policies for backend
elb-set-lb-policies-of-listener
port.
Set LoadBalancer policies for a
version
and the API.
Prints the version of the CLI tool
For help on a specific command, type '<commandname> --help'
これで、Elastic Load Balancing コマンドラインインターフェイスツールのインストールと設定は完了
です。コマンドラインインターフェイス(CLI)を使用して Elastic Load Balancing へのアクセスを開
始する準備が整いました。Elastic Load Balancing のすべてのコマンドについては、Elastic Load Balancing
Quick Reference Card を参照してください。
API Version 2012-06-01
51
Elastic Load Balancing 開発者ガイド
Query リクエストを使用した Elastic Load Balancing API
の呼び出し
Query リクエストを使用した Elastic Load Balancing
API の呼び出し
Topics
• Query リクエストへの署名 (p. 52)
Query リクエストは HTTP または HTTPS リクエストであり、HTTP 動詞の GET または POST と、呼
び出す API を指定する Action または Operation という Query パラメータを使用します。この文書では
Action を使用しますが、Operation もサポートされており、他のアマゾン ウェブ サービス(AWS)の
Query API と下位互換性があります。
Query リクエストを使用して API を呼び出すことは、最も直接的にウェブサービスにアクセスできる
方法ですが、リクエストに署名するためのハッシュの生成やエラー処理など、低レベルの詳細をアプリ
ケーションで扱う必要があります。Query リクエストを使ってサービスを呼び出すことのメリットは、
API のすべての機能にアクセスできることが保証されることです。
Note
AWS で使用される Query インターフェイスは、REST に似ていますが、REST の方針に完全
に準拠しているわけではありません。
Query リクエストへの署名
AWS で使用される署名の形式は、これまでにセキュリティと使いやすさの向上が図られてきています。
Elastic Load Balancing では署名バージョン 2 と署名バージョン 4 がサポートされています。Elastic
Load Balancing を使用する新しいアプリケーションを作成する場合は、署名バージョン 4 を使用して
Query リクエストに署名することをお勧めします。
署名バージョン 4 を使用して署名を作成する方法については、『AWS General Reference』の「Signature
Version 4 Signing Process を参照してください。
以下のセクションでは、署名バージョン 2 を使用して Query リクエストを作成するために必要な手順
について説明します。
Elastic Load Balancing Query リクエストの構造
Elastic Load Balancing では、署名バージョン 2 向けの形式の各 HTTP または HTTPS Query リクエス
トは、以下の要素を含んでいる必要があります。
• Endpoint – HTTP リクエストのホスト部分とも呼ばれます。Query リクエストの送信先となるコン
ピュータの DNS 名です。これは AWS のリージョンごとに異なります。ウェブサービスでサポート
されているすべてのエンドポイントのリストは、『Amazon Web Services General Reference』の
「Regions and Endpointsを参照してください。
次の例に示されているエンドポイント elasticloadbalancing.amazonaws.com は、デフォルト
のエンドポイントであり、 リージョン us-east-1 に対応しています。
• Action – ウェブサービスに実行させるアクションを指定します。
この値により、リクエスト内で使用されるパラメータが決まります。Elastic Load Balancing のアク
ションとパラメータの詳細については、Elastic Load Balancing API Referenceを参照してください。
下記の例で示されているアクション DescribeLoadBalancers では、1 つまたは複数のロードバラ
ンサーに関する説明をウェブサービスが返しています。
• 必須およびオプションのパラメータ – ウェブサービスの各アクションには、API 呼び出しを定義する
必須およびオプションのパラメータのセットがあります。すべてのウェブサービスアクションに含め
る必要があるパラメータのリストについては、「Common Parametersを参照してください。特定の
API Version 2012-06-01
52
Elastic Load Balancing 開発者ガイド
Query リクエストへの署名
アクションのパラメータの詳細については、『Elastic Load Balancing API Reference』にあるそのア
クションのエントリを参照してください。
Query リクエストを認証するには、以下の共通パラメータが必須です。
• AccessKeyId – AWS アカウントにサインアップする際に作成するアクセスキー。アクセスキー ID
を紛失したか忘れた場合は、[Security Credentials] ページに移動することで新しいアクセスキーを
作成することができます。[Access Keys] セクションで [Create New Root Key] をクリックします。
• Timestamp – リクエストを行う時刻です。これを Query リクエストに含めることは、第三者がリ
クエストを傍受してウェブサービスに送信し直すのを防止するのに役立ちます。
• SignatureVersion – 使用する AWS 署名プロトコルのバージョン。Elastic Load Balancing では署名
バージョン 2 と署名バージョン 4 がサポートされています。
• SignatureMethod – 署名の計算に使用するハッシュベースのプロトコル。バージョン 2 の AWS 署
名では、HMAC-SHA1 または HMAC-SHA256 を使用できます。
• Signature – 署名が有効であり、途中で改ざんされていないことを証明するための計算値。
署名バージョン 2 を使用した Query リクエストの署名手順
Query リクエストに署名する前に、リクエストを完全に明確なフォーマットにする必要があります。こ
れが必要なのは、Query リクエストをフォーマットする正しい方法が複数存在しており、生成される
HMAC 署名はその違いによって異なるからです。署名する前にリクエストを明確で標準化されたフォー
マットにすることで、与えられたリクエストに対してアプリケーションとウェブサービスが計算する署
名は確実に同じものになります。
署名するための明確な文字列は、Query リクエストの構成要素を以下のように連結することで組み立て
られます。例えば、DescribeLoadBalancers API への次のような呼び出しに署名するための文字列
を生成してみます。
https://elasticloadbalancing.amazonaws.com?Action=DescribeLoadBalancers
&Version=2011-01-01
&AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE
&SignatureVersion=2
&SignatureMethod=HmacSHA256
&Timestamp=2011-10-03T15%3A19%3A30
署名(署名バージョン 2)する文字列を作成するには
1.
最初にリクエスト方法(GET または POST)を指定し、その後に改行文字を置きます。(この後
の例では、人間が読みやすい形式として改行文字を \n で表します)。
GET\n
2.
HTTP ホストヘッダーを小文字で追加し、その後に改行文字を置きます。ポート情報は、プロトコ
ルの標準ポート(HTTP ではポート 80、HTTPS ではポート 443)であれば省略しますが、標準以
外のポートの場合は含めます。
elasticloadbalancing.amazonaws.com\n
3.
URI の絶対パス部分を URL エンコードしたもの(HTTP ホストヘッダーから、クエリ文字列パラ
メータの先頭にある疑問符(?)の間に指定するものすべて)を追加し、その後に改行文字を置き
ます。絶対パスが空値の場合は、フォワードスラッシュ(/)を使用します。
/\n
API Version 2012-06-01
53
Elastic Load Balancing 開発者ガイド
Query リクエストへの署名
4.
クエリ文字列の構成要素(名前と値のペア、先頭の疑問符(?)は含まない)を RFC 3986 に従っ
て URL エンコードした UTF-8 形式の文字(16 進数文字は大文字)で追加し、辞書式バイト順で
並べ替えます。辞書式バイト順では大文字と小文字が区別されます。
パラメータ名とその値は等号(=)(ASCII 文字 61)で区切ります(パラメータの値が空値の場合
も含む)。パラメータと値のペア間は、アンパサンド(&)(ASCII 文字 38)で区切ります。
一部の API アクションはパラメータのリストを取ります。これらのリストは param.member.n と
いう表記法を使用して指定されます。値 n は 1 から始まる整数です。すべてのパラメータリスト
はこの表記法に従う必要があります。パラメータが 1 つしか含まれないリストも同様です。例え
ば、ロードバランサー名のクエリパラメータリストの外観を次に示します。
&LoadBalancerNames.member.1=my-test-loadbalancer-1
&LoadBalancerNames.member.2=my-test-loadbalancer-2
予約済みのすべての文字は、エスケープする必要があります。予約されていないすべての文字は、
エスケープしてはいけません。パラメータとその値を連結して、間に空白のない 1 つの長い文字列
にします。パラメータ値の中に空白を含めることはできますが、%20 に URL エンコードする必要
があります。連結される文字列の中で、ピリオド(.)はエスケープしません。ピリオドは、RFC
3986 では非予約文字として扱われるため、URL エンコードされません。
Note
RFC 3986 では、ASCII 制御文字、拡張 UTF-8 文字、および RFC 1738 によって予約され
ているその他の文字によって何が行われるか指定されていません。文字列値にはどのよう
な値でも渡される可能性があるので、これらのその他の文字は %XY のようにパーセント
エンコードする必要があります。ここで X と Y は大文字の 16 進数文字を表します。拡張
UTF-8 文字は、%XY%ZA... という形式(これは複数バイトを扱います)になります。空
白は、'%20' で表します。空白をプラス記号(+)でエンコードしてはいけません。エラー
が発生します。
次の例に、上記の方法で処理した Elastic Load Balancing API、DescribeLoadBalancers への呼
び出しのクエリ文字列構成要素を示します。
AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE&Action=DescribeLoadBalancers&Signature
Method=HmacSHA256&SignatureVersion=2&Timestamp=2011-10-03T15%3A19%3A30&Ver
sion=2012-06-01
5.
DescribeLoadBalancers への呼び出しに署名する文字列は、次のような形式になります。
GET\n
elasticloadbalancing.amazonaws.com%0A
/\n
AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE&Action=DescribeLoadBalancers&Signature
Method=HmacSHA256&SignatureVersion=2&Timestamp=2011-10-03T15%3A19%3A30&Ver
sion=2012-06-01
API Version 2012-06-01
54
Elastic Load Balancing 開発者ガイド
Query リクエストへの署名
AWS 署名バージョン 2 の計算
標準化された文字列を 署名バージョン 2 を使用した Query リクエストの署名手順 (p. 53) で説明され
ているとおりに作成したら、HMAC-SHA1 または HMAC-SHA256 プロトコルを使用してハッシュベー
スのメッセージ認証コード(HMAC)を作成することにより、署名を計算します。HMAC-SHA256 プ
ロトコルの方を使用することを推奨します。
次に、以下に示すように、返された値を Query リクエストに署名パラメータとして加えます。これで、
署名されたこのリクエストを HTTP または HTTPS 呼び出しで使用できます。ウェブサービスから、呼
び出しの結果が応答としてフォーマットされて返されます。
https://elasticloadbalancing.amazonaws.com?AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE&Ac
tion=DescribeLoadBalancers&SignatureMethod=HmacSHA256&SignatureVer
sion=2&Timestamp=2011-10-03T15%3A19%3A30&Version=2011-01-01&Signa
ture=lptk88A0LEP2KfwM3ima33DUjY0e%2FyfF7YfitJ%2FQw6I%3D
AWS SDK には、Query リクエスト署名を生成するための関数が用意されています。AWS SDK for Java
を使用する例については、「Java SDK を使用した Query リクエストへの署名 (p. 59)を参照してくだ
さい。
Query リクエスト構造および Query 応答構造の例
Query リクエスト構造の例
Elastic Load Balancing のドキュメントでは、GET リクエストの例をエンコードせずに読みやすくして
います。Elastic Load Balancing のドキュメントでは次の構文解析形式で GET の例を表すことで、さら
に読みやすくしています。
https://elasticloadbalancing.amazonaws.com/?LoadBalancerNames.member.1=my-testloadbalancer-1
&MaxRecords=20
&Action=DescribeLoadBalancers
&AWSAccessKeyId=AccessKeyID
&Timestamp=2012-01-28T21%3A49%3A59.000Z
&SignatureVersion=2
&SignatureMethod=HmacSHA256
&Signature=calculated value
最初の行は、リクエストのエンドポイントを表しています。これはリクエストが作用するリソースで
す。
エンドポイントの後ろにはクエスチョンマーク(?)が付いていますが、これはエンドポイントとパラ
メータを区別するものです。各パラメータは、アンパーサンド(&)で区切られています。
Action パラメータは、実行するアクションを示します(アクションの一覧については、「Elastic Load
Balancing API Reference」を参照)。すべての Query リクエストに共通するその他のパラメータの一
覧については、『Elastic Load Balancing API Reference』の「Common Parametersを参照してくださ
い。
Elastic Load Balancing のドキュメントで示す Query リクエストの例では、認証に関連するパラメータ
を省略し、各アクションに関連するパラメータに焦点を当てて説明しています。省略したパラメータの
部分は、実際のリクエストでは複数のパラメータであるため、リテラル文字列 &AUTHPARAMS で示され
ています。
認証パラメータをリストしない場合、上記の例は次の例のようになります。
API Version 2012-06-01
55
Elastic Load Balancing 開発者ガイド
Query リクエストへの署名
https://elasticloadbalancing.amazonaws.com/?LoadBalancerNames.member.1=my-testloadbalancer
&LoadBalancerNames.member.2=www-example-com
&MaxRecords=20
&Action=DescribeLoadBalancers
&AUTHPARAMS
Query 応答構造の例
Elastic Load Balancing は、Query リクエストへの応答として、Elastic Load Balancing WSDL の一部と
して定義されている XML スキーマに準拠した XML データ構造を返します。XML レスポンスの構造は、
関連するリクエストに固有です。一般的に、レスポンスのデータタイプの名前は、実行されたオペレー
ション、およびデータタイプがコンテナかどうか(子を持つことができるかどうか)に基づいて付けら
れます。コンテナの例としては <LoadBalancers> があります(後述の例を参照)。member 要素は
コンテナの子で、そのコンテンツはコンテナの役割に応じて異なります。
AWS からの応答にはすべて、要素、 ResponseMetadata が含まれています。さらに、この要素には
RequestId という文字列要素が含まれています。これは単に AWS でこのリクエストに割り当てられ
ている一意の識別子であり、トラッキングおよびトラブルシューティングの目的に使用します。
Query リクエストが成功すると、次の例のような応答が取得されます。
<DescribeLoadBalancersResponse xmlns="http://elasticloadbalancing.amazon
aws.com/doc/2012-06-01/">
<DescribeLoadBalancersResult>
<LoadBalancerDescriptions>
<member>
<SecurityGroups/>
<CreatedTime>2013-01-24T20:51:35.710Z</CreatedTime>
<LoadBalancerName>my-test-loadbalancer</LoadBalancerName>
<HealthCheck>
<Interval>30</Interval>
<Target>HTTP:80/</Target>
<HealthyThreshold>10</HealthyThreshold>
<Timeout>5</Timeout>
<UnhealthyThreshold>2</UnhealthyThreshold>
</HealthCheck>
<ListenerDescriptions>
<member>
<PolicyNames/>
<Listener>
<Protocol>HTTP</Protocol>
<LoadBalancerPort>80</LoadBalancerPort>
<InstanceProtocol>HTTP</InstanceProtocol>
<InstancePort>80</InstancePort>
</Listener>
</member>
<member>
<PolicyNames>
<member>AWSConsole-SSLNegotiationPolicy-my-test-loadbalancer</mem
ber>
</PolicyNames>
<Listener>
<Protocol>HTTPS</Protocol>
<LoadBalancerPort>443</LoadBalancerPort>
<InstanceProtocol>HTTP</InstanceProtocol>
<SSLCertificateId>arn:aws:iam::803981987763:server-certific
API Version 2012-06-01
56
Elastic Load Balancing 開発者ガイド
Query リクエストへの署名
ate/scert</SSLCertificateId>
<InstancePort>80</InstancePort>
</Listener>
</member>
</ListenerDescriptions>
<Instances>
<member>
<InstanceId>i-48bb5d38</InstanceId>
</member>
<member>
<InstanceId>i-78bc5a08</InstanceId>
</member>
<member>
<InstanceId>i-98e204e8</InstanceId>
</member>
<member>
<InstanceId>i-ccbb5dbc</InstanceId>
</member>
</Instances>
<Policies>
<AppCookieStickinessPolicies/>
<OtherPolicies>
<member>AWSConsole-SSLNegotiationPolicy-my-test-loadbalancer</member>
</OtherPolicies>
<LBCookieStickinessPolicies/>
</Policies>
<AvailabilityZones>
<member>us-east-1e</member>
</AvailabilityZones>
<CanonicalHostedZoneName>my-test-loadbalancer-1086370712.us-east1.elb.amazonaws.com</CanonicalHostedZoneName>
<CanonicalHostedZoneNameID>Z3DZXE0Q79N41H</CanonicalHostedZoneNameID>
<Scheme>internet-facing</Scheme>
<SourceSecurityGroup>
<OwnerAlias>amazon-elb</OwnerAlias>
<GroupName>amazon-elb-sg</GroupName>
</SourceSecurityGroup>
<DNSName>my-test-loadbalancer-1086370712.us-east-1.elb.amazonaws.com</DNS
Name>
<BackendServerDescriptions/>
<Subnets/>
</member>
<member>
<SecurityGroups/>
<CreatedTime>2013-02-08T00:17:08.810Z</CreatedTime>
<LoadBalancerName>www-example-com</LoadBalancerName>
<HealthCheck>
<Interval>30</Interval>
<Target>HTTP:80/index.html</Target>
<HealthyThreshold>10</HealthyThreshold>
<Timeout>5</Timeout>
<UnhealthyThreshold>2</UnhealthyThreshold>
</HealthCheck>
<ListenerDescriptions>
<member>
<PolicyNames/>
<Listener>
API Version 2012-06-01
57
Elastic Load Balancing 開発者ガイド
Query リクエストへの署名
<Protocol>HTTP</Protocol>
<LoadBalancerPort>80</LoadBalancerPort>
<InstanceProtocol>HTTP</InstanceProtocol>
<InstancePort>80</InstancePort>
</Listener>
</member>
</ListenerDescriptions>
<Instances/>
<Policies>
<AppCookieStickinessPolicies/>
<OtherPolicies/>
<LBCookieStickinessPolicies/>
</Policies>
<AvailabilityZones>
<member>us-east-1a</member>
</AvailabilityZones>
<CanonicalHostedZoneName>www-example-com-512613397.us-east1.elb.amazonaws.com</CanonicalHostedZoneName>
<CanonicalHostedZoneNameID>Z3DZXE0Q79N41H</CanonicalHostedZoneNameID>
<Scheme>internet-facing</Scheme>
<SourceSecurityGroup>
<OwnerAlias>amazon-elb</OwnerAlias>
<GroupName>amazon-elb-sg</GroupName>
</SourceSecurityGroup>
<DNSName>www-example-com-512613397.us-east-1.elb.amazonaws.com</DNSName>
<BackendServerDescriptions/>
<Subnets/>
</member>
</LoadBalancerDescriptions>
</DescribeLoadBalancersResult>
<ResponseMetadata>
<RequestId>6fbe234c-80f9-11e2-a17f-9148EXAMPLE</RequestId>
</ResponseMetadata>
</DescribeLoadBalancersResponse>
リクエスト署名バージョン 2 のトラブルシューティング
このセクションでは、Query リクエストへの署名を生成するコードを最初に作成するときに発生する可
能性のあるエラーコードについて説明します。
ウェブサービスでの SignatureDoesNotMatch 署名エラー
ウェブサービスで署名値を再計算することによってリクエストの署名を検証しようとしたときに、生成
された値がリクエストに付加されている署名と一致しないと、次のエラー応答が返されます。これは、
リクエストの送信時とウェブサービスエンドポイントへの到着時との間で、リクエストが変更された
(そのような場合を検出するために署名は設計されています)か、署名の計算が誤っているために発生
している可能性があります。次のエラーメッセージの一般的な原因としては、Amazon S3 バケット名
でコロン(:)やフォワードスラッシュ(/)といった URL のエンコード文字を忘れているなど、署名す
る文字列を適切に作成していないことがあります。
<ErrorResponse xmlns="http://elasticmapreduce.amazonaws.com/doc/2009-03-31">
<Error>
<Type>Sender</Type>
<Code>SignatureDoesNotMatch</Code>
API Version 2012-06-01
58
Elastic Load Balancing 開発者ガイド
Query リクエストへの署名
<Message>The request signature we calculated does not match the signature
you provided.
Check your AWS Secret Access Key and signing method.
Consult the service documentation for details.</Message>
</Error>
<RequestId>7589637b-e4b0-11e0-95d9-639f87241c66</RequestId>
</ErrorResponse>
ウェブサービスでの IncompleteSignature 署名エラー
以下のエラーは、署名で情報が欠落しているか、または形式が不適切であることを示します。
<ErrorResponse xmlns="http://elasticmapreduce.amazonaws.com/doc/2009-03-31">
<Error>
<Type>Sender</Type>
<Code>IncompleteSignature</Code>
<Message>Request must contain a signature that conforms to AWS standards</Mes
sage>
</Error>
<RequestId>7146d0dd-e48e-11e0-a276-bd10ea0cbb74</RequestId>
</ErrorResponse>
Java SDK を使用した Query リクエストへの署名
次の例では、AWS SDK for Java の amazon.webservices.common パッケージを使用して、AWS 署名
バージョン 2 の Query リクエスト署名を作成します。そのために、RFC 2104 準拠の HMAC 署名を作
成しています。HMAC の詳細情報については、「HMAC: Keyed-Hashing for Message Authenticationを
参照してください。
Note
このケースでは、サンプルの実装として Java を使用しています。Query リクエストに署名す
るために HMAC アルゴリズムを実装するのに、好みのプログラム言語を選択できます。
import
import
import
import
java.security.SignatureException;
javax.crypto.Mac;
javax.crypto.spec.SecretKeySpec;
com.amazonaws.util.*;
/**
* This class defines common routines for generating
* authentication signatures for AWS Platform requests.
*/
public class Signature {
private static final String HMAC_SHA256_ALGORITHM = "HmacSHA256";
/**
* Computes RFC 2104-compliant HMAC signature.
* * @param data
* The signed data.
API Version 2012-06-01
59
Elastic Load Balancing 開発者ガイド
Query リクエストへの署名
* @param key
* The signing key.
* @return
* The Base64-encoded RFC 2104-compliant HMAC signature.
* @throws
* java.security.SignatureException when signature generation fails
*/
public static String calculateRFC2104HMAC(String data, String key)
throws java.security.SignatureException
{
String result;
try {
// Get an hmac_sha256 key from the raw key bytes.
SecretKeySpec signingKey = new SecretKeySpec(key.getBytes("UTF8"),
HMAC_SHA256_ALGORITHM);
// Get an hmac_sha256 Mac instance and initialize with the signing
key.
Mac mac = Mac.getInstance(HMAC_SHA256_ALGORITHM);
mac.init(signingKey);
// Compute the hmac on input data bytes.
byte[] rawHmac = mac.doFinal(data.getBytes("UTF8"));
// Base64-encode the hmac by using the utility in the SDK
result = BinaryUtils.toBase64(rawHmac);
} catch (Exception e) {
throw new SignatureException("Failed to generate HMAC : " + e.get
Message());
}
return result;
}
}
API Version 2012-06-01
60
Elastic Load Balancing 開発者ガイド
SOAP API の使用
SOAP API の使用
エンドポイント
この製品のリージョンおよびエンドポイントについては、Amazon Web Services General Reference の
リージョンとエンドポイントを参照してください。
WSDL およびスキーマの定義
SOAP ウェブサービスメッセージングプロトコルを使用して Elastic Load Balancing ウェブサービスに
アクセスすることができます。このインターフェイスについては、特定のサービスに対するオペレー
ションおよびセキュリティモデルを定義するウェブサービス記述言語(WSDL)のドキュメントで説明
されています。WSDL で参照する XML スキーマドキュメントでは、SOAP リクエストおよびレスポン
ス内のデータ型を厳密に定義しています。WSDL および SOAP については、ウェブサービスのリファ
レンス (p. 64) を参照してください。
Note
Elastic Load Balancing は、HTTPS での SOAP のみをサポートしています。
すべてのスキーマにはバージョン番号があります。バージョン番号は、スキーマファイルの URL 内お
よびスキーマのターゲットネームスペース内に表示されます。これによりバージョン番号に基づいてリ
クエストを区別できるので、アップグレードが容易に行えるようになります。
プログラミング言語のサポート
Elastic Load Balancing 内の SOAP リクエストおよび応答は最新の標準に従っているので、ほぼすべて
のプログラミング言語を使用できます。
Note
AWS では、Elastic Load Balancing の SoapRequestQuery の代わりに言語固有の API を使用し
てアプリケーションを構築するソフトウェア開発者向けに、ライブラリ、サンプルコード、
チュートリアルなどのリソースをご用意しています。このライブラリには、(Elastic Load
Balancing の SoapRequestQuery には含まれない)リクエストの認証、リクエストの再試行、
エラー処理などの基本的な機能があるため、簡単に使い始めることができます。次の言語のラ
イブラリとリソースがあります。
• Java
• PHP
• Python
• Ruby
• Windows および .NET
すべての言語のライブラリとサンプルコードについては、「 Sample Code & Librariesを参照し
てください。
リクエストの署名認証について
Elastic Load Balancing は最新の WS-Security 標準に準拠しており、整合性および非否認性を確保する
ために SOAP リクエストのハッシュ化および署名を行っていただく必要があります。WS-Security は、
API Version 2012-06-01
61
Elastic Load Balancing 開発者ガイド
リクエストの署名認証について
さまざまなレベルのセキュリティを実装するときに使用するプロファイルを定義します。セキュリティ
で保護されている SOAP メッセージには BinarySecurityToken プロファイルを使用します。これは、
X.509 証明書と RSA パブリックキーで構成されます。
次に、安全でない RunInstances オペレーション(例として EC2 を使用)の内容を示します。
<Runinstances xmlns="http://ec2.amazonaws.com/doc/2009-05-05">
<instancesSet>
<item>
<imageId>ami-60a54009</imageId>
<minCount>1</minCount>
<maxCount>3</maxCount>
</item>
</instancesSet>
<groupSet/>
</RunInstances>
リクエストのセキュリティを高めるために、BinarySecurityToken 要素を追加します。
リクエストの安全なバージョンを、以下に示します。
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header>
<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis200401-wss-wssecurity-secext-1.0.xsd">
<wsse:BinarySecurityToken
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wsse
curity-utility-1.0.xsd"
EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wsssoap-message-security-1.0#Base64Binary"
ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-X.509token-profile-1.0#X.509v3"
wsu:Id="CertId-1064304">....many, many lines of base64 encoded
X.509 certificate...</wsse:BinarySecurityToken>
<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xmlexc-c14n#"></ds:CanonicalizationMethod>
<ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsasha1"></ds:SignatureMethod>
<ds:Reference URI="#id-17984263">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-excc14n#"></ds:Transform>
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmld
sig#sha1"></ds:DigestMethod>
<ds:DigestValue>0pjZ1+TvgPf6uG7o+Yp3l2YdGZ4=</ds:DigestValue>
</ds:Reference>
<ds:Reference URI="#id-15778003">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-excc14n#"></ds:Transform>
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmld
API Version 2012-06-01
62
Elastic Load Balancing 開発者ガイド
応答構造
sig#sha1"></ds:DigestMethod>
<ds:DigestValue>HhRbxBBmc2OO348f8nLNZyo4AOM=</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>bmVx24Qom4kd9QQtclxWIlgLk4QsQBPaKESi79x479xgbO9PEStXMi
HZuBAi9luuKdNTcfQ8UE/d
jjHKZKEQRCOlLVy0Dn5ZL1RlMHsv+OzJzzvIJFTq3LQKNrzJzsNe</ds:SignatureValue>
<ds:KeyInfo Id="KeyId-17007273">
<wsse:SecurityTokenReference
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401wss-wssecurity-utility-1.0.xsd" wsu:Id="STRId-22438818">
<wsse:Reference URI="#CertId-1064304"
ValueType="http://docs.oasisopen.org/wss/2004/01/oasis-200401-wss-X.509-token-profile-1.0#X.509v3">
</wsse:Reference>
</wsse:SecurityTokenReference>
</ds:KeyInfo>
</ds:Signature>
<wsu:Timestamp
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wsswssecurity-utility-1.0.xsd" wsu:Id="id-17984263">
<wsu:Created>2006-06-09T10:57:35Z</wsu:Created>
<wsu:Expires>2006-06-09T11:02:35Z</wsu:Expires>
</wsu:Timestamp>
</wsse:Security>
</SOAP-ENV:Header>
Elastic Load Balancing が提供するライブラリまたは別のベンダーのライブラリによって生成されたリ
クエストに対してこれを照合する場合は、以下が最も重要な要素になります。
要素
• BinarySecurityToken – base64 でエンコードされた PEM 形式の X.509 証明書が含まれます。
• Signature – 正規化、署名アルゴリズム、およびダイジェストを使用して作成された XML デジタル署
名が含まれます。
• Timestamp – 反射攻撃を避けるために、Elastic Load Balancing へのリクエストはこの値の 5 分間有
効です
応答構造
Elastic Load Balancing サービスは、リクエストへの応答として、Elastic Load Balancing WSDL の一部
として定義されている XML スキーマに準拠した XML データ構造を返します。XML 応答の構造は、関
連するリクエストに固有です。
以下に応答の例を示します(例として EC2 を使用)。
<RuninstancesResponse xmlns="http://ec2.amazonaws.com/doc/2009-05-05">
<reservationId>r-47a5402e</reservationId>
<ownerId>UYY3TLBUXIEON5NQVUUX6OMPWBZIQNFM</ownerId>
<groupSet>
<item>
<groupId>default</groupId>
</item>
API Version 2012-06-01
63
Elastic Load Balancing 開発者ガイド
ウェブサービスのリファレンス
</groupSet>
<instancesSet>
<item>
<InstanceId>i-2ba64342</InstanceId>
<imageId>ami-60a54009</imageId>
<InstanceState>
<code>0</code>
<name>pending</name>
</InstanceState>
<DNSName></DNSName>
</item>
<item>
<InstanceId>i-2bc64242</InstanceId>
<imageId>ami-60a54009</imageId>
<InstanceState>
<code>0</code>
<name>pending</name>
</InstanceState>
<DNSName>ec2-67-202-51-176.compute-1.&api-domain;</DNSName>
</item>
<item>
<InstanceId>i-2be64332</InstanceId>
<imageId>ami-60a54009</imageId>
<InstanceState>
<code>0</code>
<name>pending</name>
</InstanceState>
<DNSName>ec2-67-202-51-122.compute-1.&api-domain;</DNSName>
<keyName>example-key-name</keyName>
<instanceType>m1.small</instanceType>
<launchTime>2007-08-07T11:54:42.000Z</launchTime>
</item>
</instancesSet>
</RunInstancesResponse>
ウェブサービスのリファレンス
ウェブサービスの使用については、以下のリソースを参照してください。
• ウェブサービス記述言語(WSDL)
• WS-Security BinarySecurityToken プロファイル
SDK の使用
以下の表は、Elastic Load Balancing へのプログラムによるアクセスに使用できる SDK およびサード
パーティライブラリをまとめたものです。
API Version 2012-06-01
64
Elastic Load Balancing 開発者ガイド
SDK の使用
アクセスのタイプ
説明
AWS SDK
AWS は以下の SDK を提供しています:
• Java 用 AWS SDK のドキュメント
• .NET 用 AWS SDK のドキュメント
• PHP 用 AWS SDK のドキュメント
• Ruby 用 AWS SDK のドキュメント
サードパーティライブラ AWS 開発者コミュニティの開発者も独自のライブラリを提供しており、以
リ
下の AWS 開発者センターから入手できます:
• AWS Java 開発者センター
• AWS PHP 開発者センター
• AWS Python 開発者センター
• AWS Ruby 開発者センター
• AWS Windows および .NET 開発者センター
API Version 2012-06-01
65
Elastic Load Balancing 開発者ガイド
ロードバランサーのリスナーの設定
一般的なウェブアプリケーション通信は、ハードウェアとソフトウェアの複数のレイヤーを通過しま
す。各レイヤーは固有の通信機能を提供します。通信機能のコントロールはあるレイヤーから次のレイ
ヤーへと順番に渡されます。開放型システム間相互接続(OSI)は、これらのレイヤーでプロトコルと
呼ばれる通信の標準形式を実装するためのモデルフレームワークを定義します。OSI モデルのレイヤー
については、http://en.wikipedia.org/wiki/OSI_model を参照してください。
Elastic Load Balancing を使用する場合、レイヤー 4 とレイヤー 7 の 2 つのレイヤーに関する基本的な
理解が必要です。レイヤー4はトランスポートレイヤーで、ロードバランサーを介したクライアントと
バックエンドインスタンスとの間の Transmission Control Protocol(TCP)接続を記述します。レイ
ヤー4はロードバランサーで設定可能な一番下のレベルです。レイヤー 7 はアプリケーションレイヤー
で、クライアントからロードバランサー、およびロードバランサーからバックエンドインスタンスへの
ハイパーテキスト転送プロトコル(HTTP)および HTTPS(セキュアな HTTP)接続の使用について記
述します。
Elastic Load Balancing は、HTTP、HTTPS、TCP、および Secure Sockets Layer(SSL)プロトコル
を使用したアプリケーションの負荷分散をサポートします。SSL プロトコルは、クライアントとバッ
クエンドサーバーの間のセキュアな接続を確立し、クライアントとバックエンドサーバーの間で受け渡
しされるすべてのデータのプライバシーと完全性を保証します。フロントエンド接続(クライアントか
らロードバランサー)とバックエンド接続(ロードバランサーからバックエンドインスタンス)のプロ
トコルは別々に指定できます。フロントエンド接続に HTTPS/SSL プロトコルを選択した場合、インス
タンスへのバックエンド接続はプレーンテキストまたは HTTPS/SSL にできます。フロントエンド接続
に HTTP を選択した場合、インスタンスへのバックエンド接続は HTTP または HTTPS にできます。
HTTPS/SSL および HTTP/TCP 接続の両方に使用できるポートは、25、80、443、および 1024-65535
です。
Elastic Load Balancing の使用を開始する前に、ロードバランサーのリスナーを設定する必要がありま
す。リスナーとはクライアント接続リクエストをリッスンするプロセスです。リスナーは、フロントエ
ンド(ロードバランサー)およびバックエンド(バックエンドインスタンス)接続用のプロトコルと
ポート番号を使用して設定します。
デフォルトでは、ロードバランサーはフロントエンド接続とバックエンド接続にポート 80 で HTTP プ
ロトコルを使用するよう設定されています。デフォルト設定を変更する場合は、AWS マネジメントコ
ンソール、Query API、コマンドラインインターフェイス(CLI)または SDK を使用します。
API Version 2012-06-01
66
Elastic Load Balancing 開発者ガイド
Elastic Load Balancing での TCP/SSL プロトコルの使用
Elastic Load Balancing での TCP/SSL プロトコル
の使用
フロントエンド接続とバックエンド接続の両方に TCP(layer 4)を使用する場合、ロードバランサー
はヘッダーを変更せずにバックエンドインスタンスにリクエストを転送します。ロードバランサーはク
ライアントとバックエンドインスタンスの間のトラフィックを傍受するため、バックエンドインスタン
ス内のアクセスログには、発信元クライアントの IP アドレスでなく、ロードバランサーの IP アドレス
が含まれています。Proxy Protocol を有効にして、クライアントのポート番号、発信元 IP アドレス、
および送信先 IP アドレスなどの接続情報が含まれるヘッダーが追加されるようにします。これにより、
ヘッダーがリクエストの一部としてバックエンドインスタンスに送信されます。接続情報を取得するに
は、リクエストの 1 行めを解析します。Proxy Protocol の有効化については、「プロキシプロトコルサ
ポートの有効化または無効化 (p. 152)を参照してください。
フロントエンド接続に SSL(セキュア TCP)を使用する場合、ロードバランサーに SSL サーバー証明
書をインストールする必要があります。バックエンドインスタンスにリクエストを送信する前に、ロー
ドバランサーは証明書を使用してまずリクエストを終了し、次にリクエストを復号化します。この設定
では、クライアントとロードバランサーとの間の SSL ネゴシエーションに暗号を設定することもでき
ます。
この設定では、スティッキーセッション用の Cookie や X-Forwarded-* ヘッダー用の Cookie は挿入さ
れません。
Elastic Load Balancing での HTTP/HTTPS プロト
コルの使用
フロントエンド接続とバックエンド接続の両方に HTTP(レイヤー7)を使用する場合、登録されたイ
ンスタンスにリクエストを再送する前に、ロードバランサーはリクエストのヘッダーを解析して接続を
終了します。これは Elastic Load Balancing のデフォルト設定です。
フロントエンドリスナーに HTTPS(セキュア HTTP)を使用する場合、ロードバランサーに SSL サー
バー証明書をインストールする必要があります。バックエンドインスタンスにリクエストを送信する前
に、ロードバランサーは証明書を使用してリクエストを終了し、次にリクエストを復号化します。ま
た、HTTP/HTTPS を使用する場合、ロードバランサーは X-Forwarded-* ヘッダーを挿入または更新し、
スティッキーセッション用の Cookie を挿入または更新します。X-Forwarded-* ヘッダーについては、
X-Forwarded-For (p. 11) を参照してください。この設定では、クライアントとロードバランサーとの間
の SSL ネゴシエーションに暗号を設定することもできます。
ロードバランサーはすべての HTTP 拡張機能をサポートしているわけではありません。予期しないメ
ソッド、応答コード、またはその他の標準でない HTTP 1.0/1.1 実装のためにロードバランサーがリク
エストを終了できない場合、TCP リスナーを使用する必要がある場合もあります。
Elastic Load Balancing で HTTPS/SSL プロトコル
を使用するメリット
Elastic Load Balancing は、クライアントとロードバランサー間の接続およびロードバランサーとバッ
クエンドアプリケーションインスタンス間の接続で、SSL サポートを提供します。エンドツーエンド
HTTPS/SSL 接続がサポートされているため、HTTPS/SSL 接続を開始するネットワークセグメントで
トラフィックの暗号化が可能です。
API Version 2012-06-01
67
Elastic Load Balancing 開発者ガイド
Elastic Load Balancing での SSL 暗号設定の使用
ロードバランサーで HTTPS/SSL 接続を使用する場合、いくつかのメリットがあります。
• クライアント接続の終了に使用する SSL サーバー証明書を、個々のアプリケーションインスタンス
ではなく、ロードバランサーで集中管理できます。
• SSL トラフィックの暗号化と復号化の作業が、アプリケーションインスタンスからロードバランサー
に移されます。
• ロードバランサーは、着信する HTTPS リクエストを終了してからコンテンツを再暗号化してバック
エンドアプリケーションインスタンスに送信することで、セッションのアフィニティ、つまり「ス
ティッキーセッション」を確保できます。
• HTTP で使用可能な機能はすべて HTTPS 接続で使用できます。
フロントエンド接続とバックエンド接続の両方で HTTPS/SSL プロトコルを使用することで、エンド
ツーエンドトラフィックの暗号化を確実にできます。SSL を使用していて Elastic Load Balancing を終
了したくない場合は、TCP リスナーを使用して、リクエストを処理するすべてのバックエンドインス
タンスに証明書をインストールできます。
HTTPS サポートを有効にするには、AWS Identity and Access Management(IAM)を使用して、SSL
証明書とキーをアップロードします。証明書をアップロードした後、新しいロードバランサーを作成す
るとき、または既存のロードバランサーを更新するときに Amazon リソース名(ARN)を指定します。
詳細については、Create a HTTPS/SSL Load Balancer (p. 75) を参照してください。
既存の SSL 証明書を更新するには、IAM を使用して、新しい SSL 証明書をアップロードします。新し
い証明書をアップロードした後で、新しい証明書を使用してロードバランサーを更新します。詳細につ
いては、How to Update an SSL Certificate for a Load Balancer (p. 146) を参照してください。
Elastic Load Balancing での SSL 暗号設定の使用
フロントエンド接続に HTTPS/SSL を選択した場合は、定義済みの SSL 暗号セットまたは任意の暗号
セットを使用して、固有の要件に応じて暗号を有効化および無効化することができます。
Secure Sockets Layer(SSL)プロトコルは、プロトコルとアルゴリズムの組み合わせを使用して、イ
ンターネット上のユーザーの情報を保護します。SSL 暗号とは、暗号化キーを使用して暗号化された
(コード化された)メッセージを作成する暗号化アルゴリズムです。使用できる SSL 暗号アルゴリズ
ムには複数の形式があります。
Elastic Load Balancing は、事前定義された暗号セットを使用してロードバランサーを定義します。暗
号セットはクライアントとロードバランサーとの間で接続が確立されるときに SSL ネゴシエーション
に使用されます。事前定義された暗号セットは幅広いクライアントと互換性があり、強力な暗号アルゴ
リズムを採用しています。ただし、ネットワーク上のすべてのデータを暗号化する要件があるような
ユースケースでは、特定の暗号しか使用できない場合があります。また、基準を満たすために、クライ
アントからの特定のプロトコル(PCI、SOX など)が必要とされる場合もあります。このような場合、
Elastic Load Balancing では SSL プロトコルと暗号に異なった設定を選択できるオプションがありま
す。お客様固有の要件に従って、暗号を有効または無効にすることが可能です。ノード数に応じて、暗
号とプロトコルが有効になるまでに、30 秒未満ですが、時間がかかります。
暗号設定の方法については、Create a HTTPS/SSL Load Balancer (p. 75) を参照してください。
API Version 2012-06-01
68
Elastic Load Balancing 開発者ガイド
Elastic Load Balancing でのバックエンドサーバー認証の使
用
Elastic Load Balancing でのバックエンドサーバー
認証の使用
バックエンドに HTTPS/SSL 接続を使用する場合は、バックエンドインスタンスで認証を有効化できま
す。この認証は、バックエンドインスタンスが暗号化された通信のみを受け入れ、バックエンドインス
タンスに適切な証明書が使用されていることを確認するために使用できます。
Elastic Load Balancing でサポートされるリスナー設定のクイックリファレンスについては、「Elastic
Load Balancing リスナー設定クイックリファレンス (p. 69)を参照してください。
Elastic Load Balancing リスナー設定クイックリ
ファレンス
次の表に、ロードバランサーを設定するために使用できるリスナー設定をまとめています。
HTTP/HTTPS 負荷分散
ご利用用途
フロントエンド フロントエンド バックエンド
プロトコル
のオプション設 プロトコル
定
バックエンドの 注意事項
オプション設定
基本的な
HTTP ロード
バランサー
HTTP
安全なウェブ HTTPS
サイトまたは
アプリケー
ション
(Elastic Load
Balancing を使
用して SSL 復
号化をオフ
ロード)
NA
HTTP
NA
• デフォルト設
定
• スティッキー
セッショ
ン (p. 9) を
サポート。
暗号設定
HTTP
NA
• スティッキー
セッショ
ン (p. 9) を
サポート。
• X-Forwarded-For(p.11)
ヘッダーをサ
ポート。
• SSL サーバー
証明書がロー
ドバランサー
にインストー
ルされている
必要がありま
す。
API Version 2012-06-01
69
Elastic Load Balancing 開発者ガイド
Elastic Load Balancing リスナー設定クイックリファレンス
ご利用用途
フロントエンド フロントエンド バックエンド
プロトコル
のオプション設 プロトコル
定
安全なウェブ HTTPS
サイトまたは
アプリケー
ション
(Elastic Load
Balancing でエ
ンドツーエン
ド暗号化を使
用して、
X-Forward
ヘッダーと ス
ティッキー
セッションを
提供)
暗号設定
HTTPS
バックエンドの 注意事項
オプション設定
バックエンド認 • スティッキー
証
セッショ
ン (p. 9) を
サポート。
• X-Forwarded-For(p.11)
ヘッダーをサ
ポート。
• SSL サーバー
証明書がロー
ドバランサー
と登録された
インスタンス
にインストー
ルされている
必要がありま
す。
以下のクイックリファレンスは、標準的な TCP/SSL ロードバランサーのユースケースのリスナー設定
オプションをまとめたものです。
TCP/SSL 負荷分散
ご利用用途
フロントエンド フロントエンド バックエンド
プロトコル
のオプション設 プロトコル
定
バックエンドの 注意事項
オプション設定
基本的な TCP
ロードバラン
サー
TCP
安全なウェブ SSL
サイトまたは
アプリケー
ション
(Elastic Load
Balancing を使
用して SSL 復
号化をオフ
ロード)
NA
TCP
NA
• 基本的な
TCP 負荷分
散
• Proxy
Protocol (p. 10)
ヘッダーをサ
ポートしま
す。
暗号設定
TCP
NA
• Proxy
Protocol (p. 10)
ヘッダーをサ
ポートしま
す。
• SSL サーバー
証明書がロー
ドバランサー
にインストー
ルされている
必要がありま
す。
API Version 2012-06-01
70
Elastic Load Balancing 開発者ガイド
ここからどこへ進むべきですか?
ご利用用途
フロントエンド フロントエンド バックエンド
プロトコル
のオプション設 プロトコル
定
安全なウェブ SSL
サイトまたは
アプリケー
ション
(Elastic Load
Balancing でエ
ンドツーエン
ド暗号化を使
用)
暗号設定
SSL
バックエンドの 注意事項
オプション設定
バックエンド認 • Proxy
証
Protocol (p. 10)
ヘッダーをサ
ポートしま
す。
• SSL サーバー
証明書がロー
ドバランサー
と登録された
インスタンス
にインストー
ルされている
必要がありま
す。
ここからどこへ進むべきですか?
リスナーを設定する場合:
• AWS Management Console を使用した基本的な HTTP/TCP ロードバランサーの設定方法について
は、Elastic Load Balancing の使用開始 (p. 17) を参照してください。
• 暗号設定とバックエンド認証を使用した HTTPS/SSL ロードバランサーの設定方法については、SSL
暗号設定およびバックエンドサーバー認証を使用したロードバランサーの作成 (p. 75) を参照してく
ださい。
• Amazon VPC での基本的な HTTP/TCP ロードバランサーの設定方法については、Amazon VPC への
Elastic Load Balancing のデプロイ (p. 112) を参照してください。
• 既存のロードバランサーにリスナーを追加する方法については、「Adding a Listener to your Load
Balancer (p. 131)を参照してください。
• 既存のロードバランサーからリスナーを削除する方法については、「Delete a Listener from Your Load
Balancer (p. 136)を参照してください。
Elastic Load Balancing タスクを実行する場合:
• まだツールをインストールしていない場合は、Elastic Load Balancing タスクの実行に使用する予定
のツールをインストールしてください。コマンドラインインターフェイスと Query API のインストー
ルについては、Elastic Load Balancing インターフェイスによるセットアップ (p. 44) を参照してくだ
さい。
• Elastic Load Balancing でサポートされるさまざまな機能の使用については、「Using Elastic Load
Balancing (p. 72)を参照してください。
• Elastic Load Balancing API のオペレーションについては、Elastic Load Balancing API Reference を
参照してください。
• Elastic Load Balancing コマンドについては、Elastic Load Balancing Quick Reference Card を参照し
てください。
API Version 2012-06-01
71
Elastic Load Balancing 開発者ガイド
Elastic Load Balancing の使用
Elastic Load Balancing を使用すると、アプリケーションの負荷を複数の Amazon EC2 インスタンスに
簡単に分散できます。負荷を分散することで、アプリケーションの可用性と拡張性が高まります。この
セクションでは、いくつかの一般的な Elastic Load Balancing のユーザーシナリオを紹介し、アプリ
ケーションの負荷を複数の Amazon EC2 インスタンスに効果的に分散するための各種タスクについて
順に説明します。
Elastic Load Balancing のシナリオに進む前に、以下のタスクが実行済みであることを確認してくださ
い。
• Amazon Elastic Compute Cloud(Amazon EC2)と Amazon Virtual Private Cloud(Amazon VPC)
のどちらで起動したインスタンスの負荷を分散するかを決定した。
• ロードバランサーのリスナー設定を決定した。ロードバランサーの各種設定の概要については、Elastic
Load Balancing リスナー設定クイックリファレンス (p. 69) を参照してください。
• EC2 インスタンスが実行されるリージョンを決定した。
このガイドの例では、EC2 インスタンスが 米国東部(バージニア北部)リージョン(us-east-1)
にあるものと想定して説明を進めます。欧州にあるインスタンスをご使用の場合は、コマンドライン
インターフェイスから --region eu-west-1 パラメータを使用するか AWS_ELB_URL 環境変数を設定
することで、欧州(アイルランド)リージョンを指定します。
Elastic Load Balancing コマンドでのリージョンパラメータの使用については、Elastic Load Balancing
Quick Reference Card を参照してください。環境変数の設定については、Elastic Load Balancing コ
マンドラインインターフェイスのインストール (p. 45) を参照してください。この製品のリージョン
とエンドポイントについては、Amazon Web Services General Reference の Regions and Endpoints
を参照してください。
Amazon EC2 では、Amazon EC2 内でロードバランサーを作成および管理するために使用できるセキュ
リティグループなどの機能を利用できます。Amazon EC2 内で起動したインスタンスに固有の機能の
使用については、Amazon EC2-Classic への Elastic Load Balancing のデプロイ (p. 74) を参照してくだ
さい。
Amazon VPC を使用すると、アマゾン ウェブ サービス(AWS)クラウドの、隔離されたプライベート
なセクションに仮想ネットワーク環境を定義し、その環境内で EC2 インスタンスを起動できます。
Elastic Load Balancing は、Amazon VPC でも Amazon EC2 内と同じように動作し、同じ機能をサポー
トします。ただし、ロードバランサーをインスタンスと関連付ける手順に違いがあります。Amazon
VPC 内でのロードバランサーの作成および管理については、Amazon VPC への Elastic Load Balancing
のデプロイ (p. 112) を参照してください。
Elastic Load Balancing は、IP アドレスを使用してロードバランサーと EC2 インスタンスを関連付けま
す。インスタンスを停止して再起動すると、インスタンスに関連付けられた IP アドレスが変わります。
API Version 2012-06-01
72
Elastic Load Balancing 開発者ガイド
このため、インスタンスを停止した場合は、ロードバランサーから Amazon EC2 インスタンスの登録
を解除し、再起動後に再度登録することをお勧めします。インスタンスの登録解除と再登録について
は、Amazon EC2 インスタンスの登録解除と登録 (p. 139) を参照してください。
Elastic Load Balancing は、HTTP、HTTPS(セキュア HTTP)、TCP、および SSL(セキュア TCP)
リスナープロトコルを使用したアプリケーションの負荷分散をサポートします。フロントエンド接続
(クライアントからロードバランサー)とバックエンド接続(ロードバランサーからバックエンドイン
スタンス)のプロトコルは別々に指定できます。フロントエンドとバックエンドの接続の設定は、ロー
ドバランサーの作成時に選択します。後で既存のロードバランサーにリスナーを追加したり、既存の
ロードバランサーからリスナーを削除したりすることもできます。
• HTTP/TCP リスナーを使った基本的なロードバランサーの作成については、Get Started with Elastic
Load Balancing (p. 17) を参照してください。
• HTTPS/SSL ロードバランサーの作成については、Create a HTTPS/SSL Load Balancer (p. 75) を参
照してください。
• 既存のロードバランサーにリスナーを追加する方法については、Adding a Listener to your Load
Balancer (p. 131) を参照してください。
• ロードバランサーからリスナーを削除する方法については、Delete a Listener from Your Load
Balancer (p. 136) を参照してください。
リスナーに HTTPS/SSL プロトコルを使用している場合は、ロードバランサーに SSL サーバー証明書
がインストールされている可能性があります。この証明書は定期的に更新する必要があります。既存の
SSL 証明書の更新方法については、ロードバランサーの SSL 証明書の更新 (p. 146) を参照してくださ
い。
作成した Elastic Load Balancing インスタンスにはそれぞれ、一意のドメインネームシステム(DNS)
名が付けられています。ロードバランサーの DNS 名でなくカスタムドメイン名を付けたい場合は、
「を参照してください。Amazon Route 53 を使用してカスタムドメイン名を作成し、ロードバランサー
の DNS 名に関連付けます。詳細については、ロードバランサーのカスタムドメイン名の設定 (p. 163)を
参照してください。
ロードバランサーは、ロードバランサーが生成する特別な Cookie を使って、各リクエストのアプリ
ケーションインスタンスを追跡します。アプリケーションインスタンスが追跡されると、応答に Cookie
が挿入され、同じユーザーからの以降のリクエストをそのアプリケーションインスタンスにバインドし
ます。Elastic Load Balancing では、これらの Cookie の有効期限を指定するポリシーを設定することが
できます。ロードバランサーが生成する Cookie のポリシー設定については、期間ベースのセッション
維持の有効化 (p. 173) を参照してください。
ロードバランサーは、特別な Cookie を使用して、リクエストを処理した元のサーバーにセッションを
関連付けますが、アプリケーションが生成する Cookie(ポリシー設定で指定した Cookie 名に対応)の
寿命に従います。Elastic Load Balancing では、アプリケーション Cookie が明示的に削除されるか期限
切れになった場合に、アプリケーションが生成する Cookie のポリシーを設定することができます。ア
プリケーションが生成する Cookie のポリシー設定については、アプリケーション制御によるセッショ
ン維持の有効化 (p. 177) を参照してください。
Elastic Load Balancing は、ロードバランサーとバックエンドアプリケーションインスタンスに関する
データを Amazon CloudWatch に提供します。Amazon CloudWatch はデータを収集し、読み取り可能
な、リアルタイムに近いメトリックスとして表示します。ロードバランサーメトリックスの表示と解釈
については、Amazon CloudWatch を使用したロードバランサーの監視 (p. 180) を参照してください。
既存のロードバランサーの削除については、ロードバランサーの削除 (p. 191) を参照してください。
API Version 2012-06-01
73
Elastic Load Balancing 開発者ガイド
Amazon EC2-Classic への Elastic Load Balancing のデプロ
イ
Amazon EC2-Classic への Elastic Load Balancing
のデプロイ
Topics
• SSL 暗号設定およびバックエンドサーバー認証を使用したロードバランサーの作成 (p. 75)
• 負荷分散するアプリケーションを追加のアベイラビリティゾーンに拡張するには (p. 97)
• 負荷分散するアプリケーションのアベイラビリティーゾーンの無効化 (p. 100)
• Amazon EC2-Classic でのセキュリティグループの管理 (p. 102)
• Elastic Load Balancing での IPv6 の使用 (p. 110)
アマゾン ウェブ サービス(AWS)では、Amazon EC2 または Amazon Virtual Private Cloud(Amazon
VPC)のいずれかでインスタンスを起動できます。Amazon EC2 内でインスタンスを起動した場合は、
Amazon EC2 内でロードバランサーを作成する必要があります。Amazon VPC でインスタンスを起動
した場合は、VPC 内でロードバランサーを作成する必要があります。Elastic Load Balancing は、Amazon
VPC でも Amazon EC2 内とほぼ同じように動作し、同じ機能をサポートします。ただし、ロードバラ
ンサーの起動に関する手順と、Amazon VPC と Amazon EC2 でのセキュリティグループの動作には大
きな違いがあります。
このセクションでは、Amazon EC2 でロードバランサーを作成、使用、および管理する方法について
順を追って説明します。Amazon VPC 内でロードバランサーを作成、使用、および管理する方法につ
いては、Amazon VPC への Elastic Load Balancing のデプロイ (p. 112) を参照してください。
Elastic Load Balancing は、フロントエンドのクライアントとロードバランサー間の接続およびロード
バランサーとバックエンドアプリケーションインスタンス間の接続で、Secure Sockets Layer(SSL)
をサポートします。フロントエンド接続に HTTPS/SSL を選択した場合は、定義済みの暗号セットまた
は任意の暗号セットを使用して、固有の要件に応じて暗号を有効化および無効化することができます。
バックエンドに HTTPS/SSL 接続を使用する場合は、バックエンドインスタンスで認証を有効化できま
す。暗号設定の使用およびバックエンドインスタンスでの認証の有効化に関するロードバランサー設定
については、「ロードバランサーのリスナーの設定 (p. 66)を参照してください。定義済みの暗号設定
を使用して Amazon EC2 でロードバランサーを作成する方法、およびバックエンド認証の有効化につ
いては、「SSL 暗号設定およびバックエンドサーバー認証を使用したロードバランサーの作成 (p. 75)
を参照してください。
インスタンスへのトラフィックが増えるにつれ、EC2 インスタンスを拡張して別のアベイラビリティー
ゾーンで実行することを検討される場合もあるでしょう。追加のアベイラビリティーゾーンへの拡張に
ついては、「負荷分散するアプリケーションを追加のアベイラビリティゾーンに拡張するには (p. 97)
を参照してください。
インスタンスへのトラフィックが減った際には、いくつかのアベイラビリティーゾーンを無効化して、
インスタンスの可用性を縮小したい場合もあるでしょう。アベイラビリティーゾーンの無効化について
は、「負荷分散するアプリケーションのアベイラビリティーゾーンの無効化 (p. 100)を参照してくださ
い。
Elastic Load Balancing の特別な Amazon EC2 ソースセキュリティグループを使用して、バックエンド
Amazon EC2 インスタンスが Elastic Load Balancing からのみトラフィックを受け取るように設定する
ことができます。ロードバランサーとバックエンドインスタンス間の着信トラフィックをロックする方
法については、「Amazon EC2-Classic でのセキュリティグループの管理 (p. 102)を参照してください。
ロードバランサーを作成すると、Elastic Load Balancing は、ロードバランサーの名前とリージョンを
組み合わせたパブリック DNS 名を返します。この基本パブリック DNS 名は IPv4 レコードのみを返し
ます。
Elastic Load Balancing はインターネットプロトコルバージョン 6(IPv6)とインターネットプロトコ
ルバージョン4(IPv4)の両方をサポートしています。
API Version 2012-06-01
74
Elastic Load Balancing 開発者ガイド
SSL 暗号設定およびバックエンドサーバー認証を使用した
ロードバランサーの作成
Note
現在 IPv6 サポートは、すべてのリージョンまたは Amazon VPC(EC2-VPC)のロードバラン
サーで使用できません。現在の IPv6 サポートについては、Elastic Load Balancing を参照して
ください。
クライアントは IPv4 または IPv6 のどちらか(EC2-Classic および利用可能なリージョン)を使用し
て、ロードバランサーに接続することができます。しかし、ロードバランサーとバックエンドインスタ
ンス間の通信には、IPv4 しか使用できません。「dualstack」というプレフィックスの付いた DNS 名
を使用すると、クライアントが個々の接続要件に応じて IPv4 または IPv6 のいずれかを使ってロードバ
ランサーにアクセスできるよう、クライアントとロードバランサーとの通信で IPv6 サポートを有効に
することができます。IPv6 サポートの有効化については、「Elastic Load Balancing での IPv6 の使
用 (p. 110)を参照してください。
SSL 暗号設定およびバックエンドサーバー認証を使
用したロードバランサーの作成
Topics
• AWS Management Console の使用 (p. 76)
• Query API の使用 (p. 84)
• コマンドラインインターフェイスの使用 (p. 91)
この例では、カスタム設定を使って独自のロードバランサーを作成する手順を説明します。以下のタス
クリストは、ロードバランサーの作成手順を示しています。
始める前に、以下の前提条件を満たしていることを確認してください。
• アマゾン ウェブ サービス(AWS)にサインアップした。まだ AWS にサインアップしていない場合
は、 http://aws.amazon.com に移動し、[今すぐ申し込む] ボタンをクリックしてください。
• AWS マネジメントコンソールにサインインして Amazon EC2 コンソール
(https://console.aws.amazon.com/ec2/)を開きます。
コマンドラインインターフェイスや Query API を使用してロードバランサーを作成することもでき
ます。Elastic Load Balancing のタスクの実行に必要なツールをインストールした。コマンドライン
インターフェイスと Query API のインストールについては、Elastic Load Balancing インターフェイ
スによるセットアップ (p. 44) を参照してください。
• この例では、アベイラビリティーゾーン us-east-1a. を使用します。アベイラビリティーゾーン
us-east-1a で、ロードバランサーに登録するインスタンスを起動します。Amazon EC2 インスタン
スの起動方法については、インスタンスの起動と使用を参照してください。
• バックエンドアプリケーションサーバーへのアイドル接続について、Elastic Load Balancer のタイム
アウト設定を 60 秒にしています。通信を正常に動作させるには、バックエンドサーバーのタイムア
ウト設定を、60 秒以上に指定してください。
• ロードバランサーに登録するインスタンスは、ヘルスチェックの対象に HTTP 状態コード 200 で応
答する必要があります。
• リスナーの HTTPS サポートを有効にするには、SSL サーバー証明書を作成して、ロードバランサー
にインストールする必要があります。バックエンドインスタンスにリクエストを送信する前に、ロー
ドバランサーは証明書を使用してリクエストを終了し、次にリクエストを復号化します。Elastic Load
Balancing は、AWS Identity and Access Management(IAM)を使用して証明書をロードバランサー
にアップロードします。SSL 証明書の作成方法については、IAM を使用する のCreating and Uploading
Server Certificatesを参照してください。
SSL サーバー証明書はすべて IAM によって管理されます。デフォルトでは、IAM によって AWS ア
カウントごとに 10 の SSL サーバー証明書を使用できるようになります。この限度に達した後に新し
API Version 2012-06-01
75
Elastic Load Balancing 開発者ガイド
SSL 暗号設定およびバックエンドサーバー認証を使用した
ロードバランサーの作成
いサーバー証明書をアップロードしようとすると、エラーが表示されます。IAM Limit Increase Contact
Us Form を使用して、追加の証明書をリクエストすることができます。
SSL 暗号設定およびバックエンドサーバー認証を使用したロードバランサーの作成タスク
1
フロントエンド接続(クライアントからロードバランサー)とバックエンド接続(ロードバラン
サーからバックエンドインスタンス)に使用するポートとプロトコルを指定して、ロードバラン
サーのリスナーを設定します。
2
クライアントとロードバランサーの間に接続が確立されたら、SSL ネゴシエーションの SSL 暗
号を設定します。
3
(オプション)バックエンドサーバー認証を有効にします。
4
バックエンドインスタンスのアプリケーション状態チェックを設定します。
5
Amazon EC2 インスタンスをロードバランサーに追加します。
6
ロードバランサーを起動します。
以下のセクションでは、AWS マネジメントコンソール、コマンドラインインターフェイス、および
Query API を使用したロードバランサーの作成方法について説明します。
AWS Management Console の使用
Topics
• リスナーの設定 (p. 76)
• SSL 暗号の設定 (p. 79)
• バックエンドサーバー認証の設定 (p. 80)
• ヘルスチェックの設定 (p. 81)
• Amazon EC2 インスタンスの追加 (p. 82)
リスナーの設定
フロントエンド接続(クライアントからロードバランサー)とバックエンド接続(ロードバランサーか
らバックエンドインスタンス)に使用するポートとプロトコルを指定して、ロードバランサーのリス
ナーを設定します。最初のリスナーはポート 80 で HTTP リクエストを受け取り、HTTP を使用して
ポート 80 のバックエンドアプリケーションインスタンスにリクエストを送信します。2 つ目のリスナー
はポート 443 で HTTPS リクエストを受け取り、HTTPS を使用してポート 443 のバックエンドアプリ
ケーションインスタンスにリクエストを送信します。
ロードバランサーのリスナーを設定するには
1.
Create Load Balancer ウィザードを開始します。
a.
Amazon EC2 の [ Getting Started] ページにある [EC2 Dashboard] ペインの [NETWORK &
SECURITY] で、 [Load Balancers] をクリックします。
API Version 2012-06-01
76
Elastic Load Balancing 開発者ガイド
SSL 暗号設定およびバックエンドサーバー認証を使用した
ロードバランサーの作成
b.
2.
3.
4.
[Load Balancers] ページで、[Create Load Balancer] をクリックします。
[DEFINE LOAD BALANCER] ページで、ロードバランサーの名前(例: MyLoadBalancer)を入力
します。
1 つ目のリスナーの [Listener Configuration] の設定はデフォルト値のままにしておきます。
[Load Balancer Protocol] ボックスのドロップダウンボックスから [HTTPS (Secure HTTP)] を選択
します。[Load Balancer Port] ボックスに情報が入力されます。[Instance Protocol] ボックスのド
ロップダウンボックスから [HTTPS (Secure HTTP)] を選択し、[Instance Port] ボックスに、インス
タンスのポートとしてポート番号 443 を入力します。
API Version 2012-06-01
77
Elastic Load Balancing 開発者ガイド
SSL 暗号設定およびバックエンドサーバー認証を使用した
ロードバランサーの作成
5.
[Save] をクリックし、[Continue] をクリックして、SSL 証明書のアップロードに進みます。
Note
SSL 証明書がない場合は、SSL 証明書を作成し、AWS Identity and Access Management
(IAM)を使用して証明書をアップロードします。SSL 証明書の作成およびアップロード
については、IAM を使用する の Creating and Uploading Server Certificatesを参照してく
ださい。
6.
7.
アップロード済みの SSL 証明書を使用するには、[Choose from your existing SSL Certificates] を
選択してドロップダウンボックスから証明書を選択します。
または、署名付き SSL 証明書があり、これをアップロードする場合は、[Upload a new SSL
Certificate] を選択します。
アップロードする前に、証明書が以下の条件を満たしていることを確認してください。
• 証明書が X.509 PEM 形式に従っている。
• 現在の日付が証明書の開始日と終了日の間にある。
• パブリックおよびプライベートの証明書ファイルに、証明書が 1 つしか含まれていない。
• プライベートキーが電子サーバー証明書のパブリックキーと一致している。
• プライベートキーが PEM 形式の RSA プライベートキーである。この場合、PEM ヘッダーが
BEGIN RSA PRIVATE KEY、フッターが END RSA PRIVATE KEY です。
• プライベートキーはパスワードで暗号化できない。
• 証明書チェーンは即時署名証明書から始まり、その後に中間証明書が順番に続いています。信用
パスに関与しない中間証明書が含まれてはいけません。信頼されたルート証明書は、最終証明書
として任意で含むことができます。
API Version 2012-06-01
78
Elastic Load Balancing 開発者ガイド
SSL 暗号設定およびバックエンドサーバー認証を使用した
ロードバランサーの作成
証明書がステップ 7 に挙げた基準を満たさない場合、アップロード時にエラーが発生する場合があ
ります。新しい SSL 証明書を作成し、IAM を使用して証明書をアップロードします。SSL 証明書
の作成およびアップロードについては、IAM を使用する の Creating and Uploading Server Certificates
を参照してください。
証明書が基準を満たしている場合、以下の指示に従い、SSL 証明書のアップロードを続行します。
a.
アップロードする証明書の名前を入力します。
b.
PEM エンコードされたプライベートキーファイルの内容をコピーして [Private Key] ボックス
に貼り付けます。
Note
プライベートキーは、アップロードが完了した後に取得することはできません。
c.
d.
8.
PEM エンコードされたパブリックキー証明書ファイルの内容をコピーして [Public Key
Certificate] ボックスに貼り付けます。
(オプション)PEM エンコードされたパブリックキー証明書チェーンファイルの内容をコピー
して [Certificate Chain] ボックスに貼り付けます。
[Continue] をクリックして、HTTPS/SSL リスナーの SSL 暗号の設定に進みます。
SSL 暗号の設定
HTTPS/SSL リスナー向けの SSL 暗号の設定ステップに進みます。Elastic Load Balancing サービスは、
サンプルの暗号ポリシーとして、[ELBSample-ELBDefaultNegotiationPolicy] と
API Version 2012-06-01
79
Elastic Load Balancing 開発者ガイド
SSL 暗号設定およびバックエンドサーバー認証を使用した
ロードバランサーの作成
[ELBSample-OpenSSLDefaultNegotiationPolicy] を提供します。サンプルのいずれかを使用するか、ま
たは独自の暗号をカスタマイズすることができます。
SSL 暗号をカスタマイズするには
1.
[DEFINE LOAD BALANCER] ページの [Custom] を選択し、リストボックスからプロトコルのバー
ジョンと暗号を選択します。
Note
SSL ネゴシエーションを実行するには、プロトコルバージョンと暗号を少なくとも 1 つず
つ有効にする必要があります。
2.
[Continue] をクリックして、バックエンドサーバー認証の設定に進みます。
バックエンドサーバー認証の設定
次のウィザードでは、バックエンドサーバーの認証を有効化することができます(ロードバランサーと
バックエンドインスタンス間に HTTPS/SSL プロトコルを選択した場合)。詳細については、Using
Back-End Server Authentication with Elastic Load Balancing (p. 69)を参照してください。
バックエンドサーバーの認証を有効にしない場合は、[Proceed without backend authentication] を選択
します。
バックエンドサーバー認証を設定するには
1.
[Enable backend authentication] を選択します。
API Version 2012-06-01
80
Elastic Load Balancing 開発者ガイド
SSL 暗号設定およびバックエンドサーバー認証を使用した
ロードバランサーの作成
a.
b.
2.
[Certificate Name] ボックスにパブリックキー証明書の名前を入力し、PEM エンコードされた
証明書の内容をコピーして [Certificate body] ボックスに貼り付けます。
複数の証明書を追加するには、[Add another Backend Certificate] をクリックします。
[Continue] をクリックして、バックエンドサーバーのヘルスチェックの設定に進みます。
ヘルスチェックの設定
バックエンドインスタンスのヘルスチェックの設定ステップに進みます。
ヘルスチェックを設定するには
1.
アプリケーションで必要なヘルスチェックを設定します。
API Version 2012-06-01
81
Elastic Load Balancing 開発者ガイド
SSL 暗号設定およびバックエンドサーバー認証を使用した
ロードバランサーの作成
2.
[Continue] をクリックして、Amazon EC2 インスタンスの追加に進みます。
Amazon EC2 インスタンスの追加
ロードバランサーに Amazon EC2 インスタンスを追加するステップに進みます。
Amazon EC2 インスタンスを追加するには
1.
インスタンスをロードバランサーに追加するには、[Select] 列内のチェックボックスをチェックし
ます。
API Version 2012-06-01
82
Elastic Load Balancing 開発者ガイド
SSL 暗号設定およびバックエンドサーバー認証を使用した
ロードバランサーの作成
2.
3.
[Continue] をクリックして、設定の確認に進みます。[REVIEW] ページで [Create] をクリックする
とロードバランサーが作成されます。
[REVIEW] ページの [Create] ボタンをクリックすると、確認ウィンドウが開きます。[Close] をク
リックします。
4.
確認ウィンドウを閉じると、[Load Balancers] ページが開きます。新しいロードバランサーが一覧
に表示されます。
5.
作成したロードバランサーの横にあるチェックボックスを選択します。
下のペインには、ロードバランサーの詳細が表示されます。詳細が仕様と一致することを確認しま
す。
API Version 2012-06-01
83
Elastic Load Balancing 開発者ガイド
SSL 暗号設定およびバックエンドサーバー認証を使用した
ロードバランサーの作成
6.
一部のインスタンスが実行されていないことが [Status] 行の詳細に示されている場合、インスタン
スはまだ登録中であると考えられます。詳細については、Elastic Load Balancing のトラブルシュー
ティング: インスタンスの登録 (p. 203)を参照してください。
少なくとも 1 つの EC2 インスタンスが InService であることが確認されたら、ロードバランサー
をテストすることができます。ロードバランサーをテストするには、[Description] タブに表示され
た [DNS Name] の値をコピーし、インターネット接続したウェブブラウザのアドレスフィールド
に貼り付けます。ロードバランサーが実行中の場合は、HTTP サーバーのデフォルトページが表示
されます。
Important
ロードバランサーに関連付けられたバックエンドの EC2 インスタンスを停止して起動する場
合は、停止したインスタンスをロードバランサーから登録解除し、再起動したインスタンスを
再登録することをお勧めします。そうしないと、再起動したインスタンスへのトラフィックを
ロードバランサーがルーティングできない可能性があります。ロードバランサーからインスタ
ンスを登録解除して再度登録する方法については、「Amazon EC2 インスタンスの登録解除と
登録 (p. 139)を参照してください。
Query API の使用
Topics
• リスナーの設定 (p. 85)
• SSL 暗号の設定 (p. 87)
• バックエンドサーバー認証の設定 (p. 88)
API Version 2012-06-01
84
Elastic Load Balancing 開発者ガイド
SSL 暗号設定およびバックエンドサーバー認証を使用した
ロードバランサーの作成
• ヘルスチェックの設定 (p. 89)
• Amazon EC2 インスタンスの追加 (p. 90)
• 新しく登録した Amazon EC2 インスタンスの状態のチェック (p. 90)
リスナーの設定
この例では、フロントエンド接続(クライアントからロードバランサー)とバックエンド接続(ロード
バランサーからバックエンドインスタンス)に使用するポートとプロトコルを指定して、ロードバラン
サーのリスナーを設定します。最初のリスナーはポート 80 で HTTP リクエストを受け取り、HTTP を
使用してポート 80 のバックエンドアプリケーションインスタンスにリクエストを送信します。2 つ目
のリスナーはポート 443 で HTTPS リクエストを受け取り、HTTPS を使用してポート 443 のバックエ
ンドアプリケーションインスタンスにリクエストを送信します。ロードバランサーに対して有効化する
アベイラビリティゾーンも指定する必要があります。
Elastic Load Balancing API のアクションについては、Elastic Load Balancing API Reference を参照し
てください。
ロードバランサーのリスナーを設定するには
1.
証明書の作成とアップロード
リスナーの HTTPS サポートを有効にするには、ロードバランサーに SSL サーバー証明書をイン
ストールする必要があります。バックエンドインスタンスにリクエストを送信する前に、ロードバ
ランサーは証明書を使用してリクエストを終了し、次にリクエストを復号化します。Elastic Load
Balancing は AWS Identity and Access Management を使用して、証明書をロードバランサーにアッ
プロードします。
AWS Identity and Access Management(IAM)を使用して SSL 証明書を作成してアップロードす
るには、IAM を使用する のCreating and Uploading Server Certificatesを参照してください。
SSL 証明書があり、IAM を使用してアップロードした場合、IAM アクション GetServerCertificate
を使用して証明書の ARN と ID を取得し、手順 2 に進みます。
SSL 証明書があり、IAM を使用してアップロードする必要がある場合は、以下の指示に従ってく
ださい。
a.
証明書が以下の基準を満たしていることを確認します。
• 証明書が X.509 PEM 形式に従っている。
• 現在の日付が証明書の開始日と終了日の間にある。
• パブリックおよびプライベートの証明書ファイルに、証明書が 1 つしか含まれていない。
• プライベートキーが電子サーバー証明書のパブリックキーと一致している。
• プライベートキーが PEM 形式の RSA プライベートキーである。この場合、PEM ヘッダー
が BEGIN RSA PRIVATE KEY、フッターが END RSA PRIVATE KEY です。
• プライベートキーはパスワードで暗号化できない。
• 証明書チェーンは即時署名証明書から始まり、その後に中間証明書が順番に続いています。
信用パスに関与しない中間証明書が含まれてはいけません。信頼されたルート証明書は、最
終証明書として任意で含むことができます。
SSL 証明書がこの手順に挙げた基準を満たさない場合、アップロード時にエラーが発生する
場合があります。新しい SSL 証明書を作成し、AWS Identity and Access Management(IAM)
を使用して証明書をアップロードします。SSL 証明書の作成およびアップロードについては、
IAM を使用する の Creating and Uploading Server Certificates を参照してください。
証明書が基準を満たしている場合、以下の指示に従い、SSL 証明書のアップロードを続行し
ます。
API Version 2012-06-01
85
Elastic Load Balancing 開発者ガイド
SSL 暗号設定およびバックエンドサーバー認証を使用した
ロードバランサーの作成
b.
以下のパラメータを使用して、AWS Identity and Access Management UploadServerCertificate
アクションを呼び出します。
• ServerCertificateName = testCert
• CertificateBody = <encoded certificate body>
• PrivateKey = <encoded private key>
Note
プライベートキーは、アップロードが完了した後で取得することはできません。
• [Optional]CertificateChain = <concatenation of the encoded public key
certificates>
• [Optional]Path = /
Note
使用しない場合、パスはデフォルトの / になります。パスについては、IAM を使用
する の Identifiers for IAM Entities を参照してください。
c.
2.
応答には、サーバー証明書の Amazon リソースネーム(ARN)が含まれます。次のステップ
のために、証明書の Amazon リソースネーム(ARN)をコピーします。
以下のパラメータを使用して、CreateLoadBalancer を呼び出します。
• AvailabilityZones = us-east-1a
• Listener
• Protocol = HTTP
• InstanceProtocol = HTTP
• InstancePort = 80
• LoadBalancerPort = 80
• Listener
• Protocol = HTTPS
• InstanceProtocol = HTTPS
• InstancePort = 443
• LoadBalancerPort = 443
• SSLCertificateID =
arn:aws:iam::55555555555:server-certificate/production/myCert
• LoadBalancerName = MyLoadBalancer
このオペレーションにより、ロードバランサーの DNS 名が返されます。DNS 名を安全な場所にコ
ピーします。この DNS 名は、後の手順でロードバランサーに接続するために使用します。後か
ら、CNAME またはその他の方法を使って、あらゆるドメイン名(www.example.com など)をロー
ドバランサーの DNS 名にマッピングすることもできます。
API Version 2012-06-01
86
Elastic Load Balancing 開発者ガイド
SSL 暗号設定およびバックエンドサーバー認証を使用した
ロードバランサーの作成
SSL 暗号の設定
この例では、クライアントとロードバランサーの間に接続が確立されたときに SSL ネゴシエーション
の SSL 暗号を設定する SSL 暗号ポリシーを作成します。Elastic Load Balancing サービスは
SSLNegotiationPolicyType と呼ばれるポリシーを定義します。SSLNegotiationPolicyType タ
イプの、独自の SSL 暗号ポリシー MySSLNegotiationPolicy を作成します。SSL 暗号ポリシーを作
成した後、MySSLNegotiationPolicy をリスナーと関連付けることによって暗号設定を有効にしま
す。
SSL 暗号を設定するには
1.
以下のパラメータを使って DescribeLoadBalancerPolicies を呼び出し、ロードバランサーに
関連付けられているすべてのポリシーを一覧表示します。
• LoadBalancerName = MyLoadBalancer
応答には、ロードバランサーに関連付けられているすべてのポリシーの名前と属性が含まれます。
SSLNegotiationPolicyType に関連付けられている属性は、ロードバランサーのデフォルトの
暗号設定を一覧表示します。その後の CreateLoadBalancerPolicy への呼び出しでこれらの属
性を使用して、独自の暗号設定を指定します。
Note
使用できる暗号については、http://www.openssl.org/docs/apps/ciphers.html を参照してく
ださい。
2.
以下のパラメータを使って CreateLoadBalancerPolicy を呼び出します。
• PolicyName = MySSLNegotiationPolicy
• PolicyTypeName = SSLNegotiationPolicyType
• PolicyAttributes
• AttributeName = Protocol-TLSv1
• AttributeValue = true
• LoadBalancerName = MyLoadBalancer
3.
以下のパラメータを使って SetLoadBalancerPoliciesOfListener を呼び出します。
• LoadBalancerPort = 443
• PolicyNames = MySSLNegotiationPolicy
• LoadBalancerName = MyLoadBalancer
4.
以下のパラメータを使って DescribeLoadBalancerPolicies を呼び出して、
MySSLNegotiationPolicy の詳細を表示します。
• LoadBalancerName = MyLoadBalancer
• PolicyNames = MySSLNegotiationPolicy
API Version 2012-06-01
87
Elastic Load Balancing 開発者ガイド
SSL 暗号設定およびバックエンドサーバー認証を使用した
ロードバランサーの作成
バックエンドサーバー認証の設定
バックエンドに HTTPS/SSL 接続を選択する場合は、バックエンドインスタンスで認証を有効化できま
す。詳細については、Using Back-End Server Authentication with Elastic Load Balancing (p. 69)を参照
してください。
この例では、バックエンドサーバー認証を有効にします。まず、認証にパブリックキーを使用するパブ
リックキーポリシーを作成します。その後パブリックキーポリシーを使用して、バックエンドサーバー
認証ポリシーを作成します。最後に、バックエンドサーバー認証ポリシーにバックエンドサーバーポー
トを設定して、バックエンドサーバー認証を有効にします。この例では、バックエンドサーバーは、イ
ンスタンスポート 443 に設定された SSL/HTTPS プロトコルでリッスンします。
パブリックキーポリシーの値は、バックエンドサーバーがロードバランサーに提示する証明書のパブ
リックキーです。パブリックキーは OpenSSL を使って取得できます。
Note
PEM エンコードされた証明書からパブリックキーを抽出するには、以下のコマンドを使用しま
す:
PROMPT> openssl x509 -inform pem -in <CERTIFICATE_FILE_PATH> -noout pubkey)
出力から BEGIN 行と END 行を削除し、以下の出力と同様の形式にします。
バックエンドサーバー認証を設定するには
1.
以下のパラメータを使って CreateLoadBalancerPolicy を呼び出します。
• PolicyName = MyPublicKeyPolicy
• PolicyTypeName = PublicKeyPolicyType
• PolicyAttributes
• AttributeName = PublicKey
• AttributeValue =
MIICiTCCAfICCQD6m7oRw0uXOjANBgkqhkiG9w0BAQUFADCBiDELMAkGA1UEBhMC
VVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6
b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAd
BgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5jb20wHhcNMTEwNDI1MjA0NTIxWhcN
MTIwNDI0MjA0NTIxWjCBiDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYD
VQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDASBgNVBAsTC0lBTSBDb25z
b2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAdBgkqhkiG9w0BCQEWEG5vb25lQGFt
YXpvbi5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMaK0dn+a4GmWIWJ
21uUSfwfEvySWtC2XADZ4nB+BLYgVIk60CpiwsZ3G93vUEIO3IyNoH/f0wYK8m9T
rDHudUZg3qX4waLG5M43q7Wgc/MbQITxOUSQv7c7ugFFDzQGBzZswY6786m86gpE
Ibb3OhjZnzcvQAaRHhdlQWIMm2nrAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAtCu4
nUhVVxYUntneD9+h8Mg9q6q+auNKyExzyLwaxlAoo7TJHidbtS4J5iNmZgXL0Fkb
FFBjvSfpJIlJ00zbhNYS5f6GuoEDmFJl0ZxBHjJnyp378OD8uTs7fLvjx79LjSTb
NYiytVbZPQUQ5Yaxu2jXnimvw3rrszlaEXAMPLE=
• LoadBalancerName = MyLoadBalancer
2.
以下のパラメータを使って CreateLoadBalancerPolicy を呼び出します。
API Version 2012-06-01
88
Elastic Load Balancing 開発者ガイド
SSL 暗号設定およびバックエンドサーバー認証を使用した
ロードバランサーの作成
• PolicyName = MyBackendServerAuthenticationPolicy
• PolicyTypeName = BackendServerAuthenticationPolicyType
• PolicyAttributes
• AttributeName = PublicKeyPolicyName
• AttributeValue = MyPublicKeyPolicy
• LoadBalancerName = MyLoadBalancer
3.
以下のパラメータを使って SetLoadBalancerPoliciesForBackendServer を呼び出します。
• LoadBalancerName = MyLoadBalancer
• InstancePort = 443
• PolicyNames = MyBackendServerAuthenticationPolicy
4.
ロードバランサーに関連付けられたすべてのポリシーを一覧表示するには、
以下のパラメータを使って DescribeLoadBalancerPolicies を呼び出します。
• LoadBalancerName = MyLoadBalancer
5.
MyBackendServerAuthenticationPolicy の詳細を表示するには、
以下のパラメータを使って DescribeLoadBalancerPolicies を呼び出します。
• LoadBalancerName = MyLoadBalancer
• PolicyNames = MyBackendServerAuthenticationPolicy
ヘルスチェックの設定
この例では、バックエンドサーバーのヘルスチェックを設定します。
ヘルスチェックを設定するには
•
以下のパラメータを使用して、ConfigureHealthCheck を呼び出します。
• LoadBalancerName = MyLoadBalancer
• Target = http:80/ping
Note
インスタンスがポート 80 の ping に対して HTTP 200 状態コードで応答することを確認
してください。
• Interval = 30
• Timeout = 3
• HealthyThreshold = 2
• UnhealthyThreshold = 2
API Version 2012-06-01
89
Elastic Load Balancing 開発者ガイド
SSL 暗号設定およびバックエンドサーバー認証を使用した
ロードバランサーの作成
Amazon EC2 インスタンスの追加
この例では、新しく作成したロードバランサーを Amazon EC2 に登録します。
Important
登録できるのは、Pending 状態または Running 状態にあり、Virtual Private Cloud(VPC)内に
ないインスタンスのみです。VPC で Elastic Load Balancing を使用する場合は、「Amazon
VPC への Elastic Load Balancing のデプロイ (p. 112)を参照してください。
Amazon EC2 インスタンスを追加するには
•
以下のパラメータを使用して、RegisterInstancesWithLoadBalancer を呼び出します。
• LoadBalancerName = MyLoadBalancer
• Instances = [ i-4f8cf126, i-0bb7ca62 ]
Note
Elastic Load Balancing とバックエンドインスタンス間の通信を可能にするには、すべての
バックエンドインスタンスに適用するセキュリティグループ進入ルールを作成します。セ
キュリティグループルールは、すべての IP アドレス(0.0.0.0/0 CIDR 範囲)からの進入ト
ラフィックを許可するか、Elastic Load Balancing からの進入トラフィックのみを許可する
ことができます。バックエンド EC2 インスタンスが Elastic Load Balancing からのトラ
フィックのみを受信できるようにするには、すべてのバックエンド EC2 インスタンスで
Elastic Load Balancing セキュリティグループのネットワーク進入を有効にします。詳細に
ついては、「Manage Security Groups in Amazon EC2 (p. 102)」を参照してください。
Important
ロードバランサーに関連付けられたバックエンドの EC2 インスタンスを停止して起動する場
合は、停止したインスタンスをロードバランサーから登録解除し、再起動したインスタンスを
再登録することをお勧めします。そうしないと、再起動したインスタンスへのトラフィックを
ロードバランサーがルーティングできない可能性があります。ロードバランサーからインスタ
ンスを登録解除して再登録する方法については、「Amazon EC2 インスタンスの登録解除と登
録 (p. 139)」を参照してください。
新しく登録した Amazon EC2 インスタンスの状態のチェック
この例では、新しく登録した Amazon EC2 インスタンスの状態をチェックします。登録した EC2 イン
スタンスのいずれかが InService 状態になると、ロードバランサーを使用できるようになります。
新しく登録した Amazon EC2 インスタンスの状態をチェックするには
1.
以下のパラメータを使用して、DescribeInstanceHealth を呼び出します。
• LoadBalancerName = MyLoadBalancer
• Instances.member.N = [i-4f8cf126 ,i-0bb7ca62]
2.
いずれかの、またはすべてのインスタンスの [State] フィールドに OutOfService が表示される場
合、インスタンスが登録中であると考えられます。詳細については、Elastic Load Balancing のト
ラブルシューティング: インスタンスの登録 (p. 203) を参照してください。
API Version 2012-06-01
90
Elastic Load Balancing 開発者ガイド
SSL 暗号設定およびバックエンドサーバー認証を使用した
ロードバランサーの作成
3.
EC2 インスタンスの少なくとも 1 つが InService であると確認されたら、ロードバランサーをテス
トすることができます。ロードバランサーをテストするには、「リスナーの設定 (p. 85)」タスク
を完了した後に受け取ったロードバランサーの [DNS Name] をコピーし、インターネットに接続
したウェブブラウザのアドレスフィールドに貼り付けます。ロードバランサーが実行中の場合は、
HTTP サーバーのデフォルトページが表示されます。
コマンドラインインターフェイスの使用
Topics
• リスナーの設定 (p. 91)
• SSL 暗号の設定 (p. 93)
• バックエンドサーバー認証の設定 (p. 94)
• ヘルスチェックの設定 (p. 96)
• Amazon EC2 インスタンスの追加 (p. 96)
• 新しく登録した Amazon EC2 インスタンスの状態のチェック (p. 97)
リスナーの設定
この例では、フロントエンド接続(クライアントからロードバランサー)とバックエンド接続(ロード
バランサーからバックエンドインスタンス)に使用するポートとプロトコルを指定して、ロードバラン
サーのリスナーを設定します。最初のリスナーはポート 80 で HTTP リクエストを受け取り、HTTP を
使用してポート 80 のバックエンドアプリケーションインスタンスにリクエストを送信します。2 つ目
のリスナーはポート 443 で HTTPS リクエストを受け取り、HTTPS を使用してポート 443 のバックエ
ンドアプリケーションインスタンスにリクエストを送信します。ロードバランサーに対して有効化する
アベイラビリティゾーンも指定する必要があります。
Elastic Load Balancing のすべてのコマンドについては、Elastic Load Balancing Quick Reference Card
を参照してください。
ロードバランサーのリスナーを設定するには
1.
証明書の作成とアップロード
リスナーの HTTPS サポートを有効にするには、ロードバランサーに SSL サーバー証明書をイン
ストールする必要があります。バックエンドインスタンスにリクエストを送信する前に、ロードバ
ランサーは証明書を使用してリクエストを終了し、次にリクエストを復号化します。Elastic Load
Balancing は、AWS Identity and Access Management(IAM)を使用して証明書をロードバラン
サーにアップロードします。
SSL 証明書を作成し、IAM を使用して証明書をアップロードするには、IAM を使用する のサーバー
証明書の作成とアップロードに進み、証明書の ARN と ID のメモを作成して、手順 2 に進みます。
すでに SSL 証明書があり、IAM を使用してアップロードした場合、AWS CLI コマンド
get-server-certificate または IAM CLI コマンド iam-servercertgetattributes を使用
し、証明書の ARN と ID を取得して、手順 2 に進みます。
SSL 証明書があり、IAM を使用してアップロードする必要がある場合は、以下の指示に従ってく
ださい。
a.
署名付き証明書が以下の基準を満たしていることを確認してください。
• 証明書が X.509 PEM 形式に従っている。
• 現在の日付が証明書の開始日と終了日の間にある。
• パブリックおよびプライベートの証明書ファイルに、証明書が 1 つしか含まれていない。
• プライベートキーが電子サーバー証明書のパブリックキーと一致している。
API Version 2012-06-01
91
Elastic Load Balancing 開発者ガイド
SSL 暗号設定およびバックエンドサーバー認証を使用した
ロードバランサーの作成
• プライベートキーが PEM 形式の RSA プライベートキーである。この場合、PEM ヘッダー
が BEGIN RSA PRIVATE KEY、フッターが END RSA PRIVATE KEY です。
• プライベートキーはパスワードで暗号化できない。
• 証明書チェーンは即時署名証明書から始まり、その後に中間証明書が順番に続いています。
信用パスに関与しない中間証明書が含まれてはいけません。信頼されたルート証明書は、最
終証明書として任意で含むことができます。
証明書がこの手順に挙げた基準を満たさない場合、アップロード時にエラーが発生する場合が
あります。新しい SSL 証明書を作成し、AWS Identity and Access Management(IAM)を使
用して証明書をアップロードします。SSL 証明書の作成およびアップロードについては、IAM
を使用する の Creating and Uploading Server Certificates を参照してください。
b.
証明書が基準を満たしている場合、以下の指示に従い、SSL 証明書のアップロードを続行し
ます。
IAM コマンドラインインターフェイス(IAM CLI)または AWS コマンドラインインターフェ
イス(AWS CLI)を使用して、サーバー証明書をアップロードできます。IAM CLI または AWS
CLI のいずれかのインストールと使用については、AWS Identity and Access Management
(IAM)CLI リファレンスを参照してください。
以下のオプションを指定して、詳細モードで AWS CLI aws iam
upload-server-certificate または IAM CLI iam-servercertupload を使用します。
• server certificate name = certificate name
• certificate body = <encoded certificate body>
• private key = <encoded private key>
Note
プライベートキーは、アップロードが完了した後に取得することはできません。
• certificate chain = <concatenation of the encoded public key
certificates>
Note
certificate chain はオプションです。こちらを使用している場合は、ルート証
明書がチェーンの末尾に来るようにしてください。証明書チェーンの順序が異なる
と、エラーが返されます。
• path = /
Note
path はオプションです。使用しない場合、パスはデフォルトの / になります。パ
スについては、IAM を使用する のIAM エンティティの識別子を参照してください。
応答には、サーバー証明書の Amazon リソースネーム(ARN)と GUID が含まれます。
arn:aws:iam::55555555555:server-certificate/production/myCert
ASCACexampleKEZUQ4K
API Version 2012-06-01
92
Elastic Load Balancing 開発者ガイド
SSL 暗号設定およびバックエンドサーバー認証を使用した
ロードバランサーの作成
c.
2.
1 行目は ARN で、2 行名は GUID です。次の手順のために ARN をコピーします。
以下の例のように、コマンド elb-create-lb を入力します。
PROMPT> elb-create-lb MyLoadBalancer --headers --listener "lb-port=80,in
stance-port=80,protocol=http,instance-protocol=http"
--listener "lb-port=443,instance-port=443,protocol=https,instance-pro
tocol=https, cert-id=arn:aws:iam::55555555555:server-certificate/produc
tion/myCert" --availability-zones us-east-1a
Elastic Load Balancing はロードバランサーの DNS 名を返します。
DNS-NAME DNS-NAME DNS-NAME
MyLoadBalancer-2111276808.us-east-1a.elb.amazonaws.com
3.
DNS 名を安全な場所にコピーします。この DNS 名は、後の手順でロードバランサーに接続するた
めに使用します。後から、CNAME またはその他の方法を使って、あらゆるドメイン名
(www.example.com など)をロードバランサーの DNS 名にマッピングすることもできます。
SSL 暗号の設定
Elastic Load Balancer は最初にデフォルトの SSL 暗号およびプロトコルで作成されます。独自の暗号
ポリシーを指定することで、このデフォルトを上書きできます。
この例では、クライアントとロードバランサーの間に接続が確立されたときに SSL ネゴシエーション
の SSL 暗号を設定する SSL 暗号ポリシーを作成します。Elastic Load Balancing サービスは
SSLNegotiationPolicyType と呼ばれるポリシーを定義します。SSLNegotiationPolicyType タ
イプの、独自の SSL 暗号ポリシー MySSLNegotiationPolicy を作成します。SSL 暗号ポリシーを作
成した後、MySSLNegotiationPolicy をリスナーと関連付けることによって暗号設定を有効にしま
す。
SSL 暗号を設定するには
1.
以下の例のように、コマンド elb-describe-lb-policies を入力し、MyLoadBalancer に関連
付けられたすべてのポリシーを一覧表示します。
PROMPT>elb-describe-lb-policies MyLoadBalancer --headers
Elastic Load Balancing は以下を返します。
POLICY
POLICY
POLICY
POLICY
2.
NAME
MyAppStickinessPolicy
MyLBStickinessPolicy
MySSLNegotiationPolicy
TYPE_NAME
AppCookieStickinessPolicyType
LBCookieStickinessPolicyType
SSLNegotiationPolicyType
応答には、ロードバランサーに関連付けられているすべてのポリシーの名前が含まれます。新しい
ポリシーを作成するには、SSLNegotiationPolicyType を使用して、既定の暗号設定を変更し
ます。使用可能な暗号の一覧については、http://www.openssl.org/docs/apps/ciphers.html を参照し
てください。
以下の例のように、コマンド elb-describe-lb-policy-types を入力し、
SSLNegotiationPolicyType に関連付けられた利用可能な暗号とポリシーのリストを取得しま
す。
API Version 2012-06-01
93
Elastic Load Balancing 開発者ガイド
SSL 暗号設定およびバックエンドサーバー認証を使用した
ロードバランサーの作成
PROMPT>elb-describe-lb-policy-types SSLNegotiationPolicyType --show-long
SSLNegotiationPolicyType に関連付けられた暗号設定とプロトコルを変更して
MySSLNegotiationPolicy を作成します。
3.
以下の例のように、コマンド elb-create-lb-policy を入力して、ロードバランサーの新しい
ポリシーを作成します。このポリシーは、TLSv1 プロトコルを受け付け、SSLv2 プロトコルは受
け付けず、暗号 DHE-RSA-AES256-SHA を受け付けます。プロトコル SSLv3 はデフォルトポリ
シーの一部であるため、引き続き利用可能です。
PROMPT>elb-create-lb-policy MyLoadBalancer --policy-name MySSLNegotiation
Policy --policy-type SSLNegotiationPolicyType --attribute "name=ProtocolTLSv1,value=true" --attribute "name=Protocol-SSLv2,value=false --attribute
"name=DHE-RSA-AES256-SHA,value=true"
4.
以下の例のように、コマンド elb-set-lb-policies-of-listener を入力し、リスナーととも
に MySSLNegotiationPolicy を設定して暗号設定を有効にします。
PROMPT>elb-set-lb-policies-of-listener MyLoadBalancer --lb-port 443 --policynames MySSLNegotiationPolicy
5.
以下の例のように、コマンド elb-describe-lb-policies を入力し、MySSLNegotiationPolicy
の詳細を表示します。
PROMPT>elb-describe-lb-policies MyLoadBalancer --policy-names MySSLNegoti
ationPolicy
以下は、応答例の一部です。
POLICY,NAME,TYPE_NAME,POLICY_ATTRIBUTE_DESCRIPTIONS
POLICY,MySSLNegotiationPolicy,SSLNegotiationPolicyType,"{name=ProtocolSSLv2,value=true},{name=EDH-DSS-DES-CBC3-SHA,value=false},{name=DHE-RSACAMELLIA128-SHA,value=false},{name=DES-CBC-MD5,value=false},{name=KRB5-RC4SHA,value=false},{name=ADH-CAMELLIA128-SHA,value=false},{name=EXP-KRB5-RC4MD5,value=false}
バックエンドサーバー認証の設定
バックエンドに HTTPS/SSL 接続を選択する場合は、バックエンドインスタンスで認証を有効化できま
す。詳細については、Using Back-End Server Authentication with Elastic Load Balancing (p. 69)を参照
してください。
この例では、認証にパブリックキーを使用するパブリックキーポリシーを作成することによって、バッ
クエンドサーバーの認証を有効にします。その後パブリックキーポリシーを使用して、バックエンド
サーバー認証ポリシーを作成します。最後に、バックエンドサーバー認証ポリシーにバックエンドサー
バーポートを設定して、バックエンドサーバー認証を有効にします。この例では、バックエンドサー
バーは、インスタンスポート 443 に設定された SSL/HTTPS プロトコルでリッスンします。
パブリックキーポリシーの値は、バックエンドサーバーがロードバランサーに提示する証明書のパブ
リックキーです。パブリックキーは OpenSSL を使って取得できます。
バックエンドサーバー認証を設定するには
API Version 2012-06-01
94
Elastic Load Balancing 開発者ガイド
SSL 暗号設定およびバックエンドサーバー認証を使用した
ロードバランサーの作成
1.
コマンド openssl x509 を入力してパブリックキーを取得します。
openssl x509 -in PublicKey -pubkey -noout
2.
以下の例のように、コマンド elb-create-lb-policy を入力し、パブリックキーポリシーを作
成します。
PROMPT>elb-create-lb-policy MyLoadBalancer --policy-name MyPublicKeyPolicy
--policy-type PublicKeyPolicyType --attribute "name=PublicKey,value=
MIICiTCCAfICCQD6m7oRw0uXOjANBgkqhkiG9w0BAQUFADCBiDELMAkGA1UEBhMC
VVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6
b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAd
BgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5jb20wHhcNMTEwNDI1MjA0NTIxWhcN
MTIwNDI0MjA0NTIxWjCBiDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYD
VQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDASBgNVBAsTC0lBTSBDb25z
b2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAdBgkqhkiG9w0BCQEWEG5vb25lQGFt
YXpvbi5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMaK0dn+a4GmWIWJ
21uUSfwfEvySWtC2XADZ4nB+BLYgVIk60CpiwsZ3G93vUEIO3IyNoH/f0wYK8m9T
rDHudUZg3qX4waLG5M43q7Wgc/MbQITxOUSQv7c7ugFFDzQGBzZswY6786m86gpE
Ibb3OhjZnzcvQAaRHhdlQWIMm2nrAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAtCu4
nUhVVxYUntneD9+h8Mg9q6q+auNKyExzyLwaxlAoo7TJHidbtS4J5iNmZgXL0Fkb
FFBjvSfpJIlJ00zbhNYS5f6GuoEDmFJl0ZxBHjJnyp378OD8uTs7fLvjx79LjSTb
NYiytVbZPQUQ5Yaxu2jXnimvw3rrszlaEXAMPLE=
"
Note
attribute 引数にパブリックキーの値を指定するには、パブリックキーの先頭の行と末
尾の行(「-----BEGIN PUBLIC KEY-----」を含む行と「-----END PUBLIC
KEY-----」を含む行)を削除します。CLI では、attribute 引数の値にスペース文字を
使用できません。
3.
以下の例のように、コマンド elb-create-lb-policy を入力し、MyPublicKeyPolicy を参照
してバックエンドサーバー認証ポリシーを作成します。複数のパブリックキーポリシーを参照でき
ます。複数のパブリックキーポリシーを使用すると、ロードバランサーはすべてのキーをひとつず
つ試して認証を行います。いずれかのパブリックキーがサーバーの証明書に一致すると、認証が成
功します。
PROMPT>elb-create-lb-policy MyLoadBalancer --policy-name MyBackendServerAu
thenticationPolicy --policy-type BackendServerAuthenticationPolicyType -attribute "name=PublicKeyPolicyName,value=MyPublicKeyPolicy"
4.
以下の例のように、コマンド elb-set-lb-policies-for-backend を入力し、
MyBackendServerAuthenticationPolicy をバックエンドサーバーポートに設定します。
PROMPT>elb-set-lb-policies-for-backend-server MyLoadBalancer --instance-port
443 --policy-names MyBackendAuthenticationPolicy
API Version 2012-06-01
95
Elastic Load Balancing 開発者ガイド
SSL 暗号設定およびバックエンドサーバー認証を使用した
ロードバランサーの作成
5.
以下の例のように、コマンド elb-describe-lb-policies を入力し、MyLoadBalancer のため
に作成されたすべてのポリシーを一覧表示します。
PROMPT>elb-describe-lb-policies MyLoadBalancer
6.
以下の例のように、コマンド elb-describe-lb-policies を入力し、
MyBackendServerAuthenticationPolicy の詳細を表示します。
PROMPT>elb-describe-lb-policies MyLoadBalancer --policy-names MyBackend
ServerAuthenticationPolicy
ヘルスチェックの設定
この例では、バックエンドサーバーのヘルスチェックを設定します。
•
バックエンドサーバーのヘルスチェックを設定するには
以下の例のように、コマンド elb-configure-healthcheck を入力します。
PROMPT> elb-configure-healthcheck MyLoadBalancer --headers --target "HT
TP:80/ping" --interval 30 --timeout 3 --unhealthy-threshold 2 --healthythreshold 2
Elastic Load Balancing は以下を返します。
HEALTH-CHECK TARGET INTERVAL TIMEOUT HEALTHY-THRESHOLD UNHEALTHY-THRESHOLD
HEALTH-CHECK HTTP:80/ping 30
3
2
2
Amazon EC2 インスタンスの追加
この例では、新しく作成したロードバランサーを Amazon EC2 に登録します。
Important
登録できるのは、Pending 状態または Running 状態にあり、Virtual Private Cloud(VPC)内に
ないインスタンスのみです。VPC で Elastic Load Balancing を使用する場合は、Amazon VPC
への Elastic Load Balancing のデプロイ (p. 112) を参照してください。
•
Amazon EC2 インスタンスを追加するには
以下の例のように、elb-register-instances-with-lb コマンドを入力します。
PROMPT> elb-register-instances-with-lb
i-4f8cf126,i-0bb7ca62
MyLoadBalancer
Elastic Load Balancing は以下を返します。
API Version 2012-06-01
96
--headers --instances
Elastic Load Balancing 開発者ガイド
負荷分散するアプリケーションを追加のアベイラビリティ
ゾーンに拡張するには
INSTANCE
INSTANCE
INSTANCE
INSTANCE-ID
i-4f8cf126
i-0bb7ca62
Important
ロードバランサーに関連付けられたバックエンドの EC2 インスタンスを停止して起動する場
合は、停止したインスタンスをロードバランサーから登録解除し、再起動したインスタンスを
再登録することをお勧めします。そうしないと、再起動したインスタンスへのトラフィックを
ロードバランサーがルーティングできない可能性があります。ロードバランサーからインスタ
ンスを登録解除して再登録する方法については、「Amazon EC2 インスタンスの登録解除と登
録 (p. 139)」を参照してください。
新しく登録した Amazon EC2 インスタンスの状態のチェック
この例では、新しく登録した Amazon EC2 インスタンスの状態をチェックします。登録した EC2 イン
スタンスのいずれかが InService 状態になると、ロードバランサーを使用できるようになります。
1.
新しく登録した Amazon EC2 インスタンスの状態をチェックするには
以下の例のように、elb-describe-instance-health コマンドを入力します。
PROMPT> elb-describe-instance-health
i-4f8cf126,i-0bb7ca62
MyLoadBalancer
--headers --instances
Elastic Load Balancing は以下を返します。
INSTANCE_ID
INSTANCE_ID
STATE
DESCRIPTION
REASON-CODE
INSTANCE_ID i-4f8cf126
OutOfService Instance has failed at least the
UnhealthyThreshold number of health checks consecutively. Instance
INSTANCE_ID i-0bb7ca62
InService
N/A
N/A
2.
一部のまたはすべてのインスタンスの [State] フィールドに OutOfService と表示される場合、イン
スタンスが登録中であると考えられます。詳細については、Elastic Load Balancing のトラブル
シューティング: インスタンスの登録 (p. 203) を参照してください。
3.
EC2 インスタンスの少なくとも 1 つが InService であると確認されたら、ロードバランサーをテス
トすることができます。ロードバランサーをテストするには、「リスナーの設定 (p. 91)」タスク
を完了した後に受け取ったロードバランサーの [DNS Name] をコピーして、インターネットに接
続したウェブブラウザのアドレスフィールドに貼り付けます。ロードバランサーが実行中の場合
は、HTTP サーバーのデフォルトページが表示されます。
負荷分散するアプリケーションを追加のアベイラビ
リティゾーンに拡張するには
この例では、EC2 アプリケーションを追加のアベイラビリティゾーン(us-east-1b)で実行するよう
拡張します。そのためには、まずアベイラビリティーゾーン us-east-1b 内のインスタンスをロード
バランサーに登録します。その後、インスタンスがロードバランサーで OutOfService 状態で表示さ
API Version 2012-06-01
97
Elastic Load Balancing 開発者ガイド
負荷分散するアプリケーションを追加のアベイラビリティ
ゾーンに拡張するには
れるまで待ちます。最後にロードバランサーに対してアベイラビリティーゾーン us-east-1b を有効
にします。
Note
アベイラビリティゾーンを追加する前に、新しいアベイラビリティゾーンのインスタンスを
ロードバランサーに追加することが重要です。EnableAvailabilityZonesForLoadBalancer
を呼び出すと、ロードバランサーが有効なすべてのアベイラビリティゾーン間で均等にトラ
フィックをルーティングし始めます。
前提条件:
• アベイラビリティーゾーン us-east-1a 内で HTTP ロードバランサーがセットアップしてある(「Create
a HTTPS/SSL Load Balancer (p. 75)」を参照)。
• アベイラビリティーゾーン us-east-1b で、ロードバランサーに登録するインスタンスが起動してい
る。
Query API の使用
負荷分散したアプリケーションを追加のアベイラビリティゾーンに拡張するには
1.
以下のパラメータを使用して、RegisterInstancesFromLoadBalancer を呼び出します。
• LoadBalancerName = MyLoadBalancer
• Instances = [i-3a8cf324, i-2603ca33]
2.
以下のパラメータを使って DescribeInstanceHealth を呼び出します。
• LoadBalancerName = MyLoadBalancer
• インスタンス = i-3a8cf324, i-2603ca33
3.
前のステップのインスタンスが OutOfService 状態の場合は、次のステップに進んでください。
EnableAvailabilityZonesForLoadBalancer を呼び出します。
• LoadBalancerName = MyLoadBalancer
• アベイラビリティゾーン = us-east-1b
このオペレーションにより、ロードバランサーで有効なアベイラビリティゾーンの最新リストが返され
ます。
コマンドラインインターフェイスの使用
負荷分散するアプリケーションを追加のアベイラビリティーゾーンに拡張するには
1.
以下の例のように、elb-register-instances-with-lb コマンドを入力します。
PROMPT> elb-register-instances-with-lb
i-3a8cf324, i-2603ca33
MyLoadBalancer
Elastic Load Balancing は以下を返します。
API Version 2012-06-01
98
--headers --instances
Elastic Load Balancing 開発者ガイド
負荷分散するアプリケーションを追加のアベイラビリティ
ゾーンに拡張するには
INSTANCE
INSTANCE
INSTANCE
INSTANCE
INSTANCE
2.
INSTANCE-ID
i-3a8cf324
i-2603ca33
i-4f8cf126
i-0bb7ca62
以下の例のように、elb-describe-instance-health コマンドを入力します。
PROMPT> elb-describe-instance-health
i-3a8cf324,i-2603ca33
MyLoadBalancer
--headers --instances
Elastic Load Balancing は以下を返します。
INSTANCE
INSTANCE
INSTANCE
3.
INSTANCE-ID STATE
i-3a8cf324 OutOfService
i-2603ca33 OutOfService
以下の例のように、elb-enable-zones-for-lb コマンドを入力します。
PROMPT>elb-enable-zones-for-lb
zones us-east-1b
MyLoadBalancer
Elastic Load Balancing は以下を返します。
AVAILABILITY_ZONES
AVAILABILITY_ZONES
AVAILABILITY-ZONES
us-east-1a, us-east-1b
API Version 2012-06-01
99
--headers --availability-
Elastic Load Balancing 開発者ガイド
負荷分散するアプリケーションのアベイラビリティーゾー
ンの無効化
負荷分散するアプリケーションのアベイラビリティー
ゾーンの無効化
この例では、EC2 アプリケーションのアベイラビリティーゾーン us-east-1a を無効化します。
このシナリオは、アベイラビリティーゾーン us-east-1a と us-east-1b で HTTP ロードバランサー
が有効になっていることを前提としています。
まずロードバランサーに対してアベイラビリティーゾーンを無効化し、その後インスタンスが
OutOfService 状態になるのを待って、ロードバランサーからそれらのゾーンを登録解除します。
Note
ロードバランサーは常に、有効なすべてのアベイラビリティゾーン間でトラフィックを分散し
ます。有効なアベイラビリティーゾーンに正常なインスタンスがない場合、リクエストは別の
有効なアベイラビリティーゾーンの正常なインスタンスに転送されます。ゾーンにインスタン
スを含める予定がない場合、そのアベイラビリティーゾーンで
DisableAvailabilityZonesForLoadBalancer アクションを呼び出して無効にする必要が
あります。
Query API の使用
負荷分散したアプリケーションからアベイラビリティゾーンを無効にするには
1.
以下のパラメータを使用して、DisableAvailabilityZonesForLoadBalancer を呼び出しま
す。
• LoadBalancerName = MyLoadBalancer
• アベイラビリティゾーン = us-east-1a
2.
このオペレーションにより、ロードバランサーで有効なアベイラビリティゾーンの最新リストが返
されます。
以下のパラメータを使って DescribeInstanceHealth を呼び出します。無効化されたアベイラ
ビリティゾーン内のすべてのインスタンスが OutOfService 状態になるまで待つ必要があります。
• LoadBalancerName = MyLoadBalancer
• Instances = i-4f8cf126, i-0bb7ca62
3.
以下のパラメータを使用して、DeregisterInstances を呼び出します。
• LoadBalancerName = MyLoadBalancer
• インスタンス = i-4f8cf126, i-0bb7ca62
コマンドラインインターフェイスの使用
負荷分散したアプリケーションからアベイラビリティゾーンを無効にするには
1.
以下の例のように、elb-disable-zones-for-lb コマンドを入力します。
API Version 2012-06-01
100
Elastic Load Balancing 開発者ガイド
負荷分散するアプリケーションのアベイラビリティーゾー
ンの無効化
PROMPT> elb-disable-zones-for-lb
zones us-east-1a
MyLoadBalancer
--headers --availability-
Elastic Load Balancing は以下を返します。
AVAILABILITY_ZONES
AVAILABILITY_ZONES
2.
AVAILABILITY-ZONES
us-east-1b
以下の例のように、elb-describe-instance-health コマンドを入力します。
PROMPT> elb-describe-instance-health
i-4f8cf126,i-0bb7ca62
MyLoadBalancer
--headers --instances
Elastic Load Balancing は以下を返します。
INSTANCE INSTANCE-ID STATE
INSTANCE i-4f8cf126 OutOfService
INSTANCE i-0bb7ca62 OutOfService
3.
以下の例のように、elb-deregister-instances-from-lb コマンドを入力します。
PROMPT> elb-deregister-instances-from-lb
stances i-4f8cf126,i-0bb7ca62
Elastic Load Balancing は以下を返します。
INSTANCE INSTANCE-ID
INSTANCE i-3a8cf324
INSTANCE i-2603ca33
API Version 2012-06-01
101
MyLoadBalancer
--headers --in
Elastic Load Balancing 開発者ガイド
Amazon EC2-Classic でのセキュリティグループの管理
Amazon EC2-Classic でのセキュリティグループの管
理
セキュリティグループは、インスタンスのグループ内への着信を許可されたトラフィックを制御する
ファイアウォールとして動作します。Amazon EC2 インスタンスを起動する際、1 つまたは複数のセ
キュリティグループに割り当てることができます。セキュリティグループごとに、グループ内のインス
タンスに着信可能なトラフィックを規定するルールを追加できます。ここで許可しない着信トラフィッ
クはすべて廃棄されます。セキュリティグループのルールはいつでも変更することができます。新しく
作成したルールは、グループ内の既存のインスタンスと将来作成されるインスタンスすべてに対して自
動的に適用されます。Amazon EC2 のセキュリティグループについては、Using Security Groups を参
照してください。
Elastic Load Balancing の特別な Amazon EC2 ソースセキュリティグループを使用して、バックエンド
Amazon EC2 インスタンスが Elastic Load Balancing からのみトラフィックを受け取るように設定する
ことができます。この機能には 2 つのセキュリティグループがあります。1 つはソースセキュリティグ
ループで、もう 1 つはバックエンドインスタンスの進入ルールを定義するセキュリティグループです。
ロードバランサーとバックエンドインスタンスとの間のトラフィックをロックするには、着信トラフィッ
クを制限するバックエンドセキュリティグループにルールを追加または修正して、Elastic Load Balancing
が提供する Amazon EC2 ソースセキュリティグループからのトラフィックだけを通すようにします。
Elastic Load Balancing とバックエンド Amazon EC2 インスタ
ンス間でトラフィックをロックする
Topics
• AWS Management Console の使用 (p. 103)
• コマンドラインインターフェイス(CLI)の使用 (p. 104)
• Query API の使用 (p. 106)
このセクションでは、ロードバランサーとバックエンド Amazon EC2 インスタンス間でトラフィック
をロックする手順を説明します。
作業を始める前に、必ず Amazon EC2 ユーザーガイドのセキュリティグループの概念セクションを読
んでください。
下の表は、ロードバランサーとバックエンドインスタンス間のトラフィックをロックする手順の流れを
表したものです。その下に、ロードバランサーとバックエンドインスタンスとの間のトラフィックを、
AWS マネジメントコンソール、コマンドラインインターフェイス(CLI)またはクエリ API を使って
ロックする手順の説明があります。
コマンドラインインターフェイス(CLI)を使う予定がある場合は、事前に Amazon EC2 コマンドライ
ンインターフェイスツールをインストールしておいてください。ツールのダウンロードとインストール
については、Amazon EC2 ユーザーガイドのコマンドラインツールの使用を開始するセクションを参
照してください。
ロードバランサーとバックエンドインスタンス間のトラフィックをロックする手順
1
Elastic Load Balancing がロードバランサーに提供するソースセキュリティグループの名前を取得
します。
2
Amazon EC2 バックエンドインスタンスが属するセキュリティグループに、ロードバランサーか
らの着信トラフィックを許可する新しいルールを追加します。
3
新しいルールが正しく追加されたか検証します。
API Version 2012-06-01
102
Elastic Load Balancing 開発者ガイド
Amazon EC2-Classic でのセキュリティグループの管理
4
オプション: バックエンドインスタンスのセキュリティグループから、追加したルールより制約
がゆるやかなものを削除します。
AWS Management Console の使用
1.
2.
Elastic Load Balancing がロードバランサーに提供するソースセキュリティグループの名前を取得
するには
a.
Amazon EC2 の [ Getting Started] ページにある [EC2 Dashboard] ペインの [NETWORK &
SECURITY] で、 [Load Balancers] をクリックします。
b.
c.
d.
[Load Balancers] ページで、ロードバランサーを選択します。
下のペインには、ロードバランサーの詳細が表示されます。
[Security] タブをクリックします。
e.
[Source Security Group] 列に表示されている名前をコピーします。これは Elastic Load Balancing
がロードバランサーに提供するソースセキュリティグループです。
Amazon EC2 バックエンドインスタンスのセキュリティグループに Elastic Load Balancing ソース
セキュリティグループからの着信トラフィックを許可するルールを追加するには
a.
b.
c.
d.
e.
f.
g.
h.
i.
j.
k.
[Load Balancers] ページで、[Navigation] ペインの [Instances] をクリックします。
[My Instances] ページで、ロードバランサーに登録されたインスタンスを選択します。
下ペインにインスタンスの詳細が表示されます。[Description] タブを選択していることを確認
します。
[Security Groups:] フィールドに表示されたセキュリティグループ名を書きとめておきます。
これはバックエンドインスタンスに関連付けられたセキュリティグループです。
[Navigation] ペインで [Security Groups] をクリックします。
[Security Groups] ページで、バックエンドインスタンスに関連付けられたセキュリティグルー
プを選択します。
下ペインにセキュリティグループの詳細が表示されます。
[Inbound] タブをクリックします。[Inbound] タブの右ペインに、そのセキュリティグループに
属するルールが表示されます。
[Port range:] フィールドに、Amazon EC2 インスタンスにアクセスするためのポート番号また
はポート番号の範囲を指定します。
[Source:] フィールドに、ロードバランサーのソースセキュリティグループ名を入力します。
これはステップ 1 で使った名前と同じです。この例では [amazon-elb/amazon-elb-sg] となり
ます。
[Add Rule] をクリックし、[Apply Rule Changes] をクリックします。
3.
[Inbound] タブの右ペインに新しいルールが表示されます。新しいルールがバックエンドインスタ
ンスのセキュリティグループに追加されたか検証します。
4.
オプション: ステップ 2 で追加したルールより規制がゆるやかなルールがセキュリティグループに
設定されている場合、規制がゆるやかなルールが表示されている行で [Delete] をクリックして削除
してください。
API Version 2012-06-01
103
Elastic Load Balancing 開発者ガイド
Amazon EC2-Classic でのセキュリティグループの管理
Note
バックエンドインスタンスに直接接続したい場合は、直接接続を許可する着信ルールは削
除しないでください。例えば、ポート 22(SSH)と 3389(RDP)への着信トラフィック
を許可するルールを両方残しておいてもかまいません。
コマンドラインインターフェイス(CLI)の使用
1.
Elastic Load Balancing がロードバランサーに提供するソースセキュリティグループの名前を取得
するには
elb-describe-lbs コマンドを入力します。ソースセキュリティグループの名前を表示するに
は、--show-long パラメータを含める必要があります。このコマンドのその他のパラメータの使
用については、Elastic Load Balancing Quick Reference Card を参照してください。
次のサンプルは、MyLoadBalancer ロードバランサーの詳細を返します。
elb-describe-lbs MyLoadBalancer --show-long --headers
以下に、応答の例を示します。
LOAD_BALANCER,NAME,DNS_NAME,CANONICAL_HOSTED_ZONE_NAME,CANONICAL_HOS
TED_ZONE_NAME_ID,
HEALTH_CHECK,AVAILABILITY_ZONES,SUBNETS,VPC_ID,INSTANCE_ID,LISTENER_DESCRIP
TIONS,
BACKEND_SERVER_DESCRIPTIONS,OTHER_POLICIES,SOURCE_SECURITY_GROUP,SECUR
ITY_GROUPS,CREATED_TIME,SCHEME
LOAD_BALANCER,MyLoadBalancer,MyLoadBalancer-91948427.us-east-1.elb.amazon
aws.com
,MyLoadBalancer-91948427.us-east-1.elb.amazonaws.com,Z3DZXE0Q79N41H,"{inter
val=6
,target=HTTP:80/,timeout=5,healthy-threshold=2,unhealthy-threshold=2}",useast-1
e,(nil),(nil),"i-f5ab7988, i-fbab7986","{protocol=HTTP,lb-port=80,instanceproto
col=HTTP,instance-port=80,policies=},{protocol=HTTPS,lb-port=443,instanceprotoc
ol=HTTP,instance-port=80,cert-id=arn:aws:iam::803981987763:server-certific
ate/sc
ert,policies=AWSConsole-SSLNegotiationPolicy-MyLoadBalancer}",(nil),AWSCon
sole-S
SLNegotiationPolicy-MyLoadBalancer,"{owner-alias=example-elb,group-name=ex
ample-elb-sg}"
,(nil),2012-09-28T17:57:27.580Z,internet-facing
応答の要素には owner-alias と group-name から成るソースセキュリティグループのデータ構
造が含まれます。これはロードバランサーに関連付けられたソースセキュリティグループです。
owner-alias と group-name を書きとめておきます。これは次のステップで使います。
2.
Amazon EC2 バックエンドインスタンスのセキュリティグループに Elastic Load Balancing ソース
セキュリティグループからの着信トラフィックを許可するルールを追加するには
この手順では Amazon EC2 CLI コマンドを使用します。
a.
オプション: バックエンドインスタンスのセキュリティグループ名がわからない場合、
ec2-describe-group コマンドを入力します。次に例を示します。
API Version 2012-06-01
104
Elastic Load Balancing 開発者ガイド
Amazon EC2-Classic でのセキュリティグループの管理
ec2-describe-group --headers
b.
応答の要素にはアカウント内の全セキュリティグループの詳細が含まれます。変更を加える
バックエンドインスタンスに関連付けられたセキュリティグループ名を書きとめておきます。
ec2-authorize コマンドを入力して、バックエンドインスタンスに関連付けられたセキュリ
ティグループにルールを追加します。
以下の例では、ec2-authorize で MyTestSecurityGroup という名前のセキュリティグルー
プに属するすべてのバックエンドインスタンスへの着信トラフィックを制限します。
ec2-authorize MyTestSecurityGroup -u amazon-elb -o amazon-elb-sg
ポートとプロトコルを指定する追加パラメータについては、Amazon EC2 CLI リファレンスの
ec2-authorize を参照してください。
3.
バックエンドインスタンスに関連付けられたセキュリティグループに、Elastic Load Balancing ソー
スセキュリティグループからの着信トラフィックを許可する新しいルールが適用されているかを検
証するには、
以下の例のように、コマンド ec2-describe-group を入力します。
ec2-describe-group MyTestSecurityGroup
--headers
次に、新しく追加されたルールを一覧表示する応答例を示します。
GROUP
Id
Owner
Name
Description
GROUP
sg-9cd8a3f4
000011112222
MyTestSecurityGroup This is an ex
ample
PERMISSION
000011112222
MyTestSecurityGroup
ALLOWS tcp
0
0
FROM
USER
amazon-elb
NAME amazon-elb-sg
ID sg-843f59ed in
gress
PERMISSION
000011112222
MyTestSecurityGroup
ALLOWS tcp
3389
3389
FROM
USER
amazon-elb
NAME amazon-elb-sg
ID sg-843f59ed in
gress
PERMISSION
000011112222
MyTestSecurityGroup
ALLOWS tcp
22
22
FROM
CIDR
0.0.0.0/0
ingress
PERMISSION
000011112222
MyTestSecurityGroup
ALLOWS tcp
80
80
FROM
CIDR
0.0.0.0/0
ingress
4.
前の手順で追加したルールよりも規制のゆるいルールがセキュリティグループに設定されている場
合は、ec2-revoke コマンドを使って規制がゆるいルールを削除してください。例えば、既存の
ルールで、CIDR 範囲 0.0.0.0/0(すべての IPv4 アドレス)からの受信トラフィックを許可してい
る可能性があります。
以下の例では、ec2-revoke を使用して、MyTestSecurityGroup という名前のセキュリティグ
ループから、すべての IPv4 アドレスからの HTTP トラフィックを許可するルールを削除します。
ec2-revoke MyTestSecurityGroup -p 80 -s 0.0.0.0/0
API Version 2012-06-01
105
Elastic Load Balancing 開発者ガイド
Amazon EC2-Classic でのセキュリティグループの管理
Note
バックエンドインスタンスに直接接続したい場合は、直接接続を許可する着信ルールは無
効化しないでください。例えば、ポート 22(SSH)と 3389(RDP)への着信トラフィッ
クを許可するルールを両方残しておいてもかまいません。
Query API の使用
1.
Elastic Load Balancing がロードバランサーに提供するソースセキュリティグループの名前を取得
するには
a.
以下のパラメータを使用して、DescribeLoadBalancers アクションを呼び出します。
• LoadBalancerNames = MyLoadBalancer
応答にはロードバランサーの詳細が含まれます。次の例のような情報が取得されます。
<DescribeLoadBalancersResponse xmlns="http://elasticloadbalancing.amazon
aws.com/doc/2012-06-01/">
<DescribeLoadBalancersResult>
<LoadBalancerDescriptions>
<member>
<SecurityGroups/>
<LoadBalancerName>MyLoadBalancer</LoadBalancerName>
<CreatedTime>2012-09-28T17:57:27.580Z</CreatedTime>
<HealthCheck>
<Interval>6</Interval>
<Target>HTTP:80/</Target>
<HealthyThreshold>2</HealthyThreshold>
<Timeout>5</Timeout>
<UnhealthyThreshold>2</UnhealthyThreshold>
</HealthCheck>
<ListenerDescriptions>
<member>
<PolicyNames/>
<Listener>
<Protocol>HTTP</Protocol>
<LoadBalancerPort>80</LoadBalancerPort>
<InstanceProtocol>HTTP</InstanceProtocol>
<InstancePort>80</InstancePort>
</Listener>
</member>
<member>
<PolicyNames>
<member>AWSConsole-SSLNegotiationPolicy-MyLoadBalancer</mem
ber>
</PolicyNames>
<Listener>
<Protocol>HTTPS</Protocol>
<LoadBalancerPort>443</LoadBalancerPort>
<InstanceProtocol>HTTP</InstanceProtocol>
<SSLCertificateId>arn:aws:iam::000011112222:server-certi
ficate/scert</SSLCertificateId>
<InstancePort>80</InstancePort>
API Version 2012-06-01
106
Elastic Load Balancing 開発者ガイド
Amazon EC2-Classic でのセキュリティグループの管理
</Listener>
</member>
</ListenerDescriptions>
<Instances>
<member>
<InstanceId>i-f5ab7988</InstanceId>
</member>
<member>
<InstanceId>i-fbab7986</InstanceId>
</member>
</Instances>
<Policies>
<AppCookieStickinessPolicies/>
<OtherPolicies>
<member>AWSConsole-SSLNegotiationPolicy-MyLoadBalancer</mem
ber>
</OtherPolicies>
<LBCookieStickinessPolicies/>
</Policies>
<AvailabilityZones>
<member>us-east-1e</member>
</AvailabilityZones>
<CanonicalHostedZoneName>MyLoadBalancer-91948427.us-east1.elb.amazonaws
.com</CanonicalHostedZoneName>
<CanonicalHostedZoneNameID>Z3DZXE0Q79N41H</CanonicalHostedZone
NameID>
<Scheme>internet-facing</Scheme>
<SourceSecurityGroup>
<OwnerAlias>amazon-elb</OwnerAlias>
<GroupName>amazon-elb-sg</GroupName>
</SourceSecurityGroup>
<DNSName>MyLoadBalancer-91948427.us-east-1.elb.amazonaws.com</DNS
Name>
<BackendServerDescriptions/>
<Subnets/>
</member>
</LoadBalancerDescriptions>
</DescribeLoadBalancersResult>
<ResponseMetadata>
<RequestId>0d7f1256-0b10-11e2-b66c-d3e9bEXAMPLE</RequestId>
</ResponseMetadata>
</DescribeLoadBalancersResponse>
b.
2.
応答の要素には SourceSecurityGroup と OwnerAlias から成る GroupName データ構造が
含まれます。これは Elastic Load Balancing がロードバランサーに提供するセキュリティグ
ループです。SourceSecurityGroup データ構造の詳細を書きとめておきます。これは次の
ステップで使います。
Amazon EC2 バックエンドインスタンスのセキュリティグループに Elastic Load Balancing ソース
セキュリティグループからの着信トラフィックを許可するルールを追加するには
a.
オプション: バックエンドインスタンスのセキュリティグループ名がわからない場合、
DescribeSecurityGroup アクションを呼び出して、バックエンドインスタンスに関連付け
られたセキュリティグループ名を探します。
API Version 2012-06-01
107
Elastic Load Balancing 開発者ガイド
Amazon EC2-Classic でのセキュリティグループの管理
b.
応答にはアカウント内の全セキュリティグループの詳細が含まれます。変更を加えるバックエ
ンドインスタンスに関連付けられたセキュリティグループ名を書きとめておきます。
以下のパラメータを使用して、AuthorizeSecurityGroupIngress アクションを呼び出し
ます。
• GroupName = MyTestSecurityGroup
• IpPermissions.1.Groups.1.UserId = amazon-elb
• IpPermissions.1.Groups.1.GroupName = amazon-elb-sg
ポートとプロトコルを指定する追加パラメータについては、Amazon EC2 API リファレンスの
AuthorizeSecurityGroupIngress を参照してください。
3.
バックエンドインスタンスに関連付けられたセキュリティグループに、Elastic Load Balancing ソー
スセキュリティグループからの着信トラフィックを許可する新しいルールが適用されているかを検
証します。
以下のパラメータを使用して、DescribeSecurityGroups を呼び出します。
• GroupName = MyTestSecurityGroup
応答には新しいルールを追加したセキュリティグループの詳細が含まれます。次の例のような情報
が取得されます。
<DescribeSecurityGroupsResponse xmlns="http://ec2.amazonaws.com/doc/201203-01/">
<requestId>a8a2955f-61db-4e5e-b138-e2be7EXAMPLE</requestId>
<securityGroupInfo>
<item>
<ownerId>000011112222</ownerId>
<groupId>sg-9cd8a3f4</groupId>
<groupName>MyTestSecurityGroup </groupName>
<groupDescription>This is an example </groupDescription>
<ipPermissions>
<item>
<ipProtocol>tcp</ipProtocol>
<fromPort>0</fromPort>
<toPort>0</toPort>
<groups>
<item>
<userId>amazon-elb</userId>
<groupId>sg-843f59ed</groupId>
<groupName>amazon-elb-sg</groupName>
</item>
</groups>
<ipRanges/>
</item>
<item>
<ipProtocol>tcp</ipProtocol>
<fromPort>3389</fromPort>
<toPort>3389</toPort>
<groups>
<item>
<userId>amazon-elb</userId>
<groupId>sg-843f59ed</groupId>
<groupName>amazon-elb-sg</groupName>
API Version 2012-06-01
108
Elastic Load Balancing 開発者ガイド
Amazon EC2-Classic でのセキュリティグループの管理
</item>
</groups>
<ipRanges/>
</item>
<item>
<ipProtocol>tcp</ipProtocol>
<fromPort>22</fromPort>
<toPort>22</toPort>
<groups/>
<ipRanges>
<item>
<cidrIp>0.0.0.0/0</cidrIp>
</item>
</ipRanges>
</item>
<item>
<ipProtocol>tcp</ipProtocol>
<fromPort>80</fromPort>
<toPort>80</toPort>
<groups/>
<ipRanges>
<item>
<cidrIp>0.0.0.0/0</cidrIp>
</item>
</ipRanges>
</item>
</securityGroupInfo>
</DescribeSecurityGroupsResponse>
4.
オプション: 前の手順で追加したルールよりも規制のゆるいルールがセキュリティグループに設定
されている場合は、RevokeSecurityGroupIngress アクションを使って規制がゆるいルールを
削除してください。例えば、既存のルールで、CIDR 範囲 0.0.0.0/0(すべての IPv4 アドレス)か
らの受信トラフィックを許可している可能性があります。
以下の例では、RevokeSecurityGroupIngress アクションを以下のパラメータで使用して、
MyTestSecurityGroup という名前のセキュリティグループから、すべての IPv4 アドレスからの
HTTP トラフィックを許可するルールを削除します。
• GroupName = MyTestSecurityGroup
• IpPermissions.1.FromPort = 80
• IpPermissions.1.IpRanges.1.CidrIp = 0.0.0.0/0
Note
バックエンドインスタンスに直接接続したい場合は、直接接続を許可する着信ルールは無
効化しないでください。例えば、ポート 22(SSH)と 3389(RDP)への着信トラフィッ
クを許可するルールを両方残しておいてもかまいません。
API Version 2012-06-01
109
Elastic Load Balancing 開発者ガイド
Elastic Load Balancing での IPv6 の使用
Elastic Load Balancing での IPv6 の使用
Elastic Load Balancing はインターネットプロトコルバージョン6(IPv6)とインターネットプロトコル
バージョン4(IPv4)の両方をサポートしています。クライアントは、ロードバランサーへの接続に
IPv4 と IPv6 のどちらでも使用できます。クライアントとロードバランサーとの通信方法に関係なく、
ロードバランサーとバックエンドインスタンス間の通信では、IPv4 のみが使用されます。つまり、バッ
クエンド Amazon EC2 インスタンスではネイティブの IPv6 サポートは必要ありません。
Elastic Load Balancing は、ロードバランサー名とリージョンを組み合わせたパブリック DNS 名を提供
します。米国東部リージョンにある myLB というロードバランサーを表す DNS 名の例:
myLB-1234567890.us-east-1.elb.amazonaws.com。この基本パブリック DNS 名は IPv4 レコードのみ
を返します。
基本パブリック DNS 名に加え、Elastic Load Balancing は 2 つの追加パブリック DNS 名を提供しま
す。1つ目は、文字列 ipv6 とロードバランサー名およびリージョンを組み合わせたものです。例:
ipv6.myLB-1234567890.us-east-1.elb.amazonaws.com「ipv6」のプレフィックスの付いた DNS 名は、
IPv6 レコードのみを返します。2つ目のパブリック DNS 名は、文字列 dualstack とロードバランサー
名およびリージョンを組み合わせたものです。例:
dualstack.myLB-1234567890.us-east-1.elb.amazonaws.com「dualstack」のプレフィックスの付いた
DNS 名は、IPv4 と IPv6 レコードの両方を返します。
ほとんどのお客様は、ロードバランサーで IPv6 を有効化するため、「dualstack」プレフィックス付き
の DNS 名の使用を希望するでしょう。「dualstack」プレフィックス付きの DNS 名は IPv6 と IPv4 レ
コードの両方を返すため、クライアントはそれぞれの接続ニーズに応じて、IPv4 と IPv6 のどちらでも
ロードバランサーにアクセスできます。「ipv6」プレフィックス付きの DNS 名は IPv6 アドレスのみを
返すので、このような DNS 名を使用した場合、IPv4 接続のみを使用するクライアントはロードバラン
サーにアクセスできません。
Elastic Load Balancing は、IPv4 または IPv6 のいずれかを使用して接続しているクライアント用に
X-Forwarded-For リクエストヘッダーをサポートしています。クライアントが IPv6 を使用して接続し
ている場合、Elastic Load Balancing はリクエストヘッダーにクライアントの IPv6 アドレスを挿入しま
す。X-Forwarded-For サポートについては、Terminology and Key Concepts (p. 6) を参照してくださ
い。
Elastic Load Balancing では、IPv6 でも、IPv4 の場合と同じような方法で、DNS 名をロードバランサー
にマップできます。DNS 名からロードバランサーへのマップに CNAME レコードを使用している場合
は、その方法を継続して使用できます。Amazon Route 53 のホストゾーンを使用している場合は、同
じ Elastic Load Balancing コマンドを使用して、IPv4 と IPv6 の両方のリソースレコードを作成できま
す。
Note
現在 IPv6 サポートは、すべてのリージョンまたは Amazon VPC(EC2-VPC)のロードバラン
サーで使用できません。現在の IPv6 サポートについては、Elastic Load Balancing を参照して
ください。
Elastic Load Balancing の IPv6 および CNAME レコード
CNAME レコードを使用して www.example.com のような DNS 名をロードバランサーにマップする際
は、CNAME レコードのエイリアスとして 3 つのパブリック DNS 名のいずれでも使用できます。例え
ば、以下の CNAME レコードは、www.example.com をロードバランサーの IPv4 アドレスにマップし
ます。
www.example.com
CNAME
myLB-1234567890.us-east-1.elb.amazonaws.com
以下の例は、www.example.com をロードバランサーの IPv6 アドレスにマップします。
API Version 2012-06-01
110
Elastic Load Balancing 開発者ガイド
Elastic Load Balancing での IPv6 の使用
www.example.com
CNAME
ipv6.myLB-1234567890.us-east-1.elb.amazonaws.com
IPv4 と IPv6 が混在するアドレス解決を処理する場合は、CNAME レコードで「dualstack」プレフィッ
クスを使用してください。
www.example.com
CNAME
dualstack.myLB-1234567890.us-east-1.elb.amazonaws.com
Elastic Load Balancing の IPv6 およびホストゾーン
Amazon Route 53 ホストゾーンを使用してドメイン名や Zone Apex をロードバランサーにマップする
場合は、elb-associate-route53-hosted-zone コマンドを使用して、IPv4、IPv6、またはその両
方で動作するリソースレコードを作成できます。
IPv4 リソースレコードを作成するには、--rr-type パラメータの値として「A」を指定します。この
パラメータのデフォルト値は A であるため、省略することもできます。
elb-associate-route53-hosted-zone myLB --rr-name example.com --rr-type A -hosted-zone-id Z123456789 --weight 100
IPv6 リソースレコードを作成するには、--rr-type パラメータの値として「AAAA」を指定します。
elb-associate-route53-hosted-zone myLB --rr-name example.com --rr-type AAAA -hosted-zone-id Z123456789 --weight 100
デュアルスタックリソースレコードと同等のものを作成するには、--rr-type パラメータに値「A」
を指定するリソースレコードを 1 つと、「AAAA」を指定するリソースレコードを 1 つ作成します。
elb-associate-route53-hosted-zone myLB --rr-name example.com --rr-type A -hosted-zone-id Z123456789 --weight 100
elb-associate-route53-hosted-zone myLB --rr-name example.com --rr-type AAAA -hosted-zone-id Z123456789 --weight 100
Elastic Load Balancing で Amazon Route 53 を使用する方法については、Option 2: Create an Amazon
Route 53 Hosted Zone (p. 166) を参照してください。
API Version 2012-06-01
111
Elastic Load Balancing 開発者ガイド
Amazon VPC への Elastic Load Balancing のデプロイ
Amazon VPC への Elastic Load Balancing のデプ
ロイ
Topics
• デフォルト VPC とは何ですか? (p. 113)
• インターネット向けロードバランサーと内部向けロードバランサー (p. 114)
• Elastic Load Balancing 用の Amazon VPC の作成 (p. 115)
• Amazon VPC での基本的な内部向けロードバランサーの作成 (p. 115)
• サブネットにロードバランサーをアタッチするには (p. 125)
• サブネットからのロードバランサーのデタッチ (p. 127)
• Amazon VPC のセキュリティグループの管理 (p. 129)
Amazon Virtual Private Cloud(Amazon VPC)を使用すると、アマゾン ウェブ サービス(AWS)クラ
ウドの、隔離されたプライベートなセクションに仮想ネットワーク環境を定義することができます。
この仮想プライベートクラウド内には、お客様が指定したクラスレスドメイン間ルーティング(CIDR)
範囲(例えば 10.0.0.0/16)のプライベート(RFC 1918)IP アドレスを持つ、Amazon EC2 インスタ
ンスを起動できます。ロードバランサーを使えば、VPC 内で起動した EC2 インスタンスへのトラフィッ
クを監視し、ルーティングすることもできます。
複数のアベイラビリティーゾーンにまたがる VPC を作成し、各アベイラビリティーゾーンに 1 つまた
は複数のサブネットを追加することも可能です。Amazon VPC のサブネットとは、アベイラビリティー
ゾーンを VPC の IP アドレス範囲の一部で分割したものです。サブネットを使うと、インスタンスをセ
キュリティや運用上の必要に応じてグループ化することができます。サブネットは作成されたアベイラ
ビリティーゾーン内に完全に包含されるものです。
サブネット内のインスタンスがインターネットと通信できるようにするには、インターネットゲート
ウェイ(IGW)を作成して VPC にアタッチする必要があります。IGW はサブネット内のインスタンス
をインターネットに接続します。インターネットに直接アクセスするサブネットは、公開インスタンス
(パブリック IP アドレスを持つインスタンス)を含んでいる必要があります。
Amazon VPC の詳細については、Amazon Virtual Private Cloud User Guide の Amazon VPC とはを参
照してください。 Amazon VPC のサブネットについては、 VPC とサブネットを参照してください。
VPC 内の EC2 インスタンスのロードバランスをとるために、ロードバランサーを複数のアベイラビリ
ティーゾーンに登録するときは、ロードバランサーをアタッチしようとするアベイラビリティーゾーン
ごとにサブネットを 1 つ指定します。サブネットはアベイラビリティーゾーンに対して作成されるた
め、サブネットを指定することで、対応するアベイラビリティーゾーンのリクエストをリッスンするよ
うにロードバランサーが設定されます。
ロードバランサーをサブネットにアタッチすると、登録されたインスタンスにリクエストを転送するた
めにトラフィックが通過する必要のあるサブネットが定義されます。登録されたインスタンスは、ロー
ドバランサーにアタッチするのと同じサブネット内に存在する必要はありません。ロードバランサーが
正しくスケーリングを行えるように、ロードバランサーをアタッチするサブネットの CIDR ブロック
を、最低でも /27 ビットマスク(例: 10.0.0.0/27)に指定してください。ロードバランサーをアタッチ
するサブネット内には空きの IP アドレスが 20 個以上含まれている必要があります。
Amazon VPC の Elastic Load Balancing は Amazon EC2 と基本的には同じ動作であり、同じ機能をサ
ポートします。ただし、Amazon VPC と Amazon EC2 ではセキュリティグループの動作に大きな違い
があります。Amazon EC2 では、Elastic Load Balancing が提供する特別な Amazon EC2 ソースセキュ
リティグループを使用して、バックエンド Amazon EC2 インスタンスが Elastic Load Balancing からの
みトラフィックを受け取るように設定することができます。ソースセキュリティグループを変更するこ
とはできません。Amazon VPC では、ロードバランサーに割り当てられたセキュリティグループを制
御することができます。セキュリティグループを制御できるため、受け付けるポートとプロトコルも選
API Version 2012-06-01
112
Elastic Load Balancing 開発者ガイド
デフォルト VPC とは何ですか?
択可能です。例えば、Amazon VPC では、Internet Control Message Protocol(ICMP)接続を開始し
て、ロードバランサーが ping リクエストに応答するようにできます(ただし、ping リクエストは登録
されたインスタンスに転送されません)。
Elastic Load Balancing では、Amazon VPC 内で起動された、テナント属性を持った、専用の EC2 イ
ンスタンスもサポートされます。専用のテナントインスタンスについては、『Amazon Virtual Private
Cloud User Guide』の「Using EC2 Dedicated Instancesを参照してください。
Note
現時点では、Amazon VPC のロードバランサーでは IPv6 はサポートされていません。
デフォルト VPC とは何ですか?
AWS アカウントにデフォルト仮想プライベートクラウド(デフォルト VPC)が設定されている場合、
デフォルト以外の VPC 内のサブネットを指定した場合を除いて、インスタンスはデフォルト VPC 内
で起動されます。詳細については、「Detecting Your Supported Platforms and Whether You Have a
Default VPC」を参照してください。
デフォルト VPC では、Amazon VPC プラットフォーム(EC2-VPC)の高度なネットワーク機能と
Amazon Elastic Compute Cloud プラットフォーム(EC2-Classic)の使いやすさという両方のメリット
を得られます。
デフォルト VPC で自動的に行われるデフォルトの設定には、各アベイラビリティーゾーンへのデフォ
ルトのサブネットの設定、インターネットゲートウェイへの接続、およびデフォルトのセキュリティグ
ループへの関連付けなどがあります。デフォルト VPC とサブネットの詳細については、Your Default
VPC and Subnetsを参照してください。
サブネットを指定しないでデフォルト VPC 内で起動した EC2 インスタンスは、自動的にデフォルト
VPC 内のデフォルトサブネットから起動されます。デフォルトでは、アベイラビリティーゾーンが選
択され、インスタンスは、そのアベイラビリティーゾーンに対応するサブネットから起動されます。ま
たは、インスタンス用にアベイラビリティーゾーンを選択することもできます。それには、対応するデ
フォルトサブネットを選択します。
デフォルト VPC 内で起動された EC2 インスタンスの負荷を分散するには、デフォルト VPC 内にロー
ドバランサーを作成する必要があります。デフォルト VPC 内にロードバランサーを作成すると、Elastic
Load Balancing はロードバランサー用に開くよう指定するポートを定義することで、自動的にセキュ
リティグループを作成します。
AWS Management Console を使用してデフォルト VPC でロードバランサーを作成する場合、デフォ
ルト VPC に関連付けられたデフォルト VPC セキュリティグループを選択するか、AWS アカウントに
関連付けられた他の既存のセキュリティグループを選択する、または、既存のセキュリティグループを
修正して新しいセキュリティグループを作成することができます。既存のデフォルト以外の既存のセ
キュリティグループを使用する場合は、ロードバランサーが使用するよう設定したポートへの進入をそ
のグループが許可することを確認してください。セキュリティグループを作成する場合は、これらの
ポートが開くよう、コンソールによって定義されます。
AWS Management Console を使用して作成したセキュリティグループは、ロードバランサーに関連付
けられます。ロードバランサーに関連付けられたセキュリティグループは、削除できません。
Elastic Load Balancing コマンドラインインターフェイス(CLI)または Query API を使用してデフォル
ト VPC 内にロードバランサーを作成する場合、デフォルトのセキュリティグループ、
default_elb_special number が 0.0.0.0/0 に対して作成され、ロードバランサー用のポートが指定さ
れます。現行の Elastic Load Balancing では、CLI または Query API を使用する際、ロードバランサー
に関連付けるセキュリティグループを選択することはできません。
CLI または Query API を使用してデフォルト VPC 内にロードバランサー用に作成されるセキュリティ
グループは、AWS アカウントに関連付けられます。AWS アカウントごとに作成されるセキュリティグ
API Version 2012-06-01
113
Elastic Load Balancing 開発者ガイド
インターネット向けロードバランサーと内部向けロードバ
ランサー
ループは 1 つのみです。これ以後、新しいロードバランサーを作成する呼び出しでは、同じセキュリ
ティグループが再利用されます。既存のロードバランサーにリスナーを追加する場合、ロードバラン
サーに適用されているセキュリティグループを確認する必要があります。確認しないと、ロードバラン
サーでトラフィックが受信されない可能性があります。作成するロードバランサーでこのデフォルトの
セキュリティグループを使用するが異なるリスナー設定を行いたい場合は、ロードバランサーに適用さ
れているセキュリティグループを確認し、更新する必要があります。
CLI を使用してデフォルト VPC に EC2 インスタンス用のロードバランサーを作成する場合に、ロード
バランサーに関連付けられたセキュリティグループを確認するには、elb-describe-lbs コマンドの
-show-long オプションを実行します。ロードバランサーのセキュリティグループが、CLI の出力やク
エリレスポンス内で SOURCE_SECURITY_GROUP として表示されます。このセキュリティグループを使
用して、選択したセキュリティグループからのみインスタンスに受信するよう制限することができま
す。
デフォルト VPC 内のロードバランサーのリスナーを更新しても、コンソール、CLI、Query API のいず
れを使用している場合でも、ロードバランサーに関連付けられたセキュリティグループは変更されませ
ん。 ロードバランサーを削除した場合でも、セキュリティグループは自動削除されません。
EC2 インスタンスでの基本的なロードバランサーの作成については、「デフォルト VPC での基本的な
ロードバランサーの作成 (p. 36)を参照してください。
インターネット向けロードバランサーと内部向けロー
ドバランサー
ロードバランサーを VPC 内に作成するとき、内部向け(プライベート)かインターネット向け(パブ
リック)かを設定できます。ロードバランサーを内部向けとして設定する場合は、ロードバランサーの
プライベート IP アドレスが含まれる DNS 名が作成されます。内部向けロードバランサーはインター
ネットには公開されません。ロードバランサーをインターネット向けとして設定する場合は、パブリッ
ク IP アドレスが含まれる DNS 名が作成されます。DNS レコードはどちらの場合でもパブリックで解
決されます。
内部向けロードバランサーとインターネット向けロードバランサーを併用することで、アプリケーショ
ンの複数の層の間でリクエストを分散することができます。例えば、フロントエンドに、インターネッ
トからリクエストを受信してバックエンドアプリケーションインスタンスに渡すウェブサーバーがある
とします。VPC に内部向けロードバランサーを作成して、その背後にバックエンドアプリケーション
インスタンスを配置することができます。DNS 名とパブリック IP アドレスを持つインターネット向け
ロードバランサーを作成して、それをウェブサーバーの前に配置することができます。ウェブサーバー
は、インターネット向けロードバランサー経由でリクエストを受け取り、そのリクエストを内部向け
ロードバランサーに対して実行します。その際、内部向けロードバランサーの DNS 名から解決された
プライベート IP アドレスが使用されます。内部向けロードバランサーは、リクエストをバックエンド
アプリケーションインスタンスにルーティングします。この場合もまた、プライベート IP アドレスが
使用されます。インスタンスは内部向けロードバランサーからのリクエストのみを受け付けます。この
多階層アーキテクチャのうちパブリック IP アドレスを持つ唯一の部分がインターネット向けロードバ
ランサーとなるよう、お客様のすべてのインフラストラクチャではプライベート IP アドレスとセキュ
リティグループを使用することができます。
インターネット向けのロードバランサーは、(パブリック IP アドレスを持つ)パブリックサブネット
内に設置する必要があります。ロードバランサーの後ろにつくアプリケーションインスタンスは、パブ
リックサブネット内になくてもかまいません。
次の図はインターネット向けおよび内部向けのロードバランサーと組み合わせた Amazon VPC 内の
Elastic Load Balancing を示します。
API Version 2012-06-01
114
Elastic Load Balancing 開発者ガイド
Elastic Load Balancing 用の Amazon VPC の作成
Elastic Load Balancing 用の Amazon VPC の作成
Amazon VPC 内に Elastic Load Balancing ロードバランサーを作成し、使用するには、まず VPC 環境
を設定する必要があります。このセクションでは VPC を設定する手順を説明します。 デフォルト VPC
を使用する場合は、VPC 環境は自動的に設定されます。このため、このステップはスキップできます。
• インターネットゲートウェイを使用して Amazon VPC を作成し、インスタンスの負荷を分散したい
アベイラビリティーゾーンごとにサブネットを作成します。Amazon VPC とサブネットの作成につ
いては、Amazon VPC の利用シナリオを参照してください。
• インターネット向けロードバランサーを作成する場合は、必ずパブリックサブネットのある VPC を
作成してください。インターネット向けロードバランサーは、パブリックサブネット内にないと、イ
ンターネットとの接続を確立できません。
• Amazon VPC 内で、ロードバランサーに登録する Amazon EC2 インスタンスを起動します。Amazon
VPC 内で Amazon EC2 インスタンスを起動することに関する詳細は、「Launch an Instanceを参照
してください。
• このガイドの例では、お使いの Amazon VPC が米国東部(バージニア北部)リージョンにあるもの
と仮定します。他の AWS リージョンで VPC をセットアップすることも可能です。例えば、ヨーロッ
パのリージョンにある VPC 内でインスタンスを起動するには、コマンドラインインターフェイスか
ら --region eu-west-1 パラメーターを使うか、または AWS_ELB_URL 環境変数を設定すること
で、EU (Ireland) リージョンを指定します。
Elastic Load Balancing コマンドでのリージョンパラメータの使用については、Elastic Load Balancing
Quick Reference Card を参照してください。環境変数の設定については、Elastic Load Balancing コ
マンドラインインターフェイスのインストール (p. 45) を参照してください。この製品のリージョン
およびエンドポイントについては、Amazon Web Services General Reference の Regions and Endpoints
を参照してください。
これで、VPC 環境の作成が完了し、ロードバランサーを設置する準備が整いました。次に、Amazon
VPC 内でロードバランサーを作成、管理するには、以下の各セクションをクリックします。
•
•
•
•
•
•
CEC2-VPC での基本的なロードバランサーの作成 (p. 26)
デフォルト VPC での基本的なロードバランサーの作成 (p. 36)
Amazon VPC での基本的な内部向けロードバランサーの作成 (p. 115)
サブネットにロードバランサーをアタッチするには (p. 125)
サブネットからのロードバランサーのデタッチ (p. 127)
Amazon VPC のセキュリティグループの管理 (p. 129)
Amazon VPC での基本的な内部向けロードバランサー
の作成
Topics
• AWS Management Console の使用 (p. 116)
• Query API の使用 (p. 122)
• コマンドラインインターフェイスの使用 (p. 123)
ロードバランサーを VPC 内に作成するとき、内部向け(プライベート)かインターネット向け(パブ
リック)かを設定できます。ロードバランサーを内部向けとして設定する場合は、ロードバランサーの
プライベート IP アドレスが含まれる DNS 名が作成されます。内部向けロードバランサーはインター
ネットには公開されません。ロードバランサーをインターネット向けとして設定する場合は、パブリッ
ク IP アドレスが含まれる DNS 名が作成されます。DNS レコードはどちらの場合でもパブリックで解
決されます。多階層アーキテクチャをサポートするための内部向けロードバランサーとインターネット
API Version 2012-06-01
115
Elastic Load Balancing 開発者ガイド
Amazon VPC での基本的な内部向けロードバランサーの作
成
向けロードバランサーの使用については、インターネット向けロードバランサーと内部向けロードバラ
ンサー (p. 114) を参照してください。
このトピックの例では、VPC 上で基本的な内部向けロードバランサーを作成し、この新たに作成した
ロードバランサーに EC2 インスタンスを登録する方法を説明します。この例では、セキュリティグルー
プ、リスナープロトコルとポート、およびヘルスチェックにデフォルトの設定を使用します。インター
ネット向けロードバランサーを作成する場合には、CEC2-VPC での基本的なロードバランサーの作
成 (p. 26) を参照してください。
以下のタスクリストは、Amazon VPC 内で基本的な内部向けロードバランサーを作成する際に実行す
べき一般的な手順を概説したものです。次に、作成プロセスの各部分の詳細な手順を見ていきます。
VPC での基本的な内部向けロードバランサーの作成
1
フロントエンド接続(クライアントからロードバランサー)とバックエンド接続(ロードバラン
サーからバックエンドインスタンス)に使用するポートとプロトコルを指定して、ロードバラン
サーのリスナーを設定します。
2
Amazon EC2 バックエンドインスタンスのヘルスチェックを設定します。
3
ロードバランサーを起動するサブネットを選択します。
4
ロードバランサーを割り当てるセキュリティグループを選択します。
5
Amazon EC2 インスタンスをロードバランサーに追加します。
6
設定を確認します。
7
ロードバランサーを作成します。
EC2-VPC 内でのロードバランサーの作成には、AWS Management Console、コマンドラインインター
フェイス、または Query API を使用できます。コマンドラインインターフェイスを使用する場合は、
インターフェイスをインストールしておきます。詳細については、Elastic Load Balancing インターフェ
イスによるセットアップ (p. 44)を参照してください。
AWS Management Console の使用
VPC での基本的な内部向けロードバランサーを作成するには
1.
Create Load Balancer ウィザードを開始します。
a.
Amazon EC2 の [ Getting Started] ページにある [EC2 Dashboard] ペインの [NETWORK &
SECURITY] で、 [Load Balancers] をクリックします。
API Version 2012-06-01
116
Elastic Load Balancing 開発者ガイド
Amazon VPC での基本的な内部向けロードバランサーの作
成
b.
2.
3.
4.
[Load Balancers] ページで、[Create Load Balancer] をクリックします。
[DEFINE LOAD BALANCER] ページで、Amazon VPC ロードバランサーの名前(例:
MyVPCLoadBalancer)を入力します。
[Create LB inside] ボックス内の矢印をクリックし、ロードバランサーを作成する Amazon VPC を
選択します。
デフォルトでは、Elastic Load Balancing によって、パブリック IP アドレスに解決される、パブ
リックに解決可能な DNS 名を持つインターネット向けロードバランサーが作成されます。この例
では、プライベート IP アドレスに解決されるパブリックに解決可能な DNS 名を含む内部ロード
バランサーが作成されます。
[Create an internal load balancer] ボックスをクリックします。
Note
ロードバランサーの DNS 名でパブリック IP アドレスを解決したい場合は、[Create an
internal load balancer] を選択しないでください。
5.
[Listener Configuration] の設定はデフォルト値のままにしておきます。
API Version 2012-06-01
117
Elastic Load Balancing 開発者ガイド
Amazon VPC での基本的な内部向けロードバランサーの作
成
6.
7.
[Continue] をクリックして、インスタンスのヘルスチェックの設定に進みます。
アプリケーションで必要なヘルスチェックを設定します。
API Version 2012-06-01
118
Elastic Load Balancing 開発者ガイド
Amazon VPC での基本的な内部向けロードバランサーの作
成
8.
9.
[Continue] をクリックして、ロードバランサーインスタンスを起動するサブネットの選択に進みま
す。
[Available Subnets] の表内で、インスタンスの負荷分散を実行したいサブネットの左側にある緑の
ボタンをクリックします。
選択したサブネットが [Selected Subnets] の表に表示されます。
API Version 2012-06-01
119
Elastic Load Balancing 開発者ガイド
Amazon VPC での基本的な内部向けロードバランサーの作
成
10. [Continue] をクリックして、ロードバランサーに割り当てるセキュリティグループの選択に進みま
す。
11. 既存のセキュリティグループを使用する場合は、ロードバランサーが使用するよう設定したポート
への進入をそのグループが許可することを確認してください。このステップでセキュリティグルー
プを作成すると、これらのポートが開くよう、コンソールによって定義されます。この例では、仮
想プライベートクラウドに関連付けられたデフォルトのセキュリティグループを使用します。
[Choose one or more of your existing Security Groups] を選択し、デフォルトのセキュリティグルー
プを選択します。
12. [Continue] をクリックして、実行中の EC2 インスタンスのロードバランサーへの追加に進みます。
13. [Manually Add Instances to LoadBalancer] の表の [Select] 列で、ロードバランサーに追加したいイ
ンスタンスのチェックボックスをオンにします。
API Version 2012-06-01
120
Elastic Load Balancing 開発者ガイド
Amazon VPC での基本的な内部向けロードバランサーの作
成
Note
マルチホームインスタンス(Elastic Network Interface(ENI)がアタッチされたインスタ
ンス)をロードバランサーに登録すると、ロードバランサーは、インスタンスのプライマ
リ IP アドレス(eth0)にトラフィックをルーティングします。ENI の使用については、
Elastic Network Interface を参照してください。
ロードバランサーに関連付けられたバックエンドの EC2 インスタンスを停止して起動する場合、
停止したインスタンスをロードバランサーから登録解除し、再起動したインスタンスを再登録する
ことをお勧めします。そうしないと、再起動したインスタンスへのトラフィックをロードバラン
サーがルーティングできない可能性があります。ロードバランサーからインスタンスを登録解除し
て再登録する方法については、「Amazon EC2 インスタンスの登録解除と登録 (p. 139)」を参照し
てください。
14. [Continue] をクリックして、設定の確認に進みます。[Review] ページで [Create] をクリックすると
ロードバランサーが作成されます。
15. 確認のためのウィンドウが表示されます。[Close] をクリックします。
16. 確認ウィンドウを閉じると、[Load Balancers] ページが開きます。新しいロードバランサーが一覧
に表示されます。作成したロードバランサーの横にあるチェックボックスを選択します。
17. 一連のタブが開き、作成した新しいロードバランサーの詳細が表示されます。[Scheme] というタ
イトルの行の説明を確認します。新しく作成したロードバランサーが [internal] であることが表示
されています。
API Version 2012-06-01
121
Elastic Load Balancing 開発者ガイド
Amazon VPC での基本的な内部向けロードバランサーの作
成
Query API の使用
デフォルトでは、Elastic Load Balancing によって、パブリック IP アドレスに解決される、パブリック
に解決可能な DNS 名を含むインターネット接続ロードバランサーが作成されます。プライベート IP
アドレスに解決される DNS 名を含む内部ロードバランサーを作成することもできます。
この例では、Amazon VPC 上で基本的な HTTP 内部ロードバランサーを作成し、新しく作成した VPC
ロードバランサーに Amazon EC2 インスタンスを登録する手順を説明します。この例では、デフォル
トのセキュリティグループを使用します。
EC2-VPC で基本的な内部向けロードバランサーを作成するには
1.
以下のパラメータを使って CreateLoadBalancer を呼び出します。
• Subnets = subnet-450f512c
• [Optional] 内部ロードバランサーを作成するには、このパラメータを使用します。インターネッ
ト接続ロードバランサーを作成している場合は、このパラメータを指定する必要はありません。
Scheme = internal
• Listener
• Protocol = HTTP
• InstanceProtocol = HTTP
• InstancePort = 80
• LoadBalancerPort = 80
• LoadBalancerName = MyVPCLoadBalancer
• SecurityGroups = sg-b9ffedd5
2.
このオペレーションにより、ロードバランサーの DNS 名が返されます。その後、CNAME または
その他の方法を使って、あらゆるドメイン名(www.example.com など)をロードバランサーの
DNS 名にマップできます。
Amazon EC2 インスタンスを VPC ロードバランサーに登録するには
登録できるのは、Pending 状態または Running 状態にあり、Amazon Virtual Private Cloud(VPC)内
にあるインスタンスのみです。
•
以下のパラメータを使用して、RegisterInstancesWithLoadBalancer を呼び出します。
• LoadBalancerName = MyVPCLoadBalancer
• Instances = [ i-4f8cf126, i-0bb7ca62 ]
API Version 2012-06-01
122
Elastic Load Balancing 開発者ガイド
Amazon VPC での基本的な内部向けロードバランサーの作
成
Note
マルチホームインスタンス(Elastic Network Interface(ENI)がアタッチされたインスタ
ンス)をロードバランサーに登録すると、ロードバランサーは、インスタンスのプライマ
リ IP アドレス(eth0)にトラフィックをルーティングします。ENI の使用については、
Elastic Network Interface を参照してください。
ロードバランサーに関連付けられたバックエンドの EC2 インスタンスを停止して起動する場合、
停止したインスタンスをロードバランサーから登録解除し、再起動したインスタンスを再登録する
ことをお勧めします。そうしないと、再起動したインスタンスへのトラフィックをロードバラン
サーがルーティングできない可能性があります。ロードバランサーからインスタンスを登録解除し
て再登録する方法については、「Amazon EC2 インスタンスの登録解除と登録 (p. 139)」を参照し
てください。
内部ロードバランサーが作成されたことを確認するには
1.
以下のパラメータを使って DescribeLoadBalancers を呼び出します。
• LoadBalancerName = MyVPCLoadBalancer
2.
このオペレーションにより、ロードバランサーの詳細が返されます。Scheme フィールドの詳細
は、新しく作成したロードバランサーが [internal] であることを示しています。
Elastic Load Balancing API のアクションの詳細については、『Elastic Load Balancing API Reference』
を参照してください。
コマンドラインインターフェイスの使用
デフォルトでは、Elastic Load Balancing によって、パブリック IP アドレスに解決される、パブリック
に解決可能な DNS 名を含むインターネット接続ロードバランサーが作成されます。プライベート IP
アドレスに解決される DNS 名を含む内部ロードバランサーを作成することもできます。
この例では、Amazon VPC 上で基本的な HTTP 内部ロードバランサーを作成し、新しく作成した VPC
ロードバランサーに Amazon EC2 インスタンスを登録する手順を説明します。この例では、ポート 80
でインターネットに開かれているデフォルトのセキュリティグループを使用します。
EC2-VPC で基本的な内部向けロードバランサーを作成するには
1.
以下の例のように、コマンド elb-create-lb を入力します。
PROMPT> elb-create-lb MyVPCLoadBalancer --subnets subnet-4e05f721 --scheme
internal --security-groups sg-b9ffedd5 --listener "lb-port=80,instanceport=80,protocol=http,instance-protocol=http"
Note
--scheme オプションを使用して内部ロードバランサーを作成します。インターネット接
続(パブリック)ロードバランサーを作成している場合、このオプションを指定する必要
はありません。
2.
Elastic Load Balancing は以下を返します。
API Version 2012-06-01
123
Elastic Load Balancing 開発者ガイド
Amazon VPC での基本的な内部向けロードバランサーの作
成
DNS-NAME DNS-NAME
DNS-NAME internal-MyVPCLoadBalancer-2111276808.us-east-1a.elb.amazonaws.com
Amazon EC2 インスタンスを VPC ロードバランサーに登録するには
登録できるのは、Pending 状態または Running 状態にあり、Amazon VPC 内にあるインスタンスのみ
です。
1.
以下の例のように、elb-register-instances-with-lb コマンドを入力します。
PROMPT> elb-register-instances-with-lb
4f8cf126,i-0bb7ca62
2.
MyVPCLoadBalancer
--instances i-
Elastic Load Balancing は以下を返します。
INSTANCE
INSTANCE
INSTANCE
INSTANCE-ID
i-4f8cf126
i-0bb7ca62
Note
マルチホームインスタンス(Elastic Network Interface(ENI)がアタッチされたインスタ
ンス)をロードバランサーに登録すると、ロードバランサーは、インスタンスのプライマ
リ IP アドレス(eth0)にトラフィックをルーティングします。ENI の使用については、
Elastic Network Interface を参照してください。
ロードバランサーに関連付けられたバックエンドの EC2 インスタンスを停止して起動する場合、
停止したインスタンスをロードバランサーから登録解除し、再起動したインスタンスを再登録する
ことをお勧めします。そうしないと、再起動したインスタンスへのトラフィックをロードバラン
サーがルーティングできない可能性があります。ロードバランサーからインスタンスを登録解除し
て再登録する方法については、「Amazon EC2 インスタンスの登録解除と登録 (p. 139)」を参照し
てください。
内部ロードバランサーが作成されたことを確認するには
1.
以下の例のように、elb-describe-lbs コマンドを入力します。
PROMPT> elb-describe-lbs
2.
MyVPCLoadBalancer
Elastic Load Balancing は以下を返します。
LOAD_BALANCER
MyVPCLoadBalancer internal-MyVPCLoadBalancer-2111276808.useast-1a.elb.amazonaws.com
2012-06-04T02:33:20 450Z internal
Elastic Load Balancing コマンドの詳細については、『Elastic Load Balancing Quick Reference Card』
を参照してください。
API Version 2012-06-01
124
Elastic Load Balancing 開発者ガイド
サブネットにロードバランサーをアタッチするには
サブネットにロードバランサーをアタッチするには
Topics
• AWS Management Console の使用 (p. 125)
• Query API の使用 (p. 125)
• コマンドラインインターフェイスの使用 (p. 126)
この例では、AWS マネジメントコンソール、Query API、またはコマンドラインインターフェイス
(CLI)を使用して、サブネットを既存のロードバランサーにアタッチする手順を説明します。
開始する前に、Amazon VPC にインターネットゲートウェイが作成されており、インスタンスの負荷
を分散する各アベイラビリティ―ゾーンにサブネットが作成されていることを確認してください。Elastic
Load Balancing 用に Amazon VPC とサブネットを作成する方法については、Amazon VPC への Elastic
Load Balancing のデプロイ (p. 112) を参照してください。
AWS Management Console の使用
サブネットにロードバランサーをアタッチするには
1.
2.
Amazon EC コンソール(https://console.aws.amazon.com/ec2/)を開きます。
Amazon EC2 の [ Getting Started] ページにある [EC2 Dashboard] ペインの [NETWORK SECURITY&]
で、 [Load Balancers] をクリックします。
3.
[Load Balancers] ページで、Amazon VPC 用に作成したロードバランサーを選択します。
4.
下のペインには、ロードバランサーの詳細が表示されます。
5.
Instances タブをクリックします。
6.
[Availability Zones] の表で、アタッチするサブネットの緑のプラス記号をクリックします。
7.
[Add and Remove Subnets] ページが表示されます。
8.
[Available Subnets] の表で、緑の丸に囲まれたプラス記号をクリックしてサブネットを選択しま
す。
アベイラビリティゾーンごとに 1 つだけサブネットを選択できます。
9.
選択したサブネットが [Selected Subnets] の表に表示されます。
10. [Save] をクリックして、サブネットをロードバランサーにアタッチします。
Query API の使用
サブネットにロードバランサーをアタッチするには
API Version 2012-06-01
125
Elastic Load Balancing 開発者ガイド
サブネットにロードバランサーをアタッチするには
1.
以下のパラメータを使用して、AttachLoadBalancerToSubnets を呼び出します。
• Subnets = subnet-4e05f721
• LoadBalancerName = MyVPCLoadBalancer
2.
このオペレーションにより、アタッチされたサブネットのサブネット ID が返されます。
Elastic Load Balancing API のアクションについては、Elastic Load Balancing API Reference を参照し
てください。
コマンドラインインターフェイスの使用
サブネットにロードバランサーをアタッチするには
1.
以下の例のように、コマンド elb-attach-lb-to-subnets を入力します。
PROMPT> elb-attach-lb-to-subnets
2.
MyVPCLoadBalancer --subnets subnet-450f512c
このオペレーションにより、アタッチされたサブネットのサブネット ID が返されます。
Elastic Load Balancing コマンドについては、Elastic Load Balancing Quick Reference Card を参照して
ください。
API Version 2012-06-01
126
Elastic Load Balancing 開発者ガイド
サブネットからのロードバランサーのデタッチ
サブネットからのロードバランサーのデタッチ
Topics
• AWS Management Console の使用 (p. 127)
• Query API の使用 (p. 127)
• コマンドラインインターフェイスの使用 (p. 128)
この例では、AWS マネジメントコンソール、Query API、またはコマンドラインインターフェイス
(CLI)を使用して、サブネットをロードバランサーからデタッチする手順を説明します。
AWS Management Console の使用
サブネットからロードバランサーをデタッチするには
1.
2.
Amazon EC コンソール(https://console.aws.amazon.com/ec2/)を開きます。
Amazon EC2 の [ Getting Started] ページにある [EC2 Dashboard] ペインの [NETWORK SECURITY&]
で、 [Load Balancers] をクリックします。
3.
[Load Balancers] ページで、Amazon VPC 用に作成したロードバランサーを選択します。
4.
下のペインには、ロードバランサーの詳細が表示されます。
5.
Instances タブをクリックします。
6.
[Availability Zones の表で、デタッチするサブネットの右側にある赤のマイナス記号をクリックし
ます。
7.
[Add and Remove Subnets] ページが表示されます。
8.
[Selected Subnets] の表で、デタッチしたいサブネットの左側にある赤の丸に囲まれた x をクリッ
クします。
9. デタッチしたサブネットは利用可能となり、[Available Subnets] の表に表示されます。
10. [Save] をクリックして、サブネットをロードバランサーからデタッチします。
Query API の使用
サブネットからロードバランサーをデタッチするには
1.
以下のパラメータを使用して、DetachLoadBalancerFromSubnets を呼び出します。
• Subnets = subnet-450f512c
• LoadBalancerName = MyVPCLoadBalancer
API Version 2012-06-01
127
Elastic Load Balancing 開発者ガイド
サブネットからのロードバランサーのデタッチ
2.
このオペレーションにより、ロードバランサーが現在アタッチされているサブネット ID のリスト
が返されます。
Elastic Load Balancing API のアクションについては、Elastic Load Balancing API Reference を参照し
てください。
コマンドラインインターフェイスの使用
サブネットからロードバランサーをデタッチするには
1.
以下の例のように、コマンド elb-detach-lb-from-subnets を入力します。
PROMPT> elb-detach-lb-from-subnets
450f5127
2.
MyVPCLoadBalancer --subnets subnet-
このコマンドにより、ロードバランサーが現在アタッチされているサブネット ID のリストが返さ
れます。
Elastic Load Balancing コマンドの詳細については、『Elastic Load Balancing Quick Reference Card』
を参照してください。
API Version 2012-06-01
128
Elastic Load Balancing 開発者ガイド
Amazon VPC のセキュリティグループの管理
Amazon VPC のセキュリティグループの管理
Topics
• AWS Management Console の使用 (p. 129)
• Query API の使用 (p. 130)
• コマンドラインインターフェイスの使用 (p. 130)
セキュリティグループは、インスタンスに許可されるトラフィックを制御する仮想ファイアウォールで
す。Amazon Virtual Private Cloud 内でインスタンスを起動した場合、そのインスタンスを最大5つの
VPC セキュリティグループに割り当てることができます。グループはサブネットレベルでなくインス
タンスレベルで動作します。このため、Amazon VPC 内のサブネット内のインスタンスごとに、異な
るセキュリティグループのセットに割り当てることができます。起動時に特定のセキュリティグループ
を指定しなかった場合、インスタンスは自動的に VPC のデフォルトのセキュリティグループに割り当
てられます。
作成するセキュリティグループごとに、インスタンスへのインバウンドトラフィックをコントロールす
るルールと、アウトバウンドトラフィックをコントロールする別個の一連のルールを追加します。
Amazon EC2 用に作成したセキュリティグループ(EC2 セキュリティグループ)は、VPC では使用で
きません。Amazon VPC で使用するには、個別のセキュリティグループ(例: VPC セキュリティグルー
プ)を作成する必要があります。VPC セキュリティグループ用に作成するルールでアカウント内の EC2
セキュリティグループを参照することはできず、その逆もできません。また、VPC セキュリティグルー
プには、EC2 セキュリティグループでは使用できない追加の機能があります。
Amazon VPC セキュリティグループについては、「Security Groups for Your VPCを参照してください。
このセクションでは、Amazon VPC 内の既存のロードバランサーに割り当てられる VPC セキュリティ
グループを更新またはリセットする手順について説明します。VPC セキュリティグループの更新また
はリセットには、AWS Management Console、Query API またはコマンドラインインターフェイス
(CLI)を使用することができます。
AWS Management Console の使用
ロードバランサーに割り当てられたセキュリティグループを更新するには
1.
AWS Management Console で、[Amazon EC2] タブをクリックします。
2.
Amazon EC2 の [ Getting Started] ページにある [EC2 Dashboard] ペインの [NETWORK SECURITY&]
で、 [Load Balancers] をクリックします。
3.
Load Balancers ページで、VPC 用に作成したロードバランサーを選択します。
4.
下のペインには、ロードバランサーの詳細が表示されます。
5.
Security タブをクリックします。
6.
Security Groups ペインで、セキュリティグループを選択します。
7.
ロードバランサーに割り当てられたセキュリティグループのリストが [Security Groups] ペインに
表示されます。
API Version 2012-06-01
129
Elastic Load Balancing 開発者ガイド
Amazon VPC のセキュリティグループの管理
Query API の使用
既存のロードバランサーにセキュリティグループを割り当てるには
1.
以下のパラメータを使用して、ApplySecurityGroupsToLoadBalancer を呼び出します。
• SecurityGroups = sg-53fae93f
• LoadBalancerName = MyVPCLoadBalancer
2.
このオペレーションにより、割り当てられたセキュリティグループのセキュリティグループ ID が
返されます。
Elastic Load Balancing API のアクションの詳細については、『Elastic Load Balancing API Reference』
を参照してください。
コマンドラインインターフェイスの使用
Amazon VPC で既存のロードバランサーにセキュリティグループを割り当てるには
以下の例のように、コマンド elb-apply-security-groups-to-lb を入力します。
PROMPT>elb-apply-security-groups-to-lb
53fae93f
MyVPCLoadBalancer --security-groups sg-
このオペレーションにより、割り当てられたセキュリティグループのセキュリティグループ ID が返さ
れます。
Elastic Load Balancing コマンドの詳細については、『Elastic Load Balancing Quick Reference Card』
を参照してください。
API Version 2012-06-01
130
Elastic Load Balancing 開発者ガイド
ロードバランサーへのリスナーの追加
ロードバランサーへのリスナーの追加
Topics
• AWS Management Console の使用 (p. 131)
• コマンドラインインターフェイスの使用 (p. 134)
• Query API の使用 (p. 135)
Elastic Load Balancing は、HTTP、HTTPS(セキュア HTTP)、TCP、および SSL(セキュア TCP)
プロトコルを使用したアプリケーションの負荷分散をサポートします。フロントエンド接続(クライア
ントからロードバランサー)とバックエンド接続(ロードバランサーからバックエンドインスタンス)
のプロトコルは別々に指定できます。フロントエンドとバックエンドの接続の設定は、ロードバラン
サーの作成時に選択します。デフォルトでは、ロードバランサーはどちらの接続にも HTTP を使用す
るよう設定されています。各種設定とそれらに適したユースケースは Elastic Load Balancing リスナー
設定クイックリファレンス (p. 69) の表のとおりです。
このセクションでは、既存のロードバランサーに新しいリスナーを追加する方法を説明します。始める
前に、以下のことが完了していることを確認してください。
• Elastic Load Balancing でロードバランサーを作成した。AWS Management Console、コマンドライ
ンインターフェイス(CLI)、または Query API を使用して HTTPS/SSL ロードバランサーをセット
アップする方法については、SSL 暗号設定およびバックエンドサーバー認証を使用したロードバラ
ンサーの作成 (p. 75) を参照してください。AWS Management Console で HTTP/TCP ロードバラン
サーをセットアップする方法については、Elastic Load Balancing の使用開始 (p. 17) を参照してくだ
さい。
• 負荷分散タスクの実行に使用する Elastic Load Balancing ツールをインストールした。既存のロード
バランサーのリスナーの追加や削除には、AWS Management Console、コマンドラインインターフェ
イス(CLI)または Query API を使用できます。CLI と Query API のインストールについては、
「Elastic Load Balancing インターフェイスによるセットアップ (p. 44)を参照してください。
• Elastic Load Balancing Query API のアクションについては、Elastic Load Balancing API Reference
を参照してください。
• Elastic Load Balancing コマンドについては、Elastic Load Balancing Quick Reference Card を参照
してください。
以下のセクションでは、AWS Management Console、コマンドラインインターフェイス(CLI)または
Query API を使って既存のロードバランサーにリスナーを追加する方法を説明しています。この例で
は、既存のロードバランサー MyLoadBalancer に、フロントエンド接続ではポート 443 で HTTPS リ
クエストを受け取り、バックエンド接続ではポート 80 で HTTP リクエストを受け取る新しいリスナー
を設定します。
Topics
• AWS Management Console の使用 (p. 131)
• コマンドラインインターフェイスの使用 (p. 134)
• Query API の使用 (p. 135)
AWS Management Console の使用
ロードバランサーに新しいリスナーを追加するには
1.
2.
AWS マネジメントコンソールにサインインして Amazon EC2 コンソール
(https://console.aws.amazon.com/ec2/)を開きます。
Amazon EC2 の [ Getting Started] ページにある [EC2 Dashboard] ペインの [NETWORK & SECURITY]
で、 [Load Balancers] をクリックします。
API Version 2012-06-01
131
Elastic Load Balancing 開発者ガイド
AWS Management Console の使用
3.
4.
5.
[Load Balancers] ページで、ロードバランサーを選択します。
下のペインには、ロードバランサーの詳細が表示されます。
[Listeners] タブをクリックします。
6.
[Listeners] の表の [Load Balancer Protocol] 列のドロップダウンボックスから [HTTPS(Secure
HTTP)] を選択します。[Load Balancer Port] 列のボックスに値が入力されます。[Instance Protocol]
列のドロップダウンボックスから [HTTP] を選択して、[Instance Port] ボックスのインスタンスポー
トにポート番号 80 を入力します。
7.
Elastic Load Balancing サービスは、サンプルの暗号ポリシーとして、
[ELBSample-ELBDefaultNegotiationPolicy] と [ELBSample-OpenSSLDefaultNegotiationPolicy] を
提供します。サンプルのいずれかを使用するか、または独自の暗号をカスタマイズすることができ
ます。指定されたものがない場合、デフォルトのポリシーが使用されます。
a.
b.
c.
暗号ポリシーを指定するには、[Cipher] ボックスで [Change] を選択します。
[Select Cipher] ページで、提供されたサンプルポリシーのいずれかを選択します。
または、[Custom] を選択して独自の暗号をカスタマイズし、プロトコルのバージョンと暗号
をリストボックスから選択します。
Note
SSL ネゴシエーションを実行するには、プロトコルバージョンと暗号を少なくとも 1
つずつ有効にする必要があります。
d.
[Save] をクリックします。
API Version 2012-06-01
132
Elastic Load Balancing 開発者ガイド
AWS Management Console の使用
8.
[SSL Certificate] ボックスで [Select] を選択して、ロードバランサーをインストールするための SSL
証明書を指定します。
Note
リスナーの HTTPS サポートを有効にするには、ロードバランサーに SSL サーバー証明書
をインストールする必要があります。バックエンドインスタンスにリクエストを送信する
前に、ロードバランサーは証明書を使用してリクエストを終了し、次にリクエストを復号
化します。Elastic Load Balancing は、AWS Identity and Access Management(IAM)を
使用して証明書をロードバランサーにアップロードします。SSL 証明書がない場合は、
AWS Identity and Access Management の使用のCreating and Uploading Server Certificates
で SSL 証明書の作成およびアップロードについて確認します。
9.
アップロード済みの SSL 証明書を使用するには、[Configure SSL Certificate] ページで [Choose
from your existing SSL Certificates] を選択してドロップダウンボックスから証明書を選択します。
10. SSL 証明書があり、AWS Identity and Access Management を使用してアップロードする場合は、
[Upload a new SSL Certificate] を選択してください。
証明書が以下の基準を満たしていることを確認します。
• 証明書が X.509 PEM 形式に従っている。
• 現在の日付が証明書の開始日と終了日の間にある。
• パブリックおよびプライベートの証明書ファイルに、証明書が 1 つしか含まれていない。
• プライベートキーが電子サーバー証明書のパブリックキーと一致している。
• プライベートキーが PEM 形式の RSA プライベートキーである。この場合、PEM ヘッダーが
BEGIN RSA PRIVATE KEY、フッターが END RSA PRIVATE KEY です。
• プライベートキーはパスワードで暗号化できない。
• 証明書チェーンは即時署名証明書から始まり、その後に中間証明書が順番に続いています。信用
パスに関与しない中間証明書が含まれてはいけません。信頼されたルート証明書は、最終証明書
として任意で含むことができます。
API Version 2012-06-01
133
Elastic Load Balancing 開発者ガイド
コマンドラインインターフェイスの使用
証明書が基準を満たしていない場合、アップロード時にエラーが発生する場合があります。新しい
SSL 証明書を作成し、AWS Identity and Access Management(IAM)を使用して証明書をアップ
ロードします。SSL 証明書の作成およびアップロードについては、Using AWS Identity and Access
Management の Creating and Uploading Server Certificates を参照してください。
証明書が基準を満たしている場合、以下の指示に従い、SSL 証明書のアップロードを続行します。
a.
アップロードする証明書の名前を入力します。
b.
PEM エンコードされたプライベートキーファイルの内容をコピーして [Private Key] ボックス
に貼り付けます。
PEM エンコードされたパブリックキー証明書ファイルの内容をコピーして [Public Key
Certificate] ボックスに貼り付けます。
c.
d.
(オプション)PEM エンコードされたパブリックキー証明書チェーンファイルの内容をコピー
して [Certificate Chain] ボックスに貼り付けます。
Note
証明書チェーンの順序は、ルート証明書がチェーンの末尾に来るようにします。証明
書チェーンの順序が異なると、エラーが返されます。
e.
[Save] をクリックします。
11. [Actions] ボックスの [Save] をクリックします。
コマンドラインインターフェイスの使用
リスナーの HTTPS サポートを有効にするには、ロードバランサーに SSL サーバー証明書をインストー
ルする必要があります。バックエンドインスタンスにリクエストを送信する前に、ロードバランサーは
証明書を使用してリクエストを終了し、次にリクエストを復号化します。Elastic Load Balancing は、
AWS Identity and Access Management(IAM)を使用して証明書をロードバランサーにアップロードし
API Version 2012-06-01
134
Elastic Load Balancing 開発者ガイド
Query API の使用
ます。SSL 証明書がない場合は、AWS Identity and Access Management の使用のCreating and Uploading
Server Certificatesで SSL 証明書の作成およびアップロードについて確認します。
ロードバランサーに新しいリスナーを追加するには
1.
SSL 証明書の Amazon リソースネーム(ARN)を取得します。
2.
以下の例のように、コマンド elb-create-lb-listeners を入力します。
PROMPT> elb-create-lb-listeners MyLoadBalancer --listener "protocol=HTTPS,lbport=443,instance-port=80,instance-protocol=HTTP, certid=arn:aws:iam::55555555555:server-certificate/production/myCert"
3.
以下の例のように、コマンド elb-describe-lbs を入力し、ロードバランサー MyLoadBalancer
の更新後の詳細を表示します。
PROMPT> elb-describe-lbs MyLoadBalancer
このオペレーションにより、ロードバランサーの更新後の設定のリストが返されます。
Query API の使用
リスナーの HTTPS サポートを有効にするには、ロードバランサーに SSL サーバー証明書をインストー
ルする必要があります。バックエンドインスタンスにリクエストを送信する前に、ロードバランサーは
証明書を使用してリクエストを終了し、次にリクエストを復号化します。Elastic Load Balancing は、
AWS Identity and Access Management(IAM)を使用して証明書をロードバランサーにアップロードし
ます。SSL 証明書がない場合は、AWS Identity and Access Management の使用のCreating and Uploading
Server Certificatesで SSL 証明書の作成およびアップロードについて確認します。
ロードバランサーに新しいリスナーを追加するには
1.
2.
SSL 証明書の Amazon リソースネーム(ARN)を取得します。
以下のパラメータを使用して、CreateLoadBalancerListeners を呼び出します。
• Listener
• Protocol = HTTPS
• InstanceProtocol = HTTP
• InstancePort = 80
• LoadBalancerPort = 443
• SSLCertificateId =
arn:aws:iam::55555555555:server-certificate/production/myCert
• LoadBalancerName = MyLoadBalancer
3.
以下の例のように、DescribeLoadBalancers を呼び出し、ロードバランサーの更新後の設定情
報を表示します。
• LoadBalancerName = MyLoadBalancer
このオペレーションにより、ロードバランサーの更新後の設定のリストが返されます。
Elastic Load Balancing API のこのアクションについては、Elastic Load Balancing API Reference
の CreateLoadBalancerListeners を参照してください。
API Version 2012-06-01
135
Elastic Load Balancing 開発者ガイド
ロードバランサーからのリスナーの削除
ロードバランサーからのリスナーの削除
Topics
• AWS Management Console の使用 (p. 136)
• コマンドラインインターフェイスの使用 (p. 137)
• Query API の使用 (p. 137)
このセクションでは、既存のロードバランサーからリスナーを削除する方法を説明します。始める前
に、以下のことが完了していることを確認してください。
• Elastic Load Balancing でロードバランサーを作成した。AWS Management Console、コマンドライ
ンインターフェイス(CLI)、または Query API を使用して HTTPS/SSL ロードバランサーをセット
アップする方法については、SSL 暗号設定およびバックエンドサーバー認証を使用したロードバラ
ンサーの作成 (p. 75) を参照してください。AWS Management Console で HTTP/TCP ロードバラン
サーをセットアップする方法については、Elastic Load Balancing の使用開始 (p. 17) を参照してくだ
さい。
• 負荷分散タスクの実行に使用する Elastic Load Balancing ツールをインストールした。既存のロード
バランサーのリスナーの追加や削除には、AWS Management Console、コマンドラインインターフェ
イス(CLI)または Query API を使用できます。CLI と Query API のインストールについては、
「Elastic Load Balancing インターフェイスによるセットアップ (p. 44)を参照してください。
• Elastic Load Balancing Query API のアクションについては、Elastic Load Balancing API Reference
を参照してください。
• Elastic Load Balancing コマンドについては、Elastic Load Balancing Quick Reference Card を参照
してください。
以下のセクションでは、AWS Management Console、コマンドラインインターフェイス(CLI)または
Query API を使って、既存のロードバランサーの特定のポートからリスナーを削除する方法を説明して
います。この例では、ロードバランサーのポート 80 からリスナーを削除します。MyLoadBalancer
AWS Management Console の使用
ロードバランサーからリスナーを削除するには
1.
2.
AWS マネジメントコンソールにサインインして Amazon EC2 コンソール
(https://console.aws.amazon.com/ec2/)を開きます。
Amazon EC2 の [ Getting Started] ページにある [EC2 Dashboard] ペインの [NETWORK & SECURITY]
で、 [Load Balancers] をクリックします。
3.
4.
[Load Balancers] ページで、ロードバランサーを選択します。
下のペインには、ロードバランサーの詳細が表示されます。
5.
6.
[Listeners] タブをクリックします。
削除するリスナーの [Actions] ボックスで [Remove] を選択します。
API Version 2012-06-01
136
Elastic Load Balancing 開発者ガイド
コマンドラインインターフェイスの使用
コマンドラインインターフェイスの使用
ロードバランサーからリスナーを削除するには
1.
以下の例のように、コマンド elb-delete-lb-listeners を入力します。
PROMPT> elb-delete-lb-listeners MyLoadBalancer lb-ports 80
2.
以下の例のように、コマンド elb-describe-lbs を入力し、ロードバランサー MyLoadBalancer
の更新後の詳細を表示します。
PROMPT> elb-describe-lbs MyLoadBalancer
このオペレーションにより、ロードバランサーの更新後の設定のリストが返されます。
Query API の使用
ロードバランサーからリスナーを削除するには
以下のパラメータを使用して、DeleteLoadBalancerListeners を呼び出します。
• LoadBalancerPorts = 80
• LoadBalancerName = MyLoadBalancer
以下の例のように、DescribeLoadBalancers を呼び出し、ロードバランサーの更新後の設定情報を
表示します。
• LoadBalancerName = MyLoadBalancer
このオペレーションにより、ロードバランサーの更新後の設定のリストが返されます。
API Version 2012-06-01
137
Elastic Load Balancing 開発者ガイド
Query API の使用
Elastic Load Balancing API のこのアクションについては、Elastic Load Balancing API Reference の
DeleteLoadBalancerListeners を参照してください。
API Version 2012-06-01
138
Elastic Load Balancing 開発者ガイド
Amazon EC2 インスタンスの登録解除と登録
Amazon EC2 インスタンスの登録解除と登録
Elastic Load Balancing は、関連付けられた IP アドレスを使用してロードバランサーを EC2 インスタ
ンスに登録します。EC2-Classic で起動した EC2 インスタンスを停止して開始すると、インスタンス
に関連付けられた IP アドレスが変わります。ロードバランサーは新しい IP アドレスを認識しません。
EC2-Classic で起動した登録済みの EC2 インスタンスを停止して起動する場合は、停止したインスタ
ンスをロードバランサーから登録解除し、再起動したインスタンスを再登録する必要があります。そう
しないと、再起動したインスタンスへのトラフィックをロードバランサーがルーティングできない可能
性があります。
EC2-VPC 内でインスタンスを起動した場合、デフォルトでは、インスタンスに関連付けられた IP アド
レスは、インスタンスを停止して起動しても変わりません。ただし、EC2-VPC インスタンスを停止し
て起動した場合、停止したインスタンスが起動されたことをロードバランサーが認識するまで時間がか
かることがあります。その間、ロードバランサーは再起動したインスタンスに接続されていません。再
起動したインスタンスをロードバランサーに再登録することをお勧めします。インスタンスの再登録に
ついては、ロードバランサーへの Amazon EC2 インスタンスの登録 (p. 140) を参照してください。
この例では、停止したバックエンドインスタンスをロードバランサーから登録解除し、再起動したイン
スタンスをロードバランサーに登録します。
始める前に、以下のことが完了していることを確認してください。
• バックエンド Amazon EC2 インスタンスの1つを停止した。詳細については、Stopping and Starting
Instances を参照してください。
以下のセクションでは、AWS マネジメントコンソール、Query API、またはコマンドラインインター
フェイスを使用して、バックエンドインスタンスを登録解除して登録する方法を説明します。
ロードバランサーからの Amazon EC2 インスタンス
の登録解除
AWS Management Console の使用
ロードバランサーからバックエンドインスタンスを登録解除するには
1.
AWS マネジメントコンソールにサインインして Amazon EC2 コンソール
(https://console.aws.amazon.com/ec2/)を開きます。
2.
Amazon EC2 の [ Getting Started] ページにある [EC2 Dashboard] ペインの [NETWORK SECURITY&]
で、 [Load Balancers] をクリックします。
3.
Load Balancers ページで、ロードバランサーを選択します。
4.
下のペインには、ロードバランサーの詳細が表示されます。
5.
Instances タブをクリックします。
6.
Instances の表で、登録解除したいインスタンスの Remove from Load Balancer をクリックしま
す。
Query API の使用
ロードバランサーからバックエンドインスタンスを登録解除するには
• 以下のパラメータを使用して、DeregisterInstancesFromLoadBalancer を呼び出します。
• Instances = i-4e05f721
API Version 2012-06-01
139
Elastic Load Balancing 開発者ガイド
ロードバランサーへの Amazon EC2 インスタンスの登録
• LoadBalancerName = MyLoadBalancer
このオペレーションにより、ロードバランサーに登録されているインスタンスの最新リストが返されま
す。
Elastic Load Balancing API のこのアクションについては、Elastic Load Balancing API Reference の
DeregisterInstancesFromLoadBalancer を参照してください。
コマンドラインインターフェイスの使用
ロードバランサーからバックエンドインスタンスを登録解除するには
• 以下の例のように、コマンド elb-deregister-instances-from-lb を入力します。
PROMPT> elb-deregister-instances-from-lb MyLoadBalancer --instances i-4e05f721
このオペレーションにより、ロードバランサーに引き続き登録されているインスタンスの最新のリスト
が返されます。
Elastic Load Balancing コマンドの詳細については、『Elastic Load Balancing Quick Reference Card』
を参照してください。
ロードバランサーへの Amazon EC2 インスタンスの
登録
前の手順で停止したインスンスをまだ再起動していない場合は、ここで再起動する必要があります。
AWS Management Console の使用
ロードバランサーにバックエンドインスタンスを登録するには
1.
2.
AWS マネジメントコンソールにサインインして Amazon EC2 コンソール
(https://console.aws.amazon.com/ec2/)を開きます。
Amazon EC2 の [ Getting Started] ページにある [EC2 Dashboard] ペインの [NETWORK SECURITY&]
で、 [Load Balancers] をクリックします。
3.
Load Balancers ページで、ロードバランサーを選択します。
4.
下のペインには、ロードバランサーの詳細が表示されます。
5.
Instances タブをクリックします。
6.
Instances の表で、ロードバランサーに追加するインスタンスの右側にある緑のプラス記号をクリッ
クします。
7.
Manually Add Instances to LoadBalancer の表の Select 列で、ロードバランサーに追加したいイン
スタンスのチェックボックスをチェックします。
8.
Save をクリックしてインスタンスを登録します。
Query API の使用
ロードバランサーにバックエンドインスタンスを登録するには
以下のパラメータを使用して、RegisterInstancesWithLoadBalancer を呼び出します。
API Version 2012-06-01
140
Elastic Load Balancing 開発者ガイド
ロードバランサーのクロスゾーン負荷分散の有効化または
無効化
• Instances = i-802ffe77b
• LoadBalancerName = MyLoadBalancer
このオペレーションにより、ロードバランサーに登録されているインスタンスの最新リストが返されま
す。
Elastic Load Balancing API のこのアクションについては、Elastic Load Balancing API Reference の
RegisterInstancesWithLoadBalancer を参照してください。
コマンドラインインターフェイスの使用
ロードバランサーからバックエンドインスタンスを登録するには
以下の例のように、コマンド elb-register-instances-with-lb を入力します。
PROMPT> elb-register-instances-with-lb MyLoadBalancer --instances i-802ffe77b
このオペレーションにより、ロードバランサーに登録されているインスタンスの最新のリストが返され
ます。
Elastic Load Balancing コマンドの詳細については、『Elastic Load Balancing Quick Reference Card』
を参照してください。
ロードバランサーのクロスゾーン負荷分散の有効
化または無効化
Elastic Load Balancing には、ロードバランサーに対してクロスゾーン負荷分散を有効または無効にす
るオプションがあります。
クロスゾーン負荷分散を使用すると、ロードバランサーノードはすべてのアベイラビリティーゾーン間
でバックエンドインスタンスへのトラフィックをルーティングします。詳細については、アベイラビリ
ティーゾーンとリージョン (p. 7) を参照してください。
このセクションでは、コマンドラインインターフェイス(CLI)または Query API を使用して、既存の
ロードバランサーに対してクロスゾーン負荷分散を有効化または無効化するプロセスについて説明しま
す。Elastic Load Balancing は、現在のところ、AWS マネジメントコンソールを使用したクロスゾーン
負荷分散の有効化または無効化をサポートしていません。
クロスゾーン負荷分散を有効化または無効化するための前提条件
開始する前に、以下の手順が完了していることを確認します。
• 複数のアベイラビリティーゾーンを有効化してロードバランサーを作成し、有効化したすべてのゾー
ンでインスタンスを起動して、ロードバランサーにインスタンスを登録します。詳細については、
「SSL 暗号設定およびバックエンドサーバー認証を使用したロードバランサーの作成 (p. 75)」を参
照してください。
• Elastic Load Balancing コマンドラインインターフェイス(CLI)を使用する場合は、そのコマンドラ
インツールをインストールしてください。詳細については、Installing the Command Line Interfaceを
参照してください。
Elastic Load Balancing Query API の使用については、「Query リクエストを使用した Elastic Load
Balancing API の呼び出し (p. 52)を参照してください。
API Version 2012-06-01
141
Elastic Load Balancing 開発者ガイド
クロスゾーン負荷分散の有効化
Topics
• クロスゾーン負荷分散の有効化 (p. 142)
• クロスゾーン負荷分散の無効化 (p. 144)
クロスゾーン負荷分散の有効化
ロードバランサーのクロスゾーン負荷分散を有効にするには、ロードバランサーの
CrossZoneLoadBalancing 属性を変更する必要があり、属性の値を true に設定します。このセク
ションでは、Elastic Load Balancing のコマンドラインインターフェイス(CLI)または Elastic Load
Balancing Query API を使用してこれを行う方法について説明します。
CLI を使用してクロスゾーン負荷分散を有効にするには
1.
次のオプションを使用して elb-modify-lb-attributes コマンドを入力します。
• Load balancer name = MyLoadBalancer
• crosszoneloadbalancing
• enabled=true
コマンドは、次の例のようになります。
elb-modify-lb-attributes MyLoadBalancer
abled=true"
--crosszoneloadbalancing "en
Elastic Load Balancing が次の例のように応答します。
OK-Modifying LoadBalancer Attributes
2.
次の例のように elb-describe-lb-attributes コマンドを入力して、クロスゾーン負荷分散が
ロードバランサーに対して有効になっていることを確認します。次のオプションを使用します。
• Load balancer name = MyLoadBalancer
コマンドは、次の例のようになります。
elb-describe-lb-attributes MyLoadBalancer
--headers
Elastic Load Balancing が次の例のように応答します。
CrossZoneLoadBalancing
CrossZoneLoadBalancing
VALUE
true
クロスゾーン負荷分散が正常に有効化されました。
Query API を使用してクロスゾーン負荷分散を有効にするには
1.
以下のパラメータで ModifyLoadBalancerAttributes アクションを使用します。
• LoadBalancerName = MyLoadBalancer
API Version 2012-06-01
142
Elastic Load Balancing 開発者ガイド
クロスゾーン負荷分散の有効化
• CrossZoneLoadBalancingEnabled = true
リクエストは、次の例のようになります。
https://elasticloadbalancing.amazonaws.com/?LoadBalancerName=MyLoadBalancer
&LoadBalancerAttributes.CrossZoneLoadBalancing.Enabled=true
&Version=2012-06-01
&Action=ModifyLoadBalancerAttributes
&AUTHPARAMS
リクエストが成功すると、次の例のような応答が得られます。
<ModifyLoadBalancerAttributesResponse xmlns="http://elasticloadbalan
cing.amazonaws.com/doc/2012-06-01/">
<ModifyLoadBalancerAttributesResult/>
<ResponseMetadata>
<RequestId>9f646d88-1507-11e3-a983-c5f2EXAMPLE</RequestId>
</ResponseMetadata>
</ModifyLoadBalancerAttributesResponse>
2.
DescribeLoadBalancerAttributes アクションと以下のパラメータを使用して、クロスゾーン
負荷分散がロードバランサーに対して有効になっていることを確認します。
• LoadBalancerName = MyLoadBalancer
リクエストは、次の例のようになります。
https://elasticloadbalancing.amazonaws.com/?LoadBalancerName=MyLoadBalancer
&Version=2012-06-01
&Action=DescribeLoadBalancerAttributes
&AUTHPARAMS
リクエストが成功すると、次の例のような応答が返されます。
<DescribeLoadBalancerAttributesResponse xmlns="http://elasticloadbalan
cing.amazonaws.com/doc/2012-06-01/">
<DescribeLoadBalancerAttributesResult>
<LoadBalancerAttributes>
<CrossZoneLoadBalancing>
<Enabled>true</Enabled>
</CrossZoneLoadBalancing>
</LoadBalancerAttributes>
</DescribeLoadBalancerAttributesResult>
<ResponseMetadata>
<RequestId>3f42b4fe-1506-11e3-bcfd-3188aEXAMPLE</RequestId>
</ResponseMetadata>
</DescribeLoadBalancerAttributesResponse>
ロードバランサーのクロスゾーン負荷分散が正常に有効化されました。
API Version 2012-06-01
143
Elastic Load Balancing 開発者ガイド
クロスゾーン負荷分散の無効化
クロスゾーン負荷分散の無効化
ロードバランサーに対してクロスゾーン負荷分散オプションをいつでも無効にすることができます。
ロードバランサーのクロスゾーン負荷分散を無効にするには、ロードバランサーの
CrossZoneLoadBalancing 属性を変更する必要があり、属性の値を false に設定します。
このセクションでは、コマンドラインインターフェイス(CLI)または Query API を使用してロードバ
ランサーのクロスゾーン負荷分散を無効にする方法について説明します。
CLI を使用してクロスゾーン負荷分散を無効にするには
1.
次のオプションを使用して elb-modify-lb-attributes コマンドを入力します。
• Load balancer name = MyLoadBalancer
• crosszoneloadbalancing
• enabled=false
コマンドは、次の例のようになります。
elb-modify-lb-attributes MyLoadBalancer
abled=false"
--crosszoneloadbalancing "en
Elastic Load Balancing が次の例のように応答します。
OK-Modifying LoadBalancer Attributes
2.
次の例のように elb-describe-lb-attributes コマンドを入力して、クロスゾーン負荷分散が
ロードバランサーに対して無効になっていることを確認します。次のオプションを使用します。
• Load balancer name = MyLoadBalancer
コマンドは、次の例のようになります。
elb-describe-lb-attributes MyLoadBalancer
--headers
Elastic Load Balancing が次の例のように応答します。
CrossZoneLoadBalancing
CrossZoneLoadBalancing
VALUE
false
ロードバランサーのクロスゾーン負荷分散が正常に無効化されました。
Query API を使用してクロスゾーン負荷分散を無効にするには
1.
以下のパラメータで ModifyLoadBalancerAttributes アクションを使用します。
• LoadBalancerName = MyLoadBalancer
• CrossZoneLoadBalancingEnabled = false
API Version 2012-06-01
144
Elastic Load Balancing 開発者ガイド
クロスゾーン負荷分散の無効化
使用するリクエストは、次の例のようになります。
https://elasticloadbalancing.amazonaws.com/?LoadBalancerName=MyLoadBalancer
&LoadBalancerAttributes.CrossZoneLoadBalancing.Enabled=false
&Version=2012-06-01
&Action=ModifyLoadBalancerAttributes
&AUTHPARAMS
リクエストが成功すると、次の例のような応答が得られます。
<ModifyLoadBalancerAttributesResponse xmlns="http://elasticloadbalan
cing.amazonaws.com/doc/2012-06-01/">
<ModifyLoadBalancerAttributesResult/>
<ResponseMetadata>
<RequestId>9f646d88-1507-11e3-a983-c5f2EXAMPLE</RequestId>
</ResponseMetadata>
</ModifyLoadBalancerAttributesResponse>
2.
DescribeLoadBalancerAttributes アクションと以下のパラメータを使用して、クロスゾーン
負荷分散がロードバランサーに対して無効になっていることを確認します。
• LoadBalancerName = MyLoadBalancer
リクエストは、次の例のようになります。
https://elasticloadbalancing.amazonaws.com/?LoadBalancerName=MyLoadBalancer
&Version=2012-06-01
&Action=DescribeLoadBalancerAttributes
&AUTHPARAMS
リクエストが成功すると、次の例のような応答が返されます。
<DescribeLoadBalancerAttributesResponse xmlns="http://elasticloadbalan
cing.amazonaws.com/doc/2012-06-01/">
<DescribeLoadBalancerAttributesResult>
<LoadBalancerAttributes>
<CrossZoneLoadBalancing>
<Enabled>false</Enabled>
</CrossZoneLoadBalancing>
</LoadBalancerAttributes>
</DescribeLoadBalancerAttributesResult>
<ResponseMetadata>
<RequestId>3f42b4fe-1506-11e3-bcfd-3188aEXAMPLE</RequestId>
</ResponseMetadata>
</DescribeLoadBalancerAttributesResponse>
ロードバランサーのクロスゾーン負荷分散が正常に無効化されました。
API Version 2012-06-01
145
Elastic Load Balancing 開発者ガイド
ロードバランサーの SSL 証明書の更新
ロードバランサーの SSL 証明書の更新
リスナーに HTTPS/SSL プロトコルを使用している場合は、ロードバランサーに SSL サーバー証明書
がインストールされている可能性があります。SSL 証明書は定期的に更新する必要があります。この
セクションでは、HTTPS/SSL ロードバランサーの SSL 証明書を更新する方法を説明します。始める
前に、以下のことが完了していることを確認してください。
• Elastic Load Balancing で HTTPS/SSL ロードバランサーを作成した。AWS Management Console、
コマンドラインインターフェイス(CLI)、または Query API を使用して HTTPS/SSL ロードバラン
サーをセットアップする方法については、「SSL 暗号設定およびバックエンドサーバー認証を使用
したロードバランサーの作成 (p. 75)を参照してください。
• 新しい SSL サーバー証明書を作成して期限の切れたサーバー証明書を置き換え、AWS Identity and
Access Management(IAM)を使用してアップロードした。SSL 証明書の作成およびアップロード
方法については、IAM を使用する のCreating and Uploading Server Certificatesを参照してください。
すべての SSL サーバー証明書は AWS Identity and Access Management(IAM)によって管理されま
す。デフォルトでは、IAM によって AWS アカウントごとに 10 のサーバー証明書が有効になります。
この限度に達した後に新しいサーバー証明書をアップロードしようとすると、エラーが表示されま
す。IAM Limit Increase Contact Us Form を使用して、追加の証明書をリクエストすることができま
す。
• 新しい SSL サーバー証明書を作成しており、まだそれを IAM を使用してアップロードしていない場
合は、サーバー証明書のアップロードに使用する IAM ツールを必ずインストールしてください。IAM
コマンドラインインターフェイス(IAM CLI)、AWS コマンドラインインターフェイス(AWS CLI)、
または IAM API を使用して、サーバー証明書をアップロードできます。
• IAM CLI または AWS CLI のインストールと使用については、AWS Identity and Access Management
(IAM)CLI リファレンスを参照してください。
• IAM API の使用については、AWS Identity and Access Management(IAM)API リファレンスを参
照してください。
• 負荷分散タスクの実行に使用する Elastic Load Balancing ツールをインストールした。AWS
Management Console、Elastic Load Balancing コマンドラインインターフェイス(CLI)、AWS コ
マンドラインインターフェイス、または Query API を使用して、HTTPS/SSL ロードバランサーにイ
ンストールした SSL 証明書を更新できます。CLI と Query API のインストールについては、「Elastic
Load Balancing インターフェイスによるセットアップ (p. 44)を参照してください。
• Elastic Load Balancing Query API のアクションについては、Elastic Load Balancing API Reference
を参照してください。
• Elastic Load Balancing コマンドについては、Elastic Load Balancing Quick Reference Card を参照
してください。
以下のセクションでは AWS Management Console、コマンドラインインターフェイス(CLI)、また
は Query API を使用した SSL 証明書の更新方法を説明します。
Topics
• AWS Management Console の使用 (p. 146)
• Query API の使用 (p. 148)
• コマンドラインインターフェイスの使用 (p. 150)
AWS Management Console の使用
HTTPS ロードバランサーの SSL 証明書を更新するには
1.
AWS マネジメントコンソールにサインインして Amazon EC2 コンソール
(https://console.aws.amazon.com/ec2/)を開きます。
API Version 2012-06-01
146
Elastic Load Balancing 開発者ガイド
AWS Management Console の使用
2.
3.
4.
Amazon EC2 の [ Getting Started] ページにある [EC2 Dashboard] ペインの [NETWORK & SECURITY]
で、 [Load Balancers] をクリックします。
[Load Balancers] ページで、ロードバランサーを選択します。
下のペインには、ロードバランサーの詳細が表示されます。
5.
6.
[Listeners] タブをクリックします。
更新する証明書の [SSL Certificate] 列の [Change] をクリックします。
7.
アップロード済みの SSL 証明書を使用するには、[Configure SSL Certificate] ページで、[Choose
from your existing SSL Certificates] を選択して、ドロップダウンボックスから証明書を選択しま
す。
8.
SSL 証明書があり、これをアップロードする場合は、[Upload a new SSL Certificate] を選択しま
す。
アップロードする前に、証明書が以下の基準を満たしていることを確認します。
•
•
•
•
•
証明書が X.509 PEM 形式に従っている。
現在の日付が証明書の開始日と終了日の間にある。
パブリックおよびプライベートの証明書ファイルに、証明書が 1 つしか含まれていない。
プライベートキーが電子サーバー証明書のパブリックキーと一致している。
プライベートキーが PEM 形式の RSA プライベートキーである。この場合、PEM ヘッダーが
BEGIN RSA PRIVATE KEY、フッターが END RSA PRIVATE KEY です。
• プライベートキーはパスワードで暗号化できない。
• 証明書チェーンは即時署名証明書から始まり、その後に中間証明書が順番に続いています。信用
パスに関与しない中間証明書が含まれてはいけません。信頼されたルート証明書は、最終証明書
として任意で含むことができます。
証明書がこの手順に挙げた基準を満たさない場合、アップロード時にエラーが発生する場合があり
ます。新しい SSL 証明書を作成し、AWS Identity and Access Management(IAM)を使用して証
明書をアップロードします。SSL 証明書の作成およびアップロードについては、Using AWS Identity
and Access Management の Creating and Uploading Server Certificates を参照してください。
以下の指示に従い、SSL 証明書のアップロードを続行します。
a.
b.
アップロードする証明書の名前を入力します。
PEM エンコードされたプライベートキーファイルの内容をコピーして [Private Key] ボックス
に貼り付けます。
Note
プライベートキーは、アップロードが完了した後に取得することはできません。
c.
d.
PEM エンコードされたパブリックキー証明書ファイルの内容をコピーして [Public Key
Certificate] ボックスに貼り付けます。
(オプション)PEM エンコードされたパブリックキー証明書チェーンファイルの内容をコピー
して [Certificate Chain] ボックスに貼り付けます。
Note
証明書チェーンの順序は、ルート証明書がチェーンの末尾に来るようにします。証明
書チェーンの順序が異なると、エラーが返されます。
API Version 2012-06-01
147
Elastic Load Balancing 開発者ガイド
Query API の使用
9.
[Save] をクリックします。
Query API の使用
HTTPS ロードバランサーの SSL 証明書を更新するには
1.
2.
SSL 証明書があり、AWS Identity and Access Management(IAM)を使用してアップロードした
場合、IAM アクション GetServerCertificate を使用し証明書の ARN と ID を取得して、手順 3 に進
みます。
SSL 証明書があり、これをアップロードする場合は、以下の指示に従います。
a.
証明書が以下の基準を満たしていることを確認します。
• 証明書が X.509 PEM 形式に従っている。
•
•
•
•
現在の日付が証明書の開始日と終了日の間にある。
パブリックおよびプライベートの証明書ファイルに、証明書が 1 つしか含まれていない。
プライベートキーが電子サーバー証明書のパブリックキーと一致している。
プライベートキーが PEM 形式の RSA プライベートキーである。この場合、PEM ヘッダー
が BEGIN RSA PRIVATE KEY、フッターが END RSA PRIVATE KEY です。
• プライベートキーはパスワードで暗号化できない。
• 証明書チェーンは即時署名証明書から始まり、その後に中間証明書が順番に続いています。
信用パスに関与しない中間証明書が含まれてはいけません。信頼されたルート証明書は、最
終証明書として任意で含むことができます。
証明書が基準を満たしていない場合、アップロード時にエラーが発生する場合があります。新
しい SSL 証明書を作成し、AWS Identity and Access Management(IAM)を使用して証明書
をアップロードします。SSL 証明書の作成およびアップロードについては、Using AWS Identity
and Access Management の Creating and Uploading Server Certificates を参照してください。
API Version 2012-06-01
148
Elastic Load Balancing 開発者ガイド
Query API の使用
b.
証明書が基準を満たしている場合、以下の指示に従い、SSL 証明書のアップロードを続行し
ます。
以下のパラメータを使って、AWS Identity and Access Management UploadServerCertificate
API を呼び出します。
• ServerCertificateName = newCert
Important
失効した証明書の名前は使用できません。ServerCertificateName パラメータ
には新しい名前を使用する必要があります。
• CertificateBody = <encoded certificate body>
• PrivateKey = <encoded private key>
Note
プライベートキーは、アップロードが完了した後に取得することはできません。
• CertificateChain = <concatenation of the encoded public key certificates>
Note
CertificateChain は省略可能です。CertificateChain を使用している場合
は、ルート証明書がチェーンの末尾に来るようにしてください。証明書チェーンの
順序が異なると、エラーが返されます。
• Path = /
Note
Path は省略可能です。使用しない場合、パスはデフォルトの / になります。パス
については、IAM を使用する のIAM エンティティの識別子を参照してください。
応答には、新しい証明書の Amazon リソース名(ARN)が含まれます。この新しい ARN を次
のステップの SSLCertificateId パラメータに指定します。
3.
SetLoadBalancerListenerSSLCertificate を呼び出して、失効した証明書を新しい証明書で置き換え
ます。
• LoadBalancerName = test-lb
• LoadBalancerPort = 443
• SSLCertificateId = arn:aws:iam::322191361670:server-certificate/newCert
API Version 2012-06-01
149
Elastic Load Balancing 開発者ガイド
コマンドラインインターフェイスの使用
コマンドラインインターフェイスの使用
HTTPS ロードバランサーの SSL 証明書を更新するには
1.
SSL 証明書があり、AWS Identity and Access Management(IAM)を使用してアップロードした
場合、AWS CLI コマンド get-server-certificate または IAM CLI コマンド
iam-servercertgetattributes を使用し証明書の ARN と ID を取得して、手順 3 に進みます。
2.
SSL 証明書があり、これをアップロードする場合は、以下の指示に従います。
a.
証明書が以下の基準を満たしていることを確認します。
• 証明書が X.509 PEM 形式に従っている。
• 現在の日付が証明書の開始日と終了日の間にある。
• パブリックおよびプライベートの証明書ファイルに、証明書が 1 つしか含まれていない。
• プライベートキーが電子サーバー証明書のパブリックキーと一致している。
• プライベートキーが PEM 形式の RSA プライベートキーである。この場合、PEM ヘッダー
が BEGIN RSA PRIVATE KEY、フッターが END RSA PRIVATE KEY です。
• プライベートキーはパスワードで暗号化できない。
• 証明書チェーンは即時署名証明書から始まり、その後に中間証明書が順番に続いています。
信用パスに関与しない中間証明書が含まれてはいけません。信頼されたルート証明書は、最
終証明書として任意で含むことができます。
証明書が基準を満たしていない場合、アップロード時にエラーが発生する場合があります。新
しい SSL 証明書を作成し、AWS Identity and Access Management(IAM)を使用して証明書
をアップロードします。SSL 証明書の作成およびアップロードについては、Using AWS Identity
and Access Management の Creating and Uploading Server Certificates を参照してください。
b.
証明書が基準を満たしている場合、以下の指示に従い、SSL 証明書のアップロードを続行し
ます。
以下のオプションを指定して、詳細モードで AWS CLI aws iam
upload-server-certificate または IAM CLI iam-servercertupload を使用します。
• server certificate name = new certificate name
Important
失効した証明書の名前は使用できません。サーバー証明書名には新しい名前を使用
する必要があります。
• certificate body=<encoded certificate body>
• private key=<encoded private key>
Note
プライベートキーは、アップロードが完了した後に取得することはできません。
• certificate chain = <concatenation of the encoded public key
certificates>
API Version 2012-06-01
150
Elastic Load Balancing 開発者ガイド
コマンドラインインターフェイスの使用
Note
certificate chain はオプションです。こちらを使用している場合は、ルート証
明書がチェーンの末尾に来るようにしてください。証明書チェーンの順序が異なる
と、エラーが返されます。
• path = /
Note
path はオプションです。使用しない場合、パスはデフォルトの / になります。パ
スについては、IAM を使用する の IAM エンティティの識別子を参照してください。
応答には、サーバー証明書の Amazon リソースネーム(ARN)と GUID が含まれます。
arn:aws:iam::55555555555:server-certificate/production/myCert
ASCACexampleKEZUQ4K
c.
3.
1 行目は ARN で、2 行名は GUID です。次の手順のために ARN をコピーします。
以下の例のように、HTTPS リスナーとともにコマンド elb-set-lb-listener-ssl-cert を入
力します。
PROMPT> elb-set-lb-listener-ssl-cert test-lb --lb-port 443 --cert-id
arn:aws:iam::322191361670:server-certificate/newCert
API Version 2012-06-01
151
Elastic Load Balancing 開発者ガイド
プロキシプロトコルサポートの有効化または無効化
プロキシプロトコルサポートの有効化または無効
化
フロントエンド接続とバックエンド接続の両方に Transmission Control Protocol(TCP)または Secure
Sockets Layer(SSL)を使用する場合、ロードバランサーは、デフォルトで、リクエストヘッダーを
変更せずにリクエストをバックエンドインスタンスに転送します。Proxy Protocol を有効にすると、発
信元 IP アドレス、送信先 IP アドレス、およびポート番号などの接続情報が含まれる、人間が読んで理
解できるヘッダーが、リクエストヘッダーの先頭に追加されます。これにより、ヘッダーがリクエスト
の一部としてバックエンドインスタンスに送信されます。
Proxy Protocol は、接続をリクエストする送信元から、接続先としてリクエストされた送信先に接続情
報を伝達するために使用されるインターネットプロトコルです。Elastic Load Balancing では Proxy
Protocol のバージョン 1 を使って、人間が読んで理解できるヘッダー形式を使用します。
Proxy Protocol は、SSL プロトコルまたは TCP プロトコルを使用するポートでのみ有効にすることが
できます。HTTP 以外のプロトコルを使用している場合か、HTTPS を使用していてロードバランサー
で SSL 接続を終了していない場合は、Proxy Protocol を使用してクライアントの発信元 IP を捕捉する
ことができます。
ロードバランサーの前に Proxy Protocol 対応のプロキシサーバーがある場合は、ロードバランサーで
Proxy Protocol を有効にしないでください。Proxy Protocol をプロキシサーバーとロードバランサーの
両方で有効にすると、プロキシサーバーからのヘッダーが既に追加されているリクエストに、さらにも
う 1 つのヘッダ-がロードバランサーにより追加されます。バックエンドインスタンスの設定によって
は、このような重複によってエラーが発生する可能性があります。
以下の図は、ロードバランサーの前にプロキシサーバーがある場合の Proxy Protocol の、正しい有効化
設定と正しくない有効化設定を示しています。
API Version 2012-06-01
152
Elastic Load Balancing 開発者ガイド
コマンドラインインターフェイスを使用した Proxy Protocol
の有効化
このセクションでは、Proxy Protocol を有効化し、Elastic Load Balancing コマンドラインインターフェ
イス(CLI)か Query API を使用して Proxy Protocol をバックエンドインスタンスに関連付ける手順を
説明します。現行の Elastic Load Balancing コンソールでは、Proxy Protocol は有効化できません。
Prerequisites for Enabling Proxy Protocol
有効化を開始する前に、以下の手順が完了していることを確認します。
• フロントエンドリスナーとバックエンドリスナーの両方に SSL プロトコルか TCP プロトコルを指定
して、基本的なロードバランサーを作成した。詳細については、Get Started withElastic Load balancing
を参照してください。
• バックエンドインスタンスで Proxy Protocol 情報を処理できることを確認した。
• Elastic Load Balancing コマンドラインインターフェイス(CLI)を使用する場合は、そのコマンドラ
インツールをインストールしてください。詳細については、Installing the Command Line Interfaceを
参照してください。
Elastic Load Balancing Query API の使用については、「Query リクエストを使用した Elastic Load
Balancing API の呼び出し (p. 52)を参照してください。
Topics
• コマンドラインインターフェイスを使用した Proxy Protocol の有効化 (p. 153)
• Query API を使用した Proxy Protocol の有効化 (p. 157)
コマンドラインインターフェイスを使用した Proxy
Protocol の有効化
Proxy Protocol を有効化するには、タイプ ProxyProtocolPolicyType のポリシーを作成し、作成し
たポリシーをバックエンドインスタンスのポートに設定します。
このチュートリアルでは、my-test-loadbalancer というロードバランサーに対してタイプ
ProxyProtocolPolicyType の新しいポリシー、EnableProxyProtocol を作成し、その作成した
ポリシーをバックエンドインスタンスのポート 80 に設定して、ポリシーが有効化されたことを確認し
ます。
スナップショットを作成するには
1.
コマンド elb-describe-lb-policies を入力し、Elastic Load Balancing でサポートされるすべ
てのポリシーをリストします。
elb-describe-lb-policy-types
2.
--headers
Elastic Load Balancing が、サポートされているポリシータイプの名前と説明を返します。
POLICY_TYPE
POLICY_TYPE
NAME
PublicKeyPolicyType
POLICY_TYPE
POLICY_TYPE
POLICY_TYPE
AppCookieStickinessPolicyType
LBCookieStickinessPolicyType
SSLNegotiationPolicyType
...
...
...
POLICY_TYPE
BackendServerAuthenticationPolicyType
...
API Version 2012-06-01
153
DESCRIPTION
...
Elastic Load Balancing 開発者ガイド
コマンドラインインターフェイスを使用した Proxy Protocol
の有効化
POLICY_TYPE
ProxyProtocolPolicyType
...
新しいポリシー、EnableProxyProtocol を作成するために、ポリシータイプ
ProxyProtocolPolicyType を使用します。
3.
elb-create-lb-policyコマンドを入力して新しいポリシーを作成します。
elb-create-lb-policy my-test-loadbalancer --policy-name EnableProxyProtocol
--policy-type ProxyProtocolPolicyType --attribute "name=ProxyProtocol,
value=true"
4.
Elastic Load Balancing が次の例のように応答します。
OK-Creating LoadBalancer Policy
ポリシーを有効化するには
1.
コマンド elb-set-lb-policies-for-backend-server を入力して、新しく作成したポリシー
をバックエンドインスタンスのポートに設定します。
Note
elb-set-lb-policies-for-backend-server コマンドにより、インスタンスポート
に関連付けられている現在のポリシーセットが上書きされます。ポリシーを有効化するた
めにこのコマンドを使用するときは、必ず --policy-names オプションを使用して、有
効化したいすべてのポリシーをリストします。
elb-set-lb-policies-for-backend-server my-test-loadbalancer --instance-port
80 --policy-names EnableProxyProtocol, MyPolicyName2, MyPolicyName3
2.
Elastic Load Balancing が次の例のように応答します。
OK-Setting Policies
Proxy Protocol が有効化されたことを確認するには
1.
Proxy Protocol が有効化されたことを確認するために、elb-describe-lbs コマンドを入力しま
す。
elb-describe-lbs my-test-loadbalancer --headers --show-long
2.
Elastic Load Balancing が次の例のように応答します。
LOAD_BALANCER,NAME,DNS_NAME,CANONICAL_HOSTED_ZONE_NAME,CANONICAL_HOS
TED_ZONE_NAM
E_ID,HEALTH_CHECK,AVAILABILITY_ZONES,SUBNETS,VPC_ID,INSTANCE_ID,LISTEN
API Version 2012-06-01
154
Elastic Load Balancing 開発者ガイド
コマンドラインインターフェイスを使用した Proxy Protocol
の有効化
ER_DESCRIP
TIONS,BACKEND_SERVER_DESCRIPTIONS,OTHER_POLICIES,SOURCE_SECURITY_GROUP,SE
CURITY_
GROUPS,CREATED_TIME,SCHEME
LOAD_BALANCER,my-test-loadbalancer,my-test-loadbalancer-1086370712.us-east1.elb
.amazonaws.com,my-test-loadbalancer-1086370712.us-east-1.elb.amazon
aws.com,Z3DZX
E0Q79N41H,"{interval=30,target=HTTP:80/install.php,timeout=5,healthythreshold=1
0,unhealthy-threshold=2}",us-east-1e,(nil),(nil),"i-48bb5d38, i-78bc5a08,
i-98e2
04e8, i-ccbb5dbc","{protocol=HTTP,lb-port=80,instance-protocol=HTTP,instancepor
t=80,policies=},{protocol=HTTPS,lb-port=443,instance-protocol=HTTP,instanceport
=80,cert-id=arn:aws:iam::803981987763:server-certificate/scert,policies=AWSCon
sole-SSLNegotiationPolicy-my-test-loadbalancer}","{instanceport=80,policies=Enabl
eProxyProtocol}","AWSConsole-SSLNegotiationPolicy-my-test-loadbalancer, En
ablePr
oxyProtocol","{owner-alias=amazon-elb,group-name=amazon-elb-sg}",(nil),201301-2
4T20:51:35.710Z,internet-facing
[OTHER_POLICIES] フィールド内の {instance-port=80,policies=EnableProxyProtocol} と
いう記述により、ポリシーがインスタンスのポートに関連付けられたことを確認できます。
ポリシーの無効化
いつでも、バックエンドインスタンスに関連付けられたポリシーを無効化し、後で有効化することがで
きます。引き続き Proxy Protocol ポリシーのバックエンドインスタンスへの関連付けを行う場合は、こ
のステップはスキップしてください。
elb-set-lb-policies-for-backend-server コマンドを使用し、--policy-names オプションに
Proxy Protocol ポリシー名を指定しないことで、Proxy Protocol ポリシーを無効化します。
Proxy Protocol ポリシーを無効化するには
1.
Proxy Protocol を無効化するために、elb-set-lb-policies-for-backend-server コマンド
を入力します。
Note
elb-set-lb-policies-for-backend-server コマンドにより、インスタンスポート
に関連付けられている現在のポリシーセットが上書きされます。ポリシーを無効化するた
めにこのコマンドを使用するときは、必ず --policy-names オプションを使用して、有
効化したいすべてのポリシーをリストすると共に、無効化したいポリシー名を指定解除し
ます。
instance port 80 用に有効化するポリシーが他にない場合は、次の例に示すように、
--policy-names オプションで空の文字列を使用します。
API Version 2012-06-01
155
Elastic Load Balancing 開発者ガイド
コマンドラインインターフェイスを使用した Proxy Protocol
の有効化
elb-set-lb-policies-for-backend-server my-test-loadbalancer --instance-port
80 --policy-names
instance port 80 に対して Proxy Protocol ポリシー以外のポリシーを有効化したい場合は、そ
れらの他のポリシーを指定するために --policy-names オプションを使用します。
elb-set-lb-policies-for-backend-server my-test-loadbalancer --instance-port
80 --policy-names MyPolicyName2, MyPolicyName3
2.
Elastic Load Balancing が次の例のように応答します。
OK-Setting Policies
Proxy Protocol ポリシーが無効化されていることを確認するには
1.
Proxy Protocol ポリシーが無効化されているかどうかを確認するため、elb-describe-lbs コマ
ンドを入力します。
elb-describe-lbs my-test-loadbalancer --headers --show-long
2.
Elastic Load Balancing が次の例のように応答します。
LOAD_BALANCER,NAME,DNS_NAME,CANONICAL_HOSTED_ZONE_NAME,CANONICAL_HOS
TED_ZONE_NAM
E_ID,HEALTH_CHECK,AVAILABILITY_ZONES,SUBNETS,VPC_ID,INSTANCE_ID,LISTEN
ER_DESCRIP
TIONS,BACKEND_SERVER_DESCRIPTIONS,OTHER_POLICIES,SOURCE_SECURITY_GROUP,SE
CURITY_
GROUPS,CREATED_TIME,SCHEME
LOAD_BALANCER,my-test-loadbalancer,my-test-loadbalancer-1086370712.us-east1.elb
.amazonaws.com,my-test-loadbalancer-1086370712.us-east-1.elb.amazon
aws.com,Z3DZX
E0Q79N41H,"{interval=30,target=HTTP:80/install.php,timeout=5,healthythreshold=1
0,unhealthy-threshold=2}",us-east-1e,(nil),(nil),"i-48bb5d38, i-78bc5a08,
i-98e2
04e8, i-ccbb5dbc","{protocol=HTTP,lb-port=80,instance-protocol=HTTP,instancepor
t=80,policies=},{protocol=HTTPS,lb-port=443,instance-protocol=HTTP,instanceport
=80,cert-id=arn:aws:iam::803981987763:server-certificate/scert,policies=AWSCon
so
le-SSLNegotiationPolicy-my-test-loadbalancer}",(nil),"AWSConsole-SSLNegoti
ationP
olicy-my-test-loadbalancer, EnableProxyProtocol","{owner-alias=amazonelb,groupname=amazon-elb-sg}",(nil),2013-01-24T20:51:35.710Z,internet-facing
API Version 2012-06-01
156
Elastic Load Balancing 開発者ガイド
Query API を使用した Proxy Protocol の有効化
OTHER_POLICIES フィールド内の [(nil)] は、EnableProxyProtocol がどのインスタンスポートに
も関連付けられていないことを示します。
Query API を使用した Proxy Protocol の有効化
Proxy Protocol を有効化するには、タイプ ProxyProtocolPolicyType のポリシーを作成し、作成し
たポリシーをバックエンドインスタンスのポートに設定します。
このチュートリアルでは、my-test-loadbalancer というロードバランサーに対してタイプ
ProxyProtocolPolicyType の新しいポリシー、EnableProxyProtocol を作成し、その作成した
ポリシーをバックエンドインスタンスのポート 80 に設定して、ポリシーが有効化されたことを確認し
ます。
Query リクエストの実行については、「Query リクエストを使用した Elastic Load Balancing API の呼
び出し (p. 52)を参照してください。
スナップショットを作成するには
1.
DescribeLoadBalancerPolicyTypes アクションを呼び出し、Elastic Load Balancing でサポートさ
れるすべてのポリシーをリストします。
使用するリクエストは、次の例のようになります。
https://elasticloadbalancing.amazonaws.com/?Version=2012-06-01
&Action=DescribeLoadBalancerPolicyTypes
&AUTHPARAMS
2.
応答には、サポートされるポリシータイプの名前と説明が出力されます。次の例は応答の一部で
す。
<DescribeLoadBalancerPolicyTypesResponse xmlns="http://elasticloadbalanc
ing.amazonaws.com/doc/2012-06-01/">
<DescribeLoadBalancerPolicyTypesResult>
<PolicyTypeName>SSLNegotiationPolicyType</PolicyTypeName>
< . . . .>
<PolicyTypeName>BackendServerAuthenticationPolicyType</PolicyTypeName>
< . . . .>
<PolicyTypeName>PublicKeyPolicyType</PolicyTypeName>
< . . . .>
<PolicyTypeName>AppCookieStickinessPolicyType</PolicyTypeName>
< . . . .>
<PolicyTypeName>LBCookieStickinessPolicyType</PolicyTypeName>
< . . . .>
<PolicyTypeName>ProxyProtocolPolicyType</PolicyTypeName>
< . . . .>
</DescribeLoadBalancerPolicyTypesResult>
<ResponseMetadata>
<RequestId>94a1d9fd-e01b-11e2-bff8-276f19bc1b97</RequestId>
</ResponseMetadata>
</ DescribeLoadBalancerPolicyTypesResponse >
ProxyProtocolPolicyType を使用して、新しいポリシー、EnableProxyProtocol を作成し
ます。
API Version 2012-06-01
157
Elastic Load Balancing 開発者ガイド
Query API を使用した Proxy Protocol の有効化
3.
以下のパラメータを指定して CreateLoadBalancerPolicy アクションを呼び出すことで、新しいポ
リシー、EnableProxyProtocol を作成します。
• Load Balancer name = my-test-loadbalancer
• Policy name = EnableProxyProtocol
• Policy type = ProxyProtocolPolicyType
• PolicyAttributeName = ProxyProtocol
• PolicyAttributeValue = true
使用するリクエストは、次の例のようになります。
https://elasticloadbalancing.amazonaws.com/?PolicyAttributes.member.1.Attrib
uteName=ProxyProtocol
&PolicyAttributes.member.1.AttributeValue=true
&PolicyTypeName=ProxyProtocolPolicyType
&LoadBalancerName=my-test-loadbalancer
&PolicyName=EnableProxyProtocol
&Version=2012-06-01
&Action=CreateLoadBalancerPolicy
&AUTHPARAMS
4.
リクエストが成功すると、次の例のような確認情報が得られます。
<CreateLoadBalancerPolicyResponse xmlns="http://elasticloadbalancing.amazon
aws.com/doc/2012-06-01/">
<CreateLoadBalancerPolicyResult/>
<ResponseMetadata>
<RequestId>2f5856c5-dddf-11e2-a79c-e97dcEXAMPLE</RequestId>
</ResponseMetadata>
</CreateLoadBalancerPolicyResponse>
ポリシーを有効化するには
1.
以下のパラメータを使用して、SetLoadBalancerPoliciesForBackendServe アクションを呼び出し
ます。
Note
SetLoadBalancerPoliciesForBackendServer アクションにより、インスタンスポー
トに関連付けられている現在のポリシーセットが上書きされます。ポリシーを有効化する
ためにこのアクションを使用するときは、必ず Policy Names パラメータを使用して、
有効化したいすべてのポリシーをリストします。
• Load Balancer name = my-test-loadbalancer
• Back-end instance port number = 80
• Policy names = EnableProxyProtocol
Policy names = MyPolicyName2
Policy names = MyPolicyName3
API Version 2012-06-01
158
Elastic Load Balancing 開発者ガイド
Query API を使用した Proxy Protocol の有効化
使用するリクエストは、次の例のようになります。
https://elasticloadbalancing.amazonaws.com/?InstancePort=80
&PolicyNames.member.1=EnableProxyProtocol
&PolicyNames.member.2=MyPolicyName2
&PolicyNames.member.3=MyPolicyName3
&LoadBalancerName=my-test-loadbalancer
&Version=2012-06-01
&Action=SetLoadBalancerPoliciesForBackendServer
&AUTHPARAMS
2.
リクエストが成功すると、次の例のような確認情報が得られます。
<SetLoadBalancerPoliciesForBackendServerResponse xmlns="http://elasticload
balancing.amazonaws.com/doc/2012-06-01/">
<SetLoadBalancerPoliciesForBackendServerResult/>
<ResponseMetadata>
<RequestId>0eb9b381-dde0-11e2-8d78-6ddbaEXAMPLE</RequestId>
</ResponseMetadata>
</SetLoadBalancerPoliciesForBackendServerResponse>
Proxy Protocol ポリシーが有効化されたことを確認するには
1.
以下のパラメータを使用して、DescribeLoadBalancers アクションを呼び出します。
• Load Balancer name = my-test-loadbalancer
使用するリクエストは、次の例のようになります。
https://elasticloadbalancing.amazonaws.com/?LoadBalancerNames.member.1=mytest-loadbalancer
&Version=2012-06-01
&Action=DescribeLoadBalancers
&AUTHPARAMS
2.
応答には、ロードバランサーの詳細が含まれます。次の例のような情報が取得されます。
<DescribeLoadBalancersResponse xmlns="http://elasticloadbalancing.amazon
aws.com/doc/2012-06-01/">
<DescribeLoadBalancersResult>
<LoadBalancerDescriptions>
<member>
<SecurityGroups/>
<CreatedTime>2013-01-24T20:51:35.710Z</CreatedTime>
<LoadBalancerName>my-test-loadbalancer</LoadBalancerName>
<HealthCheck>
. . . .
</HealthCheck>
<ListenerDescriptions>
. . . .
</ListenerDescriptions>
<Instances>
API Version 2012-06-01
159
Elastic Load Balancing 開発者ガイド
Query API を使用した Proxy Protocol の有効化
. . . .
</Instances>
<Policies>
<AppCookieStickinessPolicies/>
<OtherPolicies>
<member>AWSConsole-SSLNegotiationPolicy-my-test-loadbalancer</mem
ber>
<member>EnableProxyProtocol</member>
</OtherPolicies>
<LBCookieStickinessPolicies/>
</Policies>
. . . .
. . . .
<BackendServerDescriptions>
<member>
<PolicyNames>
<member>EnableProxyProtocol</member>
</PolicyNames>
<InstancePort>80</InstancePort>
</member>
</BackendServerDescriptions>
<Subnets/>
</member>
</LoadBalancerDescriptions>
</DescribeLoadBalancersResult>
<ResponseMetadata>
<RequestId>d0463294-e331-11e2-9776-c3fEXAMPLE</RequestId>
</ResponseMetadata>
</DescribeLoadBalancersResponse>
[BackendServerDescriptions] フィールド内の記述により、ポリシーがインスタンスのポートに関
連付けられたことを確認できます。
ポリシーの無効化
いつでも、バックエンドインスタンスに関連付けられたポリシーを無効化し、後で有効化することがで
きます。引き続き Proxy Protocol ポリシーのバックエンドインスタンスへの関連付けを行う場合は、こ
のステップはスキップしてください。
SetLoadBalancerPoliciesForBackendServer アクションを使用し、Policy Names パラメータ
に Proxy Protocol ポリシー名を指定しないことで、Proxy Protocol ポリシーを無効化します。
Note
SetLoadBalancerPoliciesForBackendServer アクションにより、インスタンスポートに
関連付けられている現在のポリシーセットが上書きされます。ポリシーを無効化するためにこ
のアクションを使用するときは、必ず Policy Names パラメータを使用して、有効化したい
すべてのポリシーをリストすると共に、無効化したいポリシー名を指定解除します。
Proxy Protocol ポリシーを無効化するには
1.
以下のパラメータを指定して、SetLoadBalancerPoliciesForBackendServe アクションを呼び出し
ます。 instance port 80 用に有効化するポリシーが他にない場合は、Policy Names パラメー
タで空の文字列を使用します。
API Version 2012-06-01
160
Elastic Load Balancing 開発者ガイド
Query API を使用した Proxy Protocol の有効化
• Load Balancer name = my-test-loadbalancer
• Back-end instance port number = 80
• Policy Names =
使用するリクエストは、次の例のようになります。
https://elasticloadbalancing.amazonaws.com/?InstancePort=80
&PolicyNames=
&LoadBalancerName=my-test-loadbalancer
&Version=2012-06-01
&Action=SetLoadBalancerPoliciesForBackendServer
&AUTHPARAMS
instance port 80 に対して Proxy Protocol ポリシー以外のポリシーを有効化したい場合は、次
の例にあるように、それらのポリシーを指定するために Policy Names パラメータを使用します。
• Load Balancer name = my-test-loadbalancer
• Back-end instance port number = 80
• Policy names = MyPolicyName2
Policy names = MyPolicyName3
使用するリクエストは、次の例のようになります。
https://elasticloadbalancing.amazonaws.com/?InstancePort=80
&PolicyNames.member.1=MyPolicyName2
&PolicyNames.member.2=MyPolicyName3
&LoadBalancerName=my-test-loadbalancer
&Version=2012-06-01
&Action=SetLoadBalancerPoliciesForBackendServer
&AUTHPARAMS
2.
リクエストが成功すると、次の例のような確認情報が得られます。
<SetLoadBalancerPoliciesForBackendServerResponse xmlns="http://elasticload
balancing.amazonaws.com/doc/2012-06-01/">
<SetLoadBalancerPoliciesForBackendServerResult/>
<ResponseMetadata>
<RequestId>0eb9b381-dde0-11e2-8d78-6ddbaEXAMPLE</RequestId>
</ResponseMetadata>
</SetLoadBalancerPoliciesForBackendServerResponse>
Proxy Protocol ポリシーが無効化されていることを確認するには
1.
以下のパラメータを使用して、DescribeLoadBalancers アクションを呼び出します。
• Load Balancer name = my-test-loadbalancer
使用するリクエストは、次の例のようになります。
API Version 2012-06-01
161
Elastic Load Balancing 開発者ガイド
Query API を使用した Proxy Protocol の有効化
https://elasticloadbalancing.amazonaws.com/?LoadBalancerNames.member.1=mytest-loadbalancer
&Version=2012-06-01
&Action=DescribeLoadBalancers
&AUTHPARAMS
2.
応答には、ロードバランサーの詳細が含まれます。次の例のような情報が取得されます。
<DescribeLoadBalancersResponse xmlns="http://elasticloadbalancing.amazon
aws.com/doc/2012-06-01/">
<DescribeLoadBalancersResult>
<LoadBalancerDescriptions>
<member>
<SecurityGroups/>
<CreatedTime>2013-01-24T20:51:35.710Z</CreatedTime>
<LoadBalancerName>my-test-loadbalancer</LoadBalancerName>
<HealthCheck>
. . . .
</HealthCheck>
<ListenerDescriptions>
. . . .
</ListenerDescriptions>
<Instances>
. . . .
</Instances>
<Policies>
<AppCookieStickinessPolicies/>
<OtherPolicies>
<member>AWSConsole-SSLNegotiationPolicy-my-test-loadbalancer</mem
ber>
<member>EnableProxyProtocol</member>
</OtherPolicies>
<LBCookieStickinessPolicies/>
</Policies>
. . . .
. . . .
<BackendServerDescriptions/>
<Subnets/>
</member>
</LoadBalancerDescriptions>
</DescribeLoadBalancersResult>
<ResponseMetadata>
<RequestId>d0463294-e331-11e2-9776-c3fEXAMPLE</RequestId>
</ResponseMetadata>
</DescribeLoadBalancersResponse>
[BackendServerDescriptions] フィールドが空であることにより、インスタンスのポートがどのポ
リシーにも関連付けられていないことを確認できます。
API Version 2012-06-01
162
Elastic Load Balancing 開発者ガイド
ロードバランサーのカスタムドメイン名の設定
ロードバランサーのカスタムドメイン名の設定
Topics
• カスタムドメイン名とロードバランサー名の関連付け (p. 163)
• ドメイン名とロードバランサー名の関連付けの解除 (p. 167)
作成した Elastic Load Balancing インスタンスにはそれぞれ、Domain Name System(DNS)名が自動
的に付けられます。通常、DNS 名には、ロードバランサーが作成される AWS リージョンの名前が含
まれます。例えば、米国東部リージョンで myLB という名前のロードバランサーを作成した場合、その
ロードバランサーには myLB-1234567890.us-east-1.elb.amazonaws.com のような名前が付けられま
す。ロードバランサーに接続するには、インターネットに接続したウェブブラウザのアドレスフィール
ドに Elastic Load Balancing で生成された DNS 名を貼り付けるだけです。
ロードバランサーの DNS 名ではなく www.example.com のようなユーザーが分かりやすいドメイン名
を使用する場合は、カスタムドメイン名を作成して、カスタムドメイン名とロードバランサーの DNS
名を関連付けます。作成したカスタムドメイン名を使用してロードバランサーにリクエストを送ると、
ロードバランサーの DNS 名に解決されます。
ロードバランサーのインスタンスにカスタムドメイン名を使用するには、最初に DNS サービスプロバ
イダにドメイン名を登録する必要があります。
ドメイン名を登録する際は、ドメイン名自体だけでなく、一連のサブドメイン名全体も予約することに
なります。例えば、example.com をカスタムドメイン名として登録する場合、foo.bar.example.com や
foo.myLB.example.com などのサブドメイン名を作成することができます。この一連のドメインとサブ
ドメイン名は、ゾーンと呼ばれます。予約した example.com などのドメイン名は、ゾーンの階層の最
上部にあるため、Zone Apex と呼ばれます。
カスタムドメイン名とロードバランサー名の関連付
け
カスタムドメイン名を登録したら、 2 つの方法でカスタムドメイン名をロードバランサー DNS 名に関
連付けすることができます。
• Option 1: 既存のドメイン名プロバイダでゾーンの正規名(CNAME)レコードを作成します。
カスタムドメイン名をロードバランサーに関連付けるには、まず既存のドメイン名プロバイダでゾー
ンの正規名(CNAME)レコードを作成します。
CNAME レコードは、ドメイン名が別の CNAME ドメイン名のエイリアスであることを示していま
す。例えば、以下の CNAME レコードは、エイリアスである www.foo.example.com を、Elastic Load
Balancing インスタンスの DNS 名である正規名と関連付けます。
www.foo.example.com CNAME myLB-1234567890.us-east-1.elb.amazonaws.com
CNAME レコードについては、Wikipedia の記事 http://en.wikipedia.org/wiki/CNAME_record を参照し
てください。
CNAME レコードの作成プロセスは簡単です。ドメイン名登録機関の多くは、ユーザーが自分で
CNAME レコードを作成するためのセルフサービスツールを提供しています。ただし、CNAME レ
コードを使用して、Zone Apex と Elastic Load Balancing インスタンスを関連付けることはできませ
ん。DNS ルールでは Zone Apex(example.com など)での CNAME レコードの作成が許可されてい
ません。例えば、example.com というドメイン名を所有している場合、CNAME レコードはサブドメ
イン名である foo.example.com には使用できますが、Zone Apex である example.com には使用でき
ません。
API Version 2012-06-01
163
Elastic Load Balancing 開発者ガイド
カスタムドメイン名とロードバランサー名の関連付け
Zone Apex とロードバランサーの DNS 名を関連付ける場合は、次のオプションを使用します。
• Option 2: DNS サービス Amazon Route 53 はホストゾーンのドメインに関する情報を格納するため、
Amazon Route 53 を使用してドメインを作成します。ホストゾーンとは、DNS ネームサーバーの
ゾーンファイルに類似した Amazon Route 53 の概念です。ゾーンファイルと同様、ホストゾーンに
も、ドメイン内のサブドメインや名前と IP アドレスのマッピングといった、ドメイン名に関する情
報が含まれます。Amazon Route 53 については、What is Route 53 and How Does it Work?
このオプションを使用して、Zone Apex とロードバランサーの DNS 名を関連付けます。Amazon
Route 53 は、ドメイン(example.com など)のホストゾーンを作成し、エイリアスのリソースレコー
ドのセットを作成するために使用します。エイリアスのリソースレコードのセットには、DNS リソー
スレコードを含むリソースレコードセットに対するポインタが含まれます。例えば、example.com
のようなドメインのエイリアスのリソースレコードのセットにより、Elastic Load Balancing のロー
ドバランサーのインスタンス myLB-1234567890.us-east-1.elb.amazonaws.com の DNS 名を指すこ
とができます。ホストゾーンを作成したら、エイリアスのリソースレコードのセットを作成して、サ
ブドメイン名と Elastic Load Balancing インスタンスを関連付けることもできます。
DNS フェイルオーバー: Route 53 を使用し、カスタムドメイン名を作成してロードバランサーに関
連付ける場合は、ロードバランサーに対して DNS フェイルオーバーの有効化を選択することができ
ます。DNS フェイルオーバーを有効化すると、Route 53 は、関連付けられた 1 次および 2 次のロー
ドバランサーインスタンスのヘルスチェックに基づいて、エイリアスレコードセット example.com
へのクエリに応答します。
ロードバランサーに対して DNS フェイルオーバーを有効化するには、「ロードバランサーに対する
DNS フェイルオーバーの設定 (p. 169)を参照してください。
このセクションでは、Elastic Load Balancing インスタンスとカスタムドメイン名をオプション 1 また
は オプション 2 を使用して関連付ける方法を説明します。
前提条件
ロードバランサーの DNS 名とカスタムドメイン名の関連付けを始めるには、最初にロードバランサー
を作成する必要があります。基本のロードバランサーの作成については、「Elastic Load Balancing の
使用開始 (p. 17)を参照してください。カスタム設定のロードバランサーの作成については、「SSL 暗
号設定およびバックエンドサーバー認証を使用したロードバランサーの作成 (p. 75)を参照してくださ
い。
Note
Elastic Load Balancing DNS エントリの Time-to-Live(TTL)は、60 秒に設定されています。
この設定により、Elastic Load Balancing の拡張または縮小を伴うイベントに対応して、IP ア
ドレスが迅速に再マッピングされます。
Option 1: サブドメインとロードバランサーの CNAME レコード
の作成
1.
カスタムドメイン名を DNS プロバイダに登録します。ドメイン名の登録に使用できる登録機関
ウェブサイトの一覧については、「ICANNを参照してください。 ドメイン名が登録されたという
通知を登録機関から受けるまで待ってください。
2.
サブドメイン名を作成して、ロードバランサーの DNS 名と関連付けます。例えば、カスタムドメ
イン名が example.com の場合、foo.mylb.example.com のようなサブドメイン名を作成することが
できます。
3.
ロードバランサーのパブリック DNS 名を取得します。ロードバランサーの DNS 名の取得には、
AWS マネジメントコンソール、Elastic Load Balancing Query API、または Elastic Load Balancing
コマンドラインインターフェイス(CLI)を使用することができます。
API Version 2012-06-01
164
Elastic Load Balancing 開発者ガイド
カスタムドメイン名とロードバランサー名の関連付け
To use the AWS Management Console to retrieve the public DNS name of your load balancer
4.
a.
AWS マネジメントコンソールにサインインし、Amazon EC2 コンソールを開きます
(https://console.aws.amazon.com/ec2/)。
b.
Amazon EC2 の [ Getting Started] ページにある [EC2 Dashboard] ペインの [NETWORK &
SECURITY] で、 [Load Balancers] をクリックします。
c.
d.
[Load Balancers] ページで、ロードバランサーを選択します。
下のペインには、ロードバランサーの詳細が表示されます。
e.
ロードバランサーの DNS 名を書き留めます。
Elastic Load Balancing Query API を使用して、ロードバランサーのパブリック DNS 名を取得する
には
a.
以下のパラメータを使って DescribeLoadBalancers を呼び出します。
LoadBalancerName = your load balancer name
b.
5.
このコマンドは、ロードバランサーの DNS 名とその他の詳細を返します。
DNS 名を書き留めます。
To use the Elastic Load Balancing CLI to retrieve the public DNS name of your load balancer
a.
b.
以下のコマンドを使用するには、Elastic Load Balancing CLI ツールをインストールする必要
があります。ツールをインストールしていない場合は、CLI ツールのダウンロードとインス
トールの指示を「Elastic Load Balancing コマンドラインインターフェイスのインストー
ル (p. 45)」で参照してください。
以下の例のように、コマンド elb-describe-lbs を入力します。
PROMPT> elb-describe-lbs your load balancer name
c.
6.
このコマンドは、ロードバランサーの DNS 名とその他の詳細を返します。
DNS 名を書き留めます。
次の例に示すように、CNAME レコードを作成して、カスタムサブドメイン名とロードバランサー
の DNS 名を関連付けます。
Note
DNS ネームサービスを提供している会社(ドメイン名登録機関)に依頼して、お使いの
ゾーンの CNAME レコードの作成を依頼します。ドメイン名登録機関の多くは、ユーザー
が自分で CNAME レコードを作成するためのセルフサービスツールを提供しています。
www.foo.mylb.example.com CNAME myLB-1234567890.us-east-1.elb.amazonaws.com
API Version 2012-06-01
165
Elastic Load Balancing 開発者ガイド
カスタムドメイン名とロードバランサー名の関連付け
Option 2: Amazon Route 53 ホストゾーンの作成
1.
カスタムドメイン名を DNS プロバイダに登録します。ドメイン名の登録に使用できる登録機関
ウェブサイトの一覧については、「ICANNを参照してください。 ドメイン名が登録されたという
通知を登録機関から受けるまで待ってください。
2.
Amazon Route 53 を使用して、カスタムドメイン名のホストゾーンを作成します。詳しい指示に
ついては、Amazon Route 53 Developer Guide のホストゾーンの作成を参照してください。
3.
他の AWS 製品と同様、Amazon Route 53 を使用するための契約や最低契約金はありません。設定
したホストゾーンおよび Route 53 から回答があったクエリ数に対してのみお支払いください。詳
細については、Route 53 料金表を参照してください。
Route 53 は、作成されたホストゾーンごとに 4 つのネームサーバー(NS)レコードを自動的に作
成します。これら 4 つのネームサーバーは委託セットと呼ばれます。ドメインネームシステムがド
メインのクエリを Route 53 ネームサーバーにルーティングし始める前に、Route 53 ネームサー
バーを指すよう登録機関か DNS サービスのネームサーバーレコードを更新しておく必要がありま
す。
ホストゾーンに割り当てられた 4 つのネームサーバーを取得するには、「Getting the Name Servers
for a Hosted Zone」の手順に従います。
4.
Route 53 で割り当てられたネームサーバーを指すよう登録機関か DNS サービスのネームサーバー
レコードを更新するには、「Name Server(NS)Records」の手順に従ってください。
Zone Apex と Elastic Load Balancing インスタンスの DNS 名を関連付けるために使用する、エイ
リアスのリソースレコードのセットを作成します。エイリアスのリソースレコードのセットを作成
するには、Amazon Route 53 コンソール、Amazon Route 53 API、または Elastic Load Balancing
コマンドラインインターフェイス(CLI)を使用します。
To use Amazon Route 53 console or Amazon Route 53 Query API
Amazon Route 53 コンソールまたは Amazon Route 53 Query API を使用してエイリアスのリソー
スレコードのセットを作成するには、Amazon Route 53 Developer Guide のエイリアスリソースレ
コードセットの作成を参照してください。
To use the Elastic Load Balancing command line interface
a.
b.
開始する前に、Elastic Load Balancing CLI ツールをインストールしておきます。CLI ツールの
ダウンロードおよびインストールについては、「Elastic Load Balancing コマンドラインイン
ターフェイスのインストール (p. 45)を参照してください。Elastic Load Balancing コマンドに
ついては、Elastic Load Balancing Quick Reference Card を参照してください。
以下の例のように elb-associate-route53-hosted-zone コマンドを入力して、Zone Apex
と Elastic Load Balancing インスタンスを関連付けます。
このコマンドは、ホストゾーンにエイリアスのリソースレコードのセットを追加することで、
Zone Apex と Elastic Load Balancing インスタンスとの間に関連付けを作成します。以下の例
では、example.com と、myLoadBalancer というロードバランサーとの間に関連付けを作成し
ます。
elb-associate-route53-hosted-zone myLoadBalancer --rr-name example.com
--hosted-zone-id Z123456789 --weight 100
hosted-zone-id パラメータには、Elastic Load Balancing ホストゾーン ID ではなく、カス
タムドメイン名のホストゾーン ID を使用してください。 カスタムドメイン名のホストゾーン
ID の取得については、AWS アカウントのホストゾーンの表示を参照してください。
weight パラメータについては、Amazon Route 53 API リファレンスガイドの加重リソースレ
コードセットの設定を参照してください。
API Version 2012-06-01
166
Elastic Load Balancing 開発者ガイド
ドメイン名とロードバランサー名の関連付けの解除
Note
変更がすべての Amazon Route 53 DNS サーバーに伝達されるまで数分かかることが
あります。変更の状態を調べる方法については、Amazon Route 53 Developer Guide
の変更の状態のチェックを参照してください。
c.
また elb-associate-route53-hosted-zone を使って、ホストゾーンの一部であるサブド
メインにエイリアスを作成することもできます。以下の例では、サブドメイン
foo.bar.example.com を、ID 番号 Z123456789 の Amazon Route 53 ホストゾーンに関連付け
ています。
elb-associate-route53-hosted-zone myLoadBalancer --rr-name foo.bar.ex
ample.com --hosted-zone-id Z123456789 --weight 100
Note
elb-associate-route53-hosted-zone コマンドは AWS シークレットキー認証
情報でのみ動作します。他の Elastic Load Balancing CLI コマンドとは違い、この
Elastic Load Balancing コマンドは X.509 証明書および RSA プライベートキー認証情
報では動作しません。
ドメイン名とロードバランサー名の関連付けの解除
ロードバランサーインスタンスからドメイン名の関連付けを解除するには、まずホストゾーンのリソー
スレコードセットを削除してから、ホストゾーンを削除します。
1.
Amazon Route 53 ホストゾーンのエイリアスリソースレコードを削除します。
Amazon Route 53 コンソール、Amazon Route 53 API、または Elastic Load Balancing コマンドラ
インインターフェイス(CLI)を使用して、ホストゾーンのエイリアスレコードセットを削除でき
ます。
Amazon Route 53 コンソールの使用
• Amazon Route 53 コンソールの使用については、Amazon Route 53 Developer Guide のリソー
スレコードセットの作成、変更、および削除を参照してください。
Amazon Route 53 Query API の使用
• Amazon Route 53 Query API の使用については、Amazon Route 53 Developer Guide のリソー
スレコードセットの作成、変更、および削除トピックの Route 53 API を使用したリソースレコー
ドセットの作成、変更、および削除セクションまでスクロールしてください。
Elastic Load Balancing コマンドラインインターフェイスの使用
• elb-disassociate-route53-hosted-zone コマンドを入力します。
このコマンドは、ホストゾーンからエイリアスリソースレコードセットを削除することで、Zone
Apex またはサブドメインと Elastic Load Balancing インスタンスとの間の関連付けを解除しま
API Version 2012-06-01
167
Elastic Load Balancing 開発者ガイド
ドメイン名とロードバランサー名の関連付けの解除
す。以下の例では、example.com と、myLB というロードバランサーとの間の関連付けを解除し
ています。hosted-zone-id パラメータには、カスタムホストゾーン ID を指定します。
elb-disassociate-route53-hosted-zone myLB --rr-name example.com --hostedzone-id Z123456789 --weight 100
Note
weight パラメータの値は、rr-name パラメータで指定したリソースレコードセットの作
成に使用した値と一致する必要があります。元のウェイトの値がわからない場合は、Amazon
Route 53 ListResourceRecordSets アクションを使って値を取得することができます。
詳細については、Amazon Route 53 API リファレンスガイドの ListResourceRecordSets
を参照してください。weight パラメータについては、Amazon Route 53 API Reference
Guide の Setting Up Weighted Resource Record Sets を参照してください。
Note
elb-disassociate-route53-hosted-zone コマンドは AWS シークレットキー認証情
報でのみ動作します。他の Elastic Load Balancing CLI コマンドとは違い、この Elastic
Load Balancing コマンドは X.509 証明書および RSA プライベートキー認証情報では動作
しません。
2.
ロードバランサー DNS 名に関連付けられているホストゾーンの削除
Amazon Route 53 コンソールまたは Amazon Route 53 Query API を使用して、ロードバランサー
DNS 名に関連付けられているホストゾーンを削除できます。詳細については、Amazon Route 53
Developer Guide のホストゾーンの削除を参照してください。
API Version 2012-06-01
168
Elastic Load Balancing 開発者ガイド
ロードバランサーに対する DNS フェイルオーバーの設定
ロードバランサーに対する DNS フェイルオーバー
の設定
ロードバランサーに対して Amazon Route 53 ドメイン名システム(DNS)フェイルオーバーを有効化
することで、Elastic Load Balancing の配下で実行されているアプリケーションに対して高い可用性と
冗長性を提供します。Amazon Route 53 は、インフラストラクチャへの高い信頼性でのルーティング
を提供する DNS サービスです。DNS フェイルオーバーを有効化すると、Route 53 は、ヘルスチェッ
ク機能を使用して、ロードバランサーの配下で実行されるアプリケーションの可用性を判定します。
ロードバランサーに正常な EC2 インスタンスが登録されていないか、またはロードバランサー自体に
不具合がある場合、Route 53 は不具合のあるロードバランサーから利用可能な他のロードバランサー
にトラフィックをルーティングします。
Amazon Route 53 については、「What is Route 53 and How Does it Work?を参照してください。
例を使って、Route 53 の DNS フェイルオーバーがロードバランサーで動作する仕組みを示します。お
客様が www.example.com 用のウェブアプリケーションを持っており、2 つの異なるリージョン(米国
東部(バージニア北部)リージョン と 米国西部(オレゴン)リージョン)にある 2 つのロードバラン
サーの配下で、冗長なアプリケーションを実行したいとします。www.example.com のトラフィックを
第一に米国東部のロードバランサーにルーティングし、米国西部のロードバランサーは、東部のロード
バランサーが失敗した場合のバックアップとして使いたいとします。この例では、Route 53 の DNS
フェイルオーバーを使用した場合に DNS サービスでクエリを、ドメイン名、www.example.com にルー
ティングする方法を指定できます。DNS フェイルオーバーを有効化する場合には、プライマリおよび
セカンダリ(バックアップ)ロードバランサーを指定する必要があります。フェイルオーバーのルー
ティングメカニズムを有効化すると、Route 53 は、プライマリロードバランサーが利用可能な場合に
はそれにトラフィックを誘導し、利用可能でない場合にはセカンダリロードバランサーにトラフィック
経路を変更します。
DNS フェイルオーバーを設定するには、ドメイン名 www.example.com をロードバランサーと関連付
ける必要があります。各ロードバランサーには、自動的に作成された DNS 名が設定されます。DNS 名
の例: myLB-1234567890.us-east-1.elb.amazonaws.comRoute 53 を使用することで、ドメイン名
www.example.com に対し、以下のロードバランサーの DNS 名を指すレコードを作成することができ
ます。myLB-1234567890.us-east-1.elb.amazonaws.com
このセクションでは、2 つの異なるリージョンで実行されるロードバランサーに対し、Amazon Route
53 の DNS フェイルオーバーを有効化する手順について説明します。
前提条件
ロードバランサーに対して DNS フェイルオーバーを有効化するには、その前にまずロードバランサー
を作成しておく必要があります。プライマリおよびセカンダリロードバランサーを、できれば 2 つの異
なるリージョンに必ず作成します。基本的なロードバランサーの作成については、「Elastic Load
Balancing の使用開始 (p. 17)を参照してください。
カスタムドメイン名がまだない場合は、ドメイン名を DNS プロバイダに登録します。ドメイン名の登
録に使用できる登録機関ウェブサイトの一覧については、ICANN.org を参照してください。ドメイン名
が登録されたという通知を登録機関から受けるまで待ってください。
コンソールを使用したロードバランサーに対するDNS
フェイルオーバーの設定
以下の手順は、Route 53 コンソールを使用して、ロードバランサーに対して DNS フェイルオーバーを
設定する方法を示しています。
1. カスタムドメイン名に対するホストゾーンを作成します。
API Version 2012-06-01
169
Elastic Load Balancing 開発者ガイド
コンソールを使用したロードバランサーに対する DNS フェ
イルオーバーの設定
2. Route 53 ネームサーバーを指すよう、DNS ネームサーバーレコードを更新します。
3. プライマリおよびセカンダリロードバランサーのエイリアスレコードセットを作成します。
カスタムドメイン名に対して Amazon Route 53 ホストゾーン
を作成します。
ホストゾーンには、サブドメインの名前やマッピングなど、ドメイン名に関する情報が格納されます。
カスタムドメイン名 www.example.com に対するホストゾーンを作成するには、Amazon Route 53 開
発者ガイドの Creating a Hosted Zone の手順に従います。
他の AWS 製品と同様、Amazon Route 53 を使用するための契約や最低契約金はありません。設定した
ホストゾーンおよび Route 53 から回答があったクエリ数に対してのみお支払いください。詳細につい
ては、Route 53 料金表を参照してください。
Route 53 ネームサーバーを指すよう、DNS ネームサーバーレ
コードを更新する
Route 53 は、作成されたホストゾーンごとに 4 つのネームサーバー(NS)レコードを自動的に作成し
ます。DNS がドメインのクエリを Route 53 ネームサーバーにルーティングし始める前に、Route 53
ネームサーバーを指すよう登録機関か DNS サービスのネームサーバーレコードを更新しておく必要が
あります。
1.
2.
ホストゾーンに割り当てられたネームサーバーを取得するには、「Getting the Name Servers for a
Hosted Zone」の手順に従います。
Route 53 で割り当てられたネームサーバーを指すよう登録機関か DNS サービスのネームサーバー
レコードを更新するには、「Name Server(NS)Records」の手順に従ってください。
エイリアスリソースレコードセットの作成と DNS フェイルオー
バーの有効化
ドメインに対するホストゾーンを作成したら、ドメインのトラフィックをルーティングする方法を DNS
に指示するプライマリおよびセカンダリエイリアスリソースレコードセットを作成する必要がありま
す。
1.
2.
https://console.aws.amazon.com/route53/ にある Amazon Route 53 コンソールを開きます。
ホストゾーンの行をクリックして、[Go to Record Sets] をクリックします。
API Version 2012-06-01
170
Elastic Load Balancing 開発者ガイド
コンソールを使用したロードバランサーに対する DNS フェ
イルオーバーの設定
3.
4.
5.
[Create Record Set] をクリックします。
[Name] ボックスで、このレコードセットのドメイン名を入力するか、またはデフォルト値を使用
します。
[Type] ボックスで [A – Ipv4 address] を選択します。
6.
7.
[Alias] で [Yes] をクリックします。
[Alias Target] フィールドをクリックし、リストからプライマリロードバランサーを選択します。
8.
[Alias Target] で選択または入力した値に基づいて、自動的に [Alias Hosted Zone ID] に値が表示さ
れます。
[Routing Policy:] ドロップダウンボックスで [Failover] を選択します。
[Failover Record Type:] で [Primary] を選択します。
[Set ID: ] で、レコードセットの ID を入力するか、またはデフォルト値を使用します。
[Evaluate Target Health] で [Yes] を選択します。
[Associate with Health Check] で [No] を選択します。
[Create Record Set] をクリックします。
9.
10.
11.
12.
13.
14.
API Version 2012-06-01
171
Elastic Load Balancing 開発者ガイド
コンソールを使用したロードバランサーに対する DNS フェ
イルオーバーの設定
15. もう 1 つのエイリアスレコードセットをセカンダリロードバランサー用に作成するため、同じ手順
に従ってください。ただし、以下の点が異なります。
• [Alias Target] フィールドでは、リストからセカンダリロードバランサーを選択します。
• [Failover Record Type:] では [Secondary] を選択します。
• Route 53 を使用してセカンダリロードバランサーの状態を評価する場合、[Evaluate Target Health]
で [Yes] を選択します。セカンダリロードバランサーに不具合がある場合、Route 53 はプライ
マリロードバランサーにトラフィック経路を戻します。[Evaluate Target Health] を [No] に設定
した場合、Route 53 では、セカンダリロードバランサーが正常であるものと見なすので、プラ
イマリロードバランサーに不具合があるときには必ずトラフィックをセカンダリロードバラン
サーにルーティングします。
DNS フェイルオーバーの高度な設定を行う方法については、『Amazon Route 53 Developer Guide』
の「Managing Resource Availability with Route 53 DNS Failover」を参照してください
API Version 2012-06-01
172
Elastic Load Balancing 開発者ガイド
スティッキーセッションの作成
スティッキーセッションの作成
Topics
• 期間ベースのセッション維持の有効化 (p. 173)
• アプリケーション制御によるセッション維持の有効化 (p. 177)
デフォルトでは、ロードバランサーは負荷が最小になるように、各リクエストを個別にアプリケーショ
ンインスタンスにルーティングします。しかし、スティッキーセッション機能(セッションアフィニ
ティとも呼ばれます)を使用することで、特定のユーザーのセッションを特定のアプリケーションイン
スタンスにバインドさせることができます。これにより、セッション中にそのユーザーから来たリクエ
ストをすべて同じアプリケーションインスタンスに送信することができます。
スティッキーセッションの管理において重要なのは、ロードバランサーがユーザーのリクエストを同じ
アプリケーションインスタンスにルーティングし続ける期間の決定です。アプリケーションに独自の
セッション Cookie がある場合は、アプリケーションのセッション Cookie で指定された期間に従うセッ
ション Cookie を作成するよう、Elastic Load Balancing を設定することができます。アプリケーション
に独自のセッション Cookie がない場合は、独自の維持期間を指定して、セッション Cookie を作成す
るよう Elastic Load Balancing を設定することができます。維持期間は HTTP/HTTPS ロードバランサー
リスナーにのみ関連付けることができます。
期間ベースのセッション維持の有効化
ロードバランサーは、ロードバランサーが生成する特別な Cookie を使って、各リクエストのアプリ
ケーションインスタンスを追跡します。ロードバランサーがリクエストを受け取ると、まずこの Cookie
がリクエスト内にあるかどうかを調べます。ある場合は、Cookie で指定されたアプリケーションイン
スタンスにリクエストが送信されます。Cookie がない場合、ロードバランサーは、既存の負荷分散ア
ルゴリズムに基いてアプリケーションインスタンスを選択します。同じユーザーからの以降のリクエス
トをそのアプリケーションインスタンスにバインドするため、応答に Cookie が挿入されます。スティッ
キーポリシー設定では、各 Cookie の有効期間を設定する Cookie 期限を定義します。Cookie は有効期
限後に自動的に更新されます。
この例では、まずスティッキーポリシーを作成し、次にそれを使用して、ロードバランサーが生成する
HTTP Cookie を有するロードバランサーに対してスティッキーセッションを有効にします。始める前
に、以下のことが完了していることを確認してください。
• Elastic Load Balancing でロードバランサーを作成した。AWS Management Console、コマンドライ
ンインターフェイス(CLI)、または Query API を使用して HTTPS/SSL ロードバランサーをセット
アップする方法については、SSL 暗号設定およびバックエンドサーバー認証を使用したロードバラ
ンサーの作成 (p. 75) を参照してください。AWS Management Console で HTTP ロードバランサー
をセットアップする方法については、Elastic Load Balancing の使用開始 (p. 17) を参照してくださ
い。
• 負荷分散タスクの実行に使用する Elastic Load Balancing ツールをインストールした。ポリシーは、
AWS マネジメントコンソール、コマンドラインインターフェイス(CLI)、または Query API を使っ
て作成できます。CLI と Query API のインストールについては、「Elastic Load Balancing インター
フェイスによるセットアップ (p. 44)を参照してください。
• Elastic Load Balancing コマンドの詳細については、『Elastic Load Balancing Quick Reference
Card』を参照してください。
• ロードバランサーが生成する HTTP Cookie のポリシー設定 Query API については、Elastic Load
Balancing API Reference の CreateLBCookieStickinessPolicy を参照してください。
以下のセクションでは、AWS マネジメントコンソール、コマンドラインインターフェイス(CLI)、ま
たは Query API を使用してロードバランサーに対して期間ベースのスティッキーセッションを有効に
するための手順を説明します。
API Version 2012-06-01
173
Elastic Load Balancing 開発者ガイド
期間ベースのセッション維持の有効化
Topics
• AWS Management Console の使用 (p. 174)
• Query API の使用 (p. 175)
• コマンドラインインターフェイスの使用 (p. 175)
AWS Management Console の使用
ロードバランサーで期間ベースのスティッキーセッションを有効にするには
1.
3.
AWS マネジメントコンソールにサインインして Amazon EC2 コンソール
(https://console.aws.amazon.com/ec2/)を開きます。
Amazon EC2 の [ Getting Started] ページにある [EC2 Dashboard] ペインの [NETWORK & SECURITY]
で、 [Load Balancers] をクリックします。
[Load Balancers] ページで、ロードバランサーを選択します。
4.
下のペインには、ロードバランサーの詳細が表示されます。
5.
[Port Configuration] 行の [(edit)] をクリックします。
6.
[Edit Stickiness for name of your load balancer, port number of your load balancer]
ページで、[Enable Load Balancer Generated Cookie Stickiness] をクリックします。
[Expiration Period] ボックスに、Cookie の有効期間を入力します。この例では、Cookie の有効期
間が 60 秒の Cookie 維持ポリシーが作成されます。
[Save] をクリックします。
2.
7.
8.
API Version 2012-06-01
174
Elastic Load Balancing 開発者ガイド
期間ベースのセッション維持の有効化
9.
[Description] ペインの [Port Configuration] 行に、新しく作成された Cookie の維持ポリシーが表示
されます。
Query API の使用
ロードバランサーで期間ベースのスティッキーセッションを有効にするには
1.
以下のパラメータを使って CreateLBCookieStickinessPolicy を呼び出し、Cookie の有効期
間を 60 秒に設定して、ロードバランサーが作成する Cookie の維持ポリシーを作成します。
• LoadBalancerName = MyLoadBalancer
• PolicyName = MyLoadBalancerPolicy
• CookieExpirationPeriod = 60
2.
以下のパラメータを使って SetLoadBalancingPoliciesOfListener を呼び出し、
MyLoadBalancer ポリシーを使って、ロードバランサーのセッション維持を有効にします。
• LoadBalancerName = MyLoadBalancer
• LoadBalancerPort = 80
• PolicyNames = MyLoadBalancerPolicy
コマンドラインインターフェイスの使用
ロードバランサーで期間ベースのスティッキーセッションを有効にするには
1.
elb-create-lb-cookie-stickiness-policy コマンドを使用し、Cookie の有効期間を 60 秒
に設定して、ロードバランサーが作成する Cookie の維持ポリシーを作成します。
PROMPT>elb-create-lb-cookie-stickiness-policy example-lb --policy-name My
LoadBalancerPolicy --expiration-period 60
Elastic Load Balancing は以下を返します。
OK-Creating LB Stickiness Policy
2.
elb-set-lb-policies-of-listener コマンドを使用し、MyLoadBalancerPolicy を使用して、
ロードバランサーのセッション維持を有効にします。
API Version 2012-06-01
175
Elastic Load Balancing 開発者ガイド
期間ベースのセッション維持の有効化
PROMPT>elb-set-lb-policies-of-listener example-lb --lb-port 80 --policynames MyLoadBalancerPolicy
Elastic Load Balancing は以下を返します。
OK-Setting Policies
API Version 2012-06-01
176
Elastic Load Balancing 開発者ガイド
アプリケーション制御によるセッション維持の有効化
アプリケーション制御によるセッション維持の有効
化
ロードバランサーは、特別な Cookie を使用して、リクエストを処理した元のサーバーにセッションを
関連付けますが、アプリケーションが生成する Cookie(ポリシー設定で指定した Cookie 名に対応)の
寿命に従います。ロードバランサーは、アプリケーションの応答に新しいアプリケーション Cookie が
含まれている場合のみ、新しい維持 Cookie を挿入します。ロードバランサー維持 Cookie はリクエス
トごとに更新されることはありません。アプリケーション Cookie が明示的に削除されるかまたは有効
期限切れになると、新しいアプリケーション Cookie が発行されない限り、セッションは sticky ではな
くなります。
アプリケーションサーバーがダウンしているか、削除されている場合、ロードバランサーはスティッ
キーセッションを別の正常なアプリケーションサーバーにルーティングしようとします。ロードバラン
サーはエラーがあったアプリケーションサーバーが復帰しても、新しい正常なアプリケーションサー
バーに固執し、現在維持されているアプリケーションサーバーへのルーティングを続行しようとしま
す。ただし、これは新しいアプリケーションサーバーが以前に受けていないリクエストにどのように応
答するかによって異なります。
この例では、セッションの寿命がアプリケーションが生成する Cookie に従う場合に、ロードバラン
サーのスティッキーセッションを設定します。始める前に、以下のことが完了していることを確認して
ください。
• Elastic Load Balancing でロードバランサーを作成した。AWS Management Console、コマンドライ
ンインターフェイス(CLI)、または Query API を使用して HTTPS/SSL ロードバランサーをセット
アップする方法については、SSL 暗号設定およびバックエンドサーバー認証を使用したロードバラ
ンサーの作成 (p. 75) を参照してください。AWS Management Console で HTTP ロードバランサー
をセットアップする方法については、Elastic Load Balancing の使用開始 (p. 17) を参照してくださ
い。
• 負荷分散タスクの実行に使用する Elastic Load Balancing ツールをインストールした。セッション維
持ポリシーは、AWS マネジメントコンソール、コマンドラインインターフェイス(CLI)、または
Query API を使って作成できます。CLI と Query API のインストールについては、「Elastic Load
Balancing インターフェイスによるセットアップ (p. 44)を参照してください。
• Elastic Load Balancing コマンドの詳細については、『Elastic Load Balancing Quick Reference
Card』を参照してください。
• ロードバランサーが生成する HTTP Cookie のポリシー設定 Query API については、Elastic Load
Balancing API Reference の CreateAppCookieStickinessPolicy を参照してください。
以下のセクションでは、AWS マネジメントコンソール、コマンドラインインターフェイス(CLI)、ま
たは Query API を使用してアプリケーション制御によるスティッキーセッションを有効にするための
手順を説明します。
Topics
• AWS Management Console の使用 (p. 177)
• Query API の使用 (p. 179)
• コマンドラインインターフェイスの使用 (p. 179)
AWS Management Console の使用
アプリケーション制御によるセッション維持を有効にするには
1.
AWS マネジメントコンソールにサインインして Amazon EC2 コンソール
(https://console.aws.amazon.com/ec2/)を開きます。
API Version 2012-06-01
177
Elastic Load Balancing 開発者ガイド
アプリケーション制御によるセッション維持の有効化
2.
3.
4.
Amazon EC2 の [ Getting Started] ページにある [EC2 Dashboard] ペインの [NETWORK & SECURITY]
で、 [Load Balancers] をクリックします。
[Load Balancers] ページで、ロードバランサーを選択します。
下のペインには、ロードバランサーの詳細が表示されます。
5.
[Port Configuration] 行の [(edit)] をクリックします。
6.
7.
[Edit Stickiness for name of your load balancer, port number of your load balancer]
ページで、[Enable Application Generated Cookie Stickiness] をクリックします。
[Cookie Name] ボックスに、my-cookie のような Cookie 名を入力します。
8.
[Save] をクリックします。
9.
[Description] ペインの [Port Configuration] 行に、新しく作成された Cookie の維持ポリシーが表示
されます。
API Version 2012-06-01
178
Elastic Load Balancing 開発者ガイド
アプリケーション制御によるセッション維持の有効化
Query API の使用
アプリケーション制御によるセッション維持を有効にするには
1.
以下のパラメータを使って CreateAppCookieStickinessPolicy を呼び出し、アプリケーショ
ンが生成する Cookie 維持ポリシーを作成します。
• LoadBalancerName = my-load-balancer
• PolicyName = my-app-cookie-lb-policy
• CookieName = my-cookie
2.
以下のパラメータを使って SetLoadBalancingPoliciesOfListener を呼び出し、
my-load-balancer ポリシーを使って、ロードバランサーのセッション維持を有効にします。
• LoadBalancerName = my-load-balancer
• LoadBalancerPort = 80
• PolicyNames = my-app-cookie-lb-policy
コマンドラインインターフェイスの使用
アプリケーション制御によるセッション維持を有効にするには
1.
elb-create-app-cookie-stickiness-policy コマンドを使用して、ロードアプリケーショ
ンが生成する Cookie 維持ポリシーを作成します。
PROMPT>elb-create-app-cookie-stickiness-policy my-load-balancer -p my-appcookie-lb-policy -c my-cookie
Elastic Load Balancing は以下を返します。
OK-Creating App Stickiness Policy
2.
elb-set-lb-policies-of-listener コマンドを使用し、my-load-balancer ポリシーを使用し
て、ロードバランサーのセッション維持を有効にします。
PROMPT>elb-set-lb-policies-of-listener example-lb --lb-port 80 --policynames my-app-cookie-lb-policy
Elastic Load Balancing は以下を返します。
OK-Setting Policies
API Version 2012-06-01
179
Elastic Load Balancing 開発者ガイド
Amazon CloudWatch を使用したロードバランサーの監視
Amazon CloudWatch を使用したロードバランサー
の監視
Topics
• 使用可能なメトリックス (p. 180)
• メトリックスの表示 (p. 188)
• アラームの作成 (p. 189)
Elastic Load Balancing は、ロードバランサーとバックエンドアプリケーションインスタンスに関する
データポイントを Amazon CloudWatch に発行します。CloudWatch を使用すると、それらのデータポ
イントについての統計を、順序付けられた時系列データのセット(メトリックスと呼ばれる)として取
得できます。メトリックスは監視対象の変数、データポイントは時間の経過に伴うその変数の値と考え
ることができます。各データポイントには、タイムスタンプと、オプションで測定単位が関連付けられ
ています。例えば、指定した期間中のロードバランサー配下の正常な EC2 インスタンスの合計数をメ
トリックスとすることができます。
Amazon CloudWatch では、Elastic Load Balancing で発行されたメトリックスのデータポイントに基づ
いて統計が提供されます。統計は、指定した期間のメトリックスデータの集計です。使用可能な統計
は、Minimum(min)、Maximum(max)、Sum、Average、および Count です。統計を要求した場
合、返されるデータストリームはメトリックス名とディメンションによって識別されます。ディメン
ションは、メトリックスを一意に識別できるようにする名前/値のペアです。例えば、特定のアベイラ
ビリティーゾーンで起動されたロードバランサーの配下のすべての正常な EC2 インスタンスの統計を
要求できます。
Amazon CloudWatch でメトリックスを監視する目的の 1 つは、システムが期待どおりに動作している
かどうか確認することです。メトリックスが許容範囲外の場合は、CloudWatch アラームを作成できま
す。CloudWatch アラームは、指定されたメトリックスを監視し、メトリックスが指定範囲外に達する
とアクションを開始します。アクションの 1 つとして、通知の送信があります。
Amazon CloudWatch の詳細については、「What is Amazon CloudWatch」を参照してください。
このセクションでは、Elastic Load Balancing が Amazon CloudWatch に送信するメトリックスについ
て説明します。また、メトリックスを表示および使用する方法や、指定した条件にメトリックスが該当
した場合にアラームを発する方法などを説明します。
使用可能なメトリックス
Elastic Load Balancing は、AWS アカウントに関連付けられたすべてのロードバランサーのメトリック
スを Amazon CloudWatch に送信します。デフォルトでは、CloudWatch はこれらのメトリックスを使
用した、ロードバランサーの詳細モニタリングを提供します。詳細モニタリングを明示的に有効化する
必要はありません。
Elastic Load Balancing のメトリックス
次に示す Elastic Load Balancing のメトリックスは、Amazon CloudWatch からのものです。
Elastic Load Balancing は、リクエストがロードバランサーを経由する場合のみ報告します。特定のメ
トリックスにリクエストやデータが存在しない場合は、そのメトリックスは CloudWatch には報告され
ません。ロードバランサーを経由するリクエストがある場合、Elastic Load Balancing が 60 秒間隔でそ
のロードバランサーのメトリックスを測定し、送信します。
注意: Min または Count のような、Amazon CloudWatch を介して得られる統計値は、必ずしも常にす
べてのメトリックスに適用可能であるとは限りません。ただし、コンソール、API、コマンドラインイ
ンターフェイス(CLI)を使って適用可能です。それぞれのメトリックスについて、すべての Elastic
Load Balancing メトリックスで有益な情報を追跡できる推奨統計があります。
API Version 2012-06-01
180
Elastic Load Balancing 開発者ガイド
使用可能なメトリックス
メトリックス
説明
HealthyHostCount
各アベイラビリティーゾーンの正常なインスタンス数のカウン
ト。連続して成功したヘルスチェック回数のしきい値を満たす
場合は、正常なホストとみなされます。ヘルスチェックで失敗
した回数が不健全のしきい値よりも多い場合は、異常なホスト
とみなされます。
推奨統計: average
UnHealthyHostCount
各アベイラビリティーゾーンの異常なインスタンス数のカウン
ト。ヘルスチェックで失敗した回数が不健全のしきい値よりも
多い場合は、異常なホストとみなされます。接続の問題がある、
ヘルスチェックで 200 以外の応答が返された(HTTP または
HTTPS のヘルスチェックの場合)、ヘルスチェック実行時にタ
イムアウトになった、などの理由でインスタンスが異常になる
場合があります。
推奨統計: average
RequestCount
受信され、バックエンドインスタンスにルーティングされた、
完了したリクエスト数のカウント。
推奨統計: sum
Latency
リクエストがロードバランサーから送信され、応答を受信する
までの経過時間(秒)を測定する。
推奨統計: average
HTTPCode_ELB_4XX
リスナーが HTTP または HTTPS プロトコルを使用するよう設
定されている場合、ロードバランサーによって生成される HTTP
4XX クライアントエラーコード数のカウント。リクエストの形
式が不正な場合、または不完全な場合は、クライアントエラー
が生成されます。
推奨統計: sum
HTTPCode_ELB_5XX
リスナーが HTTP または HTTPS プロトコルを使用するよう設
定されている場合、ロードバランサーによって生成される HTTP
5XX クライアントエラーコード数のカウント。このメトリック
スには、バックエンドインスタンスによって生成される応答は
含まれません。
正常なバックエンドインスタンスまたはロードバランサーに登
録されているバックエンドインスタンスがない場合、またはリ
クエストレートがインスタンスまたはロードバランサーの容量
を超える場合、このメトリックスが報告されます。
推奨統計: sum
HTTPCode_Backend_2XX
HTTPCode_Backend_3XX
HTTPCode_Backend_4XX
HTTPCode_Backend_5XX
バックエンドインスタンスによって生成される HTTP 応答コー
ド数のカウント。このメトリックスには、ロードバランサーに
よって生成される応答コードは含まれません。
2XX クラスのステータスコードは正常なアクションを表します。
3XX クラスのステータスコードは、ユーザーエージェントのア
クションが必要であることを示します。4XX クラスのステータ
スコードはクライアントエラーを表します。5XX クラスのステー
タスコードはバックエンドサーバーエラーを表します。
推奨統計: sum
API Version 2012-06-01
181
Elastic Load Balancing 開発者ガイド
使用可能なメトリックス
メトリックス
説明
BackendConnectionErrors
ロードバランサーと登録されたインスタンス間で正常に確立さ
れなかった接続数のカウント。接続エラーが発生すると、ロー
ドバランサーは再試行するため、このカウントはリクエストレー
トを上回ります。
推奨統計: sum
SurgeQueueLength
登録されたインスタンスへの送信が保留中のリクエストの合計
数のカウント。
推奨統計: max
SpilloverCount
キューがいっぱいのため拒否されたリクエストの合計数のカウ
ント。
推奨統計: sum
Elastic Load Balancing メトリックスのディメンション
クエリによって返されるメトリックスを絞り込むには、このセクションの表にリストされている Elastic
Load Balancing のディメンションを使用します。例えば、HealthyHostCount メトリックスで
LoadBalancerName と AvailabilityZone のディメンションを使用して、特定期間中に指定のアベイラビ
リティゾーンの特定のロードバランサーの配下にある正常なインスタンスの平均数を取得することがで
きます。または、一定期間中のバックエンドインスタンスの状態と数の変化を把握するため、正常なホ
ストの最少数や不具合のあるホストの最大数に達しないかどうかを監視することもできます。
Elastic Load Balancing のデータの集計には、以下の表に示したディメンションを使用することができ
ます。
ディメンション
説明
LoadBalancerName
メトリックスデータを、指定のロードバランサーに接続されている Amazon
EC2 インスタンスのものだけに制限します。
AvailabilityZone
メトリックスデータを、指定のアベイラビリティーゾーンのロードバラン
サーに制限します。
Elastic Load Balancing の統計を測定する方法
Elastic Load Balancing は、トラフィックをバックエンドインスタンスに転送するロードバランサーノー
ドで構成されています。各ロードバランサーノードは、単一のアベイラビリティーゾーン内のインスタ
ンスにトラフィックをルーティングするように指定されており、各ロードバランサーノードは指定され
たアベイラビリティーゾーンのメトリックスを報告します。
ロードバランサーのクロスゾーン負荷分散を有効にすると、ロードバランサーノードはリージョン内の
すべてのアベイラビリティーゾーンにあるインスタンスにトラフィックを転送し、各ロードバランサー
ノードはすべてのアベイラビリティゾーンのインスタンスについてのメトリックスを報告します。
すべての CloudWatch メトリックスについて、min と max は、個々のロードバランサーノードによっ
て報告された min と max を表します。例えば、ロードバランサーノードが 2 つあるとします。ノード
1 は、min が 2、max が 10、average が 6 の HealthyHostCount を報告します。ロードバランサー
ノード 2 は、min が 1、max が 5、average が 3 の HealthyHostCount を報告します。これは、
CloudWatch の min が 1 になり、max が 10、average がおよそ 4 になることを意味します。
sum は、特定の期間中にすべてのロードバランサーノードで報告された集計値です。メトリックスには
期間あたり複数のレポートが含まれているため、sum は、RequestCount、HTTPCode_ELB_4XX、
HTTPCode_ELB_5XX、HTTPCode_Backend_2XX,3XX,4XX,5XX、BackendConnectionErrors、
API Version 2012-06-01
182
Elastic Load Balancing 開発者ガイド
使用可能なメトリックス
SpilloverCount などのすべてのロードバランサーノードで集計されたメトリックスのみに適用され
ます。
count は測定されたサンプルの数です。メトリックスはサンプリング間隔とイベントに基づいて集計
されるため、通常、count は有用ではありません。例えば正常/異常ホストのメトリックスで、count
は正常/異常ホストの数ではなく、ロードバランサーノードで収集されたヘルスチェックサンプルの数
に基づきます。レイテンシーのメトリックスでは、件数は報告されたレイテンシーの実際の値ではな
く、各ロードバランサーノードで報告されたサンプルの数です。
次の表は、Elastic Load Balancing によって送信される CloudWatch メトリックスの統計を評価する方
法を説明しています。
Elastic Load Balancing メトリックスの統計
メトリックス名
統計の詳細
HealthyHostCount
UnHealthyHostCount
このメトリックスは AvailabilityZone ディメンションと組み合わ
せて使用します。
推奨統計: average
average 統計は、ロードバランサーノードによって確認された正常な
インスタンスまたは異常なインスタンスの平均数を示します。正常な
インスタンスまたは異常なインスタンスの合計を取得するには、各ア
ベイラビリティーゾーン(AZ)の平均値を算出します。
Min と max は、指定された期間内に正常または異常な状態にあったイ
ンスタンスの最小数と最大数を表します。短時間の間インスタンスを
異常と判断するロードバランサーノードがあったり、インスタンスを
正常と判断するノードがあったりするため、min と max は誤解を招く
場合があります。
Sum は、この方法では有益な統計ではありません。
Count は、すべてのノードによって報告されるサンプル数で、問題の
トラブルシューティングでは有益な方法ではありません。
例: ロードバランサーに 4 つのバックエンドインスタンスがあり、そ
のうちの 2 つのインスタンスは AZ-1 に、もう 2 つのインスタンスは
AZ-2 にあるとします。AZ-1 には異常なインスタンスと正常なインス
タンスが 1 つずつあり、AZ-2 には正常なインスタンスが 2 つあり、
異常インスタンスはありません。AZ のディメンションは、AZ-1 の正
常なインスタンスの平均数は 1、異常なインスタンスの平均数は 1 で、
AZ-2 の正常なインスタンスの平均数は 2、異常なインスタンスの平均
数は 0 と報告します。リージョン(ロードバランサー)のディメン
ションは、AZ-1 と AZ-2 の正常なインスタンスの平均数は 1.5、AZ-1
と AZ-2 の異常なインスタンスの平均数は 0.5 と報告します。
API Version 2012-06-01
183
Elastic Load Balancing 開発者ガイド
使用可能なメトリックス
メトリックス名
統計の詳細
RequestCount
このメトリックスは通常 LoadBalancerName ディメンションと組み
合わせて使用して、ロードバランサーの合計リクエスト数を表示しま
す。このメトリックスは、1 つのアベイラビリティーゾーン(バック
エンドでリクエストを処理したアベイラビリティーゾーンとは異なる
場合もある)にルーティングされたリクエスト数を測定する場合にも
使用されます。
推奨統計: sum
Sum は、この方法で唯一有益な統計です。
Min, max, と average はどちらも 1 の値を返すため、有益ではあ
りません。
Count は、すべてのロードバランサーによって報告されるサンプル数
で、通常その期間の sum と同じです。
例: ロードバランサーに 4 つのバックエンドインスタンスがあり、そ
のうちの 2 つのインスタンスは AZ-1 に、もう 2 つのインスタンスは
AZ-2 にあるとします。ロードバランサーに 100 件のリクエストが送
信されます。そのうち 60 件のリクエストは AZ-1 に送信され、各イン
スタンスがそれぞれ 30 件ずつリクエストを受信します。40 件のリク
エストは AZ-2 に送信され、各インスタンスがそれぞれ 20 件ずつリク
エストを受信します。AZ のディメンションは、AZ-1 の合計リクエス
ト数は 60 件、AZ-2 の合計リクエスト数は 40 件と報告します。リー
ジョン(ロードバランサー)のディメンションは、合計リクエスト数
を 100 件と報告します。AZ-1 の各インスタンスは 30 件のリクエス
ト、AZ-2 の各インスタンスは 20 件のリクエストを受信します。
Latency
すべてのリクエスト、または 1 つのアベイラビリティーゾーンにルー
ティングされるリクエストについてレイテンシーを表示できます。
推奨統計: average
average は、バックエンドに送信されたすべてのリクエストの平均で
あるため、最も有益な診断を提供します。
Max は、一部のリクエストに平均を大幅に上回る時間がかかっている
かどうかを判断する上で便利です。
Min は、経過時間が最小のリクエスト/リスポンスであるため、通常は
有益な方法ではありません。
Count は、記録されたサンプル数であるため、RequestCount メトリッ
クスの sum とほぼ等しくなります。
例: ロードバランサーに 4 つのバックエンドインスタンスがあり、そ
のうちの 2 つのインスタンスは AZ-1 に、もう 2 つのインスタンスは
AZ-2 にあるとします。AZ-1 の 1 つのインスタンスに送信されるリク
エストのレイテンシーがより高くなっています。AZ-1 で報告されたレ
イテンシーメトリックスでは、AZ-2 のレイテンシーメトリックスより
も高い値を示します。
API Version 2012-06-01
184
Elastic Load Balancing 開発者ガイド
使用可能なメトリックス
メトリックス名
統計の詳細
HTTPCode_ELB_4XX
このメトリックスは通常 LoadBalancerName ディメンションと組み
合わせて使用して、すべてのロードバランサーノードによって生成さ
れた HTTP 4XX エラーの合計数を表示します。このメトリックスは、
1 つのアベイラビリティーゾーン(バックエンドでリクエストを処理
したアベイラビリティーゾーンとは異なる場合もある)にルーティン
グされたリクエストのエラー数を測定する場合にも使用されます。
推奨統計: sum
Sum は、この方法で唯一有益な統計です。
Min, max, と average はどちらも 1 の値を返すため、有益ではあ
りません。
Count は、すべてのロードバランサーによって報告されるサンプル数
で、通常その期間の sum と同じです。
例: ロードバランサーで AZ-1 と AZ-2 が有効になっているとします。
クライアントのリクエストに不正なリクエスト URL が含まれていま
す。すべてのアベイラビリティーゾーンでのクライアント HTTP エ
ラーが増加する可能性があります。リージョン(ロードバランサー)
のメトリックスは、各アベイラビリティーゾーンの値の合計となりま
す。
HTTPCode_ELB_5XX
このメトリックスは通常 LoadBalancerName ディメンションと組み
合わせて使用して、すべてのロードバランサーノードによって生成さ
れた HTTP 5XX エラーの合計数を表示します。このメトリックスは、
1 つのアベイラビリティーゾーン(バックエンドでリクエストを処理
したアベイラビリティーゾーンとは異なる場合もある)にルーティン
グされたリクエストのエラー数を測定する場合にも使用されます。
推奨統計: sum
Sum は、この方法で唯一有益な統計です。
Min, max, と average はどちらもこの方法では有益な統計ではな
く、1 の値を返します。
Count は、すべてのロードバランサーによって報告されるサンプル数
で、通常その期間の sum と同じです。
例: ロードバランサーで AZ-1 と AZ-2 が有効になっているとします。
AZ-1 のインスタンスには高レイテンシーが発生しており、リクエスト
の応答に時間がかかっています。その結果、AZ-1 のロードバランサー
ノードのサージキューがいっぱいになり、スピルオーバーが発生して、
クライアントに 503 エラーを返します(この表の SpilloverCount メト
リックスを参照してください)。AZ-2 が正常に応答し続けると想定し
た場合、リージョン(ロードバランサー)の HTTPCode_ELB_5XX の
sum は AZ-1 の sum と等しくなります。
API Version 2012-06-01
185
Elastic Load Balancing 開発者ガイド
使用可能なメトリックス
メトリックス名
統計の詳細
HTTPCode_Backend_2XX
HTTPCode_Backend_3XX
HTTPCode_Backend_4XX
HTTPCode_Backend_5XX
このメトリックスは通常 LoadBalancerName ディメンションと組み
合わせて使用して、ロードバランサーに登録されているバックエンド
インスタンスによって生成される HTTP 応答コードの合計数を表示し
ます。このメトリックスは、1 つのアベイラビリティーゾーン(バッ
クエンドでリクエストを処理したアベイラビリティーゾーンとは異な
る場合もある)にルーティングされたリクエストのエラー数を測定す
る場合にも使用されます。
推奨統計: sum
Sum は、この方法で唯一有益な統計です。
Min, max, と average はどちらもこの方法では有益な統計ではな
く、1 の値を返します。
Count は、すべてのロードバランサーによって報告されるサンプル数
で、通常その期間の sum と同じです。
例: ロードバランサーに 4 つのバックエンドインスタンスがあり、そ
のうちの 2 つのインスタンスは AZ-1 に、もう 2 つのインスタンスは
AZ-2 にあるとします。AZ-1 の 1 つのインスタンスに送信されるリク
エストは、HTTP 500 応答を返します。AZ-1 で報告されるメトリック
スにはこれらのエラー応答が含まれ、AZ-2 の値にはこれらのエラー応
答は含まれません。リージョン(ロードバランサー)の合計は、AZ-1
の合計数と等しくなります。
BackendConnectionErrors すべてのバックエンドインスタンス、または 1 つのアベイラビリティー
ゾーンのバックエンドインスタンスについて、このメトリックスを表
示できます。
推奨統計: sum
Sum は、特定の期間内にすべてのロードバランサーノードによって確
認された接続エラーの合計数を表します。
Sum は、この方法で唯一の有益な統計です。
Average, min, と max は各ロードバランサーノードごとに報告され
るため、通常有益ではありません。min と max の差、ピーク値対平
均、または平均対底値は、1 つのロードバランサーノードが異常値か
どうかを判断する上で有益な場合があります。
Count は、すべてのロードバランサーノードによって報告されるサン
プル数で、通常その期間の合計と等しくなります。
例: ロードバランサーに 4 つのバックエンドインスタンスがあり、そ
のうちの 2 つのインスタンスは AZ-1 に、もう 2 つのインスタンスは
AZ-2 にあるとします。AZ-1 の 1 つのインスタンスに接続しようとす
ると、バックエンド接続エラーが増加します。AZ-1 で報告されるメト
リックスには、試行失敗に対するこれらの接続エラーが含まれますが、
AZ-2 の値にはこれらのエラーは含まれません。リージョン(ロードバ
ランサー)の合計は、AZ-1 の合計数と等しくなります。
API Version 2012-06-01
186
Elastic Load Balancing 開発者ガイド
使用可能なメトリックス
メトリックス名
統計の詳細
SurgeQueueLength
このメトリックスは、1 つのアベイラビリティーゾーン、またはリー
ジョン(全体のロードバランサー)のサージキューサイズを監視する
ために使用されます。
推奨統計: max
Max は、キューに送信されたリクエストのピークを表すため、最も有
益な統計です。最大の値は 1,024 です。いずれかのロードバランサー
ノードのキューが 1,024 件のリクエストでいっぱいになっている場合、
スピルオーバーが発生する可能性があります(この表の SpilloverCount
メトリックスを参照してください)。
Average は、特定の期間内にすべてのロードバランサーノードのキュー
内にあったリクエスト数の平均を表します。Average を min と max
と組み合わせて使用すると、ロードバランサーノードによるキューの
範囲を判断する上で役立ちます。
Sum は、すべてのロードバランサーノード全体で記録されたサンプル
の合計数であるため、有益な統計ではありません。
Min は、任意のサンプルの任意のロードバランサーノードで確認され
た最低値を表すため、通常有益ではありません。
Count は、この方法では有益な統計ではありません。
例: ロードバランサーで AZ-1 と AZ-2 が有効になっているとします。
AZ-1 のインスタンスには高レイテンシーが発生しており、リクエスト
の応答に時間がかかっています。その結果、AZ-1 のロードバランサー
のサージキューがいっぱいになり、クライアントに応答時間の増加が
発生している可能性があります。これが継続すると、ロードバランサー
にスピルオーバーが発生します(この表のスピルオーバーメトリック
スを参照してください)。AZ-2 が正常に応答し続けると想定した場
合、リージョン(ロードバランサー)の最大は AZ-1 の最大と等しく
なり、同じ期間内の AZ-2 の値は小さくなります(またはメトリック
スがない)。
SpilloverCount
このメトリックスは通常 LoadBalancerName ディメンションと組み
合わせて使用して、ロードバランサーの合計スピルオーバー数を表示
します。このメトリックスは、1 つのアベイラビリティーゾーンにルー
ティングされて拒否されたリクエスト数を測定する場合も使用できま
す。
推奨統計: sum
Sum は、特定の期間内のすべてのロードバランサーノードのレポート
の合計数を表します。
Sum は、この方法で唯一の有益な統計です。
Average, min, と max は各ロードバランサーノードごとに報告さ
れるため、通常スピルオーバーメトリックスには有益ではありません。
Min は、任意のサンプルの任意のロードバランサーノードで確認され
た最低値を表すため、通常有益ではありません。
Count は、この方法では有益な統計ではありません。
例: ロードバランサーで AZ-1 と AZ-2 が有効になっているとします。
AZ-1 のインスタンスには高レイテンシーが発生しており、リクエスト
の応答に時間がかかっています。その結果、AZ-1 のロードバランサー
のサージキューがいっぱいになり、ロードバランサーのスピルオーバー
が発生します。スピルオーバーメトリックスは増加します。AZ-2 が正
常に応答し続けると想定した場合、リージョン(ロードバランサー)
の合計は AZ-1 の合計と等しくなり、同じ期間内の AZ-2 の値は小さく
なります(またはメトリックスがない)。
API Version 2012-06-01
187
Elastic Load Balancing 開発者ガイド
メトリックスの表示
メトリックスの表示
Elastic Load Balancing ロードバランサーの CloudWatch メトリックスは、EC2 コンソールの [Load
Balancer] ページで直接確認することができます。ロードバランサーのメトリックスは、モニタリング
用のグラフのように表示されます。EC2 コンソールで表示されるメトリックスは、以下のとおりです。
• [Average Latency]
• [Sum Requests]
• [Sum ELB HTTP 4XXs]
• [Sum ELB HTTP 5XXs]
• [Sum HTTP 2XXs]
• [Sum HTTP 4XXs]
• [Sum HTTP 5XXs]
ロードバランサーからメトリックスを確認するには
1.
3.
AWS マネジメントコンソールにサインインして Amazon EC2 コンソール
(https://console.aws.amazon.com/ec2/)を開きます。
Amazon EC2 コンソールの [ Getting Started] ページにある [EC2 Dashboard] ペインの [NETWORK
& SECURITY] で、 [Load Balancers] をクリックします。
[Load Balancers] ページで、ロードバランサーの横にあるチェックボックスを選択します。
4.
下のペインには、ロードバランサーの詳細が表示されます。
[Monitoring] タブをクリックします。
2.
5.
下のペインに、Elastic Load Balancing によって送信された、選択したロードバランサーのメトリッ
クスがグラフで表示されます。
結果を時間でフィルタしたい場合は、[Time Range] ドロップダウンボックスで時間範囲を選択し
ます。
API Version 2012-06-01
188
Elastic Load Balancing 開発者ガイド
アラームの作成
6.
個別のメトリックスを拡大表示するには、そのグラフをクリックします。
この例で使用されている my-test-loadbalancer ロードバランサーは非アクティブであり、表示専
用です。ロードバランサーがアクティブでリクエストを受信しているときにのみ、モニタリング用のグ
ラフにデータポイントが表示されます。
ロードバランサーのメトリックスを確認する方法として、Amazon CloudWatch コンソール、コマンド
ラインインターフェイス(CLI)、または Query API を使用することもできます。CloudWatch コンソー
ルを使用したメトリックスの確認については、「Viewing Your AWS Metrics with Amazon CloudWatch
を参照してください。コマンドラインインターフェイスを使用してメトリックスを確認するには、
mon-list-metrics コマンドを使用します。Query API を使用してメトリックスを確認するには、ListMetrics
アクションを使用します。
アラームの作成
1 つのアラームで、指定した期間中、1 つのメトリックスを監視します。アラームは、メトリックスの
値が定義したしきい値に達したかどうかを監視し、達した場合には 1 つ以上の通知を Amazon Simple
Notification Service(Amazon SNS)トピックに送信します。Amazon SNS は、アプリケーション、エ
ンドユーザー、およびデバイスでリアルタイムに通知を送受信できるようにするウェブサービスです。
詳細については、Getting Started with Amazon Simple Notification Serviceを参照してください。
指定されたメトリックスが定義された範囲に達し、特定期間その範囲に留まると、アラームにより
Amazon SNS に通知が送信されます。アラームには次の 3 つの状態があります。
API Version 2012-06-01
189
Elastic Load Balancing 開発者ガイド
アラームの作成
• OK – これは、メトリックスの値が指定された範囲に留まっている場合のアラームの状態です。
• ALARM – これは、メトリックスの値が指定された範囲外に達し、一定期間その範囲外に留まってい
る場合にアラームがなる状態です。
• INSUFFICIENT_DATA – アラームがこの状態であるということは、メトリックスが準備できていない
か、アラームの状態を決定できる十分なデータが揃っていないことを示します。
アラームの状態が変化するたびに、Amazon CloudWatch は Amazon SNS を使用して、指定された E
メールアドレスに通知を送信します。
ロードバランサーにアラームを作成するには、EC2 コンソールまたは Amazon CloudWatch コンソー
ルで Elastic Load Balancing ウィザードを使用します。このセクションでは、 Elastic Load Balancing
ウィザードを使用してアラームを作成する手順を説明します。Amazon CloudWatch コンソールを使用
したロードバランサーアラームの作成については、「Send Email Based on Load Balancer Alarmを参
照してください。
ロードバランサーにアラームを作成するには
1.
2.
3.
4.
5.
6.
AWS マネジメントコンソールにサインインして Amazon EC2 コンソール
(https://console.aws.amazon.com/ec2/)を開きます。
Amazon EC2 コンソールの [ Getting Started] ページにある [EC2 Dashboard] ペインの [NETWORK
& SECURITY] で、 [Load Balancers] をクリックします。
[Load Balancers] ページで、アラームを作成したいロードバランサーの横にあるチェックボックス
を選択します。
下のペインには、ロードバランサーの詳細が表示されます。
下のペインにある [Monitoring] タブで、[Create Alarm] をクリックします。
[Create Alarm] ダイアログボックスで、アラームの条件を設定します。この例では、連続する 5 分
間において ロードバランサーのレイテンシーが 120 秒を超えた場合にアラームを発するようにし
ます。
デフォルトでは、[Send a notification] の横にあるチェックボックスが選択されています。
SNS トピックをすでに作成しているため再利用したい場合は、ドロップダウンボックスからその
トピックを選択します。次のステップをスキップします。
7.
SNS トピックがまだない場合は、[create topic] をクリックします。
[With these recipients] ボックスに、通知の受取人のメールアドレスを入力します。各アドレスをコ
ンマで区切って、最大 10 件のメールアドレスを入力できます。
Note
SNS トピックを購読していないすべての E メール受取人は、その SNS トピックの購読確
認を求めるリンクが記載された E メールを、Amazon SNS から受け取ります。購読の確
認を行わない場合、E メールのアラーム通知は送信されるようになりません。
8.
アラームのしきい値を設定します。
a.
[Whenever] ボックスで、[Average] および [Latency] を選択します。
b.
[Is] ボックスで、[>] を選択し、「120」を入力して、アラームのしきい値を定義します。
c.
[For at least] ボックスに「1」を入力し、続けて [5 minutes] を選択するか、または独自の評価
期間を定義できます。
Note
期間が短ければ、より高感度のアラームが作成されます。期間が長ければ、メトリッ
クスの短時間でのスパイクを軽減できます。
API Version 2012-06-01
190
Elastic Load Balancing 開発者ガイド
ロードバランサーの削除
d.
[Name this alarm] に名前が自動的に表示されます。名前を変更する場合は、[Edit] をクリック
します。
Important
アラームを作成した後に名前を変更することはできません。
9.
[Create Alarm] をクリックします。
10. [Close] をクリックします。
アラームを作成したら、[Monitoring] タブを使用して、そのロードバランサーに設定されたアラームの
概要を確認できます。ここで、アラームを編集することもできます。
ロードバランサーの削除
この例では、現在負荷分散されている EC2 インスタンス群における Elastic Load Balancing の使用を
停止します。ロードバランサーを削除すると、関連付けられているインスタンスが自動的にロードバラ
ンサーから登録解除されます。ロードバランサーが削除されると、ロードバランサーの課金も停止され
ます。
Note
ロードバランサーを削除して、関連付けられた EC2 インスタンスが登録解除されても、EC2
インスタンスは実行し続けます。Amazon EC2 インスタンスが動作している間は、インスタン
スの利用料金が発生します。EC2 インスタンスの停止については、Amazon EC2 User Guide
の Stopping and Starting Instances を参照してください。EC2 インスタンスの終了については、
インスタンスの終了を参照してください。
以下のセクションでは、AWS マネジメントコンソール、Query API、またはコマンドラインインター
フェイス(CLI)を使用して、ロードバランサーを削除する方法を説明します。Query API または CLI
を使用する場合は、それらのツールがインストールされていることを確認してください。CLI と Query
API のインストールについては、「Elastic Load Balancing インターフェイスによるセットアップ (p. 44)
を参照してください。
API Version 2012-06-01
191
Elastic Load Balancing 開発者ガイド
AWS Management Console の使用
AWS Management Console の使用
ロードバランサーを削除するには
1.
2.
3.
Amazon EC2 の [ Getting Started] ページにある [EC2 Dashboard] ペインの [NETWORK & SECURITY]
で、 [Load Balancers] をクリックします。
[Load Balancers] ページで、削除したいロードバランサーの横にあるチェックボックスをチェック
し、[Delete] をクリックします。
[Delete Load Balancer] ウィンドウで、[Yes, Delete] をクリックします。
Query API の使用
ロードバランサーを削除するには
•
DeleteLoadBalancer = LoadBalancerName を指定して my-test-loadbalancer を呼び出し
ます。
このオペレーションにより、空の応答が返されます。
コマンドラインインターフェイスの使用
ロードバランサーを削除するには
•
以下の例のように、elb-delete-lb コマンドを入力します。
PROMPT>
elb-delete-lb
my-test-loadbalancer
Elastic Load Balancing は以下を返します。
Warning: Deleting a LoadBalancer can lead to service disruption to any cus
tomers connected to the load balancer. Are you sure you want to delete this
load balancer? [Ny]
Y を入力して、LoadBalancer を削除します。
API Version 2012-06-01
192
Elastic Load Balancing 開発者ガイド
コマンドラインインターフェイスの使用
Elastic Load Balancing は以下を返します。
OK-Deleting LoadBalancer
API Version 2012-06-01
193
Elastic Load Balancing 開発者ガイド
Elastic Load Balancing ARN なし
AWS アカウントへのユーザーアクセ
スコントロール
Topics
• Elastic Load Balancing ARN なし (p. 194)
• Elastic Load Balancing アクション (p. 195)
• Elastic Load Balancing キー (p. 195)
• Elastic Load Balancing のポリシー例 (p. 195)
Elastic Load Balancing では、独自のリソースベースの許可システムは提供されていません。ただし、
このサービスは AWS Identity and Access Management(AWS IAM)と統合されているため、AWS ア
カウントのユーザーが Elastic Load Balancing リソースで実行できる Elastic Load Balancing アクショ
ンを指定することができます。
通常、リソースに対する許可を与えます。ポリシーで特定の Elastic Load Balancing リソース(特定の
ロードバランサーなど)を指定することはできません。例えば、マネージャグループに
DescribeLoadBalancers のみを使用する許可を与えるポリシーを作成することは可能です。その場
合、AWS アカウントに属するすべてのロードバランサーでこれらのアクションを使用できるようにな
ります。
Important
IAM で Elastic Load Balancing を使用しても、Elastic Load Balancing の使用方法は変わりませ
ん。Elastic Load Balancing アクションに変更はなく、ユーザーおよびアクセスコントロールに
関連する新しい Elastic Load Balancing アクションはありません。
Elastic Load Balancing アクションおよびリソースに対応するポリシーの例については、Elastic Load
Balancing のポリシー例 (p. 195) を参照してください。
Elastic Load Balancing ARN なし
Amazon リソース名(ARN)とは、一部の AWS 製品でリソースの識別に使用する一意の識別子です。
例えば、ARN を使用して、特定の Amazon Simple Queue Service キューまたは Amazon SimpleDB ド
メインを識別できます。IAM ポリシーで特定の Elastic Load Balancing リソースを指定することはでき
API Version 2012-06-01
194
Elastic Load Balancing 開発者ガイド
Elastic Load Balancing アクション
ないため、Elastic Load Balancing に使用できる ARN はありません。Elastic Load Balancing アクショ
ンへのアクセスをコントロールするポリシーを記述する場合は、リソースとして「*」を使用します。
ARN については、IAM を使用する の ARN を参照してください。
Elastic Load Balancing アクション
IAM ポリシーでは、Elastic Load Balancing が提供するすべてのアクションを指定することができます。
アクション名には、小文字の文字列 elasticloadbalancing: をプレフィックスとして付ける必要が
あります。例えば、elasticloadbalancing:ConfigureHealthCheck、elasticloadbalancing:*
のようになります(すべての Elastic Load Balancing Balancing アクションについて)。アクションの
リストについては、Elastic Load Balancing API Reference のアクションを参照してください。
Elastic Load Balancing キー
Elastic Load Balancing は、次のポリシーキーを実装しますが、それ以外は実装しません。ポリシーキー
については、IAM を使用する の条件を参照してください。
AWS 全体のポリシーのキー
• aws:CurrentTime—日付/時間の条件を確認する。
• aws:EpochTime—エポックまたは UNIX 時間を使用して、日付/時間の条件を確認する。
• aws:MultiFactorAuthAge— リクエストを作成する MFA 認証済みの認証情報がどれぐらい前(秒)
に発行されたのかを Multi-Factor Authentication(MFA)を使用して確認する。他のキーとは異なり、
MFA の使用がない場合、このキーは提示されません。
• aws:principaltype—現在のリクエストに対するプリンシパルのタイプ(ユーザー、アカウント、
フェデレーション ユーザーなど)を確認する。
• aws:SecureTransport—リクエストが SSL を使用して送信されたかどうかを確認する。Amazon
RDS や Amazon Route 53 など、SSL のみを使用するサービスでは、aws:SecureTransport キー
は意味がありません。
• aws:SourceArn— ソースの Amazon リソースネーム(ARN)を使用して、リクエストのソースを確
認します。(この値はいくつかのサービスでのみ利用可能です。詳細は、「Amazon Simple Queue
Service 開発者ガイド」の「Element Descriptions」の下にある「Amazon Resource Name (ARN)」
を参照してください。
• aws:SourceIp—リクエスタの IP アドレスを確認する。お客様が aws:SourceIp を使用していて
Amazon EC2 インスタンスからリクエストが来た場合、そのインスタンスのパブリック IP アドレス
が評価されます。
• aws:UserAgent—リクエストを作成したクライアントアプリケーションを確認する。
• aws:userid—リクエスタのユーザー ID を確認する。
• aws:username—リクエスタのユーザー名を確認する(可能な場合)。
Note
キー名では大文字と小文字は区別されます。
Elastic Load Balancing のポリシー例
このセクションでは、Elastic Load Balancing へのユーザーアクセスのコントロールに関するいくつか
の簡単なポリシーを説明します。
API Version 2012-06-01
195
Elastic Load Balancing 開発者ガイド
Elastic Load Balancing のポリシー例
Note
将来的には、Elastic Load Balancing に新しいアクションが追加される可能性があります。これ
らは、以下のポリシーのいずれかに論理的に含まれ、ポリシーに記載された目的に基づいてい
る必要があります。
Example 1: グループにロードバランサーの作成と削除を許可する
この例では、CreateLoadBalancer および DeleteLoadBalancer へのアクセスを与えるポリシーを
作成します。AWS IAM ポリシーでは特定の Elastic Load Balancing リソースを指定できないため、リ
ソースは「*」と記述されています。
{
"Statement":[{
"Effect":"Allow",
"Action":["elasticloadbalancing:CreateLoadBalancer",
"elasticloadbalancing:DeleteLoadBalancer"],
"Resource":"*"
}
]
}
Example 2: システム管理者にロードバランサーの設定を許可する
この例では、システム管理者のグループを作成し、関連アクションにアクセスできるポリシーを割り当
てます。
{
"Statement":[{
"Effect":"Allow",
"Action":["elasticloadbalancing:DescribeLoadBalancers",
"elasticloadbalancing:ConfigureHealthCheck",
"elasticloadbalancing:RegisterInstancesWithLoadBalancer",
"elasticloadbalancing:DeregisterInstancesFromLoadBalancer",
"elasticloadbalancing:DescribeInstanceHealth",
"elasticloadbalancing:EnableAvailabilityZonesForLoadBalancer",
"elasticloadbalancing:DisableAvailabilityZonesForLoadBalancer",
"elasticloadbalancing:CreateAppCookieStickinessPolicy",
"elasticloadbalancing:CreateLBCookieStickinessPolicy",
"elasticloadbalancing:SetLoadBalancerPoliciesOfListener"],
"Resource":"*"
}
]
}
API Version 2012-06-01
196
Elastic Load Balancing 開発者ガイド
Elastic Load Balancing のトラブル
シューティング
以下の表は、Elastic Load Balancing を利用する際に役立つトラブルシューティングのリソースをまと
めたものです。
Elastic Load Balancing のトラブルシューティング: API 応答
API 応答
CertificateNotFound: 未定義 (p. 198)
OutofService: 一時的なエラー発生 (p. 198)
Elastic Load Balancing のトラブルシューティング: HTTP のエラーメッセージ
HTTP のエラーメッセージ
HTTP 400: BAD_REQUEST (p. 199)
HTTP 405: METHOD_NOT_ALLOWED (p. 199)
HTTP 408: Request Timeout (p. 199)
HTTP 502: Bad Gateway (p. 199)
HTTP 503: Service Unavailable (p. 199)
HTTP 504: Gateway Timeout (p. 200)
Elastic Load Balancing のトラブルシューティング: 応答コード
応答コード
HTTPCode_ELB_4XX (p. 201)
HTTPCode_ELB_5XX (p. 201)
HTTPCode_Backend_2XX (p. 201)
API Version 2012-06-01
197
Elastic Load Balancing 開発者ガイド
Elastic Load Balancing のトラブルシューティング: API 応
答
応答コード
HTTPCode_Backend_3XX (p. 201)
HTTPCode_Backend_4XX (p. 201)
HTTPCode_Backend_5XX (p. 201)
Elastic Load Balancing のトラブルシューティング: ヘルスチェック
ヘルスチェックのエラー
登録されたインスタンスでロードバランサーのヘルスチェックが失敗する (p. 202)
停止して起動したインスタンスがロードバランサーのヘルスチェックに失敗する (p. 202)
ヘルスチェックの URL と頻度が API とコンソールの設定と異なる (p. 203)
Elastic Load Balancing のトラブルシューティング: インスタンスの登録
インスタンス登録エラー
バックエンドインスタンスの登録に時間がかかりすぎる。 (p. 203)
AMI から起動したインスタンスを登録できません。 (p. 203)
Elastic Load Balancing のトラブルシューティング:
API 応答
このセクションでは、Elastic Load Balancing API から返されるエラーメッセージ、考えられる原因、
および問題の絞り込みと解決のための手順について説明します。
CertificateNotFound: 未定義
Cause 1: AWS マネジメントコンソールを使用して証明書が作成されると、すべてのリージョンに伝達
される際に遅延が発生します。遅延が発生すると、Create Load Balancer プロセスの最終ステップでエ
ラーメッセージが表示されます。
[Solution]: 15 分ほど待ってから、再度試してください。問題が解決しない場合は、AWS サポートセン
ターに連絡してください。
Cause 2: コマンドラインツールまたは API を直接使用している場合、存在しない証明書 Amazon リ
ソースネーム(ARN)を指定すると、このエラーが返されることがあります。
Solution: Identity and Access Management(IAM)アクション GetServerCertificate を使用して証明書
ARN を取得し、ARN に正しい値を指定したことを確認します。
OutofService: 一時的なエラー発生
Cause: このエラーメッセージは通常、Elastic Load Balancing サービスまたは基盤ネットワークの一時
的な内部の問題を示します。この一時的な問題は、Elastic Load Balancing がロードバランサーとこれ
と関連するバックエンドインスタンスの状態を照会すると発生する場合があります。
[Solution]: API 呼出を再試行してください。問題が解決しない場合は、AWS サポートセンターに連絡
してください。
API Version 2012-06-01
198
Elastic Load Balancing 開発者ガイド
Elastic Load Balancing のトラブルシューティング: エラー
メッセージ
Elastic Load Balancing のトラブルシューティング:
エラーメッセージ
Abstract
ロードバランサーから返されるエラーメッセージ、考えられる原因、および問題のトラブルシューティング手順を
示します。
このセクションでは、ロードバランサーから返されるエラーメッセージ、考えられる原因、および問題
の絞り込みと解決のための手順について説明します。
HTTP 400: BAD_REQUEST
Description: クライアントが無効なリクエストを送信したことを示します。
Cause: クライアントが HTTP 仕様を満たさない誤った形式のリクエストを送信しました。
Solution: バックエンドの EC2 インスタンスに送信されるリクエストヘッダーを見て、誤った形式のリ
クエストがないか調べます。
HTTP 405: METHOD_NOT_ALLOWED
Description: メソッドの長さが無効であることを示しています。
Cause: リクエストヘッダー内のメソッドの長さが 127 文字を超えています。
Solution: メソッドの長さを確認します。
HTTP 408: Request Timeout
Description: クライアントがリクエストをキャンセルしたか、リクエスト全体の送信に失敗したことを
示します。
[Cause]: ネットワークの中断、または形式が完全でないヘッダー、指定されたコンテンツのサイズが実
際に送信されたコンテンツのサイズと一致しないなど、リクエストの構造に誤りがあります。
[Solution]: リクエストを生成するコードを検査します。実際のリクエストの検査について多くのコント
ロールを与えられている場合は、登録されたインスタンス(または開発/テスト環境)に直接送信して
みます。
HTTP 502: Bad Gateway
Description: 登録されたインスタンスから送信された応答をロードバランサーが解析できなかったこと
を示します。
[Cause]: インスタンスからの応答の形式が適切でないか、ロードバランサーに問題があります。
[Solution]: インスタンスから送信された応答が HTTP 仕様に準拠していることを確認します。詳細につ
いては、AWS サポートセンターに連絡してください。
HTTP 503: Service Unavailable
Description: ロードバランサーまたは登録されたインスタンスが原因でエラーが発生していることを示
します。以下の 1 つもしくは複数の原因によりエラーが生じている可能性があります。
• Cause 1: ロードバランサーにリクエストを処理する能力が不足しています。
Solution: これは一時的な問題であり、数分以上は継続しません。問題が解決しない場合は、AWS サ
ポートセンターに連絡してください。
• Cause 2: 登録されたインスタンスが Elastic Load Balancing への接続を終了させています。
Solution: 登録されたインスタンスのアイドル接続のタイムアウトを60秒より長く設定します。
• Cause 3: 登録されたインスタンスがありません。
API Version 2012-06-01
199
Elastic Load Balancing 開発者ガイド
HTTP 504: Gateway Timeout
Solution: ロードバランサーによるレスポンスが設定された利用可能ゾーンごとに1つ以上のインスタ
ンスを登録します。これを確認するには、CloudWatch の HealthyHostCount メトリックスを確認
します。インスタンスが各アベイラビリティーゾーンに登録されているかどうか不確かな場合は、ク
ロスゾーン負荷分散を有効にすることをお勧めします。詳細については、「ロードバランサーのクロ
スゾーン負荷分散の有効化または無効化 (p. 141)」を参照してください。
• Cause 4: 正常なインスタンスがありません。
Solution: ロードバランサーのレスポンスを設定しているすべての利用可能ゾーンに正常なインスタ
ンスがあることを確認します。これを確認するには、CloudWatch の HealthyHostCount を確認し
ます。
• Cause 5: クライアントとの接続が閉じています(ロードバランサーは応答を送信できません)。
Solution: リクエストを送信するマシンで packet sniffer を使用して、レスポンスが送信される前にク
ライアントが接続を閉じないことを確認してください。
HTTP 504: Gateway Timeout
Description: ロードバランサーはインスタンスにリクエストを送信しようとしましたが、60 秒以内にリ
クエストを完了することができませんでした。以下の 1 つもしくは複数の原因によりエラーが生じてい
る可能性があります。
• Cause 1: インスタンスはヘルスチェックを通過しましたが応答していません。
Solution: ヘルスチェックでアプリケーションの状態が測定されていることを確認します。ウェブサー
バーがヘルスチェックと別のポートでリッスンしており、接続を受け付けてはいるが応答していない
場合、ロードバランサーはレスポンスを待機してタイムアウトすることがあります。
• Cause 2: 登録されたアベイラビリティーゾーンにインスタンスがありません。
Solution: 各アベイラビリティーゾーンにインスタンスを登録するか、クロスゾーン負荷分散を有効
にします。詳細については、「ロードバランサーのクロスゾーン負荷分散の有効化または無効
化 (p. 141)」を参照してください。
Elastic Load Balancing のトラブルシューティング:
応答コード
Abstract
ロードバランサーから返される HTTP エラーコード、考えられる原因、および問題のトラブルシューティング手順
を示します。
このセクションでは、ロードバランサーの Amazon CloudWatch から返される応答コードのメトリック
ス、考えられる原因、および問題の絞り込みと解決のための手順について説明します。
応答コードのメトリックスとは
ロードバランサーは、クライアントに送信された HTTP 応答コードの Amazon CloudWatch にメトリッ
クスを送信することで、エラーの原因がロードバランサーなのか、バックエンドインスタンスなのかを
特定します。ロードバランサーの CloudWatch から返されるメトリックスを Elastic Load Balancing の
トラブルシューティングに使用できます。Amazon CloudWatch の使用方法、ロードバランサーで使用
可能なメトリックスのリスト、および使用可能なメトリックスを表示するための手順については、
Amazon CloudWatch を使用したロードバランサーの監視 (p. 180) を参照してください。以下のメトリッ
クスが利用可能です。
API Version 2012-06-01
200
Elastic Load Balancing 開発者ガイド
HTTPCode_ELB_4XX
HTTPCode_ELB_4XX
Cause: クライアントからのリクエストが誤った形式であるか、キャンセルされたことを示します。
[Solution]: HTTP 400: BAD_REQUEST (p. 199) を参照してください。
Solution: 「HTTP 405: METHOD_NOT_ALLOWED (p. 199)を参照してください。
Solution: 「HTTP 408: Request Timeout (p. 199)を参照してください。
HTTPCode_ELB_5XX
Cause: ロードバランサーまたは登録されたインスタンスがエラーの原因であるか、またはロードバラ
ンサーが応答を解析できませんでした。
[Solution]: HTTP 502: Bad Gateway (p. 199) を参照してください。
Solution: 「HTTP 503: Service Unavailable (p. 199)を参照してください。
Solution: 「HTTP 504: Gateway Timeout (p. 200)を参照してください。
HTTPCode_Backend_2XX
Cause: 登録されたインスタンスから正常に成功した応答が返されたことを示します。
[Solution]: なし
HTTPCode_Backend_3XX
Cause: 登録されたインスタンスから送信された何らかのリダイレクト応答を示します。
Solution: インスタンスのアクセスログまたはエラーログを表示して、問題の原因を判断します。リク
エストをインスタンスに直接送信(ロードバランサーをバイパス)して応答を表示します。
HTTPCode_Backend_4XX
Cause: 登録されたインスタンスから送信された何らかのクライアントエラー応答を示します。
Solution: インスタンスのアクセスログまたはエラーログを表示して、問題の原因を判断します。リク
エストをインスタンスに直接送信(ロードバランサーをバイパス)して応答を表示します。
HTTPCode_Backend_5XX
Cause: 登録されたインスタンスから送信された何らかのサーバーエラー応答を示します。
Solution: インスタンスのアクセスログまたはエラーログを表示して、問題の原因を判断します。リク
エストをインスタンスに直接送信(ロードバランサーをバイパス)して応答を表示します。
Elastic Load Balancing のトラブルシューティング:
ヘルスチェック設定
Abstract
考えられる原因のリストと問題を解決するための手順を使用して、ロードバランサーによる失敗したヘルスチェッ
クのトラブルシューティングを行います。
ロードバランサーは、ロードバランサーを設定したときに指定したプロトコル、URL、タイムアウト、
インターバルを使用して、インスタンスのヘルスチェックを実行します。ただし、ロードバランサーの
観点から、ヘルスチェックが失敗する理由がいくつかあります。このセクションでは、ヘルスチェック
が失敗する問題について考えられる原因、および絞り込みと解決のための手順について説明します。
API Version 2012-06-01
201
Elastic Load Balancing 開発者ガイド
登録されたインスタンスでロードバランサーのヘルスチェッ
クが失敗する
登録されたインスタンスでロードバランサーのヘル
スチェックが失敗する
ロードバランサーが登録されたインスタンスのヘルスチェックを実行して失敗する場合、次の 1 つ以上
の理由が考えられます。
• [Problem]: インスタンスがロードバランサーへの接続を終了させています。
Cause: アイドル状態が60秒を超えると、Elastic Load Balancing は接続を終了します。読み取りまた
は書き込みイベントがロードバランサーの両側(クライアントからロードバランサー、およびロード
バランサーからバックエンドインスタンス)で実行されないと、アイドル接続が確立されます。
Solution: 登録されたインスタンスでアイドルタイムアウトを60秒より長く設定します。
• [Problem]: レスポンスがタイムアウトします。
Cause: ロードバランサーが状態チェックを実行する場合、インスタンスにかなりの負荷がかかり、
レスポンスに設定したタイムアウト間隔より長くかかる場合があります。
Solution: 状態チェック設定のタイムアウトを調整してみます。
• Problem: 200 以外のレスポンスが返されました。
Cause: ロードバランサーが HTTP/HTTPS ヘルスチェックを実行した場合、インスタンスから 200
HTTP コードが返される必要があります。それ以外の応答コードはヘルスチェックの失敗と見なされ
ます。
Solution: アプリケーションログで、ヘルスチェック要求に対して送信されたレスポンスを検索しま
す。
• [Problem]: パブリックキー認証が失敗します。
Cause: バックエンド認証を有効にして HTTPS または SSL ロードバランサーを使用している場合、
証明書のパブリックキーとロードバランサーで設定されたパブリックキーが一致しないと、パブリッ
クキー認証が失敗します。
Solution: SSL 証明書の更新が必要かどうかを確認します。SSL 証明書が最新状態である場合は、そ
の証明書をロードバランサーに再インストールしてみます。
停止して起動したインスタンスがロードバランサー
のヘルスチェックに失敗する
EC2-Classic インスタンス
Problem: EC2-Classic で起動したインスタンスを停止して起動すると、インスタンスはロードバラン
サーのヘルスチェックに失敗します。
Cause: Elastic Load Balancing は、関連付けられた IP アドレスを使用してロードバランサーを EC2 イ
ンスタンスに登録します。EC-Classic で起動した EC2 インスタンスを停止して再起動すると、インス
タンスに関連付けられた IP アドレスが変わります。ロードバランサーは新しい IP アドレスを認識しな
いため、ロードバランサーはインスタンスに接続できません。
Solution: インスタンスを停止した後、インスタンスをロードバランサーから登録解除し、インスタン
スを起動した後にインスタンスをロードバランサーに登録します。インスタンスを登録解除してから登
録する手順については、Amazon EC2 インスタンスの登録解除と登録 (p. 139) を参照してください。
EC2-VPC インスタンス
Problem: EC2-VPC で起動したインスタンスを停止して起動すると、インスタンスはロードバランサー
のヘルスチェックに失敗します。
Cause: EC2-VPC インスタンスを停止して起動した場合、インスタンスが再起動されたことを Elastic
Load Balancing が認識するまで時間がかかることがあります。この間、ロードバランサーは再起動さ
れたインスタンスに接続されていません。
API Version 2012-06-01
202
Elastic Load Balancing 開発者ガイド
ヘルスチェックの URL と頻度が API とコンソールの設定
と異なる
Solution: 再起動後にインスタンスをロードバランサーに再登録します。インスタンスを登録するため
の手順については、ロードバランサーへの Amazon EC2 インスタンスの登録 (p. 140) を参照してくださ
い。
ヘルスチェックの URL と頻度が API とコンソールの
設定と異なる
Problem: コンソールと API に表示されるヘルスチェックの URL が、アプリケーションログに表示され
る URL と一致しません。
Cause: ロードバランサーに設定した状態チェック以外に、2つ目の状態チェックがサービスによって実
行されています。これは、登録解除されずに終了されているインスタンスによって生じる可能性のある
副作用から保護するためです。このチェックを実行するために、ロードバランサーは、状態チェックを
使用するように設定されているポートに TCP 接続を開き、状態チェックが完了した後で、接続を終了
します。
Solution: この余分な状態チェックはバックエンドインスタンスにデータを送信しないため、アプリケー
ションのパフォーマンスには影響しません。この状態チェックを無効にする、またはオフにすることは
できません。
Elastic Load Balancing のトラブルシューティング:
インスタンスの登録
Abstract
ロードバランサーへのインスタンスの登録に関する問題のトラブルシューティングを行い、考えられる原因と問題
を解決するための手順を見つけます。
ロードバランサーにインスタンスを登録する場合、ロードバランサーがインスタンスへのリクエストの
送信を開始する前に行うべき手順があります。このセクションでは、バックエンドインスタンスを登録
するときに、ロードバランサーが遭遇する可能性のある問題について考えられる原因、問題の絞り込み
と解決のためのステップについて説明します。
バックエンドインスタンスの登録に時間がかかりす
ぎる。
Problem: インスタンスの登録に、In Service で予期されるより時間がかかっています。
Cause: バックエンドインスタンスの状態チェックが失敗している可能性があります。最初のインスタ
ンスを登録するステップ(最大約30秒かかります)が完了した後、バックエンドインスタンスは状態
チェックを実行します。ロードバランサーは、状態チェックの設定で定義した正常なしきい値と一致す
るまで、バックエンドインスタンスを In Service として処理しません。
[Solution]: 前のセクションの「登録されたインスタンスでロードバランサーのヘルスチェックが失敗す
る (p. 202)」で推奨されている手順を実行してみます。
AMI から起動したインスタンスを登録できません。
Problem: 有料 AMI を使用して起動したインスタンスが Elastic Load Balancing で登録されません。
Cause: インスタンスが有料 AMI を使用して Amazon DevPay サイトから起動された可能性がありま
す。
Solution: Elastic Load Balancing では、有料 AMI を使用して Amazon DevPay サイトから起動したイン
スタンスの登録はサポートされていません。有料 AMI を使用する場合、ユースケースによっては、AWS
Marketplace を代替方法としてお勧めします。既に AWS Marketplace から有料 AMI を使用しており、
有料 AMI から起動したインスタンスを登録できない場合は、AWS サポートセンターに連絡してくださ
い。
API Version 2012-06-01
203
Elastic Load Balancing 開発者ガイド
AMI から起動したインスタンスを登録できません。
有料 AMI の詳細については、『Amazon Elastic Compute Cloud User Guide』の「Paid AMIs」を参照
してください。
API Version 2012-06-01
204
Elastic Load Balancing 開発者ガイド
文書の履歴
次の表は Elastic Load Balancing 開発者ガイド の重要な変更点をまとめたものです。
• API バージョン: 2012-06-01
• ドキュメント最新更新日: 2013 年 11 月 6 日
変更点
説明
日付変更
クロスゾーン負荷
分散
ロードバランサーのクロスゾーン負荷分散の有効化 2013 年 11 月 6 日
に関する情報を追加しました。クロスゾーン負荷分
散の詳細については、リクエストルーティング (p. 7)
を参照してください。クロスゾーン負荷分散の有効
化または無効化の手順については、ロードバランサー
のクロスゾーン負荷分散の有効化または無効化(p.141)
を参照してください。
追加の Amazon
CloudWatch のメ
トリックス
Elastic Load Balancing で報告される追加の Amazon 2013 年 10 月 28 日
CloudWatch のメトリックスに関する情報を追加しま
した。Elastic Load Balancing で報告されるすべての
メトリックスとメトリックスの使用方法については、
Amazon CloudWatch を使用したロードバランサーの
監視 (p. 180) を参照してください。
Proxy Protocol に
よるサポート
TCP/SSL 接続用に設定されたロードバランサーの
2013 年 7 月 30 日
Proxy Protocol によるサポートに関する情報を追加。
詳細については、Proxy Protocol (p. 10)を参照してく
ださい。
DNS フェイルオー ロードバランサーに対する Route 53 DNS フェイル
バーのサポート
オーバーの設定に関する情報を追加。詳細について
は、ロードバランサーに対する DNS フェイルオー
バーの設定 (p. 169)を参照してください。
HTTP メソッド
2013 年 6 月 3 日
Elastic Load Balancing でサポートされる HTTP メ
2013 年 5 月 20 日
ソッドに関する情報を追加。詳細については、HTTP
メソッド (p. 9)を参照してください。
API Version 2012-06-01
205
Elastic Load Balancing 開発者ガイド
変更点
説明
日付変更
コンソールで
Amazon
CloudWatch メト
リックスの表示と
アラームの作成が
可能に
コンソールの [Monitoring] タブを使用して、指定され 2013 年 3 月 28 日
たロードバランサーについて、Amazon CloudWatch
メトリックスを表示したりアラームを作成したりす
るための情報を追加。詳細については、Amazon
CloudWatch を使用したロードバランサーの監
視 (p. 180)を参照してください。
デフォルト VPC で デフォルト VPC と、デフォルト VPC 内で起動され 2013 年 3 月 11 日
のロードバランシ た負荷分散用 Amazon EC2 インスタンスに関する情
ング
報を追加。デフォルト VPC については、「デフォル
ト VPC とは何ですか? (p. 113) を参照してください。
デフォルト VPC 内でのロードバランサーの作成につ
いては、「デフォルト VPC での基本的なロードバラ
ンサーの作成 (p. 36)を参照してください。
Amazon VPC の内 このリリースでは、Amazon Virtual Private Cloud
2012 年 6 月 10 日
部負荷分散
(Amazon VPC)のロードバランサーを内部または
インターネット向けに作成することができます。内
部のロードバランサーには、プライベート IP アドレ
スに解決する、パブリックに解決可能な DNS 名が含
まれています。インターネット向けのロードバラン
サーには、パブリック IP アドレスに解決する、パブ
リックに解決可能な DNS 名が含まれています。詳細
については、Amazon VPC での基本的な内部向けロー
ドバランサーの作成 (p. 115)を参照してください。
新機能
既存のロードバランサーのリスナー、証明書、暗号 2012 年 5 月 18 日
化設定を管理するためのコンソールサポートの情報
を追加しました。リスナーおよび暗号化設定に関す
る詳細は、「ロードバランサーへのリスナーの追
加(p.131)」および「ロードバランサーからのリスナー
の削除 (p. 136)を参照してください。証明書の管理に
関する詳細は、「ロードバランサーの SSL 証明書の
更新 (p. 146)を参照してください。
入門情報の移動
以前は分割されていたElastic Load Balancing 入門ガ 2012 年 4 月 3 日
イドを本ガイドにまとめました。詳細については、
Elastic Load Balancing の使用開始 (p. 17)を参照して
ください。
リスナー設定に関
する新コンテンツ
ユースケースに最も適したロードバランサーのリス 2012 年 4 月 3 日
ナー設定の選択に関するセクションを追加しました。
詳細については、ロードバランサーのリスナーの設
定 (p. 66) を参照してください。
トラブルシュー
ティングに関する
新コンテンツ
Elastic Load Balancing のトラブルシューティングに 2012 年 4 月 3 日
関するセクションを追加しました。Elastic Load
Balancing 使用時に遭遇する可能性のある問題を取り
上げ、原因や問題解決のためのステップを説明しま
す。詳細については、Elastic Load Balancing のトラ
ブルシューティング (p. 197) を参照してください。
API Version 2012-06-01
206
Elastic Load Balancing 開発者ガイド
変更点
説明
日付変更
リスナーの追加と
削除に関する新コ
ンテンツ
Query API またはコマンドラインツールを使用した、 2012 年 4 月 3 日
ロードバランサーへのリスナーの追加とロードバラ
ンサーからのリスナーの削除に関するドキュメント
を追加しました。詳細については、ロードバランサー
へのリスナーの追加 (p. 131) および ロードバランサー
からのリスナーの削除 (p. 136) を参照してください。
新機能
API バージョンを 2011-11-1 5 に更新し、Amazon
VPC での Elastic Load Balancing の使用に関するド
キュメントを追加しました。詳細については、
Amazon VPC への Elastic Load Balancing のデプロ
イ (p. 112)を参照してください。
新しいコンテンツ
ロードバランサーからの Amazon EC2 インスタンス 2011 年 11 月 21 日
の登録解除に関するコンテンツを追加しました。詳
細については、Amazon EC2 インスタンスの登録解
除と登録 (p. 139) を参照してください。
コンテンツの再構
成
タイトルを Elastic Load Balancing の使用から Elastic 2011 年 11 月 21 日
Load Balancing へのアクセスに変更しました。タイ
トルをユーザーシナリオから Amazon EC2 での
Elastic Load Balancing の使用方法に変更しました。
新しいコンテンツ
Amazon CloudWatch を使用したロードバランサーの 2011 年 10 月 17 日
監視に関するドキュメントを追加しました。詳細に
ついては、Amazon CloudWatch を使用したロードバ
ランサーの監視 (p. 180) を参照してください。
コンテンツの再構
成
Elastic Load Balancing でのドメイン名の使用および 2011 年 10 月 17 日
Elastic Load Balancing での Ipv6 の使用というトピッ
クを、Elastic Load Balancing の使用セクションから
ユーザーシナリオセクションに移動しました。
新機能
API バージョンを 2011-08-15 に更新しました。ま
2011 年 8 月 30 日
た、新しい設定可能な SSL 暗号、バックエンド
SSL、バックエンドサーバー認証機能に関するドキュ
メントを追加しました。詳細については、Create a
HTTPS/SSL Load Balancer (p. 75)を参照してくださ
い。
コンテンツの再構
成
HTTP サポートおよび HTTPS サポートを使用した 2011 年 8 月 30 日
ロードバランサーのセットアップ手順を SSL 暗号設
定およびバックエンドサーバー認証を使用したロー
ドバランサーの作成 (p. 75) セクションに統合しまし
た。
新しいコンテンツ
Elastic Load Balancing コマンドラインツールのイン 2011 年 8 月 4 日
ストール手順を追加しました。詳細については、
Elastic Load Balancing コマンドラインインターフェ
イスのインストール (p. 45) を参照してください。
新機能
API バージョンを 2011-04-05 に更新し、Zone Apex 2011 年 5 月 24 日
ドメイン名機能に関するドキュメントを追加しまし
た。詳細については、Configure Custom Domain
Name for Your Load Balancer (p. 163)を参照してくだ
さい。
API Version 2012-06-01
207
2011 年 11 月 21 日
Elastic Load Balancing 開発者ガイド
変更点
説明
日付変更
新機能
バックエンドアプリケーションインスタンスのロッ 2011 年 5 月 24 日
クダウンに使用する Elastic Load Balancing セキュリ
ティグループに関するドキュメントを追加しました。
詳細については、Manage Security Groups in Amazon
EC2 (p. 102)を参照してください。
新機能
新しいインターネットプロトコルバージョン 6
(IPv6)の機能に関するドキュメントを追加しまし
た。詳細については、Use IPv6 with Elastic Load
Balancing (p. 110)を参照してください。
内容の追加
AWS Identity and Access Management による AWS 2011 年 5 月 24 日
アカウントへのユーザーアクセスコントロールに関
する情報を追加しました。詳細については、
Controlling User Access to Your AWS Account (p. 194)
を参照してください。
API Version 2012-06-01
208
2011 年 5 月 24 日
Elastic Load Balancing 開発者ガイド
HTTPS サポート, 10
スティッキーセッション, 9
ヘルスチェック, 8
ロードバランサー, 6
Index
Symbols
ご利用開始にあたって
Elastic Load Balancing, 17
アーキテクチャの概要
Elastic Load Balancing, 12
インスタンスの登録, 8
ウェブサービスのリファレンス, 64
スティッキーセッション, 9
ディメンション
Elastic Load Balancing グループメトリックスで利用
可能なディメンション, 182
デフォルト VPC
デフォルト VPC での ELB ユーザーシナリオ, 36
トラブルシューティング
ElasticLoadBalancing, 197
ELB, 197
ドメイン名, 163
プログラミング言語のサポート, 61
ポリシー
例, 195
メトリックス
使用可能なメトリックス, 180, 183
ユーザーシナリオ
API, 72, 112
アプリケーション制御によるセッション維持を有効
にする方法, 177
スティッキーセッション, 173
デフォルト VPC, 36
リスナーの削除, 136
リスナーの追加, 131
ロードバランサーからインスタンスを登録解除する
方法, 139
ロードバランサーの SSL 証明書の更新方法, 146
ロードバランサーの作成方法, 75
ロードバランサーの削除方法, 191
ロードバランサーの監視, 180
期間ベースのセッション維持を有効にする方法, 173
負荷分散したアプリケーションの利用可能ゾーンを
無効化する方法, 100
負荷分散したアプリケーションを追加の利用可能ゾー
ンに拡張する方法, 97
リスナーの設定
Elastic Load Balancing, 66
リージョン, 49
レスポンス構造、SOAP, 63
ロードバランサー, 6
利用可能ゾーン, 7
応答構造, 63
認証
SOAP, 61
重要な用語
AvailabilityZone, 7
EC2 インスタンス, 8
A
API
SOAP, 61
VPC での ELB ユーザーシナリオ, 112
ユーザーシナリオ, 72, 75, 97, 100, 131, 136, 139, 146, 173,
173, 177, 180, 191
ARN
(Elastic Load Balancing 向け), 194
C
CNAME レコード, 164
E
Elastic Load Balancing, 194
使用可能な Amazon CloudWatch のメトリックス, 180,
183
ELB ヘルスチェック, 8
H
HTTPS サポート, 10
Q
Query, 52
S
SOAP
API, 61
WSDL, 61
応答構造, 63, 63
認証, 61
W
WSDL, 61
Z
Zone Apex, 163
API Version 2012-06-01
209