Compreender as definições de dimensionamento automático

As definições de dimensionamento automático ajudam a garantir que tem a quantidade certa de recursos em execução para lidar com a carga flutuante da sua aplicação. Pode configurar as definições de dimensionamento automático para serem acionadas com base em métricas que indiquem carga ou desempenho ou acionadas numa data e hora agendadas.

Este artigo fornece uma explicação detalhada das definições de dimensionamento automático.

Esquema de definição de dimensionamento automático

O exemplo seguinte mostra uma definição de dimensionamento automático. Esta definição de dimensionamento automático tem os seguintes atributos:

  • Um único perfil predefinido.
  • Duas regras de métricas neste perfil: uma para aumento horizontal e outra para redução horizontal.
    • A regra de escalamento horizontal é acionada quando a métrica de percentagem média da CPU do Conjunto de Dimensionamento de Máquinas Virtuais é superior a 85% nos últimos 10 minutos.
    • A regra de redução horizontal é acionada quando a média do Conjunto de Dimensionamento de Máquinas Virtuais é inferior a 60% no último minuto.

Nota

Uma definição pode ter vários perfis. Para saber mais, veja a secção perfis . Um perfil também pode ter várias regras de escalamento horizontal e regras de redução horizontal definidas. Para ver como são avaliadas, veja a secção de avaliação .

{
    "$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"
            }
          }
        ]
      }
    ]
  }
}

A tabela abaixo descreve os elementos no JSON da definição de dimensionamento automático acima.

Section Nome do elemento Nome do portal Description
Definições ID O ID de recurso da definição de dimensionamento automático. As definições de dimensionamento automático são um recurso do Azure Resource Manager.
Definições name O nome da definição de dimensionamento automático.
Definições localização A localização da definição de dimensionamento automático. Esta localização pode ser diferente da localização do recurso que está a ser dimensionado.
propriedades targetResourceUri O ID de recurso do recurso que está a ser dimensionado. Só pode ter uma definição de dimensionamento automático por recurso.
propriedades perfis Condição de dimensionamento Uma definição de dimensionamento automático é composta por um ou mais perfis. Sempre que o motor de dimensionamento automático é executado, executa um perfil.
perfis name O nome do perfil. Pode escolher qualquer nome que o ajude a identificar o perfil.
perfis capacity.maximum Limites de instância - Máximo A capacidade máxima permitida. Garante que o dimensionamento automático não dimensiona o recurso acima deste número ao executar o perfil.
perfis capacity.minimum Limites de instância - Mínimo A capacidade mínima permitida. Garante que o dimensionamento automático não dimensiona o recurso abaixo deste número ao executar o perfil
perfis capacity.default Limites de instância - Predefinição Se existir um problema ao ler a métrica do recurso e a capacidade atual estiver abaixo da predefinição, o dimensionamento automático aumenta horizontalmente para a predefinição. Isto garante a disponibilidade do recurso. Se a capacidade atual já for superior à capacidade predefinida, o dimensionamento automático não será reduzido horizontalmente.
perfis regras Regras O dimensionamento automático dimensiona automaticamente entre as capacidades máximas e mínimas ao utilizar as regras no perfil. Pode ter várias regras num perfil. Normalmente, existem duas regras: uma para determinar quando aumentar horizontalmente e a outra para determinar quando reduzir horizontalmente.
regra metricTrigger Regra de dimensionamento Define a condição de métrica da regra.
metricTrigger metricName Nome da métrica O nome da métrica.
metricTrigger metricResourceUri O ID de recurso do recurso que emite a métrica. Na maioria dos casos, é o mesmo que o recurso que está a ser dimensionado. Em alguns casos, pode ser diferente. Por exemplo, pode dimensionar um Conjunto de Dimensionamento de Máquinas Virtuais com base no número de mensagens numa fila de armazenamento.
metricTrigger timeGrain Intervalo de tempo (minutos) A duração da amostragem de métricas. Por exemplo, TimeGrain = "PT1M" significa que as métricas devem ser agregadas a cada 1 minuto, utilizando o método de agregação especificado no elemento de estatística.
metricTrigger estatística Estatística do intervalo de agregação O método de agregação dentro do período TimeGrain. Por exemplo, estatística = "Média" e timeGrain = "PT1M" significa que as métricas devem ser agregadas a cada 1 minuto, tendo a média. Esta propriedade dita a forma como a métrica é amostrada.
metricTrigger timeWindow Duração A quantidade de tempo para procurar métricas. Por exemplo, timeWindow = "PT10M" significa que, sempre que o dimensionamento automático é executado, consulta as métricas dos últimos 10 minutos. A janela de tempo permite que as métricas sejam normalizadas e evita reagir a picos transitórios.
metricTrigger timeAggregation Agregação de tempo O método de agregação utilizado para agregar as métricas de amostra. Por exemplo, TimeAggregation = "Average" deve agregar as métricas amostradas ao obter a média. No caso anterior, tome as dez amostras de 1 minuto e faça a média das mesmas.
regra scaleAction Ação A ação a tomar quando o metricTrigger da regra é acionado.
scaleAction direção Operação "Aumentar" para aumentar horizontalmente ou "Diminuir" para aumentar horizontalmente.
scaleAction valor Contagem de instâncias Quanto aumentar ou diminuir a capacidade do recurso.
scaleAction tempo de arrefecimento Repouso (minutos) A quantidade de tempo a aguardar após uma operação de dimensionamento antes de dimensionar novamente. Por exemplo, se cooldown = "PT10M", o dimensionamento automático não tenta dimensionar novamente durante mais 10 minutos. O arrefecimento é permitir que as métricas estabilizem após a adição ou remoção de instâncias.

Perfis de dimensionamento automático

Existem três tipos de perfis de dimensionamento automático:

  • Perfil predefinido: Utilize o perfil predefinido se não precisar de dimensionar o recurso com base numa determinada data e hora ou dia da semana. O perfil predefinido é executado quando não existem outros perfis aplicáveis para a data e hora atuais. Só pode ter um perfil predefinido.
  • Perfil de data fixo: O perfil de data fixa é relevante para uma única data e hora. Utilize o perfil de data fixa para definir regras de dimensionamento para um evento específico. O perfil é executado apenas uma vez, na data e hora do evento. Para todas as outras vezes, o dimensionamento automático utiliza o perfil predefinido.
    ...
    "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"
            }
        }
    ]
  • Perfil de periodicidade: Um perfil de periodicidade é utilizado durante um dia ou conjunto de dias da semana. O esquema de um perfil periódico não inclui uma data de fim. O fim da data e hora de um perfil periódico é definido pela hora de início do seguinte perfil. Ao utilizar o portal para configurar perfis periódicos, o perfil predefinido é atualizado automaticamente para começar na hora de fim que especificar para o perfil periódico. Para obter mais informações sobre como configurar múltiplos perfis, veja Dimensionamento automático com múltiplos perfis

    O exemplo de esquema parcial abaixo mostra um perfil periódico, a partir das 06:00 e que termina às 19:00 aos sábados e domingos. O perfil predefinido foi modificado para começar às 19:00 aos sábados e domingos.

    {
        "$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"
                }
    
            }
        ]
            }
    

Avaliação do dimensionamento automático

As definições de dimensionamento automático podem ter múltiplos perfis. Cada perfil pode ter múltiplas regras. Sempre que a tarefa de dimensionamento automático é executada, começa por escolher o perfil aplicável para essa hora. Em seguida, o dimensionamento automático avalia os valores mínimos e máximos, quaisquer regras de métricas no perfil e decide se é necessária uma ação de dimensionamento. A tarefa de dimensionamento automático é executada a cada 30 a 60 segundos, dependendo do tipo de recurso.

Que perfil irá utilizar o dimensionamento automático?

Sempre que o serviço de dimensionamento automático é executado, os perfis são avaliados pela seguinte ordem:

  1. Perfis de data fixos
  2. Perfis periódicos
  3. Perfil predefinido

Será utilizado o primeiro perfil adequado encontrado.

Como é que o dimensionamento automático avalia múltiplas regras?

Depois de o dimensionamento automático determinar qual o perfil a executar, avalia as regras de escalamento horizontal no perfil, ou seja, em que direção = "Aumentar". Se forem acionadas uma ou mais regras de escalamento horizontal, o dimensionamento automático calcula a nova capacidade determinada pela scaleAction especificada para cada uma das regras. Se for acionada mais do que uma regra de escalamento horizontal, o dimensionamento automático dimensiona para a capacidade especificada mais elevada para garantir a disponibilidade do serviço.

Por exemplo, suponha que existem duas regras: a Regra 1 especifica um aumento horizontal por 3 instâncias e a regra 2 especifica um aumento horizontal por 5. Se ambas as regras forem acionadas, o dimensionamento automático aumentará horizontalmente em 5 instâncias. Da mesma forma, se uma regra especificar aumentar horizontalmente por 3 instâncias e outra regra, aumentar horizontalmente em 15%, será utilizada a maior das duas contagens de instâncias.

Se não forem acionadas regras de escalamento horizontal, o dimensionamento automático avalia as regras de redução horizontal, ou seja, regras com direção = "Diminuir". O dimensionamento automático só é dimensionado se todas as regras de redução horizontal forem acionadas.

O dimensionamento automático calcula a nova capacidade determinada pela scaleAction de cada uma dessas regras. Para garantir a disponibilidade do serviço, o dimensionamento automático dimensiona o mínimo possível para alcançar a capacidade máxima especificada. Por exemplo, suponhamos duas regras de redução horizontal, uma que diminui a capacidade em 50 por cento e outra que diminui a capacidade em 3 instâncias. Se a primeira regra resultar em 5 instâncias e a segunda regra resultar em 7, o dimensionamento automático será dimensionado para 7 instâncias.

Cada dimensionamento automático de tempo calcula o resultado de uma ação de redução horizontal, avalia se essa ação iria acionar uma ação de aumento horizontal. O cenário em que uma ação de dimensionamento aciona a ação de dimensionamento oposto é conhecido como oscilação. O dimensionamento automático pode diferir uma ação de redução horizontal para evitar oscilações ou pode ser dimensionado por um número inferior ao especificado na regra. Para obter mais informações sobre a oscilação, veja Flapping in Autoscale (Oscilar no Dimensionamento Automático)

Passos seguintes

Saiba mais sobre o dimensionamento automático ao consultar os seguintes artigos: