2010-12-20 5 views
3

現在、私はAWSを使用してサーバープールを構成しています。 2つのデータベースサーバーと、スケーラブルなサーバーアレイと、その前に2つのロードバランサを備えたシンプルなセットアップです。すべてのマシンはフェイルオーバーを待機しており、すべてがかなり堅牢でなければなりません。DNSラウンドロビンフェールオーバーシナリオの非常に遅い要求

ロードバランサは、ラウンドロビンDNSによるフェイルオーバーすることができるはずです。したがって、幸せな日のシナリオでは、両方のマシンがヒットし、トラフィックをアレイに分散します。これらのマシンの1つがダウンしているときに、クライアントブラウザの再試行と組み合わせてDNSをラウンドロビンすると、ブラウザはターゲットホストをタイムアウトしたマシンに移動する必要があります。これは私が思いついたものではありませんが、非常に良い解決策のようです。

問題は次のとおりです。シフトは実際には発生しますが、失敗したリクエストではなく、同じブラウザからのすべての後続のリクエストに対して発生します。したがって、単純なページ要求は、21秒間の読み込み時間がかかり、その後、すべての画像の読み込みに21秒かかります。次のすべてのページリクエストにもこの時間がかかります。したがって、フェールオーバーは機能しますが、同時に全く役に立たない時間です。掘るから

出力:
。 < < >> DIG 9.6.1-P2 < < >> example.com
;;グローバルオプション:+ cmd
;;答え:
;; - >> HEADER < < - オペコード:QUERY、状態:NOERROR、ID:45224
;;フラグ:qr rd ra; QUERY:1、ANSWER:2、AUTHORITY:0、追加:0

;;質問セクション:
; example.com IN A

;;回答セクション:
www.example.com 86400 IN A 1.2.3.4
www.example.com 86400 IN A 1.2.3.4

;;クエリ時間:31 msec
;;サーバー:172.16.0.23#53(172.16.0.23)
;;いつ:月12月12日12時21分25秒
;; MSGのSIZEのRCVD:事前に67

ありがとう!

マールテンフックストラ
Kingsquareインフォメーションサービス

答えて

4

DNSサーバがクライアントにIPアドレスのリストを与えると、このリストは順番に後続のDNSによって異なる順序で返される可能性があります)。ブラウザがDNS応答、すなわち当初受信したリストをキャッシュしている可能性がある。 ではない接続が失敗したとは、サーバーがダウンしていることを意味しますが、毎回同じ順序でリストを再試行します。

したがって、ラウンドロビンDNSは負荷分散のために最適です。フォールトトレランスをサポートするのにあまり適していません。

+0

これは、DNSラウンドロビンのクライアントサイドの動作の私の以前の理解とは実際には異なります。それは完璧な症状に合っています。これは、IPをDNSから取り除くことを意味し、マシンを固定するだけで2つの解決策になります。本当に楽しいニュースではありませんが、まだありがたいです! –

0

我々はこれを呼び出す理由は「貧乏人のロードバランシングが。」それは動作しますが、リゾルバの慈悲とタイムアウトは、どのIPが最初にDNSサーバから返されるかによって決まります。あなたはdnsmadeeasy.comとそのDNSフェイルオーバーのようなものを見ることができます(これを行う他の人がいますが、dnsmadeeasyは私が知っているものです)。基本的にアプリケーションの可用性を監視し、アプリケーションの状態に関するDNSの変更を迅速に反映できます。

+0

いいですが残念ながら私はこれを提供していないDNSプロバイダに縛られています。 –

+0

あなたのDNSプロバイダーは本当に低いTTLSを設定し、APIを持っているのですか?レコードを追加/削除することができます。私はAWSにプールされたマシンがipを共有できるようなものを持っていないことに驚いています..幸運にも... – Doon