Azure Web App (二)使用部署槽切換部署環境代碼


一,引言

前天我們將到使用Azure的 Pass 服務 “Web App” 去部署我們的.NET Core Web項目,也同時有介紹到如何在VS中配置登陸中國區的Azure賬號,今天接着講,我們部署完我們的Web服務,進行完測試后,肯定是要發布到生產環境,但是我們不可能再去創建一個相同的Web App,配置上生產環境的域名,配置上生產環境的數據庫連接字符串等等,而 Azure 的 Web App是可以通過自己的一個叫 “Deployment slots(部署槽)”的功能進行切換。我們來看一下微軟給出的使用部署槽的優點,以下是微軟的官方文檔提到的優勢

將應用程序部署到非生產槽具有以下優點:

  • 可以在分階段部署槽中驗證應用更改,並將其與生產槽交換。
  • 首先將應用部署到槽,然后將其交換到生產,這確保槽的所有實例都已准備好,然后交換到生產。 部署應用時,這樣可避免停機。 流量重定向是無縫的,且不會因交換操作而刪除任何請求。 當不需要預交換驗證時,可以通過配置自動交換來自動化這整個工作流。
  • 交換后,具有以前分階段應用的槽現在具有以前的生產應用。 如果交換到生產槽的更改與預期不同,可以立即執行同一交換來收回“上一已知的良好站點”。

下面,我們正式開始今天的分享。

--------------------我是分割線--------------------

Azure Web App 和Azure VM 部署系列:

1,Azure Web App(一)發布你的Net Core Web 項目

2,Azure Web App(二)使用部署槽切換部署環境代碼

3,Azure Web App(三)切換你的Net Core Web 項目的數據庫連接字符串

4,Azure Traffic Manager(一) 為我們的Web項目提供負載均衡

5,Azure Traffic Manager(二) 基於權重與基於優先級的路由策略為我們的Web項目提供負載均衡 

6,Azure Load Balance(一) 為我們的Web項目提供負載均衡 

7,Azure Load Balancer(二) 基於內部的負載均衡來轉發訪問請求 

8,Azure Application Gateway(一)對后端 Web App 進行負載均衡 

9,Azure Application Gateway(二)對后端 VM 進行負載均衡  

二,正文

1,升級應用服務計划

  定價層為 “Free” 的Web App是無法使用 “Deployment slots” 的功能的,我們需要進行將定價層升級到 “Standard” 或者 “premium”

下圖中,我們可以看到 Web App 的 “Deployment slots(部署槽)” 都是有自己的主機名的實力應用,你的應用和環境配置可以在兩個部署槽位進行交換。

 點擊 “Upgarte”,選擇 “Production”=>"S1",可以看到 "Staging slots" 過渡槽這個功能

 

 點擊 “Apply”,升級后,我們繼續跳轉到 “CnBateWeb” 的 Web App,左側菜單選擇 “Deployment”=>"Deployment slots",目前只有一個默認槽位,並且狀態是 “Running” 的

 

 

 點擊 “Add Slot”,

 

 

 

 

 

 Name 輸入 “IntegrationTesting”,克隆設置選擇 “cnbateblogweb”,點擊 “Apply”

 

 

 回到的我們的代碼中,我們嘗試去修改 Index 頁面,在 Welcome 的后面追加 “IntegrationTesting”,我們可以把它理解成,我們的 web項目現在新增了一個功能,同時我們需要進行集成測試,測試通過后,需要發布到生產環境中去。

 假如我們在本地開發完成后,也進行了簡單的測試,現在需要發布到雲端,需要QA的集成測試,我們選擇剛剛創建好的 “IntegrationTesting”的槽位。進行發布。

 回到 Azure Portal 中,我們創建的 "CnBateBloaWeb" 的 Web App,點擊部署槽位剛剛創建的 “cnbateblogweb-IntegrationTesting” 的超鏈進行跳轉

 

 

 選擇左側菜單 "Overview",,點擊圖中用紅色方框圈起來的“Browse”,進行瀏覽,測試。

 

 

 bingo,我們可以清楚的看到,"IntegrationTesting" 是我們剛剛為了集成測試,添加的一個標識,作為我們demo項目的 “假功能”

 

 假如我們新發布的項目經過QA的集成測試通過后,我們需要將這一整套的代碼發布到我們的生存環境中去,這個時候,我們還像上一篇將的那樣在VS中發布選擇之前創建的名字叫 “CnBateBlogWeb” 的 Web App? No,No,No,此時,我們已經將開發好的新功能的代碼發布到新創建的 “cnbateblogweb-IntegrationTesting” 的部署槽里了,我們只需要將部署槽里的兩個槽位進行交換即可快速完成測試環境到生產環境的代碼的切換,接下來,我們進行交換 測試/生產 環境的部署槽。

回到 “Deployment Slot” 頁面,點擊 “Sswap” 進行交互。

 

 源 選擇我們集成環境的 “cnbateblogweb-IntegrationTesting”,目標 選擇  “cnbateblogweb”,點擊 “Swap”.

 

 在 Azure Portal 上這個過程需要等待差不多20多秒,但是其實,它們兩個槽位以及進行了無停機的交換了,我們進行拿着生產環境的域名進行訪問,可以看到,我們成功的將剛剛加的新功能發布到生產環境上了。

 bingo,我們進行的分析到此也就完了。

三,總結

今天我們演示了一下,如何在Web App中創建 “Deployment Slot”進行快速無停機部署新功能代碼,也使用VS進行發布到創建的Web App中創建的新的部署槽位中,同時也引出了另外一個問題,環境變量怎么切換,切換槽位后,生產環境的數據庫連接字符串怎么辦。下一篇文章,我會繼續 部署槽,進行配置部署槽設置,同時在交換槽位的時候,測試環境/生產環境都能夠准確的連接到對於的數據庫

代碼繼續暫時不上傳了,因為沒有設計到其他設置,只是簡單的修改了主頁,下一篇講解 配置槽設置 的時候再上傳代碼

作者:Allen 

版權:轉載請在文章明顯位置注明作者及出處。如發現錯誤,歡迎批評指正。

作者:Allen 版權:轉載請在文章明顯位置注明作者及出處。如發現錯誤,歡迎批評指正。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM