グローバル高可用性セットアップの質問


10

私はvisualwebsiteoptimizer.com / を所有して運営しています。このアプリは、特定のメトリックを追跡するために私の顧客がWebサイトに挿入するコードスニペットを提供します。コードスニペットは外部JavaScript(サイトコードの上部)であるため、顧客のWebサイトを表示する前に、訪問者のブラウザーがアプリサーバーにアクセスします。アプリサーバーがダウンした場合、ブラウザはタイムアウトする前に接続を確立しようとし続けます(通常60秒)。ご想像のとおり、どのような状況でもアプリサーバーを停止することはできません。これは、Webサイトの訪問者だけでなく、お客様のWebサイトの訪問者のエクスペリエンスにも悪影響を与えるためです。

現在、1つのバックアップサーバーが別のデータセンター(実際には別の大陸)に配置されているDNSフェールオーバーメカニズムを使用しています。つまり、アプリサーバーを3つの別々の場所から監視し、それがダウンしていることが検出されるとすぐに、バックアップサーバーのIPを指すようにAレコードを変更します。これはほとんどのブラウザーで正常に機能します(TTLは2分です)が、IEはDNSを30分間キャッシュします。弊社のvisualwebsiteoptimizer.com/split-testing-blog/maximum-theoretical-downtime-for-a-website-30-minutes/の最近の投稿をご覧ください。

それでは、アプリのデータセンターで大規模な障害が発生した場合に、ほぼ瞬時にフェールオーバーを行うには、どのような設定を使用できますか?私はここwww.tenereillo.com/GSLBPageOfShame.htmを読みました。複数のAレコードを持つことが解決策ですが、(まだ)セッションの同期はできません。私たちが検討しているもう1つの戦略は、2つのAレコードを使用することです。1つはアプリサーバーを指し、2つ目は、別のデータセンターにあるリバースプロキシを指します。この戦略は合理的だと思いますか?

私たちの優先事項を確認するために、私たちは私たち自身のウェブサイトやアプリをダウンさせておく余裕がありますが、ダウンタイムのために顧客のウェブサイトを遅くさせることはできません。したがって、アプリサーバーがダウンした場合、デフォルトのアプリケーション応答で応答するつもりはありません。空白の応答で十分ですが、ブラウザがそのHTTP接続を完了することだけが必要です(他には何も必要ありません)。

参照:有用なこのスレッドを読みましたserverfault.com/questions/69870/multiple-data-centers-and-http-traffic-dns-round-robin-is-the-only-way-to-assure

回答:


6

あなたの状況は私たちのものとかなり似ています。データセンターの分割とネットワークレイヤータイプのフェイルオーバーが必要です。

それを行うための予算がある場合、必要なのは2つのデータセンターで、それぞれに複数のIPトランジット、トランジットプロバイダーへのBGPセッションを実行し、グローバルインターネットにIPアドレスをアドバタイズするエッジルーターのペアです。

これは、真のフェイルオーバーを行う唯一の方法です。サーバーへのルートが有効ではなくなったことにルーターが気づくと(さまざまな方法で実行できます)、ルーターはそのルートのアドバタイズを停止し、トラフィックは他のサイトに送られます。

問題は、1組のエッジルーターの場合、最初にこれをセットアップするのにかなり高いコストがかかることです。
次に、これらすべての背後にネットワーキングをセットアップする必要があります。また、サイト間のある種のレイヤー2接続をポイントツーポイントリンクと見なして、1つのデータセンターに着信するトラフィックをルーティングできるようにすることもできます。プライマリサイトに部分的な障害が発生した場合、他のサイトに直接接続します。

BGPマルチホーム/マルチロケーションのベストプラクティス回復力を向上させる最良の方法?同様の問題について私が尋ねた質問です。

恥のGSLBページにはいくつかの重要なポイントがあります。そのため、個人的には、BGPルーティングの仕事をするためにGSLBを喜んで選択することはありません。

また、ネットワークの他の障害点も確認する必要があります。すべてのサーバーに2つのNIC(2つの個別のスイッチに接続されている)、2つのPSUがあり、サービスが冗長ペアまたは負荷分散クラスターとして複数のバックエンドサーバーで構成されていることを確認します。

基本的に、DNSサーバーには各サーバーの負荷の概念がないため、複数のAレコードを介したDNSの「負荷分散」は単なる「負荷分散」です。これは安い(無料)。

GSLBサービスには、サーバーの負荷とその可用性に関するいくつかの概念があり、障害に対するある程度の耐性がありますが、それでもDNSキャッシングとペギングに関連する問題に悩まされています。これは安くはありますが、少し良いです。

堅固なインフラストラクチャに支えられたBGPルーティングネットワークは、良好な稼働時間を本当に保証する唯一の方法であるIMHOです。Cisco / Juniper / etcルーターの代わりにルートサーバーを使用することでいくらかお金を節約することができますが、結局のところ、これらのサーバーを本当に慎重に管理する必要があります。これは決して安価なオプションではありませんし、何かを軽く実行する必要もありませんが、これは非常にやりがいのあるソリューションであり、単なるコンシューマーではなくプロバイダーとしてインターネットにアクセスします。


ありがとう、私はあなたの答えに賛成票を投じたかったのですが、私は新しいのでできませんでした。ええ、はい、BGPでルーティングされたネットワークが適切な方法ですが、スタートアップのセットアップと管理はかなり困難です(コストと人的リソースの両方について)。これにはもっと安い解決策があったらいいのですが、おそらくないでしょう。
Paras Chopra

1
今夜はこれをエッセイとしてブログに書こうと思います。エッジルーターの最も安価なソリューションは、それぞれ2枚の追加のNICを備えた1組のDell R200とRAMのスタック(4〜6 GBで十分です)であり、FreeBSDやQuagga、またはBIRDなどを実行します。
トム・オコナー

素晴らしい!必ずチェックしていきます。このスレッドを見逃さないようにリンクで更新してください。
Paras Chopra

El-Cheapoルーターソリューションの+1-私たちは実際に私の会社でFreeBSDルーターを実行しており、素晴らしい結果を出しています。もう少し商用の製品が必要な場合(ただし、同等のCiscoギアよりもはるかに安い)、ジュニパーネットワークスのギア(www.juniper.net)も良い選択かもしれません。
voretaq7 2010年

4

はい、これは少し前に尋ねられましたが、私は最初にそれを見ました。

コードスニペットは外部JavaScript(サイトコードの上部)であり、顧客のWebサイトを表示する前に、訪問者のブラウザーがアプリサーバーにアクセスします。

あなたがすべき:

  1. Javascriptファイルを優れたプロフェッショナルなコンテンツ配信ネットワークに配置します。つまり、Javascriptの高可用性HTTP(S)サービスを、その専門知識をすでに持っている人から購入します。
  2. フォールバック状態が良好になるようにJavascriptをプログラムします。つまり、アプリケーションサーバーが迅速に応答しない場合、エンドユーザーには変更されていない通常のページが表示されます。

それ以外のことをするのは本当に無責任です。私はあなたがすでにこれを配置していると思います。

そのためのノウハウを持っている、または取得していない限り、サービスをBGPルーティングトリックに基づくべきではありません。複雑なBGPルーティングシナリオは、明らかに実装が簡単ではありません。ドメイン固有の知識がない場合は、自分でこれを行わないでください。

あなたの質問自体は少し混乱しています。高可用性サービスを作成する方法の分析は、アプリケーションデータから始まります。それが「状態」だからです。ステートレスパーツは高可用性を簡単に作成できますが、ステートフルパーツはそうではありません。サーバーとDNSに焦点を当てるのではなく、アプリケーションが状態を維持する場所を確認してください。そこで最適化し、場合によってはスタックオーバーフローに関するアルゴリズムのアドバイスを求めます。Javascriptファイルfxにトランザクションの概念とスマートサーバーの再試行を実装できますか?


1

実際、geodnsとdnsのフェイルオーバーを組み合わせれば、分割テストアクティビティを支援するために必要なものをアップグレードできます。

同じサーバー上にある場合でも、グループAをip 1に、グループBをip 2に送信すると、テストグループを分離できます。グループAとグループBは、地理的に異なる地域に属しています。公平を期すために、翌日/週/月に、地理的な違いを考慮してグループを入れ替えます。方法論を厳密にするだけです。

http://edgedirector.comのgeodns / failover dnsサービスがこれを行うことができます

開示:私は上記のリンクに関連付けられています。ここでは、スプリットテストに愚かなDNSトリックを適用することについての記事を調査しています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.