基礎結構即程式碼
在生產案例中,使用 Resource Manager 範本建立 Azure Service Fabric 叢集。 Resource Manager 範本可提供更好的資源屬性控制,並可確保您擁有一致的資源模型。
您可以在 GitHub 上的 Azure 範例中取得可供 Windows 和 Linux 使用的 Resource Manager 範本範例。 這些範本可以用作叢集範本的起點。 下載 azuredeploy.json
和 azuredeploy.parameters.json
,並編輯它們以符合您的自訂需求。
注意
建議您使用 Azure Az PowerShell 模組來與 Azure 互動。 若要開始使用,請參閱安裝 Azure PowerShell (部分機器翻譯)。 若要了解如何移轉至 Az PowerShell 模組,請參閱將 Azure PowerShell 從 AzureRM 移轉至 Az。
若要部署您在上面下載的 azuredeploy.json
和 azuredeploy.parameters.json
範例,請使用下列 Azure CLI 命令:
ResourceGroupName="sfclustergroup"
Location="westus"
az group create --name $ResourceGroupName --location $Location
az deployment group create --name $ResourceGroupName --template-file azuredeploy.json --parameters @azuredeploy.parameters.json
使用 PowerShell 建立資源
$ResourceGroupName="sfclustergroup"
$Location="westus"
$Template="azuredeploy.json"
$Parameters="azuredeploy.parameters.json"
New-AzResourceGroup -Name $ResourceGroupName -Location $Location
New-AzResourceGroupDeployment -Name $ResourceGroupName -TemplateFile $Template -TemplateParameterFile $Parameters
Service Fabric 資源
您可以透過 Azure Resource Manager 將應用程式和服務部署到 Service Fabric 叢集。 請參閱將應用程式和服務視為 Azure Resource Manager 資源進行管理了解詳細資訊。 以下是在 Resource Manager 範本資源中包含 Service Fabric 應用程式特定資源的最佳做法。
{
"apiVersion": "2019-03-01",
"type": "Microsoft.ServiceFabric/clusters/applicationTypes",
"name": "[concat(parameters('clusterName'), '/', parameters('applicationTypeName'))]",
"location": "[variables('clusterLocation')]",
},
{
"apiVersion": "2019-03-01",
"type": "Microsoft.ServiceFabric/clusters/applicationTypes/versions",
"name": "[concat(parameters('clusterName'), '/', parameters('applicationTypeName'), '/', parameters('applicationTypeVersion'))]",
"location": "[variables('clusterLocation')]",
},
{
"apiVersion": "2019-03-01",
"type": "Microsoft.ServiceFabric/clusters/applications",
"name": "[concat(parameters('clusterName'), '/', parameters('applicationName'))]",
"location": "[variables('clusterLocation')]",
},
{
"apiVersion": "2019-03-01",
"type": "Microsoft.ServiceFabric/clusters/applications/services",
"name": "[concat(parameters('clusterName'), '/', parameters('applicationName'), '/', parameters('serviceName'))]",
"location": "[variables('clusterLocation')]"
}
若要 Azure Resource Manager 部署您的應用程式,必須先建立 sfpkg Service Fabric 應用程式封裝。 以下 Python 指令碼為示範如何建立 sfpkg 的範例:
# Create SFPKG that needs to be uploaded to Azure Storage Blob Container
microservices_sfpkg = zipfile.ZipFile(
self.microservices_app_package_name, 'w', zipfile.ZIP_DEFLATED)
package_length = len(self.microservices_app_package_path)
for root, dirs, files in os.walk(self.microservices_app_package_path):
root_folder = root[package_length:]
for file in files:
microservices_sfpkg.write(os.path.join(
root, file), os.path.join(root_folder, file))
microservices_sfpkg.close()
虛擬機器 OS 自動升級設定
升級虛擬機器是使用者起始的作業,建議您為 Service Fabric 叢集節點修補程式管理啟用虛擬機器擴展集自動映射升級。 修補程式協調流程應用程式 (POA) 是適用於非 Azure 託管叢集的替代方案。 雖然 POA 可在 Azure 中使用,但裝載它需要更多管理,而不只是啟用擴展集的自動 OS 映射升級。 以下是虛擬機器擴展集 Resource Manager 範本內容,可讓您 automtic OS 升級:
"upgradePolicy": {
"mode": "Automatic",
"automaticOSUpgradePolicy": {
"enableAutomaticOSUpgrade": true,
"disableAutomaticRollback": false
}
},
搭配 Service Fabric 使用自動 OS 升級時,新的 OS 映像會一次推出一個更新網域,以維持 Service Fabric 中執行之服務的高可用性。 若要在 Service Fabric 中利用自動 OS 升級,您的叢集必須設定為使用銀級耐久性層或更高。
請確定下列登錄機碼設定為 false,以防止 windows 主機電腦起始不協調更新:HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU。
設定下列虛擬機器擴展集範本屬性以停用 Windows Update:
"osProfile": {
"computerNamePrefix": "{vmss-name}",
"adminUsername": "{your-username}",
"secrets": [],
"windowsConfiguration": {
"provisionVMAgent": true,
"enableAutomaticUpdates": false
}
},
Service Fabric 叢集升級設定
以下是可啟用自動升級的 Service Fabric 叢集範本屬性:
"upgradeMode": "Automatic",
若要手動升級您的叢集,請將 cab/deb 散發套件下載到叢集虛擬機器,然後再叫用下列 PowerShell:
Copy-ServiceFabricClusterPackage -Code -CodePackagePath <"local_VM_path_to_msi"> -CodePackagePathInImageStore ServiceFabric.msi -ImageStoreConnectionString "fabric:ImageStore"
Register-ServiceFabricClusterPackage -Code -CodePackagePath "ServiceFabric.msi"
Start-ServiceFabricClusterUpgrade -Code -CodePackageVersion <"msi_code_version">
下一步
- 在執行 Windows Server 的 VM 或電腦上建立叢集: 建立適用於 Windows Server 的 Service Fabric 叢集
- 在 VM 或執行 Linux 的電腦上建立叢集:建立 Linux 叢集
- 了解 Service Fabric 支援選項