私には 3 つの場所があり、それぞれに独自のサーバーがあります (s1.mysite.com、s2.mysite.com、s3.mysite.com)。これらはすべてサイト: app.mysite.com の一部です。
ARR を使用して、リクエストの送信元に基づいてファーム内の特定のサーバーにリクエストを転送し (サイト 1 からのリクエストは、その場所のローカルである s1.mysite.com に送信されます)、その特定のサーバーに問題が発生した場合に他のサーバーのいずれかにフェールオーバーできるようにしたいと考えています。
クエリ文字列に基づいてリクエストを DNS 名 (s1.mysite.com) で特定のサーバーに配布する方法はわかっていますが、そのサーバーがダウンするとその名前は機能しません。
Microsoft ARR を使用して、この方法で作業の冗長性と分散を実現できますか?
答え1
この種の設定の理由に応じて、考えられる解決策は変わる可能性があります。ここでは 2 つの理由が考えられます。
- 最高の応答時間を提供するアプリケーション サーバーを優先しながら高可用性を実現しようとする (シナリオ 1)
- ユーザーが現在いるサイトに基づいてカスタマイズされたコンテンツを表示する (シナリオ 2)
シナリオ1
HA を実現して応答時間を最短にしようとすると、すべてのリクエストが最初に ARR サーバーを通過する必要があるため、問題が発生します。この問題を回避するには、各サイトに ARR を配置し、DNS を使用してユーザーをサイトの ARR サーバーに誘導し、次に「最小応答時間」負荷分散アルゴリズムを使用します。これにより、理論的には、サイト 1 のユーザーは s1.mysite.com に誘導され、s1 がダウンした場合は s2 と s3 へのフェイルオーバーも提供されます。
ただし、ネットワークの問題により s1.mysite.com が利用できなくなった場合、サイト 1 の ARR サーバーも利用できなくなる可能性があります。ただし、s1.mysite.com でのアプリケーション障害からは保護されます。
シナリオ2
あなたが実現したいタイプのルーティングを実行するためにすぐに使用できるものは何もないようです。ただし、URL書き換え用のカスタム書き換えプロバイダーを作成できるAPIが公開されています。これを行う方法については、ここサーバー変数、リクエスト ヘッダー、さらにはクエリ文字列パラメータからの情報をカスタム リライト プロバイダーと組み合わせて使用することで、目的のタイプのルーティングを実行できる場合があります。