1

Windows Azure クラウド サービスで実行されているマルチテナント Web アプリがあります。各テナントには、tenantA.mysite.com や tenantB.mysite.com などの独自のサブドメインがあります。グローバルな *.mysite.com は、それらすべてを私の Web アプリに向けます。

アプリの新しいバージョンを導入し、他のテナントを古いバージョンのままにして、一度にいくつかのテナントをゆっくりと移動できるようにする必要があります。

今、新しいアプリで新しいクラウド サービスを作成し、そのテナントが新しいサービスを指すように特定の DNS レコードを追加します。

問題は、DNS レコードの変更と伝播によって引き起こされるダウンタイムです。

DNS レコードを変更せずにこれを行う方法に関する推奨事項はありますか?

私の唯一の考えは、古いアプリにヒットしたときに何らかのリダイレクトを行うことですが、それはすべてのリクエストで遅延を引き起こすようです-それともそうでしょうか?

4

2 に答える 2

1

これは、テナントの DNS レコードを更新するよりも複雑です。DNS の伝播とキャッシングの仕組みでは、DNS が新しい場所に解決されるユーザーもいれば、以前の場所に解決されるユーザーもいます。その結果、ユーザーが同じテナントの 2 つの異なる展開に同時にアクセスする可能性があります。Traffic Managerを使用しても、そのドキュメントで読むことができるように、クライアントの動作を直接制御することはできません (「ブラウザーは通常、TTL が期限切れになった後でも、これらのエントリを長期間キャッシュします」)。

もう 1 つのアプローチは、定義したルールに従ってトラフィックを適切なクラウド サービスに内部的に転送するリバース プロキシを備えたフロントエンド レイヤーを使用することです。リバース プロキシでこれらのルールを変更すると、すべての着信要求に影響します。

もう 1 つの方法は、機能トグルを使用して、単一のクラウド サービスを実行し、すべてのテナントに対してそれを更新することです (ダウンタイムを回避するために VIP スワップを使用します)。

于 2013-07-11T20:17:18.200 に答える