Dela via


Infrastruktur som kod

I ett produktionsscenario skapar du Azure Service Fabric-kluster med hjälp av Resource Manager-mallar. Resource Manager-mallar ger större kontroll över resursegenskaper och ser till att du har en konsekvent resursmodell.

Exempel på Resource Manager-mallar är tillgängliga för Windows och Linux i Azure-exemplen på GitHub. Dessa mallar kan användas som utgångspunkt för klustermallen. Ladda ned azuredeploy.json och azuredeploy.parameters.json redigera dem för att uppfylla dina anpassade krav.

Kommentar

Vi rekommenderar att du använder Azure Az PowerShell-modulen för att interagera med Azure. Information om hur du kommer igång finns i Installera Azure PowerShell. Information om hur du migrerar till Az PowerShell-modulen finns i artikeln om att migrera Azure PowerShell från AzureRM till Az.

Om du vill distribuera mallarna azuredeploy.json och azuredeploy.parameters.json som du laddade ned ovan använder du följande Azure CLI-kommandon:

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

Skapa en resurs med 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-resurser

Du kan distribuera program och tjänster på ditt Service Fabric-kluster via Azure Resource Manager. Mer information finns i Hantera program och tjänster som Azure Resource Manager-resurser . Följande är bästa praxis för service fabric-programspecifika resurser som ska ingå i dina Resource Manager-mallresurser.

{
    "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')]"
}

Om du vill distribuera ditt program med Azure Resource Manager måste du först skapa ett sfpkg Service Fabric-programpaket. Följande Python-skript är ett exempel på hur du skapar en 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()

Automatisk uppgraderingskonfiguration för operativsystem för virtuell dator

Att uppgradera dina virtuella datorer är en användarinitierad åtgärd, och vi rekommenderar att du aktiverar automatiska avbildningsuppgraderingar av vm-skalningsuppsättningar för service fabric-klusternodens korrigeringshantering . Patch Orchestration Application (POA) är en alternativ lösning som är avsedd för icke-Azure-värdbaserade kluster. Även om POA kan användas i Azure krävs mer hantering än att bara aktivera skalningsuppsättningens automatiska uppgraderingar av os-avbildningar. Följande är mallegenskaperna för vm-skalningsuppsättningen Resource Manager för att aktivera automtiska OS-uppgraderingar:

"upgradePolicy": {
   "mode": "Automatic",
   "automaticOSUpgradePolicy": {
        "enableAutomaticOSUpgrade": true,
        "disableAutomaticRollback": false
    }
},

När du använder automatiska OS-uppgraderingar med Service Fabric distribueras den nya OS-avbildningen en uppdateringsdomän i taget för att upprätthålla hög tillgänglighet för de tjänster som körs i Service Fabric. Om du vill använda automatiska OS-uppgraderingar i Service Fabric måste klustret konfigureras för att använda silverhållbarhetsnivån eller högre.

Kontrollera att följande registernyckel är inställd på false för att förhindra att windows-värddatorerna initierar okoordinerade uppdateringar: HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU.

Ange följande mallegenskaper för vm-skalningsuppsättningar för att inaktivera Windows Update:

"osProfile": {
        "computerNamePrefix": "{vmss-name}",
        "adminUsername": "{your-username}",
        "secrets": [],
        "windowsConfiguration": {
          "provisionVMAgent": true,
          "enableAutomaticUpdates": false
        }
      },

Uppgraderingskonfiguration för Service Fabric-kluster

Följande är mallegenskapen för Service Fabric-kluster för att aktivera automatisk uppgradering:

"upgradeMode": "Automatic",

Om du vill uppgradera klustret manuellt laddar du ned cab/deb-distributionen till en virtuell klusterdator och anropar sedan följande 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">

Nästa steg