web-dev-qa-db-ja.com

障害が発生した場合に自分のサイトがセカンダリサーバーを指すようにDNSAレコードを自動的に変更するにはどうすればよいですか?

私のホスティングは、サーバーを同じVLANに配置するために、月額50ドルの料金を請求しているので、ネットワーク負荷分散機能を使用してクラスターを作成します。

サーバー間で負荷を分割する必要はありません。サーバーの障害から保護するためのフェイルオーバーシナリオを作成する簡単な方法を探していました。しかし、この料金は少し高いと思います。

NLBを使用せずにクラスターを作成する方法はありますか?プライマリサーバーを監視し、ドメインがダウンしたときにドメインのDNSを変更するものでしょうか。

6
holiveira

DNSは、フェイルオーバーをシミュレートするのに適していません。理由は

  • DNSは一定期間有効なレコードを記録します。リアルタイムのフェイルオーバーを実現するには、DNSエントリのTTLを低くして、サイトへのすべてのリクエストがDNSになるようにする必要があります。ルックアップ。これにより、訪問者のエクスペリエンスが大幅に低下します。
  • 今日でもTTL値が非常に低いDNS全体が、ISPや古い壊れたネームサーバーによって尊重されていないという疑いがいくつかあります。
  • ラウンドロビンDNSを使用しても、要求の平均50%がリストされている各IPに送信されるため、フェイルオーバーは提供されません。これは、HTTPの高レベルプロトコルに再試行が組み込まれている場合に実際に機能します。

私の提案は

  • 2番目のサーバーが同じホスティング会社にある場合は、実際のロードバランサーを自分で使用するためにレンタルすることを検討してください。そうしないと、ほとんどのホスティング会社が共有負荷分散インフラストラクチャの一部をレンタルできます。
  • スプレッドサーバーやLinuxHAサーバーなどを使用して、物理サーバー間で渡されるフローティング仮想IPにサービスを割り当てます。クラスタ内のサーバーは相互に監視し、仮想IPの現在の所有者を決定します。

彼がこれを非常に詳細にカバーしているので、 Scalable Internet Architecturesby Theo Schlossnagle を読むことを強くお勧めします

9
Dave Cheney

ldirectordを使用して、Webサーバーを監視し、現在稼働しているサーバー間の負荷分散を行う別の負荷分散ボックスを設定できます(さらに、1つのサーバーがダウンしてもサイトを維持します)。 。このソリューションを使用して、サイトの稼働時間に影響を与えることなく、2つのWebサーバーのいずれかを再起動できるようにします。

実際、WebサーバーがLinuxボックスの場合は、Webサーバー自体でldirectordを実行し、heartbeatを使用してldirectordをライブで実行し続けることができます。ボックス。

このソリューションを使用すると、2つ以上のボックス間で共通のIPアドレス(または複数)を共有し、DNSの問題を完全に回避できます。

2
Brent

1つの方法は、サイトを2つの異なるサーバーに配置し、メインサーバー(DNSが通常指す場所)への接続を監視する3番目の場所にサイトモニターを配置することです。サイトがダウンしていることを検出した場合は、モニターにスクリプトを実行させるか、ダイナミックDNSプロバイダーの更新URL( DtDNS [私が操作している]、または DynDNS.comなど)をヒットさせます。 )ドメイン/ホスト名に指定されたバックアップサーバーのIPアドレス。これにより、DNSレコードが更新され、トラフィックがバックアップWebサーバーに転送されます。メインサイトがオンラインに戻ると、監視は「実際の」IPを元に戻す別のスクリプトまたはURLを実行できます。

ここで重要なのは、システムにAPIを組み込んだプロバイダーでDNSをホストして、ドメインをすばやく更新できるようにし、訪問者が比較的リダイレクトされるようにTTLを十分に低く保つことです。早く。

もう1つは、サイトを外部の客観的な場所から監視する必要があることです。サイトと同じWebサーバーで監視を実行することはできません。サーバー全体がダウンした場合、監視/更新メソッドはサーバーと一緒にダウンします。

1
Justin Scott

SimpleFailover 多かれ少なかれあなたが望むことをします。 DNSはキャッシュされるため、完全なソリューションではないことを忘れないでください。

複数のAレコードに関して、最近、VistaおよびWin Server 2008の実装に関する議論を目にしました RFC3484 、つまり、ラウンドロビンに依存できず、これらのクライアントからサーバーの負荷が不均一になる可能性があります。 。

1
John McC

DNS Made Easy DNSを設定して、サーバーがダウンした場合に別の場所を指すようにすることができます。私たちの場合、サイトがダウンしているという静的ページがあります。後でもう一度やり直してください。

このようにDNSを使用する場合は、キャッシュの問題を回避するために、比較的短いTTLを構成する必要があります。

1
Brent