Infrastructure als code

Maak in een productiescenario Azure Service Fabric-clusters met behulp van Resource Manager sjablonen. Resource Manager sjablonen bieden meer controle over resource-eigenschappen en zorgen ervoor dat u een consistent resourcemodel hebt.

Voorbeelden Resource Manager sjablonen zijn beschikbaar voor Windows en Linux in de Azure-voorbeelden op GitHub. Deze sjablonen kunnen worden gebruikt als uitgangspunt voor uw clustersjabloon. Download azuredeploy.json en azuredeploy.parameters.json bewerk ze om te voldoen aan uw aangepaste vereisten.

Notitie

U wordt aangeraden de Azure Az PowerShell-module te gebruiken om te communiceren met Azure. Zie Azure PowerShell installeren om aan de slag te gaan. Raadpleeg Azure PowerShell migreren van AzureRM naar Az om te leren hoe u naar de Azure PowerShell-module migreert.

Gebruik de volgende Azure CLI-opdrachten om de azuredeploy.json sjablonen en azuredeploy.parameters.json te implementeren die u hierboven hebt gedownload:

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

Een resource maken met Behulp van 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-resources

U kunt toepassingen en services implementeren in uw Service Fabric-cluster via Azure Resource Manager. Zie Toepassingen en services beheren als Azure Resource Manager-resources voor meer informatie. Hier volgen de aanbevolen service fabric-toepassingsspecifieke resources die u kunt opnemen in uw Resource Manager sjabloonresources.

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

Als u uw toepassing wilt implementeren met behulp van Azure Resource Manager, moet u eerst een sfpkg Service Fabric-toepassingspakket maken. Het volgende Python-script is een voorbeeld van het maken van een 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()

Configuratie van automatische upgrade van besturingssysteem van virtuele machine

Het upgraden van uw virtuele machines is een door de gebruiker geïnitieerde bewerking en het wordt aanbevolen dat u automatische installatiekopieën van virtuele-machineschaalsets inschakelt voor patchbeheer van uw Service Fabric-clusterknooppunt. Patch Orchestration Application (POA) is een alternatieve oplossing die is bedoeld voor niet-Azure-gehoste clusters. Hoewel POA kan worden gebruikt in Azure, vereist het hosten ervan meer beheer dan alleen het inschakelen van automatische upgrades van installatiekopieën van een schaalset. Hier volgen de virtuele-machineschaalsets Resource Manager sjablooneigenschappen om automatische upgrades van het besturingssysteem in te schakelen:

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

Wanneer u automatische upgrades van het besturingssysteem met Service Fabric gebruikt, wordt de nieuwe installatiekopieën van het besturingssysteem één updatedomein tegelijk geïmplementeerd om hoge beschikbaarheid te behouden van de services die in Service Fabric worden uitgevoerd. Als u automatische upgrades van het besturingssysteem in Service Fabric wilt gebruiken, moet uw cluster worden geconfigureerd voor het gebruik van de Silver-duurzaamheidslaag of hoger.

Zorg ervoor dat de volgende registersleutel is ingesteld op false om te voorkomen dat uw Windows-hostcomputers ongecoördineerde updates initiëren: HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU.

Stel de volgende eigenschappen van de virtuele-machineschaalsetsjabloon in om Windows Update uit te schakelen:

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

Configuratie van Service Fabric-clusterupgrade

Hier volgt de sjablooneigenschap Service Fabric-cluster om automatische upgrade in te schakelen:

"upgradeMode": "Automatic",

Als u uw cluster handmatig wilt upgraden, downloadt u de cab/deb-distributie naar een virtuele clustermachine en roept u de volgende PowerShell aan:

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">

Volgende stappen