メニュー
Elastic Load Balancing
開発者ガイド

Elastic Load Balancing の仕組み

ロードバランサーは、クライアントからの受信トラフィックを受け入れ、リクエストを 1 つ以上のアベイラビリティーゾーンにある登録済みの EC2 インスタンスにルーティングします。また、ロードバランサーは登録されているインスタンスの状態を監視して、トラフィックが正常なインスタンスにのみルーティングされるよう保証します。ロードバランサーは、不具合のあるインスタンスを検出すると、そのインスタンスへのトラフィックのルーティングを停止し、インスタンスが正常な状態に戻ったことを検出するとインスタンスへのトラフィックのルーティングを再開します。

ロードバランサーは、クライアントから EC2 インスタンスにトラフィックをルーティングします。

1 つ以上のリスナーを指定することで、受信トラフィックを受け入れるようにロードバランサーを設定します。リスナーとは接続リクエストをチェックするプロセスです。リスナーの設定には、クライアントからロードバランサーへの接続用のプロトコルとポート番号、およびロードバランサーからインスタンスへの接続用のプロトコルとポート番号を使用します。

アベイラビリティーゾーンをロードバランサーにアタッチすると、Elastic Load Balancing によりアベイラビリティーゾーンにロードバランサーノードが作成され、トラフィックがそのアベイラビリティーゾーンの正常な登録済みインスタンスに転送されるようになります。ロードバランサーは複数のアベイラビリティーゾーンにまたがって設定することをお勧めします。1 つのアベイラビリティーゾーンが利用できなくなったか正常なインスタンスがなくなった場合、ロードバランサーはトラフィックを別のアベイラビリティゾーンの正常な登録済みインスタンスにルーティングすることができます。

リクエストルーティング

クライアントがリクエストをロードバランサーに送信する前に、ドメインネームシステム(DNS)サーバーを使用してロードバランサーのドメイン名を解決します。インスタンスは amazonaws.com ドメインにあるため、DNS エントリは Amazon によって制御されます。Amazon DNS サーバーがクライアントに 1 つ以上の IP アドレスを返します。これらは、ロードバランサーのロードバランサーノードの IP アドレスです。アプリケーションへのトラフィックが時間の経過とともに変化すると、Elastic Load Balancing はロードバランサーをスケーリングして DNS エントリを更新します。DNS エントリでは、有効期限 (TTL) も 60 秒に指定されているため、トラフィックの変化に応じて IP アドレスが迅速に再マップされる点に注意してください。

クライアントは、DNS ラウンドロビンを使用して、ロードバランサーへのリクエストの送信に使用する IP アドレスを特定します。リクエストを受け取るロードバランサーノードは、ルーティングアルゴリズムを使用して正常なインスタンスを選択します。また、TCP リスナー用のラウンドロビンルーティングアルゴリズムと、HTTP および HTTPS リスナー用の最小の未処理のリクエストルーティングアルゴリズム(未処理のリクエストが最も少ないインスタンスに適しています)を使用します。

クロスゾーン負荷分散設定によって、ロードバランサーがインスタンスを選択する方法も決まります。クロスゾーン負荷分散が無効な場合、ロードバランサーノードは自身と同じアベイラビリティーゾーンからインスタンスを選択します。クロスゾーン負荷分散が有効な場合、ロードバランサーノードアベイラビリティーゾーンに関係なくインスタンスを選択します。ロードバランサーノードは、クライアントリクエストを選択したインスタンスにルーティングします。

アベイラビリティーゾーンとインスタンス

バックエンドインスタンスが各アベイラビリティーゾーンのリクエストロードを処理できるようにするには、ロードバランサーに登録されている各アベイラビリティーゾーンにほぼ同じ数のインスタンスを維持することが重要です。たとえば、アベイラビリティーゾーン us-west-2a に 10 個のインスタンス、アベイラビリティーゾーン us-west-2b に 2 個のインスタンスがある場合、リクエストは 2 つのアベイラビリティーゾーンに均等に分散されます。その結果、us-west-2b 内の 2 個のインスタンスは、us-west-2a 内の 10 個のインスタンスと同じ量のトラフィックを処理します。代わりに、アベイラビリティーゾーンごとに 6 つのインスタンスが必要です。

アベイラビリティーゾーンに関係なく、すべてのバックエンドインスタンス間でトラフィックを分散するには、ロードバランサーでクロスゾーン負荷分散を有効にします。ただし、耐障害性を高めるために各アベイラビリティーゾーンにおよそ等しい数のインスタンスを維持することをお勧めします。