備註
本文件涵蓋以統一協調流程模式執行的虛擬機器擴展集。 我們建議針對新的工作負載使用彈性協調流程。 如需詳細資訊,請參閱 Azure 中虛擬機器擴展集的協調流程模式。
若要在擴展集的虛擬機器 (VM) 執行個體上執行應用程式,您需要先安裝應用程式元件和必要的檔案。 本文介紹如何在擴展集中建置實例的自定義 VM 映射,或自動在現有的 VM 實例上執行安裝腳本。 您也會瞭解如何跨擴展集管理應用程式或 OS 更新。
使用 VM 應用程式安裝應用程式
Azure VM 應用程式 提供簡化、可調整且安全的方法來封裝、管理及部署跨 Azure 虛擬機 (VM)、虛擬機擴展集 (VMSS) 的應用程式。 VM 應用程式是跨 Azure 部署工具、代理程式、AI Apps、安全性元件和企業營運應用程式的最佳方法。 其設計目的是在 Azure VM 上部署 AI、安全、高規模、低延遲和相容的工作負載。
主要優點:
-
集中式和彈性的應用程式管理:
- 套件一次,部署隨處:封裝 ZIP、MSI 或 EXE 格式的應用程式,並在 Azure 計算資源庫中集中管理應用程式。
- 版本控制:維護多個版本的應用程式,讓小組視需要部署最新版或特定版本。
-
無縫共用和訪問控制
- Tenant-Wide 共享:在團隊內部或整個組織(租戶)中共享應用程式。
- 整合式 RBAC:使用 Azure Role-Based 存取控制 (RBAC) 來控制發佈和部署存取。
-
可靠且可自定義的部署
- 個別應用程控:獨立安裝、更新或刪除應用程式,不需要重建 VM 映射。
- 可自定義的作業:自定義應用程式的安裝、更新和刪除作業,包括重新啟動處理。
- Built-In 失敗處理:將 VM 應用程式失敗與 VM 失敗關聯,以確保部署具有復原能力。
-
可擴展和 Low-Latency 分配
- 全域和 Intra-Region 複寫:自動跨區域和區域內復寫應用程式,以減少延遲並改善復原能力,不需要 AzCopy 或手動傳輸。
- 針對 High-Scale 案例優化:即使在大規模部署期間,也能達到低建立延遲。
-
依設計保護及符合規範
- 原則驅動強制執行:使用 Azure 原則在您的資源中強制應用程式的存在和設定。
- 安全部署:避免以因特網為基礎的下載和複雜的私人鏈接設定,非常適合鎖定的環境。
-
廣泛平台支援
- 虛擬機器和擴展集:部署至個別虛擬機器、彈性擴展集,或提供完整支援的統一擴展集。
- 區塊 Blob 支援:使用 Azure 區塊 Blob 有效率地處理大型應用程式套件,以進行區塊上傳和背景串流。
建立和部署 VM 應用程式
建置自定義 VM 映像
當您使用其中一個 Azure 平臺映像在擴展集中建立實例時,不會安裝或設定任何其他軟體。 您可以將這些元件的安裝自動化,但這會增加將 VM 實例布建至擴展集所需的時間。 如果您將許多組態變更套用至 VM 實例,這些組態腳本和工作會有管理額外負荷。
若要減少設定管理和布建 VM 的時間,您可以建立自訂 VM 映射,以在擴展集中佈建實例後立即執行您的應用程式。 如需如何建立和使用自訂 VM 映像與規模集的詳細資訊,請參閱下列教學課程:
使用自訂腳本擴充功能安裝應用程式
自訂指令碼擴充功能會在 Azure VM 上下載並執行指令碼。 此擴充功能適用於部署後組態、軟體安裝或其他任何組態/管理工作。 您可以從 Azure 儲存體或 GitHub 下載指令碼,或是在擴充功能執行階段將指令碼提供給 Azure 入口網站。 如需如何使用自定義腳本擴充功能安裝應用程式的詳細資訊,請參閱下列教學課程:
使用 PowerShell DSC 將應用程式安裝至 Windows VM
PowerShell 預期狀態設定 (DSC) 是定義目標機器設定的管理平臺。 DSC 設定會定義要安裝在機器上的內容,以及如何設定主機。 本機組態管理員(LCM)引擎會在每個目標節點上執行,以處理推送的組態中要求的動作。
PowerShell DSC 擴充功能可讓您在規模化集中使用 PowerShell 自定義 VM 實例。 下列範例:
- 指示 VM 實例從 GitHub 下載 DSC 套件 - https://github.com/Azure-Samples/compute-automation-configurations/raw/master/dsc.zip
- 設定擴充功能以運行安裝腳本 -
configure-http.ps1 - 使用 Get-AzVmss 取得規模集的相關資訊
- 使用 Update-AzVmss 將擴充功能套用至 VM 實例
DSC 擴充功能會套用至名為 myResourceGroup 的資源群組中的 myScaleSet VM 實例。 輸入您自己的名稱,如下所示:
# Define the script for your Desired Configuration to download and run
$dscConfig = @{
"wmfVersion" = "latest";
"configuration" = @{
"url" = "https://github.com/Azure-Samples/compute-automation-configurations/raw/master/dsc.zip";
"script" = "configure-http.ps1";
"function" = "WebsiteTest";
};
}
# Get information about the scale set
$vmss = Get-AzVmss `
-ResourceGroupName "myResourceGroup" `
-VMScaleSetName "myScaleSet"
# Add the Desired State Configuration extension to install IIS and configure basic website
$vmss = Add-AzVmssExtension `
-VirtualMachineScaleSet $vmss `
-Publisher Microsoft.Powershell `
-Type DSC `
-TypeHandlerVersion 2.24 `
-Name "DSC" `
-Setting $dscConfig
# Update the scale set and apply the Desired State Configuration extension to the VM instances
Update-AzVmss `
-ResourceGroupName "myResourceGroup" `
-Name "myScaleSet" `
-VirtualMachineScaleSet $vmss
如果擴展集上的升級原則為 手動,請使用 Update-AzVmssInstance 更新 VM 實例。 此 Cmdlet 會將更新的擴展集組態套用至 VM 實例,並安裝您的應用程式。
使用 cloud-init 將應用程式安裝至 Linux VM
Cloud-init (英文) 是在 Linux VM 初次開機時,廣泛用來自訂它們的方法。 您可以使用 cloud-init 來安裝封裝和寫入檔案,或者設定使用者和安全性。 當 cloud-init 在初次開機程序期間執行時,不需要使用任何額外的步驟或必要的代理程式來套用您的設定。
Cloud-init 也適用於散發套件。 例如,您不使用 apt-get install 或 yum install 來安裝套件。 您可以改為定義要安裝的套件清單。 Cloud-init 會針對您選取的散發套件自動使用原生的套件管理工具。
如需詳細資訊,包括 範例cloud-init.txt 檔案,請參閱 使用 cloud-init 自定義 Azure VM。
若要建立擴展集並使用 cloud-init 檔案,請將 參數新增 --custom-data 至 az vmss create 命令,並指定 cloud-init 檔案的名稱。 下列範例會在 myResourceGroup 中建立名為 myScaleSet 的擴展集,並使用名為 cloud-init.txt的檔案來設定 VM 實例。 輸入您自己的名稱,如下所示:
這很重要
從 2023 年 11 月開始,如果未指定協調流程模式,則使用 PowerShell 和 Azure CLI 建立的虛擬機擴展集預設為彈性協調流程模式。 如需這項變更的詳細資訊,以及您應該採取的動作,請移至 虛擬機器規模設定 PowerShell/CLI 客戶的重大變更 - Microsoft 社群中心
az vmss create \
--resource-group myResourceGroup \
--name myScaleSet \
--image Ubuntu2204 \
-–orchestration-mode uniform \
--upgrade-policy-mode automatic \
--custom-data cloud-init.txt \
--admin-username azureuser \
--generate-ssh-keys
使用 OS 更新安裝應用程式
當有新的 OS 版本可用時,您可以使用或建置新的自定義映像,並將 OS 升級部署到規模設定集。 每個 VM 實例都會升級至您指定的最新映像。 您可以使用自定義映像搭配預安裝的應用程式、自定義腳本擴充功能或 PowerShell DSC,讓應用程式在執行升級時自動可供使用。 執行此程式時,您可能需要規劃應用程式維護,以確保沒有版本相容性問題。
如果您使用自訂的 VM 映像檔搭配預先安裝的應用程式,您可以將應用程式更新與部署管線整合,以建置新的映像檔,並在虛擬機器規模設定中部署 OS 升級。 此方法可讓管道挑選最新的應用程式版本、建立及驗證 VM 映像,然後升級範疇中的 VM 實例。 若要執行部署管線來建置及部署跨自定義 VM 映射的應用程式更新,您可以 建立 Packer 映射並使用 Azure DevOps Services 部署,或使用另一個平臺,例如 Spinnaker 或 Jenkins。
後續步驟
當您建置應用程式並將其部署至擴展集時,您可以檢閱 擴展集設計概觀。 如需如何管理擴展集的詳細資訊,請參閱 使用PowerShell管理擴展集。