コロラド間フェイルオーバー設計、DNS レベルのフェイルオーバー?
-
03-07-2019 - |
質問
私は、メイン サイトに障害が発生した場合にユーザーが別のコロのフェールオーバー サイトにシームレスに到達できるようにする、Web アプリケーションのコロニーをまたぐフェールオーバー戦略に興味があります。
アプリケーション側のほとんどは、コロニー間のマスター/スレーブ データベース設定と、リカバリして途中で取得できるように設計されたサービスで解決されているようです。トラフィックをメイン サイトからフェールオーバー サイトに移動する戦略を見つけようとしています。DNS フェイルオーバーは、TTL が低い場合でも、次のような影響を与えるようです。 かなりの遅延.
メイン コロラドのサーバーに到達できないと仮定した場合、コロラド間でトラフィックを迅速に移動するためにどのような戦略をお勧めしますか?
他にもコロコロ間フェイルオーバーに関する興味深い経験や知恵の言葉があれば、ぜひお聞かせください。
解決
低TTLをゾーンファイルに入れても、DNSベースのメカニズムは面倒です。
この理由は、多くのアプリケーション(MSIEなど)がTTLを無視する独自のキャッシュを保持しているためです。他のソフトウェアは、単一の gethostbyname()
または同等の呼び出しを行い、プログラムが再起動されるまで結果を保存します。
さらに悪いことに、多くのISPの再帰DNSサーバーは、自分の推奨最小値未満のTTLを無視し、独自の高いTTLを課すことが知られています。
サイトがIPアドレスを変更せずに 両方のデータセンターから実行する場合は、「マルチホーミング」の手配を検討する必要があります。グローバルBGP4ルートアナウンスメント経由。
マルチホーミングでは、少なくとも「プロバイダー独立」の/ 24ネットブロックを取得する必要があります。 (別名「PI」)IPアドレススペースを使用し、メインサイトがオフラインになった場合にのみバックアップサイトからグローバルルーティングテーブルにアナウンスします。
他のヒント
DNS については、以下を参照したいと思います。 「DNS ベースのグローバル サーバー負荷分散が機能しない理由」. 。その他すべてについては -- BGP を使用する.
BGP を使用して負荷分散を行うためのネットワークを設計することは依然として簡単な作業ではありませんし、私自身もこの分野の専門家ではありません。これは Wikipedia で説明できるよりも複雑ですが、その方法を詳しく説明した興味深い記事が Web 上にいくつかあります。
BGP とロード バランシングについて検索すると、常に他にも見つかります。また、ネット上には、Akamai がグローバルなロードバランシングをどのように実行するかを説明したホワイトペーパーが 2 つあり (これも BGP だと思います)、読んで学ぶのは常に興味深いものです。
ソフトウェアとハードウェアを使用して達成できる明白な概念を超えて、ISP/プロバイダー/コロニーがセットアップできるかどうかを確認することもできます。
また、コロニーの選択に関して悪気はありませんが (プロバイダーは誰ですか?)、ほとんどの場所ではダウンタイムなどに対処するように設定されているはずであり、ユーザーがアクションを起こす必要はありません。もちろん、洪水や宇宙人はいつでも襲ってくる可能性がありますが、その場合はもっと重要な問題があると思います。:-)
可能であれば、マルチキャスト- http://en.wikipedia.org/wiki/MulticastまたはAnyCast- http://en.wikipedia.org/wiki/Anycast