フェイルオーバーがSQLAzureで実際にどのように機能するか、実装する必要があるものと、すぐに使用できるものについて少し混乱しています。
私はこの記事を読みました
https://Azure.Microsoft.com/en-us/blog/fault-tolerance-in-windows-Azure-sql-database/
これは自動フェイルオーバーについて続き、介入は必要ありません。接続文字列を変更する必要さえないことを意味しているようです。同じ接続文字列を使用してプライマリサイトとセカンダリサイトの両方を持つことができるように聞こえます。
Windows Azure SQLデータベースデータベースへのすべての接続は、負荷分散されたゲートウェイプロセスのセットによって管理されます。ゲートウェイは、クライアントからのインバウンドデータベース接続要求を受け入れ、それらを現在データベースのプライマリレプリカをホストしているノードにバインドする役割を果たします。ゲートウェイは、分散ファブリックと連携して、お客様のデータベースのプライマリレプリカを見つけます。フェイルオーバーが発生した場合、ゲートウェイは、障害が発生したプライマリにバインドされているすべての接続の、新しいプライマリへの接続バインディングが利用可能になるとすぐに再ネゴシエートします。
そして、私はこの記事を読みました
これは、フェイルオーバーを実行するある種の接続監視アプリを作成する必要があることについて続きます(それ自体が少し失敗する傾向があるように聞こえます-なぜこれが標準的なものではないのですか?)。そして、セカンダリサイトは常にセカンダリデータベースを指している必要があると言います。つまり、最初の記事がどのように聞こえるかはまったくわかりません。
それで、私はこれらを間違って読んでいますか?最初の記事(古い記事)は古くなっていますか?
最初の記事では、単一のデータセンター内でフェイルオーバーする方法について説明し、「データセンター全体の損失を除いて、他のすべての障害はサービスによって軽減される」と述べています。これは、データベースのハードウェアまたはストレージに障害が発生した場合の問題です。
2番目の記事では、ジオレプリケーションを使用してデータセンター自体に障害が発生した場合の処理方法について説明します。「この場合、アプリケーション展開トポロジは、すべてのアプリケーションコンポーネントが影響を受け、1つのユニットとしてフェイルオーバーする必要がある地域の災害を処理するために最適化されています。」
それらは両方とも正しく、同じサービスを使用する2つの異なるシナリオをカバーしています。