Inleiding tot automatisch schalen in beheerde Service Fabric-clusters

Automatische schaalaanpassing biedt een grote elasticiteit en maakt het toevoegen of verminderen van knooppunten op aanvraag mogelijk op een secundair knooppunttype. Dit geautomatiseerde en elastische gedrag vermindert de overhead van het beheer en de mogelijke bedrijfsimpact door het aantal knooppunten dat uw workload onderhoudt te bewaken en te optimaliseren. U configureert regels voor uw workload en laat automatische schaalaanpassing de rest afhandelen. Wanneer aan deze gedefinieerde drempelwaarden wordt voldaan, ondernemen regels voor automatische schaalaanpassing actie om de capaciteit van uw knooppunttype aan te passen. Automatisch schalen kan op elk gewenst moment worden ingeschakeld, uitgeschakeld of geconfigureerd. Dit artikel bevat een voorbeeldimplementatie, het in- of uitschakelen van automatisch schalen en het configureren van een voorbeeldbeleid voor automatisch schalen.

Vereisten en ondersteunde metrische gegevens:

  • De apiVersion van de beheerde Service Fabric-clusterresource moet 2022-01-01 of hoger zijn.
  • De cluster-SKU moet Standard zijn.
  • Kan alleen worden geconfigureerd op een secundair knooppunttype in uw cluster.
  • Nadat u automatische schaalaanpassing voor een knooppunttype hebt ingeschakeld, configureert u vmInstanceCount de eigenschap voor -1 bij het opnieuw implementeren van de resource.
  • Alleen gepubliceerde metrische gegevens van Azure Monitor worden ondersteund.

Notitie

Als u een installatiekopie van het Windows-besturingssysteem gebruikt waarvoor de Hyper-V-rol is ingeschakeld, dat wil doen. de VM wordt geconfigureerd voor geneste virtualisatie. De metrische gegevens over beschikbaar geheugen zijn niet beschikbaar, omdat het dynamische geheugenstuurprogramma in de VM de status Gestopt heeft.

Een veelvoorkomend scenario waarbij automatisch schalen handig is, is wanneer de belasting van een bepaalde service in de loop van de tijd varieert. Een service zoals een gateway kan bijvoorbeeld worden geschaald op basis van de hoeveelheid resources die nodig zijn om binnenkomende aanvragen te verwerken. Laten we eens kijken naar een voorbeeld van hoe deze schaalregels eruit kunnen zien. We gebruiken ze verderop in het artikel:

  • Als alle exemplaren van mijn gateway gemiddeld meer dan 70% gebruiken, schaalt u de gatewayservice uit door twee extra exemplaren toe te voegen. Doe dit elke 30 minuten, maar u hebt in totaal nooit meer dan twintig exemplaren.
  • Als alle exemplaren van mijn gateway gemiddeld minder dan 40% kerngeheugens gebruiken, schaalt u de service in door één exemplaar te verwijderen. Doe dit elke 30 minuten, maar u hebt nooit minder dan drie exemplaren in totaal.

Voorbeeld van implementatie van automatische schaalaanpassing

In dit voorbeeld wordt het volgende uitgelegd:

  • Het maken van een Standard SKU Service Fabric beheerd cluster met twee knooppunttypen, NT1 en NT2 standaard.
  • Regels voor automatisch schalen toevoegen aan het secundaire knooppunttype, NT2.

Notitie

Automatische schaalaanpassing van het knooppunttype wordt uitgevoerd op basis van de metrische gegevens van de VMSS CPU-host van het beheerde cluster. VMSS-resource wordt automatisch opgelost in de sjabloon.

Het volgende leidt u stap voor stap door het instellen van een cluster met automatische schaalaanpassing geconfigureerd.

  1. Resourcegroep maken in een regio

    Login-AzAccount
    Select-AzSubscription -SubscriptionId $subscriptionid
    New-AzResourceGroup -Name $myresourcegroup -Location $location
    
  2. Clusterresource maken

    Download dit voorbeeld van een standard-SKU beheerd service fabric-cluster Voer deze opdracht uit om de clusterresource te implementeren:

    $parameters = @{ 
    clusterName = $clusterName
    adminPassword = $VmAdminPassword
    clientCertificateThumbprint = $clientCertificateThumbprint
    } 
    New-AzResourceGroupDeployment -Name "deploy_cluster" -ResourceGroupName $resourceGroupName -TemplateFile .\azuredeploy.json -TemplateParameterObject $parameters -Verbose
    
  3. Regels voor automatische schaalaanpassing configureren en inschakelen op een secundair knooppunttype

    Download de voorbeeldsjabloon voor automatische schaalaanpassing van beheerde clusters die u gaat gebruiken om automatisch schalen te configureren met de volgende opdrachten:

    $parameters = @{ 
    clusterName = $clusterName
    }
    New-AzResourceGroupDeployment -Name "deploy_autoscale" -ResourceGroupName $resourceGroupName -TemplateFile .\sfmc-deploy-autoscale.json -TemplateParameterObject $parameters -Verbose 
    

Notitie

Nadat deze implementatie is voltooid, moeten toekomstige implementaties van clusterresources de vmInstanceCount eigenschap -1 instellen op secundaire knooppunttypen waarvoor regels voor automatisch schalen zijn ingeschakeld. Dit zorgt ervoor dat clusterimplementaties niet conflicteren met automatische schaalaanpassing.

Automatisch schalen in- of uitschakelen op een secundair knooppunttype

Knooppunttypen die zijn geïmplementeerd door een beheerd Service Fabric-cluster, maken automatisch schalen niet standaard mogelijk. Automatisch schalen kan op elk gewenst moment worden in- of uitgeschakeld, per knooppunttype dat is geconfigureerd en beschikbaar.

Als u deze functie wilt inschakelen, configureert u de enabled eigenschap onder het type Microsoft.Insights/autoscaleSettings in een ARM-sjabloon, zoals hieronder wordt weergegeven:

    "resources": [
            {
            "type": "Microsoft.Insights/autoscaleSettings",
            "apiVersion": "2015-04-01",
            "name": "[concat(parameters('clusterName'), '-', parameters('nodeType2Name'))]",
            "location": "[resourceGroup().location]",
            "properties": {
                "name": "[concat(parameters('clusterName'), '-', parameters('nodeType2Name'))]",
                "targetResourceUri": "[concat('/subscriptions/', subscription().subscriptionId, '/resourceGroups/',  resourceGroup().name, '/providers/Microsoft.ServiceFabric/managedclusters/', parameters('clusterName'), '/nodetypes/', parameters('nodeType2Name'))]",
                "enabled": true,
            ...

Als u automatisch schalen wilt uitschakelen, stelt u de waarde in op false

Regels voor automatisch schalen verwijderen

Als u de instellingen voor beleid voor automatisch schalen voor een knooppunttype wilt verwijderen, kunt u de volgende PowerShell-opdracht uitvoeren.

Remove-AzResource -ResourceId "/subscriptions/$subscriptionId/resourceGroups/$resourceGroup/providers/microsoft.insights/autoscalesettings/$name" -Force

Beleid instellen voor automatisch schalen

Een beheerd Service Fabric-cluster configureert standaard geen beleid voor automatisch schalen . Beleid voor automatisch schalen moet worden geconfigureerd om ervoor te zorgen dat schaalacties worden uitgevoerd op de onderliggende resources.

In het volgende voorbeeld wordt een beleid ingesteld voor nodeType2Name ten minste 3 knooppunten, maar kan omhoog worden geschaald naar 20 knooppunten. Er wordt omhoog schalen geactiveerd wanneer het gemiddelde CPU-gebruik gedurende de afgelopen 30 minuten 70% is met een granulariteit van 1 minuut. Het omlaag schalen wordt geactiveerd zodra het gemiddelde CPU-gebruik de afgelopen 30 minuten onder de 40% is met een granulariteit van 1 minuut.

    "resources": [
            {
            "type": "Microsoft.Insights/autoscaleSettings",
            "apiVersion": "2015-04-01",
            "name": "[concat(parameters('clusterName'), '-', parameters('nodeType2Name'))]",
            "location": "[resourceGroup().location]",
            "properties": {
                "name": "[concat(parameters('clusterName'), '-', parameters('nodeType2Name'))]",
                "targetResourceUri": "[concat('/subscriptions/', subscription().subscriptionId, '/resourceGroups/',  resourceGroup().name, '/providers/Microsoft.ServiceFabric/managedclusters/', parameters('clusterName'), '/nodetypes/', parameters('nodeType2Name'))]",
                "enabled": "[parameters('enableAutoScale')]",
                "profiles": [
                    {
                        "name": "Autoscale by percentage based on CPU usage",
                        "capacity": {
                            "minimum": "3",
                            "maximum": "20",
                            "default": "3"
                        },
                        "rules": [
                            {
                                "metricTrigger": {
                                  "metricName": "Percentage CPU",
                                  "metricNamespace": "",
                                  "metricResourceUri": "[concat('/subscriptions/',subscription().subscriptionId,'/resourceGroups/SFC_', reference(resourceId('Microsoft.ServiceFabric/managedClusters', parameters('clusterName')), '2022-01-01').clusterId,'/providers/Microsoft.Compute/virtualMachineScaleSets/',parameters('nodeType2Name'))]",
                                  "timeGrain": "PT1M",
                                  "statistic": "Average",
                                  "timeWindow": "PT30M",
                                  "timeAggregation": "Average",
                                  "operator": "GreaterThan",
                                  "threshold": 70
                                },
                                "scaleAction": {
                                  "direction": "Increase",
                                  "type": "ChangeCount",
                                  "value": "5",
                                  "cooldown": "PT5M"
                                }
                            },
                            {
                                "metricTrigger": {
                                  "metricName": "Percentage CPU",
                                  "metricNamespace": "",
                                  "metricResourceUri": "[concat('/subscriptions/',subscription().subscriptionId,'/resourceGroups/SFC_', reference(resourceId('Microsoft.ServiceFabric/managedClusters', parameters('clusterName')), '2022-01-01').clusterId,'/providers/Microsoft.Compute/virtualMachineScaleSets/',parameters('nodeType2Name'))]",
                                  "timeGrain": "PT1M",
                                  "statistic": "Average",
                                  "timeWindow": "PT30M",
                                  "timeAggregation": "Average",
                                  "operator": "LessThan",
                                  "threshold": 40
                                },
                                "scaleAction": {
                                  "direction": "Decrease",
                                  "type": "ChangeCount",
                                  "value": "1",
                                  "cooldown": "PT5M"
                                }
                            }
                            ]
                    }
                    ]
                }
            }
        
    ]                           

U kunt deze ARM-sjabloon downloaden om automatisch schalen in te schakelen . Dit voorbeeld bevat het bovenstaande voorbeeld

Geconfigureerde definities van automatische schaalaanpassing van uw beheerde clusterresource weergeven

U kunt geconfigureerde instellingen voor automatisch schalen weergeven met behulp van Azure Resource Explorer.

  1. Ga naar Azure Resource Explorer

  2. Navigeer naar subscriptions ->SubscriptionName ->resource group ->microsoft.insights ->autoscalesettings - Naam> van beleid voor automatisch schalen: bijvoorbeeld . sfmc01-NT2

    U ziet iets dat er ongeveer als volgt uitziet in de navigatiestructuur:

    Voorbeeldstructuurweergave van Azure Resource Explorer

  3. Aan de rechterkant ziet u de volledige definitie van deze instelling voor automatisch schalen.

    In dit voorbeeld wordt automatisch schalen geconfigureerd met een regel voor uitschalen en inschalen op basis van CPU%.

    Details van azure Resource Explorer-voorbeeld van knooppunttype voor automatisch schalen

Problemen oplossen

Houd rekening met het volgende:

  • Gebeurtenissen voor automatisch schalen controleren die worden geactiveerd voor secundaire knooppunttypen van beheerde clusters

    1. Ga naar het activiteitenlogboek van het cluster
    2. Bekijk het activiteitenlogboek voor de voltooide bewerking Automatisch omhoog/omlaag schalen
  • Hoeveel VM's zijn geconfigureerd voor het knooppunttype en vindt de workload plaats op alle vm's of op slechts enkele vm's?

  • Zijn de drempelwaarden voor in- en uitschalen voldoende verschillend?

    Stel dat u een regel instelt om uit te schalen wanneer het gemiddelde CPU in vijf minuten groter is dan 50%, en om in te schalen wanneer het gemiddelde CPU lager is dan 50%. Deze instelling veroorzaakt een 'flapping'-probleem wanneer het CPU-gebruik dicht bij de drempelwaarde ligt, waarbij schaalacties voortdurend toenemen en de grootte van de set verkleinen. Vanwege deze instelling probeert de service voor automatisch schalen 'flapping' te voorkomen, waardoor kan worden gemanifesteerd als niet schalen. Zorg er daarom voor dat de drempelwaarden voor uitschalen en inschalen voldoende verschillen om ruimte tussen het schalen toe te staan.

  • Kunt u een knooppunttype in- of uitschalen? Pas het aantal knooppunten op het niveau van het knooppunttype aan en zorg ervoor dat dit is voltooid. Een knooppunttype schalen in een beheerd cluster

  • Controleer uw Microsoft.ServiceFabric/managedclusters/nodetypes en Microsoft.Insights-resources in Azure Resource Explorer

    Azure Resource Explorer is een onmisbaar hulpprogramma voor probleemoplossing waarmee u de status van uw Azure Resource Manager-resources kunt zien. Klik op uw abonnement en bekijk de resourcegroep die u wilt oplossen. Zoek onder de ServiceFabric/managedclusters/clustername resourceprovider naar NodeTypes knooppunttypen die u hebt gemaakt en controleer de eigenschappen om te valideren of provisioningState is Succeeded. Ga vervolgens naar de resourceprovider Microsoft.Insights onder clustername en controleer of de regels voor automatisch schalen er goed uitzien.

  • Zijn de verzonden metrische waarden zoals verwacht? Get-AzMetric De PowerShell-module gebruiken om de metrische waarden van een resource op te halen en te controleren

Als u deze stappen hebt doorlopen en nog steeds problemen ondervindt met automatisch schalen, kunt u de volgende resources proberen: Een ondersteuningsaanvraag indienen. Wees voorbereid op het delen van de sjabloon en een weergave van uw prestatiegegevens.

Volgende stappen