Connect(); Special Issue 2018

第 33 卷 13

Azure-7 的秘訣和訣竅,適用於 Azure App Service

藉由Michael crump crump;特殊問題 2018

Azure 的祕訣和訣竅 (azuredev.tips) 是一系列,我建立了一年前,我我最愛的祕密、 捷徑和使用 Azure 的便利功能的文件。我快速是了解開發人員每日所面對的常見案例的簡短和以點簡單的指導方針。去年我已經在短短的文章超過 150 個跨越整個 Azure 平台的秘訣。

這個特殊的版本,MSDN Magazine 的著重於 Microsoft connect ();2018 會議中,我一起提取至 Azure App Service 相關的七個最受歡迎且最重要提示的集合。這些提示會包含工作與在主控台中,設定預備環境和交換之間,以及流量路由傳送至不同版本的 「 在生產環境中測試。 」 您的應用程式的檔案 我也會說明如何實作效能測試、 在 Azure App Service 中的應用程式設定採用最佳作法和複製 Web 應用程式特別有用,如果您有在世界各地的客戶。

使用 Azure App Service 中的檔案

本秘訣中我將探討在 Azure App Service Web 站台,可讓您輕鬆地管理您的 Web 應用程式環境,而不需要離開 Azure 入口網站內的檔案。若要開始,請移至 Azure 入口網站並選取您已建立,並按一下 [開發工具] 下的主控台應用程式服務。這會開啟 [命令提示字元,從您可以在其中使用您的 Azure App Service (請參閱**[圖 1**)。

在 Azure App Service 內主控台
圖 1] 在 Azure App Service 內主控台

如您在中所見**[圖 1**,提示字元啟動 D:\home\site\wwwroot 中。我可以從這裡輸入"dir"以查看目前的目錄列表中所示**[圖 2**。

[圖 2 的 wwwroot 目錄清單

Volume in drive D is Windows
Volume Serial Number is FE33-4717
 Directory of D:\home\site\wwwroot
09/21/2017  08:35 PM    <DIR>          .
09/21/2017  08:35 PM    <DIR>          ..
09/20/2017  09:03 PM    <DIR>          css
09/20/2017  09:03 PM             5,351 Default.html
09/20/2017  09:03 PM    <DIR>          js
09/20/2017  09:03 PM             1,950 jsQuizEngine.sln
09/20/2017  09:03 PM               304 jsQuizEngine.userprefs
09/20/2017  09:03 PM            31,744 jsQuizEngine.v12.suo
09/20/2017  09:03 PM    <DIR>          PrecompiledWeb
09/20/2017  09:03 PM    <DIR>          quiz
               4 File(s)         39,349 bytes
               7 Dir(s)   1,072,893,952 bytes free

我可以執行基本的命令,並使用命令 [類型 < 檔案名稱 >] 螢幕上顯示檔案的輸出。您可以建立目錄,並重新命名檔案,但請記住,這是沙箱環境。一些需要提高權限的命令可能無法從主控台內 Azure App Service。如需可用的命令提示字元中,只要輸入"help"主控台視窗中。

Visual Studio Code Experience

還有另一個選項,在 Azure App Service 入口網站稱為 App Service 編輯器中的開發工具。您可以找到此項目位於下只有兩個點,從主控台項目,我在前面的提示中所述。按一下 [App Service 編輯器中,選取檔案,您會看到的畫面中的映像**[圖 3**。

App Service 編輯器
圖 3 App Service 編輯器

如果您已熟悉使用 Visual Studio Code 中,您會發現自己以滑鼠右鍵在家裡瀏覽、 搜尋及管理 Git。App Service 編輯器也可讓您輕鬆地新增、 編輯或刪除檔案,並就像在 Visual Studio Code 中,您可以修改您的設定,甚至將您的佈景主題。也可以利用 [輸出] 視窗,檢閱您的 app service 相關聯的應用程式記錄檔。

Kudu 診斷主控台

沒有 App Service 教學課程已完成的而不提 Kudu 診斷主控台。您可以從 App Service 編輯器中移至您的應用程式,然後按一下 [開啟 Kudu 主控台,或藉由尋找開發工具] 下的 [進階工具] 選項。

若要瀏覽或輸入命令,只要按一下資料夾名稱。您可以輕易地操作檔案,從這裡開始,但我個人 App Service 編輯器比較喜歡該功能。我主要是使用 Kudu 診斷主控台,來輕鬆地探索和使用 REST API 和使用 Process explorer。

建立部署位置

讓我們繼續從世界真奇妙的 App Service 編輯器中將探討如何簡化在生產環境中使用 Azure App Service 的 Web 應用程式的測試。我會先看看部署位置,也會大大實用的功能,可讓您將不同版本的 Web 應用程式部署至不同的 Url。然後,您可以測試您的應用程式和交換內容和位置之間的組態的特定版本。

開始請先移至 Azure 入口網站,並選取現有的應用程式服務必須正常執行,並在部署中,按一下 [部署位置。然後按一下 [新增位置] 按鈕。輸入描述性的名稱,例如預備環境,然後使用現有的組態來源中所示**[圖 4**。本例中我將使用 「 生產 」 Web 應用程式-非經常性存取的測驗應用程式 (github.com/mbcrump/jsQuizEngine),已部署。

新增部署位置
[圖 4 新增部署位置

完成之後,請回到部署位置,以查看狀態,應該會顯示 「 執行中 」。 按一下剛建立的新的預備網站。您會發現它有附加文字預備環境。您也會發現在 yoursitename-staging.azurewebsites.net,是新的站台。

例如,假設您要推送至這個預備位置的現有測驗應用程式的新版本。請移至部署中心並選取 [External] 文字方塊中輸入下列 URL: github.com/mbcrump/jsQuizEngine.git。按一下 [確定]。您可能會發現您需要按一下 [同步],變更才會生效。一旦順利完成程序之後,應該會出現一個核取記號。

等候幾分鐘,讓您的程式碼,以提取從 Git,然後移至新的 URL,您的站台。您可以在 [概觀] 頁面上找到的 URL。在我的案例是在myquizapplication staging.azurewebsites.net。現在,您應該會看到您的新網站 jsQuizEngine 版本 2 在大字型顯示。

到目前為止,我可以回到我所建立的原始應用程式服務,我現在有兩個站台之間交換。比方說,我可能要將預備網站移,到生產網站,反之亦然。此設定的好處是您修補,而您可以繼續在您慣用的空間,直到已備妥可移到生產環境,您的使用者,將不會經歷停機時間。

在生產環境中測試 Web 應用程式

在此提示中,我將探討在生產環境,只會執行稱為測試的功能。完全不嚇人 !但保留。如果您不熟悉部署位置,您會想要在您貿然投入之前,看看前面的提示。

若要開始使用這項功能,請移至 Azure 入口網站選取 App Service 和開發工具] 下按一下 [在生產環境中的測試。您會看到第一件事是靜態路由的標題,您會注意到兩個選項可供部署位置名稱和流量百分比 (您將要路由傳送)。

什麼是靜態路由?這是部署位置可讓您控制如何將流量分散您的生產環境和其他位置之間的功能。這非常有用,如果您想要試用新的變更,與要求的數目減少,然後再逐漸增加的新行為的要求數目。

您會想要將您的網站流量分割成兩個群組,以測試新的站台,並查看客戶喜歡它。因為這是只是示範,您會想要將大量的人傳送至的預備網站,如中所示**[圖 5**。

調整靜態路由的流量百分比預備網站
[圖 5 調整靜態路由的流量百分比預備網站

現在請記得您有兩個版本的網站。另一個則是生產和預備環境中的其中一個。它們是完全相同,不同之處在於預備網站包括讀取 「 jsQuizEngine 版本為 2。 」 以大字型的文字 您不想要交換這些站台,而是只是要將它們之間的流量。

您可以移至生產環境 URL,並不斷重新整理網站,直到預備網站會顯示與生產環境 URL 測試。

當使用者離開網站時,會發生什麼事?根據預設,cookie 會追蹤的事件。您可以找到此 cookie 自行啟動開發人員工具,並尋找 cookie 稱為 「 x-ms-路由的名稱。 」

您實際上可以藉由設定為本身的 x-ms-路由-名稱的 cookie,或提供的 URL 查詢字串,例如 http://myquizapplication.azurewebsites.net/?x-ms-routing-name=self 中強制舊的生產網站。您甚至可以使用 URL,讓您測試您的站台的不同版本的使用者。比方說,我可以使用 http://myquizapplication.azurewebsites.net/?x-ms-routing-name=staging,讓使用者試用新的網站,我推送即時。這是很簡潔吧把,各位

載入測試 Web 應用程式

接下來,讓我們看看簡單且快速的方式,來執行負載測試的 Web 應用程式。負載測試可讓您以量測計的 Web 應用程式的效能,並判斷是否可以處理在尖峰時段增加的流量。登入您的 Azure 帳戶,並移至應用程式服務所建立,並尋找開發工具] 下。您會那里看到效能測試。

在刀鋒視窗中,選取 [新增] 以查看 [設定測試選項,您可以將保留在手動測試的預設設定或變更 Visual Studio Web 測試。這兩個主要差異:Visual Studio Web 測試可讓您選取多個 Url,即使使用 HTTP 封存檔案 (例如 Fiddler 所建立)。針對此逐步解說中,使用手動測試的設定,然後選取的名稱和位置,並確定您保留預設值 250 位使用者在 5 分鐘。

假設此使用案例。您有 Web 應用程式,呈現的項目與即將推出的升級該去年的銷售,導致 175 五分鐘所連線的使用者。使用者接著抱怨網站變慢,因此您是已迫不及待想要將頁面載入時間,從而改善客戶滿意度。為了執行這項操作,您可以測試 250 (或甚至 2,500) 使用者的提高負載與 Web 應用程式五分鐘。

執行測試,您將會看到資料,例如成功和失敗的要求、 在負載下,效能和更多功能。對於執行的案例,平均回應時間降低了,每秒要求數目增加。如果我已選擇較大的時間範圍,我都可能會有更多詳細資料,以協助找出我無法在此改善 Web 應用程式的效能。您也可能會想要查看測試的其他資訊的狀態訊息面板。

我才能夠執行這項操作,而不需要撰寫程式碼與只是在入口網站中按幾項目。只要記住一點,是用於執行負載測試虛擬使用者方面的費用。

使用應用程式設定

以下是利用應用程式設定,以安全地儲存在 Azure 中的索引鍵/值組,以及存取 Web 應用程式中的一個技巧。

應用程式設定用來儲存可設定的項目,而不會對程式碼進行任何變更。索引鍵 / 值組會儲存在背景中設定存放區,很好,因為機密資訊永遠不會出現在 web.config 檔案或儲存機密資料的其他任何位置。若要利用這一點,您必須登入您的 Azure 帳戶,並移至 App Service 所建立。若要查看應用程式設定的設定] 下尋找。

具有環境與預備環境設定的值的索引鍵,讓我們在 Azure 中,新增應用程式設定。開啟或建立 ASP.NET MVC 應用程式 (舉例來說),並修改 web.config 檔以加入環境索引鍵/值組,如下所示的 appSettings 區段:

<appSettings>
  <add key="webpages:Version" value="3.0.0.0" />
  <add key="webpages:Enabled" value="false" />
  <add key="Environment" value="Production" />
</appSettings>

現在則位於應用程式的 Web 組態區段。若要查看的值,您需要將它新增至您的應用程式,來顯示此範例中的值內的頁面。

使用 ASP.NET MVC,請瀏覽至您的 appname/Views/Home/Index.cshtml 檔案並新增下列 using 陳述式後面接著 ConfigurationManager 呼叫:

@using System.Configuration
@{
  ViewBag.Title = "Home Page";
}
<div class="jumbotron)
  <h1>Testing App Settings</h1>
  @ConfigurationManager.AppSettings["Environment"]
</div>

如果您在本機執行應用程式,如來自 web.config 檔案中,但如果您在 Azure 內部,執行它,您會看到實際執行您會看到預備環境,因為它來自在 Azure 中的應用程式設定組態存放區。很不錯吧 !

您可能已經注意到,應用程式設定選項的正下方顯示的連接字串和想要知道何時要使用它。一般經驗法則是針對索引鍵 / 值組的應用程式設定,使用資料庫連接字串和應用程式設定的連接字串。如果您檢查您的 web.config 檔案,您會看到,還有一節的 connectionStrings,就像是 appsettings 區段。

複製 Web 應用程式

複製會複製至新建立的應用程式,通常是在不同的區域中現有的 Web 應用程式的能力。這可讓客戶能夠快速且輕鬆地跨不同區域部署的應用程式數目。

比方說,公司可能會在美國西部區域中,有現有的 Web 應用程式,並想要複製到美國東部區域,以減少延遲並改善效能,該區域中的使用者應用程式。

若要執行這項操作,登入您的 Azure 帳戶並移至 App Service 建立及開發工具] 下按一下複製應用程式。輸入下列資訊:

  • 應用程式名稱:請務必使用唯一的項目,如這個網站將位於 something.azurewebsites.net
  • 資源群組:建立新的群組,或使用現有的帳戶
  • App Service 方案/位置:這是關聯新的計劃,將決定位置、 功能、 成本和計算資源與您的應用程式相關聯的好時機

除了變更位置,這也是很棒的時間,以判斷所需的 app service 方案。您可能不需要提供此站台,如果您預期會非常低的流量,在該區域中的所有馬力。

  • 複製設定:這會將內容和應用程式的憑證複製到新建立的應用程式,您也可以複製應用程式設定、 連接字串中,部署來源和自訂網域
  • Application Insights:啟用此服務,以協助您偵測及診斷問題及其他.NET 應用程式

最後,還有自動化選項,將帶您前往還是很重要的 Azure Resource Manager 範本。深入了解在 Azure Resource Manager 範本bit.ly/2RTVfri

Azure Resource Manager 可讓您能夠使用您的解決方案,為群組中的資源。您可以部署、 更新或刪除您的解決方案,在單一、 協調的作業中的所有資源。您可以使用範本進行部署,以及該範本可以用於不同的環境,例如測試、 預備和生產環境。資源管理員會提供安全性、 稽核和標記功能,以協助您在部署後管理您的資源。深入了解bit.ly/2Pv9aY5

一旦一切都設定好,按下建立,您會看到部署正在進行中的覆疊在螢幕上。若要查看詳細資料,例如狀態、 部署、 位置等等的持續時間部署時,您可以按一下它。

使用記錄 Stream

記錄 Stream 是能夠查看記錄資訊時進行即時 (或接近越好)。您可以使用 Azure 入口網站或透過一些工具,例如 PowerShell 或 BASH CLI。利用這一點,登入您的 Azure 帳戶,請移至您的 App Service 並開啟 [監視] 底下的記錄檔 Stream 項目。您會看到大部分的應用程式記錄檔會處於關閉狀態。若要開啟它們,您必須前往 [設定在相同的窗格中的診斷記錄檔。

這裡您會看到下列選項:

  • 應用程式記錄可讓您從您的 Web 程式碼收集診斷追蹤。這是必要的資料流的記錄功能,而且本身在 12 小時後會關閉。
  • 應用程式記錄 (Blob) 會產生儲存體設定下所指定的 blob 容器中所收集的記錄檔。
  • Web 伺服器記錄會收集您的 Web 伺服器的診斷資訊。
  • 詳細的錯誤訊息會收集詳細的錯誤訊息從您的 Web 應用程式。
  • 無法在失敗要求的要求追蹤會收集診斷資訊。

您可以輕鬆地變更選項,例如實體磁碟大小的記錄檔會儲存 Azure、 為天數若要保留的記錄檔中保留。您也可以下載記錄檔,透過 FTP 和 FTPS。

請繼續進行至開啟的應用程式 Logging(Filesystem) 和資訊的層級並按下 [儲存。請返回並按一下記錄 Stream 設定並瀏覽您的網頁 (也就裝載於 azurewebsites.net)。您應該會看到記錄檔。如果您查看前幾行時,您會看到 ReadyForRequest 連接埠 80,後面接著要求從 Web 瀏覽器,其中包含下拉 /favicon.ico 檔案 (這唯一的映像所傳送)。

加入追蹤記錄中的程式碼

使用 ASP.NET MVC 應用程式,從更早版本,瀏覽至您 appname/Controllers/HomeController.cs 檔案 (或您想要測試這項功能的任一處),並新增下面這一行:

System.Diagnostics.Trace.WriteLine ("輸入檢視的相關");

前往上一步診斷記錄檔並確定應用程式記錄 (檔案系統) 的層級設為 [詳細資訊,然後按下 [儲存因為我們只使用 WriteLine 命令。切換回記錄 Stream 選項,並觸發錯誤開啟網站,並瀏覽至 [關於] 頁面。它會呼叫 Trace.WriteLine 命令之後,請檢閱應用程式記錄檔。您應該會看到訊息 「 輸入有關檢視 」 指定 Trace.WriteLine 呼叫中。

總結

現在您已了解一些秘訣可協助您更具生產力的 Azure App Service 中。但這篇文章勉強觸及了您可以進行的操作。過去一年來我已編譯寶貴的秘訣、 技巧和祕密,其中涵蓋使用.NET Core,適用於使用者驗證等的豐富分析 Application Insights 的這類事件的程式的庫。如果您喜歡您在這篇文章中所見,請移查看整個集合,在 Azure App Service 祕訣azuredev.tips,或瀏覽videos.azuredev.tips檢視簡短的影片,許多這些祕訣和訣竅。


Michael crump 將適用於 microsoft Azure 平台,而且是程式、 部落客和雲端開發的各種主題的國際演說家。他是熱衷於協助開發人員了解雲端的優點,且有用的方式。您可以透過他的 Twitter: @mbcrump或遵循他的部落格michaelcrump.net

感謝下列 Microsoft 技術專家來檢閱這篇文章:Cecil Phillip


MSDN Magazine 論壇中的這篇文章的討論