使用 Azure App Service Migration Assistant 存取 Web 應用程式

已完成

在本單元中,我們會全面探討在移轉裝載於自己內部部署伺服器的 Web 應用程式時,可能遇到的挑戰。 我們會提供 Web 應用程式具有的 Internet Information Services (IIS) 功能相依性種類,以及造成問題的原因。 這項重要背景資訊可提供進一步了解評定需求的所需內容。

為何要將 Web 應用程式移至 Azure App Service?

Azure App Service 是 Web 應用程式的完全受控平台。 您可使用它,以最少的設定來執行和調整 Web 應用程式。 Microsoft 會管理基礎結構、作業系統更新、負載平衡,並視需要調升/調降邏輯的規模。

您可在簡化的使用者介面中進行設定,並可在應用程式執行時探索其效能,但能做的事情其實不多。 這可讓使用 Azure App Service 在自己的伺服器環境中執行應用程式更具吸引力。 在自己的伺服器環境中,必須處理硬體費用、安裝程式、作業系統安裝、更新與設定、伺服器軟體安裝、更新與設定等。

有數個功能讓 Azure App Service 的可用功能變得很強大。

自動調整功能可供系統管理員設定允許 Web 應用程式調整的執行個體數目上限,以及流量閾值。 然後 App Service 的決策制定邏輯會決定要調升規模,還是調降回原來的規模。

部署位置可供作業或 DevOps 將新版的 Web 應用程式部署至可執行手動或自動整合測試的即時測試或預備環境。 在此新的版本通過所有測試後,作業就可以「交換位置」,以將預備的應用程式移入生產環境。 如果在部署後發生問題,則作業可再次「交換位置」,將原來的版本移回至生產環境。

App Service 診斷提供互動式介面,進而讓疑難排解員得以回答某些問題。 介面會針對應用程式所遇到問題類型產生一份完整的診斷報告。 此外,健康狀態檢查、Application Insights 和導覽器 (互動式相依性圖表) 等工具會協助了解問題發生之處。

什麼是 Azure App Service Migration Assistant?

Azure App Service Migration Assistant 是大型應用程式套件中協助組織轉換至雲端的工具。 Migration Assistant 提供引導式精靈的使用者體驗,其會執行兩項工作:

  1. 對安裝在 Windows Server 上的特定 Web 應用程式執行評定。 其評估 Web 應用程式的相依性,以判斷是否可在不修改 Web 應用程式的情況下,移轉至 Azure App Service。
  2. 如果評定後確定可移轉 Web 應用程式,Migration Assistant 就會執行移轉。 您必須向 Migration Assistant 提供 Azure 帳戶存取權、選取要使用的資源群組、選取 Web 應用程式的名稱,以及其他詳細資料。

Azure App Service Migration Assistant 也可產生 Azure Resource Manager 範本,以供使用更自動化且可重複的方式來移轉 Web 應用程式。

為何要執行評定?

有些組織的 Web 應用程式在最初建置時,即假設應用程式可一直存取 IIS 的低階功能。 例如,有些開發人員在 ISAPI 篩選器上建立了監視、記錄和安全性等功能。 篩選器會在將其傳遞給 ASP.NET 應用程式之前,提供連入要求的存取權。 並會為 ASP.NET 應用程式所產生的傳出回應提供存取權。

不過,使用 Azure App Service 等平台即服務 (PaaS) 供應項目的其中一個優點就是,雲端提供者 (本例中為 Microsoft) 會管理硬體和軟體,所以您無須做這些工作。 並可因此節省時間和費用。 但這也表示應用程式將只能存取極少數的 Windows Server 和 IIS 低階功能。 如果應用程式相依於這些低階功能,則可能無法在不修改的情況下利用 Azure App Service。

評定會檢查哪些類型的問題?

Migration Assistant 會尋找 Web 應用程式的特定功能,以確保 Azure App Service 可容納該功能,或 Migration Assistant 能夠自動移轉該功能。 下表提供 Migration Assistant 所做檢查的一些見解:

整備檢查 說明
連接埠繫結 因為 Azure App Service 只允許標準的網路流量,所以此整備檢查會確認 Web 應用程式只接聽連接埠 80 (適用於 HTTP 流量) 和 443 (適用於 HTTP 流量)。
通訊協定 因為 Azure App Service 僅使用 HTTP 和 HTTPS 通訊協定,所以此整備檢查會確認 Web 應用程式僅處理 HTTP 通訊協定。 例如,如果 Web 應用程式相依於 Windows Communication Foundation,即不會通過此整備檢查。
憑證 Azure App Service 可處理安全性憑證,但此整備檢查會警告您,Migration Assistant 不會自動移轉憑證。
位置標記 位置標記可供將伺服器裝載的所有 Web 應用程式設定保留在單一檔案中,而不是裝載於每個 Web 應用程式各自的 web.config 檔案中。 Azure App Service 應用程式使用預先設定的 IIS applicationhost.config 檔案,且不支援位置標記功能。 所要移轉的每個 Web 應用程式設定都應該移入個別 web.config 檔案中。 這項整備檢查會識別是否使用位置標記。
ISAPI 篩選器 Azure App Service 支援 ISAPI 篩選器,但這取決於 ISAPI 篩選器的實作方式。 Migration Assistant 不會移轉相依於 ISAPI 篩選器的應用程式。 您必須先從應用程式中移除 ISAPI 篩選器、移轉,然後在 Azure App Service 中手動新增 ISAPI 篩選器。
應用程式集區 因為 Azure App Service 支援每應用程式一個應用程式集區,所以此整備檢查會確認 Web 應用程式只依賴單一應用程式集區。
應用程式集區身分識別 Azure App Service 的應用程式裝載於 IIS 工作者處理序中,此工作者處理序是在與應用程式集區建立關聯的系統管理帳戶中執行。 這也是 IIS 內部部署安裝所使用的預設身分識別。 這項整備檢查會確認 Web 應用程式已設定為以預設身分識別執行。
驗證類型 Azure App Service 應用程式所支援驗證類型集不同於裝載於 IIS 在內部部署執行的應用程式驗證類型集。 這項整備檢查會確認 Web 應用程式已設定為使用匿名驗證。 移轉之後,即可手動設定 Azure App Service 的驗證類型。
應用程式設定 這項整備檢查會警告您 web.config 檔案中的自訂應用程式設定應改移至 [Azure App Service]>[設定]>[應用程式設定]
連接字串 這項整備檢查會判斷儲存在 web.config 檔案中的資料庫連接字串是否指向內部部署資料庫。 如果是,Migration Assistant 會提供選項以設定混合式連線。
架構 Migration Assistant 只支援 ASP.NET 和 PHP。 如果應用程式使用其他架構,您就無法執行自動移轉。
設定錯誤 Migration Assistant 可確保內部部署 IIS 執行個體設定正確,且掃描後不會傳回錯誤。 此整備檢查會確認 Web 應用程式在移轉前沒有任何基礎問題。
虛擬目錄 Azure App Service 會將所有檔案儲存在固定的目錄結構中。 Migration Assistant 會將檔案移至適當的子目錄中。 不過,它無法移轉以 UNC 共用支援虛擬目錄的應用程式。

此資料表的這則資訊是摘自 Azure App Service Migration Assistant Wiki

如果評定發現問題,該怎麼辦?

如果 Azure App Service Migration Assistant 在評定 Web 應用程式時發現問題,您可以:

  • 更新應用程式以取代相依於 IIS 低階擴充性的功能。 這工作可能相對簡單,但視發生問題的功能而定。 例如,您可使用 Azure Application Insights 來取代相依於 ISAPI 篩選器的自訂記錄功能。 您只需要在應用程式中新增幾行程式碼,Application Insights 即可提供豐富的可操作報表。
  • 暫時停用禁止移轉的功能以更新應用程式。 Migration Assistant 可引導執行此作業。
  • 將應用程式「依原樣」部署至 Azure 虛擬機器。 雖然您不會得到使用 Azure App Service 的優點且必須維護作業系統,但您不用再維護硬體。 且可在單一位置管理所有的 Web 服務。

針對評定期間發現的許多問題,Azure App Service Migration Assistant Wiki 都有「可能的補救步驟」。

概括回顧

以下為本單元的幾個重點:

  • Azure App Service Migration Assistant 會尋找內部部署 Web 應用程式與 Azure App Service 所支援 Web 應用程式之間的不相容。 如果發生問題,則通常有一種方法可修正 (或停用) 造成內部部署問題的功能。 然後,您可再次嘗試 Migration Assistant。
  • 如果沒有封鎖問題,Migration Assistant 就會將 Web 應用程式移轉至 Azure App Service。