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 metriche nel profilo, una per l'aumento e una per la riduzione della capacità.
- La regola di scale-out viene attivata quando la metrica relativa alla percentuale CPU media del set di scalabilità di macchine virtuali è superiore all'85% per gli 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 esaminare in che modo vengono valutate queste regole, 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 | location | Posizione dell'impostazione di scalabilità automatica. Questa posizione può essere diversa dalla posizione della risorsa da ridimensionare. | |
proprietà | targetResourceUri | ID della risorsa da ridimensionare. È consentita una sola impostazione di scalabilità automatica per 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 esegue 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 funzionalità di scalabilità automatica non riduce la capacità. |
profiles | regole | Regole | La funzionalità di scalabilità automatica esegue automaticamente il ridimensionamento tra le capacità massima e minima usando le regole del 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, è lo stesso della risorsa da ridimensionare. 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 minuto usando il metodo di aggregazione specificato nell'elemento statistiche. |
metricTrigger | statistic | Statistica intervallo di tempo | Metodo di aggregazione nel periodo specificato per timeGrain. Ad esempio, statistic = "Average" e timeGrain = "PT1M" significano che le metriche devono essere aggregate ogni minuto, in base alla media. Questa proprietà determina come viene campionata la metrica. |
metricTrigger | timeWindow | Durata | Quantità di tempo da considerare per le metriche. Ad esempio, timeWindow = "PT10M" significa che ogni volta che viene eseguita la funzionalità di scalabilità automatica, viene eseguita una query sulle metriche per i 10 minuti precedenti. 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 in base alla 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. Se, ad esempio, cooldown = "PT10M", la funzionalità di ridimensionamento automatico non tenta un nuovo ridimensionamento per altri dieci 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:
- Profili di data fissi
- Profili ricorrenti
- Profilo predefinito
Viene usato il primo profilo appropriato trovato.
Valutazione di più regole con la scalabilità automatica
Dopo che la scalabilità automatica determina il profilo da eseguire, valuta le regole di scalabilità orizzontale nel profilo, ovvero dove direzione = "Aumenta". Se vengono attivate una o più regole di scalabilità orizzontale, la scalabilità automatica calcola la nuova capacità determinata dalla 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 nella scalabilità automatica.
Passaggi successivi
Altre informazioni sulla scalabilità automatica:
- Panoramica della scalabilità automatica
- Metriche comuni per la scalabilità automatica di Monitoraggio di Azure
- Scalabilità automatica con più profili
- Instabilità nella scalabilità automatica
- Usare le azioni di ridimensionamento automatico per inviare notifiche di avviso di webhook e posta elettronica in Azure Insights
- API REST per il ridimensionamento automatico