Azure Functions 部署位置
Azure Functions 部署位置可讓您的函數應用程式執行稱為「位置」的不同執行個體。 位置是透過公開可用端點公開的不同環境。 一個應用程式執行個體一律會對應至生產位置,而且您可以視需要交換指派給位置的執行個體。
可用的位置數目取決於您的特定載入選項:
主控選項 | 插槽(包括生產環境) |
---|---|
取用方案 | 2 |
Flex 使用量方案 | 目前不支援 |
進階方案 | 3 |
專用 (App Service) 方案 | 1-20 |
容器應用程式 | 使用 修訂 |
以下反映函式如何受到交換位置的影響:
- 流量能夠順暢地重新導向,且不會因為交換而捨棄任何要求。 因為下一個函式觸發程序會路由傳送至交換的位置,因此會發生這種順暢的行為。
- 在交換期間,會終止目前正在執行的函式。 若要了解如何撰寫無狀態和防禦性函式,請檢閱改善 Azure Functions 的效能和可靠性。
為何要使用位置?
使用部署位置有許多優點,包括:
- 不同用途的不同環境:使用不同的位置可讓您有機會先區分應用程式執行個體,再交換至生產環境或預備位置。
- 預先準備:部署到某個位置而不是直接部署到生產環境,可讓應用程式在上線之前進行準備。 此外,使用位置可減少 HTTP 觸發工作負載的延遲。 執行個體會在部署之前進行準備,以減少新部署函式的冷啟動。
- 容易後援:與生產環境交換之後,含有之前預備應用程式的位置,現已擁有之前的生產應用程式。 若交換到生產位置的變更不是您需要的變更,您可以立即反轉交換,以恢復「上一個已知的良好執行個體」。
- 最小化重新啟動:變更生產位置中的應用程式設定需要重新啟動執行中的應用程式。 您可以改為變更預備位置中的設定,並將設定變更交換至生產環境,並使用預先建立的執行個體。 位置是在 Functions 執行階段版本之間移轉,同時維持最高可用性的建議方式。 若要深入了解,請參閱最短停機時間更新。
交換作業
在交換期間,一個位置會被視為來源,另一個則是目標。 來源位置具有套用至目標位置的應用程式執行個體。 下列步驟可確保目標位置在交換期間不會發生停機:
套用設定:目標位置中的設定會套用至來源位置的所有執行個體。 例如,生產設定會套用至預備執行個體。 套用的設定包括下列類別:
- 位置特定應用程式設定及連接字串 (如果適用)
- 持續部署設定 (如已啟用)
- App Service 驗證設定 (如已啟用)
等候重新啟動和可用性:交換會等候來源位置中的每個執行個體完成重新啟動,並可供要求使用。 如果有任何執行個體無法重新啟動,交換作業將會還原對來源位置的所有變更,並停止作業。
更新路由:如果來源位置上的所有執行個體都成功準備完畢,這兩個位置會透過切換路由規則來完成交換。 完成此步驟後,目標位置 (例如生產位置) 會擁有先前在來源位置進行準備的應用程式。
重複作業:現在來源位置具有先前在目標位置中的交換前應用程式,請套用所有設定並重新啟動來源位置的執行個體來完成相同的作業。
請記住下列幾點:
在交換作業的任何時間點,交換應用程式的初始化會發生在來源位置上。 不論交換成功或失敗,來源位置在進行準備期間,目標位置都會保持線上狀態。
若要將預備位置與生產位置交換,請確定生產位置「一律」為目標位置。 如此,交換作業就不會對生產應用程式產生影響。
與事件來源和繫結相關的設定必須「在開始交換之前」,先設定為部署位置設定。 事先將其標示為「黏性」,可確保將事件和輸出導向至適當的執行個體。
當您建立新的預備位置時,生產位置中的所有現有設定都會在新的位置中建立,無論設定的黏性如何。
管理設定
某些組態設定會因位置而異。 以下列出哪些設定會在您交換位置時變更,哪些設定會維持不變。
位置特定設定:
- 正在發行端點
- 自訂網域名稱
- 非公用憑證和 TLS/SSL 設定
- 調整大小設定
- IP 限制
- 永遠開啟
- 診斷設定
- 跨原始來源資源分享 (CORS)
- 私人端點
非位置特定設定:
- 一般設定,例如 Framework 版本、32/64 位元、Web 通訊端
- 應用程式設定 (可設定為固定在某個位置)
- 連線設定 (可設定為固定在某個位置)
- 處理常式對應
- 公開憑證
- 混合式連線 *
- 虛擬網路整合 *
- 服務端點 *
- Azure 內容傳遞網路 *
依設計,不會交換以星號 (*) 標記的功能。
注意
套用至未交換設定的某些應用程式設定也不會交換。 例如,由於診斷設定未交換,因此 WEBSITE_HTTPLOGGING_RETENTION_DAYS
和 DIAGNOSTICS_AZUREBLOBRETENTIONDAYS
等相關應用程式設定也不會交換,即使沒有顯示為位置設定也一樣。
建立部署設定
您可以將設定標示為部署設定,使其成為「黏性」。 黏性設定不會與應用程式執行個體交換。
如果您在一個位置中建立部署設定,請務必在涉及交換的任何其他位置中建立具有唯一值的相同設定。 如此一來,雖然設定的值不會變更,但設定名稱會在位置之間保持一致。 此名稱一致性可確保您的程式碼不會嘗試存取某個位置而非另一個位置中定義的設定。
請使用下列步驟來建立部署設定:
瀏覽至函數應用程式中的 [部署位置],然後選取位置名稱。
選取 [設定],然後選取您想要與目前位置保持一起的設定名稱。
選取 [部署位置設定],然後選取 [確定]。
在設定區段消失之後,選取 [儲存] 以保留變更
部署
當您建立位置時,位置是空的。 您可以使用任何支援的部署技術,將應用程式部署到位置。
調整大小
所有位置都會調整為與生產位置相同的背景工作角色數目。
- 針對取用方案,位置會隨著函數應用程式縮放而調整。
- 針對 App Service 方案,應用程式會調整為固定的背景工作角色數目。 位置會在與應用程式方案相同的背景工作角色數目上執行。
檢視位置
您可使用 Azure CLI 或透過 Azure 入口網站來檢視現有位置相關資訊。
使用下列步驟在入口網站中建立新的位置:
瀏覽至您的函數應用程式。
選取 [部署位置],現有的位置就會顯示。
新增位置
您可以使用 Azure CLI 或透過 Azure 入口網站來新增位置。
使用下列步驟在入口網站中建立位置:
瀏覽至您的函數應用程式。
選取 [部署位置],然後選取 [+ 新增位置]。
鍵入位置的名稱,然後選取 [新增]。
存取位置資源
您可使用與生產位置相同的方式,存取預備位置中的資源 (HTTP 觸發程序和管理員端點)。 不過,您在要求 URL 中使用位置特定的主機名稱 (而不是函式應用程式主機名稱),以及任何位置特定的索引鍵。 因為預備位置是即時應用程式,因此您必須像在生產位置一樣,在預備位置保護您的函式。
交換位置
您可以使用 Azure CLI 或透過 Azure 入口網站,在停產環境中交換位置。
使用下列步驟將預備位置交換至生產環境:
巡覽至函式應用程式。
選取 [部署位置],然後選取 [交換]。
確認您交換的組態設定,然後選取 [交換]
交換作業可能需要幾秒鐘的時間。
復原交換
如果交換會產生錯誤,或您只是想要「復原」交換,您可以復原到初始狀態。 若要回到交換前的狀態,請執行另一個交換來反轉交換。
移除位置
您可以使用 Azure CLI 或透過 Azure 入口網站來移除位置。
在入口網站中使用下列步驟,從您的應用程式中移除位置:
瀏覽至函數應用程式中的 [部署位置],然後選取位置名稱。
選取 [刪除]。
鍵入您要刪除的部署位置名稱,然後選取 [刪除]。
關閉確認窗格。
變更 App Service 方案
當函數應用程式在 App Service 方案下執行時,您可以變更位置的基礎 App Service 方案。
注意
您無法在取用方案下變更位置的 App Service 方案。
請使用下列步驟來變更位置的 App Service 方案:
瀏覽至函數應用程式中的 [部署位置],然後選取位置名稱。
在 [App Service 方案] 下,選取 [變更 App Service 方案]。
選取您要升級至的方案,或建立新的方案。
選取 [確定]。
考量
Azure Functions 部署位置有下列考量:
- 應用程式可用的位置數目取決於方案。 取用方案僅允許一個部署位置。 在其他方案下執行的應用程式會有更多位置可用。 如需詳細資料,請參閱服務限制。
- 交換位置會為
AzureWebJobsSecretStorageType
應用程式設定等於files
的應用程式重設金鑰。 - 啟用位置時,您的函數應用程式會在入口網站中設定為唯讀模式。
- 當您的函式應用程式使用安全的儲存體帳戶作為其預設儲存體帳戶 (在
AzureWebJobsStorage
中設定) 時,位置交換可能會失敗。 如需詳細資訊,請參閱WEBSITE_OVERRIDE_STICKY_DIAGNOSTICS_SETTINGS
參考。 - 使用小於 32 個字元的函數應用程式名稱。 名稱超過 32 個字元的風險是造成主機識別碼衝突。