Delen via


Een cluster in- of uitschalen

Waarschuwing

Lees deze sectie voordat u schaalt

Het schalen van rekenresources om de werkbelasting van uw toepassing te bronen, vereist opzettelijke planning, duurt bijna altijd langer dan een uur om een productieomgeving te voltooien en vereist wel dat u inzicht krijgt in uw workload en bedrijfscontext; als u deze activiteit nog nooit eerder hebt uitgevoerd, is het raadzaam eerst overwegingen voor capaciteitsplanning van Service Fabric-clusters te lezen en te begrijpen voordat u verdergaat met de rest van dit document. Deze aanbeveling is om onbedoelde LiveSite-problemen te voorkomen en het wordt ook aanbevolen om de bewerkingen die u wilt uitvoeren te testen op een niet-productieomgeving. U kunt op elk gewenst moment productieproblemen melden of betaalde ondersteuning voor Azure aanvragen. Voor technici die zijn toegewezen om deze bewerkingen uit te voeren die over de juiste context beschikken, worden in dit artikel schaalbewerkingen beschreven, maar u moet beslissen welke bewerkingen geschikt zijn voor uw use-case; zoals welke resources moeten worden geschaald (CPU, opslag, geheugen), welke richting moet worden geschaald (verticaal of horizontaal) en welke bewerkingen moeten worden uitgevoerd (resourcesjabloonimplementatie, portal, PowerShell/CLI).

Notitie

Het wordt aanbevolen 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.

Een Service Fabric-cluster in- of uitschalen met behulp van regels voor automatisch schalen of handmatig

Virtuele-machineschaalsets zijn een Azure-rekenresource die u kunt gebruiken voor het implementeren en beheren van een verzameling virtuele machines als een set. Elk knooppunttype dat is gedefinieerd in een Service Fabric-cluster, wordt ingesteld als een afzonderlijke virtuele-machineschaalset. Elk knooppunttype kan vervolgens onafhankelijk van elkaar worden ingeschaald of uitgeschaald, verschillende sets poorten zijn geopend en kunnen verschillende metrische capaciteitsgegevens hebben. Meer informatie hierover vindt u in het document met Service Fabric-knooppunttypen . Omdat de Service Fabric-knooppunttypen in uw cluster bestaan uit virtuele-machineschaalsets op de back-end, moet u regels voor automatisch schalen instellen voor elk knooppunttype/virtuele-machineschaalset.

Notitie

Uw abonnement moet voldoende kerngeheugens hebben om de nieuwe VM's toe te voegen waaruit dit cluster bestaat. Er is momenteel geen modelvalidatie, dus u krijgt een implementatietijdfout als een van de quotumlimieten wordt bereikt.

Notitie

Als u een Installatiekopie van het Windows-besturingssysteem gebruikt waarvoor de Hyper-V-rol is ingeschakeld, is dit. de VIRTUELE machine wordt geconfigureerd voor geneste virtualisatie. De metrische gegevens over beschikbaar geheugen zijn niet beschikbaar, omdat het dynamische geheugenstuurprogramma binnen de VIRTUELE machine de status Gestopt heeft.

Kies het knooppunttype/virtuele-machineschaalset om te schalen

Op dit moment kunt u de regels voor automatisch schalen voor virtuele-machineschaalsets niet opgeven met behulp van de portal om een Service Fabric-cluster te maken, dus we gebruiken Azure PowerShell (1.0+) om de knooppunttypen weer te geven en vervolgens regels voor automatisch schalen toe te voegen.

Voer de volgende cmdlets uit om de lijst met virtuele-machineschaalsets op te halen waaruit uw cluster bestaat:

Get-AzResource -ResourceGroupName <RGname> -ResourceType Microsoft.Compute/VirtualMachineScaleSets

Get-AzVmss -ResourceGroupName <RGname> -VMScaleSetName <virtual machine scale set name>

Regels voor automatisch schalen instellen voor het knooppunttype/virtuele-machineschaalset

Als uw cluster meerdere knooppunttypen heeft, herhaalt u dit voor elke knooppunttypen/virtuele-machineschaalsets die u wilt schalen (in of uit). Bedenk eerst hoeveel knooppunten u moet hebben, voordat u automatisch schalen instelt. Het minimum aantal knooppunten dat u nodig hebt voor het primaire knooppunttype, wordt bepaald door het betrouwbaarheidsniveau dat u hebt gekozen. Lees meer over betrouwbaarheidsniveaus.

Notitie

Als u het primaire knooppunttype inschaalt naar minder dan het minimumaantal, wordt het cluster instabiel of zelfs omlaaggebracht. Dit kan leiden tot gegevensverlies voor uw toepassingen en voor de systeemservices.

Momenteel wordt de functie voor automatisch schalen niet aangestuurd door de belastingen die uw toepassingen mogelijk rapporteren aan Service Fabric. Op dit moment wordt de automatische schaal die u krijgt, alleen aangestuurd door de prestatiemeteritems die worden verzonden door elk van de instanties van de virtuele-machineschaalset.

Volg deze instructies om automatisch schalen in te stellen voor elke virtuele-machineschaalset.

Notitie

In een schaal in een scenario, tenzij uw knooppunttype een duurzaamheidsniveau van Gold of Silver heeft, moet u de cmdlet Remove-ServiceFabricNodeState aanroepen met de juiste knooppuntnaam. Voor de duurzaamheid van brons is het niet raadzaam om meerdere knooppunten tegelijk in te schalen.

VM's handmatig toevoegen aan een knooppunttype/virtuele-machineschaalset

Wanneer u uitschaalt, voegt u meer instanties van de virtuele machine toe aan de schaalset. Deze instanties worden de knooppunten die door Service Fabric worden gebruikt. Service Fabric weet wanneer er meer exemplaren aan de schaalset zijn toegevoegd (door uitschaling) en reageert daar automatisch op.

Notitie

Het toevoegen van VM's kost tijd, dus verwacht niet dat de toevoegingen onmiddellijk worden toegevoegd. Plan van tevoren capaciteit toe te voegen, zodat de VM-capaciteit langer dan 10 minuten kan worden geplaatst voor de replica's/service-exemplaren.

VM's toevoegen met behulp van een sjabloon

Volg het voorbeeld/de instructies in de galerie met snelstartsjablonen om het aantal VM's in elk knooppunttype te wijzigen.

VM's toevoegen met behulp van PowerShell- of CLI-opdrachten

Met de volgende code verkrijgt u een schaalset op naam en verhoogt u de capaciteit van de schaalset met 1.

$scaleset = Get-AzVmss -ResourceGroupName SFCLUSTERTUTORIALGROUP -VMScaleSetName nt1vm
$scaleset.Sku.Capacity += 1

Update-AzVmss -ResourceGroupName $scaleset.ResourceGroupName -VMScaleSetName $scaleset.Name -VirtualMachineScaleSet $scaleset

Met deze code stelt u de capaciteit in op 6.

# Get the name of the node with
az vmss list-instances -n nt1vm -g sfclustertutorialgroup --query [*].name

# Use the name to scale
az vmss scale -g sfclustertutorialgroup -n nt1vm --new-capacity 6

VM's handmatig verwijderen uit een knooppunttype/virtuele-machineschaalset

Wanneer u inschaalt in een knooppunttype, verwijdert u VM-exemplaren uit de schaalset. Als het knooppunttype Brons duurzaamheidsniveau is, weet Service Fabric niet wat er is gebeurd en meldt dat er een knooppunt ontbreekt. Service Fabric rapporteert daarom een onjuiste status voor het cluster. Als u deze slechte status wilt voorkomen, moet u het knooppunt expliciet uit het cluster verwijderen en de status van het knooppunt verwijderen.

De service fabric-systeemservices worden uitgevoerd in het primaire knooppunttype in uw cluster. Wanneer u in het primaire knooppunttype schaalt, schaalt u nooit het aantal exemplaren in op minder dan wat de betrouwbaarheidslaag rechtvaardigt.

Voor een stateful service hebt u een bepaald aantal knooppunten nodig om altijd de beschikbaarheid te behouden en de status van uw service te behouden. U hebt minimaal het aantal knooppunten nodig dat gelijk is aan het aantal doelreplica's van de partitie/service.

Het Service Fabric-knooppunt verwijderen

De stappen voor het handmatig verwijderen van de knooppuntstatus zijn alleen van toepassing op knooppunttypen met een bronzen duurzaamheidslaag. Voor de duurzaamheidslaag Silver en Gold worden deze stappen automatisch uitgevoerd door het platform. Voor meer informatie over duurzaamheid raadpleegt u Service Fabric cluster capacity planning (Capaciteitsplanning voor Service Fabric-clusters).

Notitie

Houd minimaal vijf knooppunten bij voor elke virtuele-machineschaalset waarvoor het duurzaamheidsniveau Gold of Silver is ingeschakeld. Uw cluster voert de foutstatus in als u onder deze drempelwaarde inschaalt en u de verwijderde knooppunten handmatig moet opschonen.

Als u de knooppunten van het cluster gelijkmatig verdeeld wilt houden in upgrade- en foutdomeinen en op die manier gelijkmatig gebruik wilt inschakelen, moet het meest recent gemaakte knooppunt eerst worden verwijderd. Met andere woorden - de knooppunten moeten op basis van 'last in, first out' worden verwijderd. Het meest recent gemaakte knooppunt heeft de hoogste virtual machine scale set InstanceId-eigenschapswaarde. Met de onderstaande codevoorbeelden wordt het meest recent gemaakte knooppunt geretourneerd.

Get-ServiceFabricNode | Sort-Object NodeInstanceId -Descending | Select-Object -First 1
sfctl node list --query "sort_by(items[*], &name)[-1]"

Het Service Fabric-cluster moet weten dat dit knooppunt zal worden verwijderd. Er zijn drie stappen die u moet uitvoeren:

  1. Schakel het knooppunt uit zodat het geen replica meer is voor gegevens.
    PowerShell: Disable-ServiceFabricNode
    sfctl: sfctl node disable

  2. Stop het knooppunt zodat de Service Fabric-runtime netjes wordt afgesloten en uw app een beëindigingsaanvraag ontvangt.
    PowerShell: Start-ServiceFabricNodeTransition -Stop
    sfctl: sfctl node transition --node-transition-type Stop

  3. Verwijder het knooppunt uit het cluster.
    PowerShell: Remove-ServiceFabricNodeState
    sfctl: sfctl node remove-state

Nadat deze drie stappen op het knooppunt zijn toegepast, kan het knooppunt worden verwijderd uit de schaalset. Als u naast de bronzen duurzaamheidslaag nog een andere duurzaamheidslaag gebruikt, worden deze stappen voor u uitgevoerd wanneer de schaalsetinstantie wordt verwijderd.

In het volgende codeblok wordt het laatst gemaakte knooppunt opgehaald en wordt het knooppunt uitgeschakeld, gestopt en uit het cluster verwijderd.

#### After you've connected.....
# Get the node that was created last
$node = Get-ServiceFabricNode | Sort-Object { $_.NodeName.Substring($_.NodeName.LastIndexOf('_') + 1) } -Descending | Select-Object -First 1

# Node details for the disable/stop process
$nodename = $node.NodeName
$nodeid = $node.NodeInstanceId

$loopTimeout = 10

# Run disable logic
Disable-ServiceFabricNode -NodeName $nodename -Intent RemoveNode -TimeoutSec 300 -Force

$state = Get-ServiceFabricNode | Where-Object NodeName -eq $nodename | Select-Object -ExpandProperty NodeStatus

while (($state -ne [System.Fabric.Query.NodeStatus]::Disabled) -and ($loopTimeout -ne 0))
{
    Start-Sleep 5
    $loopTimeout -= 1
    $state = Get-ServiceFabricNode | Where-Object NodeName -eq $nodename | Select-Object -ExpandProperty NodeStatus
    Write-Host "Checking state... $state found"
}

# Exit if the node was unable to be disabled
if ($state -ne [System.Fabric.Query.NodeStatus]::Disabled)
{
    Write-Error "Disable failed with state $state"
}
else
{
    # Stop node
    $stopid = New-Guid
    Start-ServiceFabricNodeTransition -Stop -OperationId $stopid -NodeName $nodename -NodeInstanceId $nodeid -StopDurationInSeconds 300

    $state = (Get-ServiceFabricNodeTransitionProgress -OperationId $stopid).State
    $loopTimeout = 10

    # Watch the transaction
    while (($state -eq [System.Fabric.TestCommandProgressState]::Running) -and ($loopTimeout -ne 0))
    {
        Start-Sleep 5
        $state = (Get-ServiceFabricNodeTransitionProgress -OperationId $stopid).State
        Write-Host "Checking state... $state found"
    }

    if ($state -ne [System.Fabric.TestCommandProgressState]::Completed)
    {
        Write-Error "Stop transaction failed with $state"
    }
    else
    {
        # Remove the node from the cluster
        Remove-ServiceFabricNodeState -NodeName $nodename -TimeoutSec 300 -Force
    }
}

In onderstaande sfctl-code wordt de volgende opdracht gebruikt om de waarde van knooppuntnaam op te halen van het laatst gemaakte knooppunt: sfctl node list --query "sort_by(items[*], &name)[-1].name"

# Inform the node that it is going to be removed
sfctl node disable --node-name _nt1vm_5 --deactivation-intent 4 -t 300

# Stop the node using a random guid as our operation id
sfctl node transition --node-instance-id 131541348482680775 --node-name _nt1vm_5 --node-transition-type Stop --operation-id c17bb4c5-9f6c-4eef-950f-3d03e1fef6fc --stop-duration-in-seconds 14400 -t 300

# Remove the node from the cluster
sfctl node remove-state --node-name _nt1vm_5

Tip

Gebruik de volgende sfctl-query's om de status van elke stap te controleren

Deactiveringsstatus controlerensfctl node list --query "sort_by(items[*], &name)[-1].nodeDeactivationInfo"

Stopstatus controlerensfctl node list --query "sort_by(items[*], &name)[-1].isStopped"

De schaalset inschalen

Nu het Service Fabric-knooppunt is verwijderd uit het cluster, kan de virtuele-machineschaalset worden ingeschaald. In onderstaand voorbeeld wordt de capaciteit van de schaalset verminderd met 1.

$scaleset = Get-AzVmss -ResourceGroupName SFCLUSTERTUTORIALGROUP -VMScaleSetName nt1vm
$scaleset.Sku.Capacity -= 1

Update-AzVmss -ResourceGroupName SFCLUSTERTUTORIALGROUP -VMScaleSetName nt1vm -VirtualMachineScaleSet $scaleset

Met deze code stelt u de capaciteit in op 5.

# Get the name of the node with
az vmss list-instances -n nt1vm -g sfclustertutorialgroup --query [*].name

# Use the name to scale
az vmss scale -g sfclustertutorialgroup -n nt1vm --new-capacity 5

Gedrag dat u kunt observeren in Service Fabric Explorer

Wanneer u een cluster uitschaalt, geeft Service Fabric Explorer het aantal knooppunten (instanties van virtuele-machineschaalsets) weer die deel uitmaken van het cluster. Wanneer u echter een cluster inschaalt, ziet u dat het verwijderde knooppunt-/VM-exemplaar wordt weergegeven met een slechte status, tenzij u Remove-ServiceFabricNodeState cmd aanroept met de juiste knooppuntnaam.

Hier volgt de verklaring voor dit gedrag.

De knooppunten die in Service Fabric Explorer worden vermeld, zijn een weerspiegeling van wat de Service Fabric-systeemservices (FM specifiek) weten over het aantal knooppunten dat het cluster had/heeft. Wanneer u de virtuele-machineschaalset inschaalt, is de VIRTUELE machine verwijderd, maar de FM-systeemservice denkt nog steeds dat het knooppunt (dat is toegewezen aan de vm die is verwijderd) terugkomt. Service Fabric Explorer blijft dus dat knooppunt weergeven (hoewel de status mogelijk fout of onbekend is).

Om ervoor te zorgen dat een knooppunt wordt verwijderd wanneer een VIRTUELE machine wordt verwijderd, hebt u twee opties:

  1. Kies een duurzaamheidsniveau van Gold of Silver voor de knooppunttypen in uw cluster, waarmee u de integratie van de infrastructuur krijgt. Wanneer u inschaalt, worden knooppunten automatisch verwijderd uit de systeemservicesstatus (FM). Raadpleeg hier de details over duurzaamheidsniveaus

Notitie

Houd minimaal vijf knooppunten bij voor elke virtuele-machineschaalset waarvoor het duurzaamheidsniveau Gold of Silver is ingeschakeld. Uw cluster voert de foutstatus in als u onder deze drempelwaarde inschaalt en u de verwijderde knooppunten handmatig moet opschonen.

  1. Zodra het VM-exemplaar is ingeschaald, moet u de cmdlet Remove-ServiceFabricNodeState aanroepen.

Notitie

Voor Service Fabric-clusters moet een bepaald aantal knooppunten altijd actief zijn om de beschikbaarheid te behouden en de status te behouden, aangeduid als 'quorum onderhouden'. Het is dus meestal onveilig om alle machines in het cluster af te sluiten, tenzij u eerst een volledige back-up van uw status hebt uitgevoerd.

Volgende stappen

Lees het volgende voor meer informatie over het plannen van clustercapaciteit, het upgraden van een cluster en partitioneringsservices: