web-dev-qa-db-ja.com

複数のA / AAAAレコードを使用したhttpキープアライブ

特定のWebサイトのホスト名に対して複数のIPアドレスを公開した場合のパフォーマンスへの影響を推定しようとしています。

ブラウザはランダムな順序でアドレスを選択しますか?

すべての接続に同じアドレスを使用しますか、それともすべての要求に対して異なるアドレス間の接続を同時に多重化しますか?

これはキープアライブとキープアライブ後のリクエストにどのように影響しますか?たとえば、ユーザーが検索を実行している場合、同じ検索クエリのページ2に移動すると、このようなホットサーバーでははるかに高速になる可能性が高いため、そこから同じサーバーを使用するようにしたいと思います冷たいものよりも。単一の場所のみのホスト名をwwwの使用に導入せずに、そのようなことを保証する簡単な方法はありますか?

6
cnst

ブラウザはランダムな順序でアドレスを選択しますか?

いいえ。ブラウザは、ホスト名に対して単一のIPアドレスを取得するようオペレーティングシステムに要求します。ブラウザがリクエストを行うと、OSは使用するIPアドレスを決定するための複数の戦略のいずれかを使用する場合があります。これらには以下が含まれます。

  • ランダム
  • 交互
  • 最も近いと思われるもの

すべての接続に同じアドレスを使用しますか、それともすべての要求に対して異なるアドレス間の接続を同時に多重化しますか?

ほとんどのブラウザーは、OSからの要求後、DNSルックアップの結果をしばらくキャッシュします。その結果、通常、単一のクライアントは多重化されません。

これはキープアライブとキープアライブ後のリクエストにどのように影響しますか?

HTTPキープアライブリクエストは、前のリクエストと同じ接続で行われます。その結果、DNSルックアップは行われず、同じホストが使用されます。キープアライブのタイムアウトは通常約10秒であるため、同じユーザーが実行する2つのクエリがこのウィンドウ内に入ることはほとんどありません。ただし、ページリクエストに続いて画像とjavascriptのリクエストがほぼ常に行われます。

維持後のリクエストに関しては、ブラウザがDNS情報をキャッシュする時間に依存します。数分間キャッシュされる場合がありますが、キャッシュされない場合があります。

おそらく、ラウンドロビンDNSに関するウィキペディアの記事を読みたいでしょう。 「欠点」セクションの下に役立つコメントがあります: http://en.wikipedia.org/wiki/Round-robin_DNS

2

スティーブン・オステルミラーがしなかった質問の一部に答えるためだけに:

たとえば、ユーザーが検索を実行している場合、同じ検索クエリのページ2に移動すると、このようなホットサーバーでははるかに高速になる可能性が高いため、そこから同じサーバーを使用するようにしたいと思います冷たいものよりも。単一の場所のみのホスト名をwwwの使用に導入せずに、そのようなことを保証する簡単な方法はありますか?

明らかな解決策は、サーバーの前に persistence を指定してロードバランサーをデプロイし、すべてのクライアント要求を受信して​​適切なサーバーに転送できるようにすることです。

永続性を実装するいくつかの方法 があり、クライアントIPアフィニティ、Cookieインジェクション、およびアプリケーションCookie学習が含まれます。ユースケースでは、ユーザーの検索用語(おそらくURLに含まれる)のみに基づいてサーバーを選択することもできます。

使用する方法によっては、同じサーバープールの前に永続性を持つ複数のロードバランサーがあり、ロードバランサー間で接続を分散するためにラウンドロビンDNSを使用して連携することも可能です。これにより、両方の長所を活用できます。クライアントがどのロードバランサーを照会しても、要求は(優先的に)同じバックエンドサーバーに転送されます。

0
Ilmari Karonen