前言

[Azure 筆記] 前言


原文

Examine slot swapping


Steps of swap

在你進行 slot swapping 的時候
Azure 會為你執行以下動作並確保這個過程不會導致任何 downtime

  1. 把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 在重啟後是否能夠正常運作
  2. 如果 source slot 中的任何一個 instance 重啟失敗
    所有應用到 source slot 的設定將會被撤回
    swap 也會被終止
  3. 如果 local cache 被啟用了
    你需要向每個 source slot 中的 instance 發出一個根目錄 (root directory, “/”) 的 HTTP request 來觸發 local cache initialization
    • instance 會再次重啟
    • 請靜候直至所有 instance 都傳回 response
  4. 如果啟用了 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
  5. 如果 source slot 的所有 instance 都成功被 warm-up
    Swap 就會以交換 routing rule 的方式被執行
    在這個步驟被執行後
    Target slot (e.g. production slot) 的 app 就會是之前在 source slot 被 warm-up 的 app
  6. 現時 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

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *


Trending