Configurazione di scalabilità automatica avanzata con modelli di Resource Manager per set di scalabilità di macchine virtuali di Microsoft AzureAdvanced autoscale configuration using Resource Manager templates for VM Scale Sets

È possibile aumentare e ridurre il numero di istanze dei set di scalabilità di macchine virtuali in base ai valori soglia per le metriche delle prestazioni, a una pianificazione ricorrente oppure a una data specifica.You can scale-in and scale-out in Virtual Machine Scale Sets based on performance metric thresholds, by a recurring schedule, or by a particular date. È anche possibile configurare notifiche di posta elettronica e webhook per le azioni di scalabilità.You can also configure email and webhook notifications for scale actions. Questa procedura dettagliata illustra un esempio di configurazione di tutti tali oggetti usando in modello di Resource Manager in un set di scalabilità di macchine virtuali.This walkthrough shows an example of configuring all these objects using a Resource Manager template on a VM Scale Set.

Nota

Mentre la procedura dettagliata illustra i passaggi per il set di scalabilità di macchine virtuali, le stesse informazioni si applicano a Servizi cloud e ad Servizio app - App Web per la scalabilità automatica.While this walkthrough explains the steps for VM Scale Sets, the same information applies to autoscaling Cloud Services, and App Service - Web Apps. Per una semplice impostazione di riduzione/aumento del numero di istanze in un set di scalabilità di macchine virtuali in base a una semplice metrica delle prestazioni, ad esempio la CPU, vedere i documenti relativi a Linux e Windows.For a simple scale in/out setting on a VM Scale Set based on a simple performance metric such as CPU, refer to the Linux and Windows documents

Procedura dettagliataWalkthrough

In questa procedura dettagliata viene usato Esplora risorse di Azure per configurare e aggiornare l'impostazione di ridimensionamento automatico per un set di scalabilità.In this walkthrough, we use Azure Resource Explorer to configure and update the autoscale setting for a scale set. Esplora risorse di Azure consente di gestire facilmente le risorse di Azure con i modelli di Resource Manager.Azure Resource Explorer is an easy way to manage Azure resources via Resource Manager templates. Se non si ha esperienza con lo strumento Esplora risorse di Azure, vedere questa introduzione.If you are new to Azure Resource Explorer tool, read this introduction.

  1. Distribuire un nuovo set di scalabilità con un'impostazione di scalabilità automatica di base.Deploy a new scale set with a basic autoscale setting. Questo articolo usa quello della raccolta di guide introduttive di Azure che ha un set di scalabilità Windows con il modello di scalabilità automatica di base.This article uses the one from the Azure QuickStart Gallery, which has a Windows scale set with a basic autoscale template. I set di scalabilità Linux funzionano allo stesso modo.Linux scale sets work the same way.
  2. Una volta creato il set di scalabilità, passare alla risorsa set di scalabilità da Esplora risorse di Azure.After the scale set is created, navigate to the scale set resource from Azure Resource Explorer. Sotto il nodo Microsoft.Insights viene visualizzato quanto segue.You see the following under Microsoft.Insights node.

    Azure Explorer

    L'esecuzione del modello ha creato un'impostazione predefinita di ridimensionamento automatico con il nome "autoscalewad".The template execution has created a default autoscale setting with the name 'autoscalewad'. Sul lato destro è possibile visualizzare la definizione completa di questa impostazione di ridimensionamento automatico.On the right-hand side, you can view the full definition of this autoscale setting. In questo caso, l'impostazione di ridimensionamento automatico predefinita è inclusa in una regola di aumento e riduzione del numero di istanze basata sulla percentuale di CPU.In this case, the default autoscale setting comes with a CPU% based scale-out and scale-in rule.

  3. Ora è possibile aggiungere altri profili e regole basati sulla pianificazione o su specifici requisiti.You can now add more profiles and rules based on the schedule or specific requirements. Viene creata un'impostazione di ridimensionamento automatico con tre profili.We create an autoscale setting with three profiles. Per conoscere i profili e le regole nel ridimensionamento automatico, vedere Procedure consigliate per il ridimensionamento automatico.To understand profiles and rules in autoscale, review Autoscale Best Practices.

    Profili e regoleProfiles & Rules DESCRIZIONEDescription
    ProfiloProfile Basato su prestazioni/metricaPerformance/metric based
    RegolaRule Numero di messaggi della coda del bus di servizio > xService Bus Queue Message Count > x
    RegolaRule Numero di messaggi della coda del bus di servizio < yService Bus Queue Message Count < y
    RegolaRule % CPU > nCPU% > n
    RegolaRule % CPU < pCPU% < p
    ProfiloProfile Ore della mattina dei giorni feriali (nessuna regola)Weekday morning hours (no rules)
    ProfiloProfile Giorno di lancio del prodotto (nessuna regola)Product Launch day (no rules)
  4. Di seguito viene descritto uno senario ipotetico scenario di ridimensionamento per la procedura dettagliata.Here is a hypothetical scaling scenario that we use for this walk-through.

    • Basato sul carico - Si vuole aumentare o ridurre il numero di istanze in base al carico sull'applicazione ospitata nel set di scalabilità.*Load based - I'd like to scale out or in based on the load on my application hosted on my scale set.*
    • Dimensioni della coda di messaggi - Si usa una coda del bus di servizio per i messaggi in arrivo nell'applicazione.Message Queue size - I use a Service Bus Queue for the incoming messages to my application. Si usa il numero di messaggi della coda e la percentuale di CPU e si configura un profilo predefinito per attivare un'azione di scalabilità se il numero di messaggi o la percentuale CPU raggiunge la soglia.*I use the queue's message count and CPU% and configure a default profile to trigger a scale action if either of message count or CPU hits the threshold.*
    • Ora della settimana e del giorno - Si vuole un profilo basato su un'ora del giorno con ricorrenza settimanale denominato "Ore della mattina dei giorni feriali".Time of week and day - I want a weekly recurring 'time of the day' based profile called 'Weekday Morning Hours'. In base ai dati cronologici, è stato stabilito che è preferibile disporre di un certo numero di istanze di macchine virtuali per gestire il carico dell'applicazione durante questo orario.*Based on historical data, I know it is better to have certain number of VM instances to handle my application's load during this time.*
    • Date speciali - È stato aggiunto un profilo "Giorni di lancio del prodotto".Special Dates - I added a 'Product Launch Day' profile. Vengono pianificate in anticipo date specifiche in modo che l'applicazione sia pronta a gestire il carico derivante da annunci di marketing e dall'inserimento di un nuovo prodotto nell'applicazione.*I plan ahead for specific dates so my application is ready to handle the load due marketing announcements and when we put a new product in the application.*
    • Gli ultimi due profili possono anche contenere altre regole basate sulla metrica delle prestazioni. In questo caso, ho deciso di non averne e di affidarmi alle regole basate sulla metrica delle prestazioni predefinite. Le regole sono facoltative per i profili ricorrenti e basati sulle date.The last two profiles can also have other performance metric based rules within them. In this case, I decided not to have one and instead to rely on the default performance metric based rules. Rules are optional for the recurring and date-based profiles.

      La classificazione in ordine di priorità dei profili e delle regole con il motore di ridimensionamento automatico è illustrata anche nell'articolo Procedure consigliate per il ridimensionamento automatico.Autoscale engine's prioritization of the profiles and rules is also captured in the autoscaling best practices article. Per un elenco di metriche comuni per la scalabilità automatica, vedere Metriche comuni per la scalabilità automatica.For a list of common metrics for autoscale, refer Common metrics for Autoscale

  5. Verificare che Esplora risorse sia in modalità Lettura/Scrittura.Make sure you are on the Read/Write mode in Resource Explorer

    Autoscalewad, impostazione di ridimensionamento automatico predefinita

  6. Fare clic su Edit.Click Edit. Sostituire l'elemento "profiles" nell'impostazione di scalabilità automatica con la configurazione seguente:Replace the 'profiles' element in autoscale setting with the following configuration:

    Profili

    {
            "name": "Perf_Based_Scale",
            "capacity": {
              "minimum": "2",
              "maximum": "12",
              "default": "2"
            },
            "rules": [
              {
                "metricTrigger": {
                  "metricName": "MessageCount",
                  "metricNamespace": "",
                  "metricResourceUri": "/subscriptions/s1/resourceGroups/rg1/providers/Microsoft.ServiceBus/namespaces/mySB/queues/myqueue",
                  "timeGrain": "PT5M",
                  "statistic": "Average",
                  "timeWindow": "PT5M",
                  "timeAggregation": "Average",
                  "operator": "GreaterThan",
                  "threshold": 10
                },
                "scaleAction": {
                  "direction": "Increase",
                  "type": "ChangeCount",
                  "value": "1",
                  "cooldown": "PT5M"
                }
              },
              {
                "metricTrigger": {
                  "metricName": "MessageCount",
                  "metricNamespace": "",
                  "metricResourceUri": "/subscriptions/s1/resourceGroups/rg1/providers/Microsoft.ServiceBus/namespaces/mySB/queues/myqueue",
                  "timeGrain": "PT5M",
                  "statistic": "Average",
                  "timeWindow": "PT5M",
                  "timeAggregation": "Average",
                  "operator": "LessThan",
                  "threshold": 3
                },
                "scaleAction": {
                  "direction": "Decrease",
                  "type": "ChangeCount",
                  "value": "1",
                  "cooldown": "PT5M"
                }
              },
              {
                "metricTrigger": {
                  "metricName": "Percentage CPU",
                  "metricNamespace": "",
                  "metricResourceUri": "/subscriptions/s1/resourceGroups/rg1/providers/Microsoft.Compute/virtualMachineScaleSets/<this_vmss_name>",
                  "timeGrain": "PT5M",
                  "statistic": "Average",
                  "timeWindow": "PT30M",
                  "timeAggregation": "Average",
                  "operator": "GreaterThan",
                  "threshold": 85
                },
                "scaleAction": {
                  "direction": "Increase",
                  "type": "ChangeCount",
                  "value": "1",
                  "cooldown": "PT5M"
                }
              },
              {
                "metricTrigger": {
                  "metricName": "Percentage CPU",
                  "metricNamespace": "",
                  "metricResourceUri": "/subscriptions/s1/resourceGroups/rg1/providers/Microsoft.Compute/virtualMachineScaleSets/<this_vmss_name>",
                  "timeGrain": "PT5M",
                  "statistic": "Average",
                  "timeWindow": "PT30M",
                  "timeAggregation": "Average",
                  "operator": "LessThan",
                  "threshold": 60
                },
                "scaleAction": {
                  "direction": "Decrease",
                  "type": "ChangeCount",
                  "value": "1",
                  "cooldown": "PT5M"
                }
              }
            ]
          },
          {
            "name": "Weekday_Morning_Hours_Scale",
            "capacity": {
              "minimum": "4",
              "maximum": "12",
              "default": "4"
            },
            "rules": [],
            "recurrence": {
              "frequency": "Week",
              "schedule": {
                "timeZone": "Pacific Standard Time",
                "days": [
                  "Monday",
                  "Tuesday",
                  "Wednesday",
                  "Thursday",
                  "Friday"
                ],
                "hours": [
                  6
                ],
                "minutes": [
                  0
                ]
              }
            }
          },
          {
            "name": "Product_Launch_Day",
            "capacity": {
              "minimum": "6",
              "maximum": "20",
              "default": "6"
            },
            "rules": [],
            "fixedDate": {
              "timeZone": "Pacific Standard Time",
              "start": "2016-06-20T00:06:00Z",
              "end": "2016-06-21T23:59:00Z"
            }
          }
    

    Per i campi e i valori supportati, vedere la documentazione sull'API REST per il ridimensionamento automatico.For supported fields and their values, see Autoscale REST API documentation. Ora l'impostazione di scalabilità automatica contiene i tre profili descritti in precedenza.Now your autoscale setting contains the three profiles explained previously.

  7. Verrà esaminata infine la sezione notification per la scalabilità automatica.Finally, look at the Autoscale notification section. Le notifiche di ridimensionamento automatico consentono di eseguire tre operazioni quando un'azione di aumento o riduzione del numero di istanze viene correttamente attivata.Autoscale notifications allow you to do three things when a scale-out or in action is successfully triggered.

    • Inviare una notifica all'amministratore e ai coamministratori della sottoscrizione.Notify the admin and co-admins of your subscription
    • Inviare un messaggio di posta elettronica a un set di utenti.Email a set of users
    • Attivare una chiamata webhook.Trigger a webhook call. Se attivato, questo webhook invia i metadati sulla condizione di scalabilità automatica e sulla risorsa del set di scalabilità.When fired, this webhook sends metadata about the autoscaling condition and the scale set resource. Per altre informazioni sul payload del webhook di ridimensionamento automatico, vedere Configurare notifiche webhook e di posta elettronica per il ridimensionamento automatico.To learn more about the payload of autoscale webhook, see Configure Webhook & Email Notifications for Autoscale.

    Aggiungere il codice seguente all'impostazione di ridimensionamento automatico sostituendo l'elemento notification il cui valore è null.Add the following to the Autoscale setting replacing your notification element whose value is null

    "notifications": [
       {
         "operation": "Scale",
         "email": {
           "sendToSubscriptionAdministrator": true,
           "sendToSubscriptionCoAdministrators": false,
           "customEmails": [
               "user1@mycompany.com",
               "user2@mycompany.com"
               ]
         },
         "webhooks": [
           {
             "serviceUri": "https://foo.webhook.example.com?token=abcd1234",
             "properties": {
               "optional_key1": "optional_value1",
               "optional_key2": "optional_value2"
             }
           }
         ]
       }
     ]
    

    Fare clic sul pulsante Put in Esplora risorse per aggiornare l'impostazione di scalabilità automatica.Hit Put button in Resource Explorer to update the autoscale setting.

È stata aggiornata un'impostazione di ridimensionamento automatico in un set di scalabilità di macchine virtuali per includere più profili di scalabilità e notifiche di scalabilità.You have updated an autoscale setting on a VM Scale set to include multiple scale profiles and scale notifications.

Passaggi successiviNext Steps

Per altre informazioni sulla scalabilità automatica, usare questi collegamenti.Use these links to learn more about autoscaling.

Risolvere i problemi di scalabilità automatica con set di scalabilità di macchine virtualiTroubleShoot Autoscale with Virtual Machine Scale Sets

Metriche comuni per il ridimensionamento automaticoCommon Metrics for Autoscale

Procedure consigliate per il ridimensionamento automatico di AzureBest Practices for Azure Autoscale

Gestire il ridimensionamento automatico con PowerShellManage Autoscale using PowerShell

Gestire il ridimensionamento automatico con l'interfaccia della riga di comandoManage Autoscale using CLI

Configurare notifiche webhook e di posta elettronica per il ridimensionamento automaticoConfigure Webhook & Email Notifications for Autoscale