web-dev-qa-db-ja.com

複数のAレコードを使用したフェールオーバーにDNSを使用する

最近、ホスト名に複数のAレコードを設定すると、ラウンドロビンロードバランシングだけでなく自動フェールオーバーにも使用できることに気付きました。

だから私はそれをテストしてみました:

  1. ドメインからページをロードしました
  2. どのサーバーがページにサービスを提供したかを書き留めました
  3. そのホストのWebサーバーをオフにしました
  4. ページをリロードしました

そして実際、ブラウザは自動的に別のサーバーにページをロードしようとしました。これはOpera、Safari、IE、Firefoxで機能しました。 Chrome=のみが別のサーバーの試行に失敗しました。

しかし、そのサーバーを数分間オフラインにしてアクセスログを確認したところ、他のサーバーへのリクエストの数はそれほど増加していませんでしたです。 3台のサーバーのうち1台がオフラインであるため、残りの2台のサーバーのそれぞれへのアクセスは約50%増加すると予想されていましたが、代わりに7-10%しか見られませんでした。これは、DNSベースのフェールオーバーが大半のブラウザー/訪問者に対して機能しないことを意味するだけであり、これは私がテストした内容と直接矛盾しています。

DNSベースのWebブラウザフェールオーバーの最新情報は誰にもわかりますか?訪問者の大部分ではなく自動フェイルオーバーが機能する理由として考えられる理由は何でしょうか?

24
Daniel

何が起こっているのかは、ブラウザが自動DNSフェイルオーバーを行っていないということです。

ドメインに複数のAレコードがある場合、ネームサーバーがブラウザに入力したドメインのIPを要求すると、SOAからIPを要求します。これらのAレコードのいずれかです。次に、それを渡します。

一部のネームサーバーは、取得したものが機能しない場合と機能しない場合に新しいAレコードを要求するのに十分な「スマート」です。したがって、複数のAレコードを設定した場合、「冗長な」ネームサーバーを使用している場合にのみ、疑似冗長フェールオーバーを設定することになります。残りのユーザーは、取得したIPのサイコロを投げ、それがうまく機能していれば、Chromeで行ったようにロードに失敗します。

これを具体的にテストする場合は、hostsファイルを使用できますC:\Windows\system32\drivers\etc\hosts Windowsおよび/etc/hosts Linuxでは、真のフェイルオーバーが発生した場合にどのドメインにどのIPを使用するかを指定します。実際に実行されるのは、ネット上のDNSサーバーがそのTTLに基づいてドメイン名解決をキャッシュすることです。したがって、実際に障害が発生した場合、そのIPを解決する必要があります。そうでなければ、別のネームサーバーにファームアウトする必要があります。

16
Peter

別の考えられる説明は、ほとんどの公開Webサイトでは、ブラウザからではなくボットからトラフィックの大部分が来ているということです。ボットによっては、ドメインの複数のAレコードを処理する場合、ブラウザほどスマートではない可能性があります。

また、一部のボットはキープアライブを使用してTCP接続を開いたままにし、同じ接続で複数のHTTP要求を行います。DNSルックアップは接続が行われたときにのみ行われるため、続行します少なくとも接続が開いたままである限り、古いIPアドレスにリクエストを送信する。

上記の説明に重要性がある場合は、ユーザーエージェント文字列を調べることでログに表示できるはずです。

3
Fr Jeremy Krieg