Infrastruktur som kod

I ett produktionsscenario skapar du Azure Service Fabric-kluster med hjälp av Resource Manager mallar. Resource Manager mallar ger bättre 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.

Anteckning

Vi rekommenderar att du använder Azure Az PowerShell-modulen för att interagera med Azure. Se Installera Azure PowerShell för att komma igång. 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 azuredeploy.json mallarna 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 Hjälp av 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 till 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()

Konfiguration av automatisk uppgradering av operativsystem för virtuell dator

Att uppgradera dina virtuella datorer är en användarinitierad åtgärd, och vi rekommenderar att du aktiverar automatiska avbildningsuppgraderingar 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äver värdhantering mer hantering än att bara aktivera automatiska uppgraderingar av os-avbildningar för skalningsuppsättningar. Följande är vm-skalningsuppsättningen Resource Manager mallegenskaper 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 att använda silverhållbarhetsnivån eller högre.

Se till 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
        }
      },

Konfiguration av uppgradering av Service Fabric-kluster

Följande är egenskapen för Service Fabric-klustermallen 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