了解如何創(chuàng)建可提供手動(dòng)觸發(fā)過(guò)程的跨云解決方案,以通過(guò)流量管理器使用自動(dòng)縮放功能從 Azure Stack Hub 托管的 Web 應(yīng)用切換到 Azure 托管的 Web 應(yīng)用。 此過(guò)程確保云實(shí)用工具在承受負(fù)載時(shí)保持靈活性和可伸縮性。
使用此模式時(shí),租戶可能尚未準(zhǔn)備好在公有云中運(yùn)行你的應(yīng)用。 但是,要讓企業(yè)在本地環(huán)境中保持用于處理應(yīng)用需求高峰的容量,在經(jīng)濟(jì)上似乎不切實(shí)際。 租戶可以通過(guò)其本地解決方案使用公有云的彈性。
在此解決方案中,你將構(gòu)建一個(gè)示例環(huán)境來(lái)完成以下任務(wù):
創(chuàng)建多節(jié)點(diǎn) Web 應(yīng)用。
配置和管理持續(xù)部署 (CD) 過(guò)程。
將 Web 應(yīng)用發(fā)布到 Azure Stack Hub。
創(chuàng)建發(fā)布。
了解如何監(jiān)視和跟蹤部署。
提示
Microsoft Azure Stack Hub 是 Azure 的擴(kuò)展。 Azure Stack Hub 將云計(jì)算的靈活性和創(chuàng)新性帶入本地環(huán)境,并支持唯一的混合云,允許你在任何地方構(gòu)建和部署混合應(yīng)用。
混合應(yīng)用設(shè)計(jì)注意事項(xiàng)一文回顧了設(shè)計(jì)、部署和運(yùn)行混合應(yīng)用所需的軟件質(zhì)量要素(位置、可伸縮性、可用性、復(fù)原能力、可管理性和安全性)。 這些設(shè)計(jì)注意事項(xiàng)有助于優(yōu)化混合應(yīng)用設(shè)計(jì),從而最大限度地減少生產(chǎn)環(huán)境中的難題。
Azure 訂閱。 如果需要,請(qǐng)?jiān)陂_(kāi)始之前創(chuàng)建一個(gè)免費(fèi)帳戶。
Azure Stack Hub 集成系統(tǒng)或 Azure Stack 開(kāi)發(fā)工具包 (ASDK) 的部署。
有關(guān)安裝 Azure Stack Hub 的說(shuō)明,請(qǐng)參閱安裝 ASDK。
有關(guān) ASDK 部署后自動(dòng)化腳本,請(qǐng)參閱:https://github.com/mattmcspirit/azurestack
此項(xiàng)安裝可能需要幾個(gè)小時(shí)才能完成。
將應(yīng)用服務(wù) PaaS 服務(wù)部署到 Azure Stack Hub。
在 Azure Stack Hub 環(huán)境中創(chuàng)建計(jì)劃/套餐。
在 Azure Stack Hub 環(huán)境中創(chuàng)建租戶訂閱。
在租戶訂閱中創(chuàng)建 Web 應(yīng)用。 記下新 Web 應(yīng)用的 URL,供稍后使用。
在租戶訂閱中部署 Azure Pipelines 虛擬機(jī) (VM)。
需要裝有 .NET 3.5 的 Windows Server 2016 VM。 將在 Azure Stack Hub 上的租戶訂閱中構(gòu)建此 VM 作為專用生成代理。
Azure Stack Hub 市場(chǎng)中提供了具有 SQL 2017 VM 映像的 Windows Server 2016。 如果此映像不可用,請(qǐng)與 Azure Stack Hub 操作員協(xié)作,以確保將此映像添加到環(huán)境中。
跨云縮放的關(guān)鍵要素是能按需在公共和本地云基礎(chǔ)結(jié)構(gòu)之間提供即時(shí)縮放功能,證明服務(wù)可保持一致且可靠。
確定通過(guò)本地硬件配置和軟件部署來(lái)配置本地部署的應(yīng)用,以實(shí)現(xiàn)高可用性。
跨云解決方案確保在環(huán)境之間提供無(wú)縫的管理和熟悉的界面。 建議使用 PowerShell 進(jìn)行跨平臺(tái)管理。
更新域的 DNS 區(qū)域文件。 然后,Azure AD 將會(huì)驗(yàn)證自定義域名的所有權(quán)。 可將 Azure DNS 用于 Azure 中的 Azure/Microsoft 365/外部 DNS 記錄,或在其他 DNS 注冊(cè)機(jī)構(gòu)中添加 DNS 條目。
向公共注冊(cè)機(jī)構(gòu)注冊(cè)自定義域。
登錄到域的域名注冊(cè)機(jī)構(gòu)。 可能需要由獲批準(zhǔn)的管理員進(jìn)行 DNS 更新。
通過(guò)添加 Azure AD 提供的 DNS 條目來(lái)更新域的 DNS 區(qū)域文件。 (DNS 條目不會(huì)影響電子郵件路由或 Web 托管行為。)
設(shè)置混合持續(xù)集成和持續(xù)部署 (CI/CD),以將 Web 應(yīng)用部署到 Azure 和 Azure Stack Hub,并自動(dòng)將更改推送到這兩個(gè)云中。
備注
需要在 Azure Stack Hub 上創(chuàng)建適當(dāng)?shù)暮铣捎诚裼糜谶\(yùn)行 Windows Server 和 SQL,并需要部署應(yīng)用服務(wù)。 有關(guān)詳細(xì)信息,請(qǐng)參閱應(yīng)用服務(wù)文檔在 Azure Stack Hub 上部署應(yīng)用服務(wù)的先決條件。
Azure Repos
使用在 Azure Repos 上擁有項(xiàng)目創(chuàng)建權(quán)限的帳戶登錄到 Azure Repos。
混合 CI/CD 可同時(shí)應(yīng)用到應(yīng)用代碼和基礎(chǔ)結(jié)構(gòu)代碼。 使用 Azure 資源管理器模板進(jìn)行專用與托管的云開(kāi)發(fā)。
創(chuàng)建并打開(kāi)默認(rèn) Web 應(yīng)用以克隆存儲(chǔ)庫(kù)。
編輯 WebApplication.csproj 文件。 選擇 Runtimeidentifier
并添加 win10-x64
。 (請(qǐng)參閱獨(dú)立部署文檔。)
使用團(tuán)隊(duì)資源管理器將代碼簽入 Azure Repos。
確認(rèn)應(yīng)用代碼已簽入到 Azure Repos。
登錄到 Azure Pipelines 以確認(rèn)能夠創(chuàng)建生成定義。
添加 -r win10-x64 代碼。 使用 .NET Core 觸發(fā)獨(dú)立部署時(shí)需要添加此代碼。
運(yùn)行生成。 獨(dú)立部署生成過(guò)程將發(fā)布可在 Azure 和 Azure Stack Hub 上運(yùn)行的項(xiàng)目。
在 Azure Pipelines 中使用托管生成代理是生成和部署 Web 應(yīng)用的便捷做法。 維護(hù)和升級(jí)由 Microsoft Azure 自動(dòng)完成,從而實(shí)現(xiàn)了連續(xù)不斷的開(kāi)發(fā)周期。
Azure Pipelines 和 Azure DevOps Services 提供可配置度和可管理度高的管道,用于在多個(gè)環(huán)境中進(jìn)行發(fā)布,例如開(kāi)發(fā)、暫存、QA 和生產(chǎn)環(huán)境;包括在特定階段需要審批。
選擇“加號(hào)”按鈕可在 Azure DevOps Services 的“生成和發(fā)布”部分的“發(fā)布”選項(xiàng)卡下添加新發(fā)布 。
應(yīng)用“Azure 應(yīng)用服務(wù)部署”模板。
在“添加項(xiàng)目”下,為 Azure 云生成應(yīng)用添加項(xiàng)目。
在“管道”選項(xiàng)卡下選擇環(huán)境的“階段和任務(wù)”鏈接,并設(shè)置 Azure 云環(huán)境值。
設(shè)置環(huán)境名稱,并選擇 Azure 云終結(jié)點(diǎn)的 Azure 訂閱。
在“應(yīng)用服務(wù)名稱”下,設(shè)置所需的 Azure 應(yīng)用服務(wù)名稱。
在 Azure 云托管環(huán)境的“代理隊(duì)列”下輸入“Hosted VS2017”。
在“部署 Azure 應(yīng)用服務(wù)”菜單中,為環(huán)境選擇有效的包或文件夾。 選擇文件夾位置旁邊的“確定”。
保存所有更改并返回發(fā)布管道。
選擇 Azure Stack Hub 應(yīng)用的生成以添加新項(xiàng)目。
通過(guò)應(yīng)用 Azure 應(yīng)用服務(wù)部署額外添加一個(gè)環(huán)境。
將新環(huán)境命名為“Azure Stack”。
在“任務(wù)”選項(xiàng)卡下找到 Azure Stack 環(huán)境。
選擇 Azure Stack 終結(jié)點(diǎn)的訂閱。
將 Azure Stack Web 應(yīng)用名稱設(shè)置為應(yīng)用服務(wù)名稱。
選擇“Azure Stack 代理”。
在“部署 Azure 應(yīng)用服務(wù)”部分下,為環(huán)境選擇有效的包或文件夾。 選擇文件夾位置旁邊的“確定”。
在“變量”選項(xiàng)卡下添加名為 VSTS\_ARM\_REST\_IGNORE\_SSL\_ERRORS
的變量,將其值設(shè)置為 true,將范圍設(shè)置為 Azure Stack。
選擇兩個(gè)項(xiàng)目中的“持續(xù)”部署觸發(fā)器圖標(biāo),并啟用“持續(xù)”部署觸發(fā)器。
選擇 Azure Stack 環(huán)境中的“部署前”條件圖標(biāo),并將觸發(fā)器設(shè)置為“發(fā)布后”。
保存所有更改。
備注
任務(wù)的某些設(shè)置可能已在從模板創(chuàng)建發(fā)布定義時(shí)自動(dòng)定義為環(huán)境變量。 無(wú)法在任務(wù)設(shè)置中修改這些設(shè)置;必須選擇父環(huán)境項(xiàng)才能編輯這些設(shè)置。
通過(guò)創(chuàng)建終結(jié)點(diǎn),Azure DevOps Services 生成可以將 Azure 服務(wù)應(yīng)用部署到 Azure Stack Hub。 Azure Pipelines 會(huì)連接到生成代理,而后者會(huì)連接到 Azure Stack Hub。
登錄到 Azure DevOps Services 并轉(zhuǎn)到“應(yīng)用設(shè)置”頁(yè)。
在“設(shè)置”中,選擇“安全性”。
在“VSTS 組”中,選擇“終結(jié)點(diǎn)創(chuàng)建者”。
在“成員”選項(xiàng)卡上,選擇“添加”。
在“添加用戶和組”中輸入用戶名,然后從用戶列表中選擇該用戶。
選擇“保存更改”。
在“VSTS 組”列表中,選擇“終結(jié)點(diǎn)管理員”。
在“成員”選項(xiàng)卡上,選擇“添加”。
在“添加用戶和組”中輸入用戶名,然后從用戶列表中選擇該用戶。
選擇“保存更改”。
獲取終結(jié)點(diǎn)信息后,可以使用 Azure Pipelines 到 Azure Stack Hub 的連接。 Azure Stack Hub 中的生成代理從 Azure Pipelines 獲取指令,然后該代理會(huì)傳達(dá)終結(jié)點(diǎn)信息以與 Azure Stack Hub 進(jìn)行通信。
備注
需要在 Azure Stack Hub 上創(chuàng)建適當(dāng)?shù)暮铣捎诚裼糜谶\(yùn)行 Windows Server 和 SQL,并需要部署應(yīng)用服務(wù)。 有關(guān)詳細(xì)信息,請(qǐng)參閱在 Azure Stack Hub 上部署應(yīng)用服務(wù)的先決條件。
使用 Azure 資源管理器模板(例如 Azure Repos 中的 Web 應(yīng)用代碼)將內(nèi)容部署到這兩個(gè)云。
使用在 Azure Stack Hub 上擁有項(xiàng)目創(chuàng)建權(quán)限的帳戶登錄到 Azure Repos。
通過(guò)創(chuàng)建默認(rèn) Web 應(yīng)用并將其打開(kāi),克隆存儲(chǔ)庫(kù)。
編輯 WebApplication.csproj 文件:選擇 Runtimeidentifier
,然后添加 win10-x64
。 有關(guān)詳細(xì)信息,請(qǐng)參閱獨(dú)立部署文檔。
使用團(tuán)隊(duì)資源管理器將代碼簽入 Azure Repos。
確認(rèn)應(yīng)用代碼已簽入 Azure Repos。
使用可以創(chuàng)建生成定義的帳戶登錄到 Azure Pipelines。
轉(zhuǎn)到該項(xiàng)目的“生成 Web 應(yīng)用”頁(yè)。
在“參數(shù)”中,添加“-r win10-x64”代碼 。 使用 .NET Core 觸發(fā)獨(dú)立部署時(shí)需要此添加內(nèi)容。
運(yùn)行生成。 獨(dú)立部署生成過(guò)程將發(fā)布可在 Azure 和 Azure Stack Hub 上運(yùn)行的生成工件。
在 Azure Pipelines 中使用托管生成代理是生成和部署 Web 應(yīng)用的便捷做法。 維護(hù)和升級(jí)由 Microsoft Azure 自動(dòng)完成,從而實(shí)現(xiàn)了連續(xù)不斷的開(kāi)發(fā)周期。
Azure Pipelines 和 Azure DevOps Services 提供可配置度和可管理度高的管道,用于在多個(gè)環(huán)境中進(jìn)行發(fā)布,例如開(kāi)發(fā)、暫存、質(zhì)量保證 (QA) 和生產(chǎn)環(huán)境。 此過(guò)程可能包括在應(yīng)用生命周期的特定階段需要審批。
創(chuàng)建發(fā)布定義是應(yīng)用生成過(guò)程中的最后一步。 此發(fā)布定義用于創(chuàng)建發(fā)布和部署生成。
登錄到 Azure Pipelines 并轉(zhuǎn)到該項(xiàng)目的“生成和發(fā)布”。
在“發(fā)布”選項(xiàng)卡上,選擇“[+]”,然后選擇“創(chuàng)建發(fā)布定義” 。
在“選擇模板”上,選擇“Azure 應(yīng)用服務(wù)部署”,然后選擇“應(yīng)用” 。
在“添加生成工件”上,從“源(生成定義)”中選擇 Azure 云生成應(yīng)用 。
在“管道”選項(xiàng)卡上,選擇“查看環(huán)境任務(wù)”的“1 階段”、“1 任務(wù)”鏈接 。
在“任務(wù)”選項(xiàng)卡上,輸入“Azure”作為“環(huán)境名稱”,然后從“Azure 訂閱”列表中選擇“AzureCloud Traders-Web EP” 。
輸入 Azure 應(yīng)用服務(wù)名稱,在下一個(gè)屏幕截圖中為 northwindtraders
。
對(duì)于代理階段,從“代理隊(duì)列”列表中選擇“Hosted VS2017” 。
在“部署 Azure 應(yīng)用服務(wù)”中,為環(huán)境選擇有效的包或文件夾 。
在“選擇文件或文件夾”中,選擇“位置”下的“確定” 。
保存所有更改,然后返回“管道”。
在“管道”選項(xiàng)卡上,選擇“添加生成工件”,然后從“源(生成定義)”列表中選擇“NorthwindCloud Traders-Vessel” 。
在“選擇模板”上,添加另一個(gè)環(huán)境。 選擇“Azure 應(yīng)用服務(wù)部署”,然后選擇“應(yīng)用” 。
輸入 Azure Stack Hub
作為“環(huán)境名稱”。
在“任務(wù)”選項(xiàng)卡上,找到并選擇“Azure Stack Hub”。
在“Azure 訂閱”列表中,為 Azure Stack Hub 終結(jié)點(diǎn)選擇“AzureStack Traders-Vessel EP” 。
輸入 Azure Stack Hub Web 應(yīng)用名稱作為應(yīng)用服務(wù)名稱。
在“代理選擇”下,從“代理隊(duì)列”列表中選擇“AzureStack -b Douglas Fir” 。
對(duì)于“部署 Azure 應(yīng)用服務(wù)”,為環(huán)境選擇有效的程序或文件夾 。 在“選擇文件或文件夾”上,在文件夾“位置”中選擇“確定” 。
在“變量”選項(xiàng)卡上,找到名為 VSTS\_ARM\_REST\_IGNORE\_SSL\_ERRORS
的變量。 將變量值設(shè)置為“true”,并將其范圍設(shè)置為“Azure Stack Hub” 。
在“管道”選項(xiàng)卡上,選擇 NorthwindCloud Traders-Web 項(xiàng)目對(duì)應(yīng)的“持續(xù)部署觸發(fā)器”圖標(biāo),然后將“持續(xù)部署觸發(fā)器”設(shè)置為“啟用”。 對(duì)“NorthwindCloud Traders-Vessel”生成工件執(zhí)行相同的操作。
對(duì)于 Azure Stack Hub 環(huán)境,選擇“部署前的條件”圖標(biāo),將觸發(fā)器設(shè)置為“發(fā)布后” 。
保存所有更改。
備注
根據(jù)模板創(chuàng)建發(fā)布定義時(shí),發(fā)布任務(wù)的某些設(shè)置會(huì)自動(dòng)定義為環(huán)境變量。 這些設(shè)置不能在任務(wù)設(shè)置中進(jìn)行修改,但可以在父環(huán)境項(xiàng)中進(jìn)行修改。
在“管道”選項(xiàng)卡上,打開(kāi)“發(fā)布”列表,然后選擇“創(chuàng)建發(fā)布” 。
輸入發(fā)布說(shuō)明,檢查是否選擇了正確的生成工件,然后選擇“創(chuàng)建”。 幾分鐘后,會(huì)顯示一個(gè)橫幅,指示已創(chuàng)建新發(fā)布,發(fā)布名稱顯示為鏈接。 選擇該鏈接以查看“發(fā)布摘要”頁(yè)。
“發(fā)布摘要”頁(yè)顯示有關(guān)發(fā)布的詳細(xì)信息。 在下面的針對(duì)“Release-2”的屏幕捕獲中,“環(huán)境”部分顯示 Azure 的“部署狀態(tài)”為“正在進(jìn)行”,Azure Stack Hub 的狀態(tài)為“成功” 。 當(dāng) Azure 環(huán)境的部署狀態(tài)更改為“成功”時(shí),將顯示一個(gè)橫幅,指示發(fā)布已準(zhǔn)備好進(jìn)行審批。 部署掛起或失敗時(shí),將顯示藍(lán)色 (i) 信息圖標(biāo)。 將鼠標(biāo)懸停在該圖標(biāo)上,可查看包含延遲或失敗原因的彈出窗口。
其他視圖(如發(fā)布列表)也會(huì)顯示一個(gè)圖標(biāo),指示審批處于掛起狀態(tài)。 該圖標(biāo)的彈出窗口顯示環(huán)境名稱以及與部署相關(guān)的更多詳細(xì)信息。 管理員可以輕松查看發(fā)布的總體進(jìn)度以及哪些發(fā)布正在等待審批。
在“發(fā)布-2”摘要頁(yè)上,選擇“日志” 。 在部署期間,此頁(yè)顯示來(lái)自代理的實(shí)時(shí)日志。 左窗格顯示部署中每個(gè)環(huán)境對(duì)應(yīng)的每個(gè)操作的狀態(tài)。
在“操作”列中選擇“人員”圖標(biāo)以進(jìn)行部署前或部署后審批,以查看批準(zhǔn)(或拒絕)部署的人員以及他們提供的消息。
部署完成后,整個(gè)日志文件將顯示在右窗格中。 在左窗格中選擇任何“步驟”以查看單個(gè)步驟(如初始化作業(yè))的日志文件 。 借助查看單個(gè)日志的功能,我們可以更輕松地跟蹤和調(diào)試整個(gè)部署的各個(gè)部分。 將日志文件保存為一個(gè)步驟,或?qū)⑺腥罩鞠螺d為 zip 。
打開(kāi)“摘要”選項(xiàng)卡以查看有關(guān)發(fā)布的一般信息。 此視圖顯示有關(guān)生成、部署到的環(huán)境、部署狀態(tài)的詳細(xì)信息以及有關(guān)發(fā)布的其他信息。
選擇環(huán)境鏈接(Azure 或 Azure Stack Hub)以查看有關(guān)針對(duì)特定環(huán)境的現(xiàn)有和待定部署的信息 。 使用這些視圖可以快速檢查是否在兩個(gè)環(huán)境中部署了相同的生成。
在瀏覽器中打開(kāi)部署的生產(chǎn)應(yīng)用。 例如,對(duì)于 Azure 應(yīng)用服務(wù)網(wǎng)站,打開(kāi) URL https://[your-app-name\].azurewebsites.net
。
靈活可靠的多云服務(wù)提供數(shù)據(jù)安全性、備份和冗余、一致且快速的可用性、可縮放的存儲(chǔ)和分發(fā),以及異地兼容的路由。 此手動(dòng)觸發(fā)過(guò)程可確保在托管 Web 應(yīng)用之間可靠、高效地進(jìn)行負(fù)載切換,并可立即提供重要數(shù)據(jù)。