Compreender configurações de dimensionamento automático
As configurações de Autoescala 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 as configurações de dimensionamento automático para serem disparadas com base em métricas que indicam carga ou desempenho ou para serem disparadas 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 seguinte exemplo mostra uma configuração de dimensionamento automático com estes atributos:
- Um único perfil padrão.
- Duas regras de métrica neste perfil: uma para escalar horizontalmente e outra para reduzir horizontalmente.
- A regra para aumentar é disparada quando a média da métrica de percentual de CPU do conjunto de dimensionamento de máquinas virtuais é superior a 85% nos últimos dez minutos.
- A regra para reduzir é disparada quando a média do conjunto de dimensionamento de máquinas virtuais é menor que 60% no último minuto.
Observação
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 escalonamento e redução horizontal definidas. Para ver como elas são avaliadas, veja a seção 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 dimensionamento automático acima.
Seção | Nome do elemento | Nome do portal | Descrição |
---|---|---|---|
Setting | ID | A ID do recurso da configuração de dimensionamento automático. As configurações de dimensionamento automático são um recurso do Azure Resource Manager. | |
Setting | name | O nome da configuração de dimensionamento automático. | |
Setting | local | O local da configuração de dimensionamento automático. Esse local pode ser diferente do local em que o recurso está sendo dimensionado. | |
properties | targetResourceUri | A ID do recurso que está sendo dimensionado. Você só pode ter uma configuração de dimensionamento automático por recurso. | |
properties | perfis | Condição de escala | Uma configuração de dimensionamento automático é composta de um ou mais perfis. Cada vez que o mecanismo de dimensionamento automático é executado, ele executa um perfil. Configure até 20 perfis por configuração de dimensionamento automático. |
perfis | name | O nome do perfil. Escolha qualquer nome que o ajude a identificar o perfil. | |
perfis | capacity.maximum | Limites de instância – Máximo | A capacidade máxima permitida. Isso garante que o dimensionamento automático não dimensione os recursos acima desse limite durante a execução do perfil. |
perfis | capacity.minimum | Limites de instância – Mínimo | A capacidade mínima permitida. Isso garante que o dimensionamento automático não dimensione os recursos abaixo desse limite durante a execução do perfil |
perfis | capacity.default | Limites de instância – Padrão | Se houver algum problema ao ler a métrica do recurso e a capacidade atual estiver abaixo do padrão, o dimensionamento automático escalará horizontalmente de acordo com o padrão. Essa ação garante a disponibilidade do recurso. Se a capacidade atual já é maior do que a capacidade padrão, o dimensionamento automático não reduz horizontalmente. |
perfis | regras | Regras | O dimensionamento automático ocorre automaticamente entre as capacidades máximas e mínimas usando as regras do perfil. Defina até 10 regras individuais em um perfil. Normalmente, as regras são definidas em pares, uma para determinar quando escalar horizontalmente e a outra para determinar quando reduzir verticalmente. |
regra | metricTrigger | Regra de escala | Define a condição de 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 do recurso que está sendo dimensionado. Em alguns casos, ela pode ser diferente. Por exemplo, você pode escalonar um conjunto de dimensionamento de máquinas virtuais com base no número de mensagens em uma fila de armazenamento. | |
metricTrigger | timeGrain | Granularidade de tempo (minutos) | A duração de métrica de amostragem. Por exemplo, timeGrain = "PT1M" significa que a métrica deve ser agregada a cada um minuto usando o método de agregação especificado no elemento de estatística. |
metricTrigger | statistic | Estatística de intervalo de agregação | O método de agregação dentro do período de timeGrain. Por exemplo, statistic = "Average" e timeGrain = "PT1M" significa que as métricas devem ser agregadas a cada um minuto, considerando a média. Essa propriedade determina como a métrica é amostrada. |
metricTrigger | timeWindow | Duração | O período de tempo no qual as métricas devem ser consultadas. Por exemplo,timeWindow = "PT10M" significa que sempre que o dimensionamento automático for executado, ele consultará as métricas dos últimos dez minutos. O período de tempo permite que as métricas sejam normalizadas e evita uma reação a picos transitórios. |
metricTrigger | timeAggregation | Agregação de tempo | O método de agregação usado para agregar as métricas amostradas. Por exemplo, timeAggregation = "Average" deve agregar as métricas amostradas obtendo a média. No caso anterior, é obtida a média das dez amostras de um minuto. |
regra | scaleAction | Ação | A ação a ser executada quando o metricTrigger da regra for acionado. |
scaleAction | direction | Operação | "Increase" para escalar horizontalmente ou "Decrease" para reduzir horizontalmente. |
scaleAction | value | Contagem de instâncias | Quanto aumentar ou diminuir a capacidade do recurso. |
scaleAction | cooldown | Tempo de resfriamento (minutos) | O período de tempo a esperar após uma operação de dimensionamento antes de escalonar novamente. O período de resfriamento entra em vigor após uma escala ou um evento de expansão. Por exemplo, se cooldown = "PT10M", o dimensionamento automático não tentará ocorrer novamente nos próximos dez minutos. O resfriamento deve permitir que as métricas se estabilizem após a adição ou a remoção de instâncias. |
Perfis de dimensionamento automático
Defina até 20 perfis diferentes por configuração de dimensionamento automático.
Há três tipos de perfis de dimensionamento automático:
Perfil padrão: use o perfil padrão se você não precisar dimensionar o recurso com base em data, hora ou dia da semana específicos. O perfil padrão é executado quando não há outros perfis aplicáveis à data e hora atuais. Você pode ter apenas um perfil padrão.
Perfil de data fixa: o perfil de data fixa é relevante para uma só data e hora. Use o perfil de data fixa a fim de definir regras de dimensionamento para um evento específico. O perfil é executado somente 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 de 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. Ao usar o portal para configurar perfis recorrentes, o perfil padrão é atualizado automaticamente para iniciar na hora de término especificada no perfil recorrente. Para obter mais informações sobre como configurar vários perfis, confira Dimensionamento automático com vários perfis
O exemplo de esquema parcial aqui mostra um perfil recorrente. Ele começa às 6h e termina às 19h 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 da Autoescala
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. Depois, ele avalia os valores mínimo e máximo e as regras de métrica do perfil para decidir se uma ação de dimensionamento é 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 escala ocorre, o trabalho de dimensionamento automático aguarda o período de resfriamento antes de ser dimensionado novamente. O período de resfriamento se aplica a ações de expansão e expansão.
Qual perfil o dimensionamento automático usará?
Sempre 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 será usado.
Como o dimensionamento automático 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, direction = "Increase". Se uma ou mais regras para escalar horizontalmente forem acionadas, o dimensionamento automático calculará a nova capacidade determinada pela scaleAction especificada para cada uma das regras. Se mais de uma regra de expansão for disparada, o dimensionamento automático será dimensionado para a capacidade especificada mais alta a fim de garantir a disponibilidade do serviço.
Por exemplo, digamos que haja duas regras: a Regra 1 especifica uma expansão em três instâncias e a Regra 2 especifica em cinco. Se ambas as regras forem disparadas, 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 em 15%, será usada a maior das duas contagens de instâncias.
Se nenhuma regra de expansão for disparada, o dimensionamento automático avaliará as regras para de redução horizontal, ou seja, regras com direction = "Decrease". O dimensionamento automático só reduz horizontalmente quando todas as regras de redução horizontal são disparadas.
A Autoescala calculará a nova capacidade determinada pela scaleAction de cada uma dessas regras. Para garantir a disponibilidade do serviço, o dimensionamento automático é dimensionado pelo mínimo possível para alcançar a capacidade máxima especificada. Por exemplo, digamos que haja duas regras de redução horizontal: uma que reduz 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, o dimensionamento automático será dimensionado em sete instâncias.
Cada vez que o dimensionamento automático calcula o resultado de uma ação de redução horizontal, ele avalia se essa ação dispararia uma ação de expansão. O cenário em que uma ação de escala dispara a ação de escala oposta é conhecido como oscilação. O dimensionamento automático pode adiar uma ação de redução horizontal para evitar oscilações ou pode ocorrer com um número menor do que o especificado na regra. Para obter mais informações sobre oscilação, confira Oscilação no dimensionamento automático.
Próximas etapas
Saiba mais sobre o dimensionamento automático:
- Visão geral do dimensionamento automático
- Métricas comuns de dimensionamento automático do Azure Monitor
- Dimensionamento automático com vários perfis
- Oscilação no dimensionamento automático
- Usar ações de dimensionamento automático para enviar notificações de alerta por email e webhook
- API REST do Dimensionamento Automático