スロットのスワップを調べる
2 つのスロットを (たとえば、ステージング スロットから運用スロットに) スワップする際、ターゲット スロットでダウンタイムが発生しないようにするため、App Service で次のようなプロセスが実行されます。
ターゲット スロット (たとえば運用スロット) からソース スロットのすべてのインスタンスに対して、以下の設定を適用します。
- スロット固有のアプリ設定と接続文字列 (該当する場合)。
- 継続的デプロイの設定 (有効な場合)。
- App Service 認証の設定 (有効な場合)。
これらのどの場合も、ソース スロット内のすべてのインスタンスがトリガーされます。 スワップ中のプレビューは、最初のフェーズが終了したことを示します。 スワップ操作が一時停止しても、ターゲット スロットの設定によってソース スロットが正しく動作していることを検証できます。
ソース スロット内のすべてのインスタンスが再起動を完了するまで待機します。 いずれかのインスタンスが再起動に失敗した場合、スワップ操作ではすべての変更がソース スロットに戻されて、操作が停止されます。
ローカル キャッシュが有効になっている場合は、ソース スロットの各インスタンスのアプリケーション ルート ("/") に対して HTTP 要求を行うことで、ローカル キャッシュの初期化をトリガーします。 各インスタンスが何らかの HTTP 応答を返すまで待機します。 ローカル キャッシュの初期化により、各インスタンスでもう一度再起動が発生します。
カスタム ウォームアップによって自動スワップが有効になっている場合は、ソース スロットの各インスタンスのアプリケーション ルート ("/") に対して HTTP 要求を行うことで、アプリケーションの初期化をトリガーします。
applicationInitialization
が指定されていない場合は、各インスタンスのソース スロットのアプリケーション ルートへの HTTP 要求をトリガーします。インスタンスが任意の HTTP 応答を返すと、ウォームアップされたと見なされます。
ソース スロットのすべてのインスタンスが正常にウォームアップされたら、2 つのスロットのルーティング規則を入れ換えることで 2 つのスロットをスワップします。 この手順の後は、前にソース スロットでウォーム アップされたアプリはターゲット スロット (運用スロットなど) に存在します。
この時点でソース スロットが保有するスワップ前のアプリは、以前ターゲット スロットに存在しており、すべての設定を適用してインスタンスを再起動することで、同じ操作を実行します。
スワップ操作のどの時点でも、スワップされるアプリを初期化するすべての作業はソース スロットで発生しています。 スワップが成功または失敗した場所に関わらず、ソース スロットが準備され、ウォームアップされる間は、ターゲット スロットがオンライン状態に留まります。 ステージング スロットと運用スロットをスワップする場合は、常に運用スロットがターゲット スロットであることを確認してください。 こうすることで、スワップ操作が運用アプリに影響を及ぼしません。
別のデプロイ スロットから構成を複製する場合、複製された構成を編集することができます。 構成要素には、スワップを経ても内容が反映される (スロット固有でない) ものもあれば、スワップ後に同じスロットに残されている (スロット固有の) ものもあります。 次の表は、スロットをスワップするときに変更される設定を示しています。
スワップされる設定 | スワップされない設定 |
---|---|
一般設定 (フレームワーク バージョン、32/64 ビット、Web ソケットなど) | 発行エンドポイント |
アプリ設定 (スロット固有として構成可能) | カスタム ドメイン名 |
接続文字列 (スロット固有として構成可能) | パブリックでない証明書と TLS/SSL 設定 |
ハンドラー マッピング | スケールの設定 |
パブリック証明書 | Web ジョブ スケジューラ |
Web ジョブ コンテンツ | IP 制限 |
ハイブリッド接続 * | 常時接続 |
Azure Content Delivery Network * | 診断ログの設定 |
サービス エンドポイント * | クロスオリジン リソース共有 (CORS) |
パスのマッピング | 仮想ネットワークの統合 |
マネージド ID | |
サフィックス _EXTENSION_VERSION で終わる設定 |
アスタリスク (*) 記号付きの機能は、スワップされない予定です。
Note
設定をスワップ可能にするには、アプリのすべてのスロットにアプリ設定 WEBSITE_OVERRIDE_PRESERVE_DEFAULT_STICKY_SLOT_SETTINGS
を追加し、その値を 0
または false
に設定します。 これらの設定は、すべてがスワップ可能か、まったくスワップ可能でないかのどちらかです。 一部の設定だけをスワップ可能にして、他を不可にすることはできません。 マネージド ID はスワップされないため、このオーバーライド アプリ設定による影響を受けません。
特定のスロットに固有の (スワップされない) アプリ設定や接続文字列を構成するには、そのスロットの [構成] ページに移動します。 設定を追加または編集し、[デプロイ スロットの設定] を選択します。 このチェック ボックスを選択し、設定がスワップ可能ではないことを App Service に指示します。