前言
原文
Steps of swap
在你進行 slot swapping 的時候
Azure 會為你執行以下動作並確保這個過程不會導致任何 downtime
- 把target slot (e.g. production slot) 的設定應用到 source slot (e.g. development slot) 的所有 instance
下面這些 target slot 的設定會被應用到 source slot- Slot-specific app settings, connection strings (if applicable)
- Continuous deployment settings (if enabled)
- App Service authentication settings (if enabled)
source slot 的所有 instance 會因而重啟
swap 也會被暫停
這時你可以測試 source slot 在重啟後是否能夠正常運作
- 如果 source slot 中的任何一個 instance 重啟失敗
所有應用到 source slot 的設定將會被撤回
swap 也會被終止 - 如果 local cache 被啟用了
你需要向每個 source slot 中的 instance 發出一個根目錄 (root directory, “/”) 的 HTTP request 來觸發 local cache initialization- instance 會再次重啟
- 請靜候直至所有 instance 都傳回 response
- 如果啟用了 auto swap 和 custom warm-up
Azure 會執行 swap 之前自動向每個 source slot 中的 instance 發出一個根目錄 (root directory, “/”) 的 HTTP request 來觸發初始化(initialization)- 如果你想 Azure 不是單純的發送 HTTP request 到根目錄,請設置
applicationInitialization
- 對於這個HTTP request,任可 HTTP response 都會被視為成功 warm-up instance
- 如果你想 Azure 不是單純的發送 HTTP request 到根目錄,請設置
- 如果 source slot 的所有 instance 都成功被 warm-up
Swap 就會以交換 routing rule 的方式被執行
在這個步驟被執行後
Target slot (e.g. production slot) 的 app 就會是之前在 source slot 被 warm-up 的 app - 現時 source slot 就有了之前 target slot 的 app
這時,Azure 會在 source slot 再次執行第一至四步
以啟用現時在 source slot 內的 app
在 swap 的過程中
所有變更都會在 source slot 執行
請確保的你 production slot 是 target slot
以免對你的 production app 產生任何影響
Configuration when swap
在 swap 的時候
有部份設定會跟隨着 app content 移到新的 slot
有部份則不會
下面是相關的列表
Settings that are swapped (會跟隨着 app content 一起 swap 的)
- General settings, such as framework version, 32/64-bit, web sockets
- App settings (can be configured to stick to a slot)
- Connection strings (can be configured to stick to a slot)
- Handler mappings
- Public certificates
- WebJobs content
- Hybrid connections *
- Azure Content Delivery Network *
- Service endpoints *
- Path mappings
要注意的是,被標上 * 的
之後會變為不會一起 swap 的設定
Settings that aren’t swapped (不會跟隨着 app content 一起 swap)
- Publishing endpoints
- Custom domain names
- Non-public certificates and TLS/SSL settings
- Scale settings
- WebJobs schedulers
- IP restrictions
- Always On
- Diagnostic log settings
- Cross-origin resource sharing (CORS)
- Virtual network integration
- Managed identities
- Settings that end with the suffix _EXTENSION_VERSION
這裏給大家一個例子
如果原本在 production slot 的是 app content A, app setting A, always on setting A
在 development slot 的是 app content B, app setting B, always on setting B
在 swap 了之後
在 production slot 內的是 app content B, app setting B, always on setting A
在 production slot 內的是 app content A, app setting A, always on setting B
若要做某個指定的 app setting 或 connection string 變為 not swapped (不會隨着 app content 一起 swap)
你可以在設定時點選 Deployment slot setting
發佈留言