Aumentare o ridurre le istanze del cluster di Service Fabric con le regole di scalabilità automaticaScale a Service Fabric cluster in or out using auto-scale rules

I set di scalabilità di macchine virtuali sono una risorsa di calcolo di Azure che è possibile usare per distribuire e gestire una raccolta di macchine virtuali come set.Virtual machine scale sets are an Azure compute resource that you can use to deploy and manage a collection of virtual machines as a set. Ogni tipo di nodo definito in un cluster di Service Fabric viene configurato come set di scalabilità di macchine virtuali distinto.Every node type that is defined in a Service Fabric cluster is set up as a separate Virtual Machine scale set. Ogni tipo di nodo può quindi essere aumentato o ridotto in modo indipendente, avere diversi set di porte aperte e avere metriche per la capacità diverse.Each node type can then be scaled in or out independently, have different sets of ports open, and can have different capacity metrics. Per altre informazioni, vedere il documento sui tipi di nodo di Service Fabric .Read more about it in the Service Fabric nodetypes document. Poiché i tipi di nodi di Service Fabric nel cluster sono costituiti da set di scalabilità di macchine virtuali nel back-end, è necessario configurare regole di ridimensionamento automatico per ogni tipo di nodo o set di scalabilità di macchine virtuali.Since the Service Fabric node types in your cluster are made of Virtual Machine scale sets at the backend, you need to set up auto-scale rules for each node type/Virtual Machine scale set.

Nota

È necessario che nella sottoscrizione sia incluso un numero di core sufficienti per aggiungere le nuove VM che costituiranno il cluster.Your subscription must have enough cores to add the new VMs that make up this cluster. Non esiste attualmente una funzionalità di convalida del modello quindi, se viene raggiunto uno dei limiti della quota, verrà visualizzato un errore in fase di distribuzione.There is no model validation currently, so you get a deployment time failure, if any of the quota limits are hit.

Scegliere il tipo di nodo o il set di scalabilità di macchine virtuali da ridimensionareChoose the node type/Virtual Machine scale set to scale

Attualmente non è possibile specificare le regole di ridimensionamento automatico per i set di scalabilità di macchine virtuali tramite il portale, quindi si userà Azure PowerShell 1.0 o versione successiva per elencare i tipi di nodo e aggiungervi quindi le regole di ridimensionamento automatico.Currently, you are not able to specify the auto-scale rules for Virtual Machine scale sets using the portal, so let us use Azure PowerShell (1.0+) to list the node types and then add auto-scale rules to them.

Per ottenere l'elenco dei set di scalabilità di macchine virtuali che costituiscono il cluster, eseguire i cmdlet seguenti:To get the list of Virtual Machine scale set that make up your cluster, run the following cmdlets:

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

Get-AzureRmVmss -ResourceGroupName <RGname> -VMScaleSetName <Virtual Machine scale set name>

Impostare le regole di ridimensionamento automatico per il tipo di nodo o il set di scalabilità di macchine virtualiSet auto-scale rules for the node type/Virtual Machine scale set

Se nel cluster sono disponibili più tipi di nodi, è necessario ripetere questa operazione per ogni tipo di nodo o set di scalabilità di macchine virtuali per cui si vuole aumentare o ridurre le istanze.If your cluster has multiple node types, then repeat this for each node types/Virtual Machine scale sets that you want to scale (in or out). Considerare il numero di nodi che essere disponibili prima di configurare il ridimensionamento automatico.Take into account the number of nodes that you must have before you set up auto-scaling. Il numero minimo di nodi necessari per il tipo di nodo primario è determinato dal livello di affidabilità scelto.The minimum number of nodes that you must have for the primary node type is driven by the reliability level you have chosen. Per altre informazioni, vedere la sezione relativa ai livelli di affidabilità.Read more about reliability levels.

Nota

La riduzione delle istanze del tipo di nodo primario, impostando un valore inferiore al numero minimo, renderà il cluster instabile o lo arresterà.Scaling down the primary node type to less than the minimum number make the cluster unstable or bring it down. In questo caso, è possibile che si verifichi una perdita di dati per le applicazioni e per i servizi di sistema.This could result in data loss for your applications and for the system services.

Attualmente la funzionalità di ridimensionamento automatico non è determinata dai carichi che le applicazioni segnalano a Service Fabric.Currently the auto-scale feature is not driven by the loads that your applications may be reporting to Service Fabric. Al momento. il ridimensionamento automatico che si ottiene dipende esclusivamente dai contatori delle prestazioni generati da ognuna delle istanze del set di scalabilità di macchine virtuali.So at this time the auto-scale you get is purely driven by the performance counters that are emitted by each of the Virtual Machine scale set instances.

Seguire le istruzioni per configurare il ridimensionamento automatico per ogni set di scalabilità di macchine virtuali.Follow these instructions to set up auto-scale for each Virtual Machine scale set.

Nota

In uno scenario di riduzione delle istanze, a meno che il tipo di nodo non abbia un livello di durabilità Gold o Silver, sarà necessario chiamare il cmdlet Remove-ServiceFabricNodeState con il nome del nodo appropriato.In a scale down scenario, unless your node type has a durability level of Gold or Silver you need to call the Remove-ServiceFabricNodeState cmdlet with the appropriate node name.

Aggiungere manualmente le VM a un tipo di nodo o set di scalabilità di macchine virtualiManually add VMs to a node type/Virtual Machine scale set

Seguire l'esempio o le istruzioni nella raccolta modelli di avvio rapido per modificare il numero di VM in ogni Nodetype.Follow the sample/instructions in the quick start template gallery to change the number of VMs in each Nodetype.

Nota

L'aggiunta di VM può richiedere tempo e non è un processo istantaneo.Adding of VMs takes time, so do not expect the additions to be instantaneous. È pertanto consigliabile aggiungere capacità in anticipo, così da avere oltre 10 minuti a disposizione prima che la capacità della VM sia disponibile per collocare le repliche o istanze del servizio.So plan to add capacity well in time, to allow for over 10 minutes before the VM capacity is available for the replicas/ service instances to get placed.

Rimuovere manualmente le VM dal tipo di nodo primario o set di scalabilità di macchine virtualiManually remove VMs from the primary node type/Virtual Machine scale set

Nota

I servizi di sistema Service Fabric vengono eseguiti nel tipo di nodo primario del cluster.The service fabric system services run in the Primary node type in your cluster. Non arrestare o ridurre il numero di istanze in questo tipo di nodo a un valore inferiore a quello garantito dal livello di affidabilità.So should never shut down or scale down the number of instances in that node types less than what the reliability tier warrants. Fare riferimento ai dettagli sui livelli di affidabilità.Refer to the details on reliability tiers here.

È necessario eseguire i seguenti passaggi su un'istanza di VM alla volta.You need to execute the following steps one VM instance at a time. Ciò consente l'arresto normale dei servizi di sistema e dei servizi con stato nella VM che viene rimossa e la creazione di nuove repliche in altri nodi.This allows for the system services (and your stateful services) to be shut down gracefully on the VM instance you are removing and new replicas created on other nodes.

  1. Eseguire Disable-ServiceFabricNode usando 'RemoveNode' per disabilitare il nodo da rimuovere, ovvero l'istanza superiore di quel tipo di nodo.Run Disable-ServiceFabricNode with intent ‘RemoveNode’ to disable the node you’re going to remove (the highest instance in that node type).
  2. Eseguire Get-ServiceFabricNode per verificare che il nodo sia stato effettivamente disabilitato.Run Get-ServiceFabricNode to make sure that the node has indeed transitioned to disabled. In caso contrario, attendere la disabilitazione del nodo.If not, wait until the node is disabled. Non è possibile accelerare questo passaggio.You cannot hurry this step.
  3. Seguire l'esempio o le istruzioni nella raccolta modelli di avvio rapido per modificare di un'unità il numero di VM in tale Nodetype.Follow the sample/instructions in the quick start template gallery to change the number of VMs by one in that Nodetype. L'istanza rimossa è l'istanza di macchina virtuale superiore.The instance removed is the highest VM instance.
  4. Ripetere le fasi da 1 a 3 come necessario, ma non ridurre il numero di istanze nel nodo primario a un valore inferiore a quello garantito dal livello di affidabilità.Repeat steps 1 through 3 as needed, but never scale down the number of instances in the primary node types less than what the reliability tier warrants. Fare riferimento ai dettagli sui livelli di affidabilità.Refer to the details on reliability tiers here.

Rimuovere manualmente le VM dal tipo di nodo non primario o set di scalabilità di macchine virtualiManually remove VMs from the non-primary node type/Virtual Machine scale set

Nota

Per un servizio con stato, è necessario un determinato numero di nodi per essere sempre in grado di assicurare la disponibilità e mantenere lo stato del servizio.For a stateful service, you need a certain number of nodes to be always up to maintain availability and preserve state of your service. Come minimo, è necessario un numero di nodi uguale al conteggio dei set di repliche di destinazione della partizione o dei servizi.At the very minimum, you need the number of nodes equal to the target replica set count of the partition/service.

È necessario eseguire i seguenti passaggi su un'istanza di VM alla volta.You need the execute the following steps one VM instance at a time. Ciò consente l'arresto normale dei servizi di sistema e dei servizi con stato nella VM che viene rimossa e la creazione di nuove repliche altrove.This allows for the system services (and your stateful services) to be shut down gracefully on the VM instance you are removing and new replicas created else where.

  1. Eseguire Disable-ServiceFabricNode usando 'RemoveNode' per disabilitare il nodo da rimuovere, ovvero l'istanza superiore di quel tipo di nodo.Run Disable-ServiceFabricNode with intent ‘RemoveNode’ to disable the node you’re going to remove (the highest instance in that node type).
  2. Eseguire Get-ServiceFabricNode per verificare che il nodo sia stato effettivamente disabilitato.Run Get-ServiceFabricNode to make sure that the node has indeed transitioned to disabled. In caso contrario, attendere la disabilitazione del nodo.If not wait till the node is disabled. Non è possibile accelerare questo passaggio.You cannot hurry this step.
  3. Seguire l'esempio o le istruzioni nella raccolta modelli di avvio rapido per modificare di un'unità il numero di VM in tale Nodetype.Follow the sample/instructions in the quick start template gallery to change the number of VMs by one in that Nodetype. Questa operazione rimuoverà l'istanza superiore di macchina virtuale.This will now remove the highest VM instance.
  4. Ripetere le fasi da 1 a 3 come necessario, ma non ridurre il numero di istanze nel nodo primario a un valore inferiore a quello garantito dal livello di affidabilità.Repeat steps 1 through 3 as needed, but never scale down the number of instances in the primary node types less than what the reliability tier warrants. Fare riferimento ai dettagli sui livelli di affidabilità.Refer to the details on reliability tiers here.

Comportamenti che è possibile osservare in Service Fabric ExplorerBehaviors you may observe in Service Fabric Explorer

Quando si aumentano le istanze di un cluster, Service Fabric Explorer riflette il numero di nodi, ovvero le istanze del set di scalabilità di macchine virtuali, che fanno parte del cluster.When you scale up a cluster the Service Fabric Explorer will reflect the number of nodes (Virtual Machine scale set instances) that are part of the cluster. Quando tuttavia si riducono le istanze di un cluster, il nodo o l'istanza della VM rimossa viene ancora visualizzata con uno stato non integro, a meno di chiamare il cmdlet Remove-ServiceFabricNodeState con il nome del nodo appropriato.However, when you scale a cluster down you will see the removed node/VM instance displayed in an unhealthy state unless you call Remove-ServiceFabricNodeState cmd with the appropriate node name.

Ecco la spiegazione di questo comportamento.Here is the explanation for this behavior.

I nodi elencati in Service Fabric Explorer riflettono le informazioni a disposizione dei servizi di sistema di Service Fabric, in particolare FM, circa il numero di nodi presenti nel cluster attualmente o in precedenza.The nodes listed in Service Fabric Explorer are a reflection of what the Service Fabric system services (FM specifically) knows about the number of nodes the cluster had/has. Quando si riducono le istanze del set di scalabilità di macchine virtuali, la VM viene eliminata, ma il servizio di sistema FM continua a ritenere che il nodo, precedentemente mappato alla VM eliminata, verrà ripristinato.When you scale the Virtual Machine scale set down, the VM was deleted but FM system service still thinks that the node (that was mapped to the VM that was deleted) will come back. Service Fabric Explorer continua quindi a visualizzare tale nodo, anche se lo stato di integrità è sconosciuto o di errore.So Service Fabric Explorer continues to display that node (though the health state may be error or unknown).

Per assicurarsi che un nodo venga rimosso quando si rimuove una VM, sono disponibili due opzioni:In order to make sure that a node is removed when a VM is removed, you have two options:

1) Scegliere un livello di durabilità Gold o Silver per i tipi di nodo del cluster, che offre l'integrazione dell'infrastruttura.Choose a durability level of Gold or Silver for the node types in your cluster, which gives you the infrastructure integration. In questo caso i nodi saranno rimossi automaticamente dallo stato dei servizi di sistema (FM) quando si riducono le istanze.Which will then automatically remove the nodes from our system services (FM) state when you scale down. Fare riferimento ai i dettagli sui livelli di durabilità quiRefer to the details on durability levels here

2) Dopo aver ridotto le istanze della VM, chiamare il cmdlet Remove-ServiceFabricNodeState.Once the VM instance has been scaled down, you need to call the Remove-ServiceFabricNodeState cmdlet.

Nota

I cluster di Service Fabric richiedono che un certo numero di nodi sia attivo in ogni momento allo scopo di mantenere la disponibilità e lo stato, ossia per "mantenere il quorum".Service Fabric clusters require a certain number of nodes to be up at all the time in order to maintain availability and preserve state - referred to as "maintaining quorum." Di conseguenza, non è in genere sicuro arrestare tutte le macchine virtuali del cluster senza avere prima eseguito un backup completo dello stato.So, it is typically unsafe to shut down all the machines in the cluster unless you have first performed a full backup of your state.

Passaggi successiviNext steps

Per altre informazioni sulla pianificazione della capacità del cluster, l'aggiornamento di un cluster e il partizionamento dei servizi, vedere gli articoli seguenti:Read the following to also learn about planning cluster capacity, upgrading a cluster, and partitioning services: