Een cluster in- of uitschalen

Waarschuwing

Lees deze sectie voordat u schaalt

Het schalen van rekenresources om de werkbelasting van uw toepassing te bepalen, vereist een opzettelijke planning, duurt bijna altijd langer dan een uur voor een productieomgeving en vereist dat u uw workload en bedrijfscontext begrijpt. Als u deze activiteit nog nooit eerder hebt uitgevoerd, is het zelfs raadzaam om eerst overwegingen voor het plannen van Service Fabric-clustercapaciteit 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 besluit uit te voeren, 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 de juiste context hebben, worden in dit artikel schaalbewerkingen beschreven, maar u moet beslissen en begrijpen welke bewerkingen geschikt zijn voor uw gebruiksscenario; zoals welke resources moeten worden geschaald (CPU, opslag, geheugen), welke richting moet worden geschaald (verticaal of horizontaal) en welke bewerkingen moeten worden uitgevoerd (implementatie van resourcesjabloon, portal, PowerShell/CLI).

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.

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 om een verzameling virtuele machines als een set te implementeren en te beheren. 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 in- of uitgeschaald, verschillende sets poorten openstaan en verschillende metrische capaciteitsgegevens hebben. Meer informatie hierover vindt u in het document Service Fabric-knooppunttypen . Omdat de Service Fabric-knooppunttypen in uw cluster bestaan uit virtuele-machineschaalsets in de back-end, moet u regels voor automatisch schalen instellen voor elk knooppunttype/virtuele-machineschaalset.

Notitie

Uw abonnement moet voldoende kernen hebben om de nieuwe VM's waaruit dit cluster bestaat toe te voegen. 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, dwz. de VM wordt geconfigureerd voor geneste virtualisatie, de metrische waarde beschikbaar geheugen is niet beschikbaar, omdat het dynamische geheugenstuurprogramma in de VM de status Gestopt heeft.

Kies het knooppunttype/de virtuele-machineschaalset die u wilt 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. Laten we daarom Azure PowerShell (1.0+) gebruiken om de knooppunttypen weer te geven en er vervolgens regels voor automatisch schalen aan 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 elk knooppunttype/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. Meer informatie over betrouwbaarheidsniveaus.

Notitie

Door het primaire knooppunttype in te schalen tot minder dan het minimumaantal, wordt het cluster instabiel of zelfs minder. Dit kan leiden tot gegevensverlies voor uw toepassingen en voor de systeemservices.

Op dit moment wordt de functie voor automatisch schalen niet bepaald door de belasting die uw toepassingen mogelijk aan Service Fabric rapporteren. Op dit moment wordt de automatische schaalaanpassing dus uitsluitend bepaald door de prestatiemeteritems die worden verzonden door elk van de exemplaren van de virtuele-machineschaalset.

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

Notitie

In een scenario met schalen moet u, tenzij uw knooppunttype een duurzaamheidsniveau Gold of Silver heeft, de cmdlet Remove-ServiceFabricNodeState aanroepen met de juiste knooppuntnaam. Voor de duurzaamheid van Brons is het niet raadzaam om meer dan één knooppunt 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 uitgevoerd. Plan ruim van tevoren capaciteit toe te voegen, zodat de VM-capaciteit langer dan 10 minuten beschikbaar is om de replica's/service-exemplaren te plaatsen.

VM's toevoegen met behulp van een sjabloon

Volg de voorbeeld-/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 een knooppunttype inschaalt, verwijdert u VM-exemplaren uit de schaalset. Als het knooppunttype het duurzaamheidsniveau Brons heeft, 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. Bij het inschalen van het primaire knooppunttype moet u nooit het aantal exemplaren schalen naar minder dan wat de betrouwbaarheidslaag rechtvaardigt.

Voor een stateful service hebt u een bepaald aantal knooppunten nodig om 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 doelreplicasets 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 Bronze-duurzaamheidslaag. Voor de duurzaamheidslagen 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 krijgt de foutstatus als u onder deze drempelwaarde schaalt en u moet de verwijderde knooppunten handmatig 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

De 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 in Service Fabric Explorer kunt observeren

Wanneer u een cluster uitschaalt, weerspiegelt de Service Fabric Explorer het aantal knooppunten (exemplaren van virtuele-machineschaalsets) dat deel uitmaakt van het cluster. Wanneer u echter een cluster inschaalt, ziet u dat het verwijderde knooppunt/VM-exemplaar in een beschadigde status wordt weergegeven, 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 (specifiek FM) weten over het aantal knooppunten dat het cluster had/heeft. Wanneer u de virtuele-machineschaalset inschaalt, is de VM verwijderd, maar de FM-systeemservice denkt nog steeds dat het knooppunt (dat is toegewezen aan de vm die is verwijderd) terugkomt. Dus Service Fabric Explorer blijft dat knooppunt weergeven (hoewel de status mogelijk fout of onbekend is).

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

  1. Kies een duurzaamheidsniveau van Gold of Silver voor de knooppunttypen in uw cluster, waarmee u de infrastructuurintegratie krijgt. Wanneer u inschaalt, worden knooppunten automatisch verwijderd uit onze FM-status (System Services). 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 krijgt de foutstatus als u onder deze drempelwaarde schaalt en u moet de verwijderde knooppunten handmatig opschonen.

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

Notitie

Service Fabric-clusters vereisen dat een bepaald aantal knooppunten altijd actief is om de beschikbaarheid te behouden en de status te behouden, ook wel quorum onderhouden genoemd. Het is dus meestal onveilig om alle computers 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 het partitioneren van services: