Compreender as configurações de dimensionamento automático
As configurações de dimensionamento automático ajudam a garantir que você tenha a quantidade certa de recursos em execução para lidar com a carga flutuante do seu aplicativo. Você pode definir configurações de dimensionamento automático para serem acionadas com base em métricas que indicam carga ou desempenho, ou acionadas em uma data e hora agendadas.
Este artigo explica as configurações de dimensionamento automático.
Esquema de configuração de dimensionamento automático
O exemplo a seguir mostra uma configuração de dimensionamento automático com esses atributos:
- Um único perfil padrão.
- Duas regras métricas neste perfil: uma para scale-out e outra para scale-in.
- A regra de expansão é acionada quando a métrica de porcentagem média de CPU do conjunto de dimensionamento de máquina virtual é maior que 85% nos últimos 10 minutos.
- A regra de dimensionamento é acionada quando a média do conjunto de escala da máquina virtual é inferior a 60% no minuto anterior.
Nota
Uma configuração pode ter vários perfis. Para saber mais, consulte a seção Perfis . Um perfil também pode ter várias regras de expansão e regras de expansão definidas. Para ver como eles são avaliados, consulte a seçã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 a seguir descreve os elementos no JSON da configuração de escala automática anterior.
Section | Nome do elemento | Nome do portal | Description |
---|---|---|---|
Definição | ID | O ID de recurso da configuração de dimensionamento automático. As configurações de dimensionamento automático são um recurso do Azure Resource Manager. | |
Definição | nome | O nome da configuração de dimensionamento automático. | |
Definição | localização | O local da configuração de dimensionamento automático. Esse local pode ser diferente do local do recurso que está sendo dimensionado. | |
propriedades | targetResourceUri | A ID do recurso que está sendo dimensionado. Você só pode ter uma configuração de dimensionamento automático por recurso. | |
propriedades | perfis | Condição da escala | Uma configuração de dimensionamento automático é composta por um ou mais perfis. Cada vez que o mecanismo de escala automática é executado, ele executa um perfil. Configure até 20 perfis por configuração de escala automática. |
perfis | nome | O nome do perfil. Pode escolher qualquer nome que o ajude a identificar o perfil. | |
perfis | capacidade.máximo | Limites de instância - Máximo | A capacidade máxima permitida. Ele garante que o dimensionamento automático não dimensione seu recurso acima desse número quando ele executa o perfil. |
perfis | capacidade.mínimo | Limites de instância - Mínimo | A capacidade mínima permitida. Ele garante que o dimensionamento automático não dimensione seu recurso abaixo desse número quando ele executa o perfil |
perfis | capacidade.padrão | Limites de instância - Padrão | Se houver um problema ao ler a métrica de recurso e a capacidade atual estiver abaixo do padrão, o dimensionamento automático será dimensionado para o padrão. Esta ação garante a disponibilidade do recurso. Se a capacidade atual já for maior do que a capacidade padrão, o dimensionamento automático não será dimensionado. |
perfis | regras | Regras | O dimensionamento automático é dimensionado automaticamente entre as capacidades máxima e mínima usando as regras no perfil. Defina até 10 regras individuais em um perfil. Normalmente, as regras são definidas em pares, uma para determinar quando expandir e outra para determinar quando escalar. |
regra | metricTrigger | Regra de dimensionamento | Define a condição métrica da regra. |
metricTrigger | metricName | Nome da métrica | O nome da métrica. |
metricTrigger | metricResourceUri | A ID do recurso que emite a métrica. Na maioria dos casos, é o mesmo que o recurso que está sendo dimensionado. Em alguns casos, pode ser diferente. Por exemplo, você pode dimensionar um conjunto de dimensionamento de máquina virtual com base no número de mensagens em uma fila de armazenamento. | |
metricTrigger | timeGrain | Grão de tempo (minutos) | A duração métrica da amostragem. Por exemplo, timeGrain = "PT1M" significa que as métricas devem ser agregadas a cada 1 minuto, usando o método de agregação especificado no elemento statistic. |
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, tomando a média. Esta propriedade dita como a métrica é amostrada. |
metricTrigger | timeWindow | Duração | A quantidade de tempo para olhar para trás em busca de métricas. Por exemplo, timeWindow = "PT10M" significa que toda vez que o dimensionamento automático é executado, ele consulta métricas dos últimos 10 minutos. A janela de tempo permite que suas 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 amostradas. Por exemplo, timeAggregation = "Average" deve agregar as métricas amostradas tomando a média. No caso anterior, pegue as dez amostras de 1 minuto e faça a média. |
regra | scaleAction | Ação | A ação a ser tomada quando o metricTrigger da regra é acionado. |
scaleAction | direção | Operação | "Aumentar" para expandir ou "Diminuir" para escalar. |
scaleAction | valor | Contagem de instâncias | Quanto aumentar ou diminuir a capacidade do recurso. |
scaleAction | tempo de arrefecimento | Repouso (minutos) | A quantidade de tempo de espera após uma operação de escala antes de dimensionar novamente. O período de reflexão entra em vigor após um evento de scale-in ou scale-out. Por exemplo, se cooldown = "PT10M", o dimensionamento automático não tentará dimensionar novamente por mais 10 minutos. O cooldown é permitir que as métricas se estabilizem após a adição ou remoção de instâncias. |
Dimensionamento automático de perfis
Defina até 20 perfis diferentes por configuração de dimensionamento automático.
Existem três tipos de perfis de dimensionamento automático:
Perfil padrão: use o perfil padrão se não precisar dimensionar seu recurso com base em uma data e hora ou dia específicos da semana. O perfil padrão é executado quando não há outros perfis aplicáveis para a data e hora atuais. Você só pode ter um perfil padrão.
Perfil de data fixa: O perfil de data fixa é relevante para uma única data e hora. Use 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 usa o perfil padrão.
... "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 recorrência: Um perfil de recorrência é usado para um dia ou conjunto de dias da semana. O esquema para um perfil recorrente não inclui uma data de término. O fim da data e hora de um perfil recorrente é definido pela hora de início do perfil a seguir. Quando o portal é usado para configurar perfis recorrentes, o perfil padrão é atualizado automaticamente para iniciar na hora de término especificada para o perfil recorrente. Para obter mais informações sobre como configurar vários perfis, consulte Dimensionamento automático com vários perfis
O exemplo de esquema parcial aqui mostra um perfil recorrente. Começa às 06:00 e termina às 19:00 aos sábados e domingos. O perfil padrão 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 em escala automática
As configurações de dimensionamento automático podem ter vários perfis. Cada perfil pode ter várias regras. Cada vez que o trabalho de dimensionamento automático é executado, ele começa escolhendo o perfil aplicável para esse tempo. Em seguida, o dimensionamento automático avalia os valores mínimo e máximo, quaisquer regras métricas no perfil e decide se uma ação de escala é necessária. O trabalho de dimensionamento automático é executado a cada 30 a 60 segundos, dependendo do tipo de recurso. Depois que uma ação de dimensionamento ocorre, o trabalho de dimensionamento automático aguarda o período de resfriamento antes de ser dimensionado novamente. O período de reflexão aplica-se a ações de expansão e de expansão.
Qual perfil será usado pelo dimensionamento automático?
Cada vez que o serviço de dimensionamento automático é executado, os perfis são avaliados na seguinte ordem:
- Perfis de data fixa
- Perfis recorrentes
- Perfil padrão
O primeiro perfil adequado encontrado é usado.
Como a escala automática avalia várias regras?
Depois que o dimensionamento automático determina qual perfil executar, ele avalia as regras de expansão no perfil, ou seja, onde direção = "Aumentar". Se uma ou mais regras de expansão forem acionadas, a escala automática calculará a nova capacidade determinada pela scaleAction especificada para cada uma das regras. Se mais de uma regra de expansão for acionada, o dimensionamento automático será dimensionado para a capacidade especificada mais alta para garantir a disponibilidade do serviço.
Por exemplo, suponha que há duas regras: a regra 1 especifica uma expansão por três instâncias e a regra 2 especifica uma expansão por cinco. Se ambas as regras forem acionadas, o dimensionamento automático será dimensionado em cinco instâncias. Da mesma forma, se uma regra especificar a expansão em três instâncias e outra regra especificar a expansão em 15%, a maior das duas contagens de instâncias será usada.
Se nenhuma regra de expansão for acionada, a escala automática avaliará as regras de expansão, ou seja, regras com direção = "Diminuir". O dimensionamento automático só é dimensionado se todas as regras de dimensionamento forem acionadas.
A escala automática calcula a nova capacidade determinada pela scaleAction de cada uma dessas regras. Para garantir a disponibilidade do serviço, o dimensionamento automático é dimensionado o mínimo possível para atingir a capacidade máxima especificada. Por exemplo, suponha duas regras de expansão, uma que diminui a capacidade em 50% e outra que diminui a capacidade em três instâncias. Se a primeira regra resultar em cinco instâncias e a segunda regra resultar em sete, a escala automática será dimensionada para sete instâncias.
Cada vez que a escala automática calcula o resultado de uma ação de expansão, ela avalia se essa ação acionaria uma ação de expansão. O cenário em que uma ação de escala aciona a ação de escala oposta é conhecido como flapping. O dimensionamento automático pode adiar uma ação de dimensionamento para evitar batimentos ou pode ser dimensionado por um número menor do que o especificado na regra. Para obter mais informações sobre batimento, consulte Flapping in autoscale.
Próximos passos
Saiba mais sobre o dimensionamento automático:
- Descrição geral do dimensionamento automático
- Métricas comuns do Azure Monitor de dimensionamento automático
- Dimensionamento automático com vários perfis
- Flapping em escala automática
- Use ações de dimensionamento automático para enviar notificações de alerta por e-mail e webhook
- API REST de dimensionamento automático