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:
- Perfis de data fixos
- Perfis periódicos
- 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:
- Descrição geral do dimensionamento automático
- Métricas comuns do dimensionamento automático do Azure Monitor
- Dimensionamento automático com múltiplos perfis
- Oscilar no Dimensionamento Automático
- Utilizar ações de dimensionamento automático para enviar notificações de alerta de e-mail e webhook
- API REST de Dimensionamento Automático