Informazioni sulle impostazioni di scalabilità automatica

Le impostazioni di scalabilità automatica assicurano di avere la giusta quantità di risorse in esecuzione per gestire il carico fluttuante dell'applicazione. È possibile configurare le impostazioni di scalabilità automatica in modo che vengano attivate in base a metriche che indicano il carico o le prestazioni oppure in una data e un'ora pianificate.

Questo articolo illustra le impostazioni di scalabilità automatica.

Schema di impostazione della scalabilità automatica

L'esempio seguente mostra un'impostazione di scalabilità automatica con questi attributi:

  • Un singolo profilo predefinito.
  • Due regole delle metriche in questo profilo: una per la scalabilità orizzontale e una per il ridimensionamento.
    • La regola di scalabilità orizzontale viene attivata quando la metrica media della CPU del set di scalabilità di macchine virtuali è maggiore dell'85% negli ultimi 10 minuti.
    • La regola di scale-in viene attivata quando la media del set di scalabilità di macchine virtuali è inferiore al 60% per l'ultimo minuto.

Nota

Un'impostazione può includere diversi profili. Per altre informazioni, vedere la sezione dei profili. Per un profilo possono essere definite più regole di aumento e di riduzione. Per vedere come vengono valutati, vedere la sezione relativa alla valutazione .

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "resources": [
        {
            "type": "Microsoft.Insights/autoscaleSettings",
            "apiVersion": "2015-04-01",
            "name": "VMSS1-Autoscale-607",
            "location": "eastus",
            "properties": {

                "name": "VMSS1-Autoscale-607",
                "enabled": true,
                "targetResourceUri": "/subscriptions/abc123456-987-f6e5-d43c-9a8d8e7f6541/resourceGroups/rg-vmss1/providers/Microsoft.Compute/virtualMachineScaleSets/VMSS1",
    "profiles": [
      {
        "name": "Auto created default scale condition",
        "capacity": {
          "minimum": "1",
          "maximum": "4",
          "default": "1"
        },
        "rules": [
          {
            "metricTrigger": {
              "metricName": "Percentage CPU",
              "metricResourceUri": "/subscriptions/abc123456-987-f6e5-d43c-9a8d8e7f6541/resourceGroups/rg-vmss1/providers/Microsoft.Compute/virtualMachineScaleSets/VMSS1",
              "timeGrain": "PT1M",
              "statistic": "Average",
              "timeWindow": "PT10M",
              "timeAggregation": "Average",
              "operator": "GreaterThan",
              "threshold": 85
            },
            "scaleAction": {
              "direction": "Increase",
              "type": "ChangeCount",
              "value": "1",
              "cooldown": "PT5M"
            }
          },
          {
            "metricTrigger": {
              "metricName": "Percentage CPU",
              "metricResourceUri": "/subscriptions/abc123456-987-f6e5-d43c-9a8d8e7f6541/resourceGroups/rg-vmss1/providers/Microsoft.Compute/virtualMachineScaleSets/VMSS1",
              "timeGrain": "PT1M",
              "statistic": "Average",
              "timeWindow": "PT10M",
              "timeAggregation": "Average",
              "operator": "LessThan",
              "threshold": 60
            },
            "scaleAction": {
              "direction": "Decrease",
              "type": "ChangeCount",
              "value": "1",
              "cooldown": "PT5M"
            }
          }
        ]
      }
    ]
  }
}

La tabella seguente descrive gli elementi nel codice JSON dell'impostazione di scalabilità automatica precedente.

Sezione Nome dell'elemento Nome portale Descrizione
Impostazione ID ID risorsa dell'impostazione di scalabilità automatica. Le impostazioni di scalabilità automatica sono una risorsa di Azure Resource Manager.
Impostazione name Nome dell'impostazione di scalabilità automatica.
Impostazione posizione Posizione dell'impostazione di scalabilità automatica. Questa posizione può essere diversa dalla posizione della risorsa da ridimensionare.
proprietà targetResourceUri ID della risorsa da ridimensionare. È possibile avere una sola impostazione di scalabilità automatica per ogni risorsa.
proprietà profiles Condizione di scalabilità Un'impostazione di scalabilità automatica è costituita da uno o più profili. Ogni volta che viene eseguito il motore di scalabilità automatica, viene eseguito un profilo. Configurare fino a 20 profili per impostazione di scalabilità automatica.
profiles name Nome del profilo. È possibile scegliere qualsiasi nome che semplifichi l'identificazione del profilo.
profiles capacity.maximum Limiti dell'istanza - Massimo Capacità massima consentita. Garantisce che la scalabilità automatica non ridimensiona la risorsa al di sopra di questo numero quando esegue il profilo.
profiles capacity.minimum Limiti dell'istanza - Minimo Capacità minima consentita. Garantisce che la scalabilità automatica non ridimensiona la risorsa al di sotto di questo numero quando esegue il profilo
profiles capacity.default Limiti dell'istanza - Impostazione predefinita Se si verifica un problema durante la lettura della metrica della risorsa e la capacità corrente è inferiore al valore predefinito, la scalabilità automatica viene ridimensionata in base all'impostazione predefinita. Questa azione garantisce la disponibilità della risorsa. Se la capacità corrente è già superiore alla capacità predefinita, la scalabilità automatica non viene ridimensionata.
profiles regole Regole La scalabilità automatica viene ridimensionata automaticamente tra le capacità massime e minime usando le regole nel profilo. Definire fino a 10 singole regole in un profilo. In genere, le regole vengono definite in coppie, una per determinare quando aumentare il numero di istanze e l'altra per determinare quando aumentare il numero di istanze.
regola metricTrigger Regola di ridimensionamento Definisce la condizione metrica della regola.
metricTrigger metricName Nome metrica Nome della metrica.
metricTrigger metricResourceUri ID della risorsa che emette la metrica. Nella maggior parte dei casi, è uguale alla risorsa ridimensionata. In alcuni casi, può essere diversa. Ad esempio, è possibile ridimensionare un set di scalabilità di macchine virtuali in base al numero di messaggi in una coda di archiviazione.
metricTrigger timeGrain Intervallo di tempo (minuti) La durata del campionamento delle metriche. Ad esempio, timeGrain = "PT1M" indica che le metriche devono essere aggregate ogni 1 minuto, usando il metodo di aggregazione specificato nell'elemento statistica.
metricTrigger statistic Statistica intervallo di tempo Metodo di aggregazione nel periodo specificato per timeGrain. Ad esempio, la statistica = "Average" e timeGrain = "PT1M" indica che le metriche devono essere aggregate ogni 1 minuto, prendendo la media. Questa proprietà determina come viene campionata la metrica.
metricTrigger timeWindow Durata Quantità di tempo da considerare per le metriche. Ad esempio, timeWindow = "PT10M" indica che ogni volta che viene eseguita la scalabilità automatica, esegue una query sulle metriche per gli ultimi 10 minuti. L'intervallo di tempo consente alle metriche di essere normalizzate e di non reagire a picchi temporanei.
metricTrigger timeAggregation Aggregazione temporale Metodo di aggregazione usato per aggregare le metriche campionate. Ad esempio, timeAggregation = "Average" deve aggregare le metriche campionate prendendo la media. Nel caso precedente considerare i dieci esempi da 1 minuto e calcolarne la media.
regola scaleAction Azione Azione da intraprendere quando viene attivato l'elemento metricTrigger della regola.
scaleAction direction Operazione "Increase" per aumentare, "Decrease" per ridurre.
scaleAction value Numero di istanze Indica di quanto aumentare o ridurre la capacità della risorsa.
scaleAction cooldown Disattiva regole dopo (minuti) Tempo di attesa necessario dopo un'operazione di ridimensionamento prima di avviarne un'altra. Il periodo di raffreddamento entra in vigore dopo un evento scale-in o scale-out. Ad esempio, se cooldown = "PT10M", la scalabilità automatica non tenta di ridimensionare nuovamente per altri 10 minuti. Il raffreddamento consente alle metriche di stabilizzarsi dopo l'aggiunta o la rimozione di istanze.

Profili di scalabilità automatica

Definire fino a 20 profili diversi per impostazione di scalabilità automatica.
Esistono tre tipi di profili di scalabilità automatica:

  • Profilo predefinito: usare il profilo predefinito se non è necessario ridimensionare la risorsa in base a una determinata data e ora o giorno della settimana. Il profilo predefinito viene eseguito quando non sono presenti altri profili applicabili per la data e l'ora correnti. È possibile avere un solo profilo predefinito.

  • Profilo a data fissa: il profilo a data fissa è rilevante per una singola data e ora. Usare il profilo a data fissa per impostare le regole di ridimensionamento per un evento specifico. Il profilo viene eseguito una sola volta, alla data e all'ora dell'evento. Per tutte le altre volte, la scalabilità automatica usa il profilo predefinito.

        ...
        "profiles": [
            {
                "name": " regularProfile",
                "capacity": {
                    ...
                },
                "rules": [
                    ...
                ]
            },
            {
                "name": "eventProfile",
                "capacity": {
                ...
                },
                "rules": [
                    ...
                ],
                "fixedDate": {
                    "timeZone": "Pacific Standard Time",
                    "start": "2017-12-26T00:00:00",
                    "end": "2017-12-26T23:59:00"
                }
            }
        ]
    
  • Profilo ricorrenza: viene usato un profilo di ricorrenza per un giorno o un set di giorni della settimana. Lo schema per un profilo ricorrente non include una data di fine. La fine della data e dell'ora per un profilo ricorrente viene impostata dall'ora di inizio del profilo seguente. Quando il portale viene usato per configurare i profili ricorrenti, il profilo predefinito viene aggiornato automaticamente per iniziare all'ora di fine specificata per il profilo ricorrente. Per altre informazioni sulla configurazione di più profili, vedere Scalabilità automatica con più profili

    L'esempio di schema parziale mostra un profilo ricorrente. Inizia alle 06.00 e termina alle 19.00 di sabato e domenica. Il profilo predefinito è stato modificato per iniziare alle 19:00 di sabato e domenica.

        {
            "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
            "contentVersion": "1.0.0.0",
            "resources": [
                {
                    "type": "Microsoft.Insights/    autoscaleSettings",
                    "apiVersion": "2015-04-01",
                    "name": "VMSS1-Autoscale-607",
                    "location": "eastus",
                    "properties": {
    
                        "name": "VMSS1-Autoscale-607",
                        "enabled": true,
                        "targetResourceUri": "/subscriptions/    abc123456-987-f6e5-d43c-9a8d8e7f6541/    resourceGroups/rg-vmss1/providers/    Microsoft.Compute/    virtualMachineScaleSets/VMSS1",
                        "profiles": [
                            {
                                "name": "Weekend profile",
                                "capacity": {
                                    ...
                                },
                                "rules": [
                                    ...
                                ],
                                "recurrence": {
                                    "frequency": "Week",
                                    "schedule": {
                                        "timeZone": "E. Europe     Standard Time",
                                        "days": [
                                            "Saturday",
                                            "Sunday"
                                        ],
                                        "hours": [
                                            6
                                        ],
                                        "minutes": [
                                            0
                                        ]
                                    }
                                }
                            },
                            {
                                "name": "{\"name\":\"Auto created default scale condition\",\"for\":\"Weekend profile\"}",
                                "capacity": {
                                   ...
                                },
                                "recurrence": {
                                    "frequency": "Week",
                                    "schedule": {
                                        "timeZone": "E. Europe     Standard Time",
                                        "days": [
                                            "Saturday",
                                            "Sunday"
                                        ],
                                        "hours": [
                                            19
                                        ],
                                        "minutes": [
                                            0
                                        ]
                                    }
                                },
                                "rules": [   
                                  ...
                                ]
                            }
                        ],
                        "notifications": [],
                        "targetResourceLocation": "eastus"
                    }
    
                }
            ]
                }
    
    

Valutazione della scalabilità automatica

Le impostazioni di scalabilità automatica possono avere più profili. Ogni profilo può avere più regole. Ogni volta che viene eseguito il processo di scalabilità automatica, inizia scegliendo il profilo applicabile per tale ora. La scalabilità automatica valuta quindi i valori minimo e massimo, le regole delle metriche nel profilo e decide se è necessaria un'azione di ridimensionamento. Il processo di scalabilità automatica viene eseguito ogni 30-60 secondi, a seconda del tipo di risorsa. Dopo l'esecuzione di un'azione di ridimensionamento, il processo di scalabilità automatica attende il periodo di raffreddamento prima che venga ridimensionato nuovamente. Il periodo di raffreddamento si applica sia alle azioni di scalabilità orizzontale che di scalabilità orizzontale.

Quale profilo userà la scalabilità automatica?

Ogni volta che viene eseguito il servizio di scalabilità automatica, i profili vengono valutati nell'ordine seguente:

  1. Profili a data fissa
  2. Profili ricorrenti
  3. Profilo predefinito

Viene usato il primo profilo appropriato trovato.

In che modo la scalabilità automatica valuta più regole?

Dopo che la scalabilità automatica determina il profilo da eseguire, valuta le regole di scalabilità orizzontale nel profilo, ovvero dove direction = "Aumenta". Se vengono attivate una o più regole di scalabilità orizzontale, la scalabilità automatica calcola la nuova capacità determinata dalla funzione scaleAction specificata per ognuna delle regole. Se viene attivata più di una regola di scalabilità orizzontale, la scalabilità automatica viene ridimensionata fino alla capacità specificata più elevata per garantire la disponibilità del servizio.

Si supponga, ad esempio, che siano presenti due regole: la regola 1 specifica un aumento del numero di istanze di tre istanze e la regola 2 specifica un aumento del numero di istanze di cinque. Se vengono attivate entrambe le regole, la scalabilità automatica aumenta di cinque istanze. Analogamente, se una regola specifica la scalabilità orizzontale di tre istanze e un'altra regola specifica il numero di istanze del 15%, viene usato il valore superiore dei due conteggi di istanze.

Se non vengono attivate regole di scalabilità orizzontale, la scalabilità automatica valuta le regole di scalabilità orizzontale, ovvero le regole con direzione = "Riduci". La scalabilità automatica viene ridimensionata solo se vengono attivate tutte le regole di scalabilità orizzontale.

La funzionalità di scalabilità automatica calcola la nuova capacità in base all'elemento scaleAction di ogni regola, Per garantire la disponibilità del servizio, la scalabilità automatica viene ridimensionata nel minor tempo possibile per ottenere la capacità massima specificata. Si supponga, ad esempio, che due regole di scalabilità, una che riduce la capacità del 50% e una che riduce la capacità di tre istanze. Se la prima regola genera cinque istanze e la seconda regola genera sette istanze, la scalabilità automatica viene ridimensionata in sette istanze.

Ogni volta che la scalabilità automatica calcola il risultato di un'azione di scalabilità orizzontale, valuta se tale azione attiverebbe un'azione di aumento del numero di istanze. Lo scenario in cui un'azione di scalabilità attiva l'azione di scala opposta è nota come flapping. La scalabilità automatica potrebbe rinviare un'azione di ridimensionamento per evitare il contrassegno o la scalabilità di un numero inferiore a quello specificato nella regola. Per altre informazioni sul flapping, vedere Flapping in autoscale(Flapping in autoscale).

Passaggi successivi

Altre informazioni sulla scalabilità automatica: