Configurar um Conjunto de Dimensionamento de Máquinas Virtuais
Ao escalar, você adiciona instâncias ao Conjunto de Dimensionamento de Máquinas Virtuais. No cenário da empresa de transporte, a colocação em escala é uma boa maneira para lidar com o número instável de solicitações ao longo do tempo. A colocação em escala ajusta o número de máquinas virtuais que executam o aplicativo Web, conforme o número de usuários é alterado. Dessa forma, o sistema mantém um tempo de resposta uniforme, independentemente da carga atual.
Nesta unidade, você irá aprender a dimensionar um Conjunto de Dimensionamento de Máquinas Virtuais. Você pode dimensioná-lo manualmente configurando explicitamente o número de instâncias de máquina virtual no conjunto de dimensionamento. Você pode configurar o dimensionamento automático definindo regras de escala que disparam a alocação e a desalocação de máquinas virtuais. Essas regras de escala determinam quando dimensionar o sistema pelo monitoramento de várias métricas de desempenho.
Escalar manualmente os Conjuntos de Dimensionamento de Máquinas Virtuais
Você escala manualmente um Conjunto de Dimensionamento de Máquinas Virtuais aumentando ou diminuindo a contagem de instâncias. Execute essa tarefa de forma programática ou na portal do Azure.
O seguinte código usa a CLI do Azure para alterar o número de instâncias em um Conjunto de Dimensionamento de Máquinas Virtuais:
az vmss scale \
--name webServerScaleSet \
--resource-group MyResourceGroup \
--new-capacity 6
Dimensionar automaticamente os Conjuntos de Dimensionamento de Máquinas Virtuais
O dimensionamento manual é útil em algumas circunstâncias. Porém, em muitas situações, o dimensionamento automático é melhor. Ele permite que o sistema controle o número de instâncias em um conjunto de dimensionamento.
O dimensionamento automático pode ser baseado em:
- Agendamento: Use essa abordagem se você souber que terá uma carga de trabalho maior em uma data ou um período especificado.
- Métrica: ajuste o dimensionamento monitorando as métricas de desempenho associadas ao conjunto de dimensionamento. Quando essas métricas excedem um limite especificado, o conjunto de dimensionamento pode iniciar automaticamente novas instâncias de máquina virtual. Quando as métricas indicam que os recursos extra não são mais necessários, o conjunto de dimensionamento pode interromper as instâncias em excesso.
Definir condições, regras e limites de dimensionamento automático
O dimensionamento automático é baseado em um conjunto de condições, regras e limites de escala. Uma condição de escala combina o tempo e um conjunto de regras de escala. Se a hora atual estiver dentro do período definido na condição de escala, as regras de escala da condição serão avaliadas. Os resultados dessa avaliação determinam se as instâncias devem ser adicionadas ou removidas do conjunto de dimensionamento. A condição de escala também define os limites de dimensionamento para o número máximo e o mínimo de instâncias.
No cenário da empresa de transporte, você pode adicionar regras de escala que monitoram o uso da CPU no conjunto de dimensionamento. Se o uso da CPU exceder o limite de 75%, a regra de escala poderá aumentar o número de instâncias de máquina virtual. Uma segunda regra de escala também pode monitorar o uso da CPU, mas reduzir o número de instâncias da máquina virtual quando o uso ficar abaixo de 50%. Devido ao fato de o aplicativo ser global, essas regras devem estar ativas o tempo todo, em vez de apenas em horários específicos.
Um Conjunto de Dimensionamento de Máquinas Virtuais pode conter muitas condições de escala. Cada condição de escala correspondente é aplicada. Um conjunto de dimensionamento também pode conter uma condição de dimensionamento padrão que será usada se nenhuma outra situação de dimensionamento corresponder às métricas de tempo e desempenho atuais. A condição de escala padrão é sempre ativa. Ela não contém regras de escala agindo efetivamente como uma condição de escala nula que não reduz horizontalmente ou escala horizontalmente. No entanto, você pode modificar a condição de escala padrão para definir uma contagem de instâncias padrão ou adicionar um par de regras de escala que são escaladas horizontalmente e reduzidas horizontalmente de novo.
Usar o dimensionamento automático baseado em agendamento
O dimensionamento baseado em agendamento especifica uma hora de início e de término, bem como o número de instâncias a serem adicionadas ao conjunto de dimensionamento. A captura de tela a seguir mostra um exemplo no portal do Azure. O número de instâncias é expandido para 20 entre 6h e 18h, toda segunda-feira e quarta-feira. Fora desses horários, se não houver outras condições de escala, a condição de escala padrão será aplicada.
Nesse caso, a regra padrão reduz o sistema novamente para duas instâncias. Esse valor é o Máximo nesta condição de escala padrão.
Usar o dimensionamento automático baseado em métricas
Uma regra de escala baseada em métricas especifica os recursos a serem monitorados, como uso da CPU ou tempo de resposta. Essa regra de escala adiciona ou remove instâncias do conjunto de dimensionamento de acordo com os valores dessas métricas. Você pode especificar limites no número de instâncias para impedir que um conjunto de dimensionamento seja expandido ou reduzido em excesso.
No cenário de exemplo, você deseja aumentar a contagem de instâncias em mais uma quando o uso médio da CPU exceder 75%. Além disso, você deseja limitar a operação de expansão a 50 instâncias. Esse limite pode ajudar a evitar um dimensionamento caro e sem controle causado por um ataque. Da mesma forma, o ideal é reduzir as instâncias horizontalmente quando o uso médio da CPU fica abaixo de 50%.
Essas métricas são comumente usadas para monitorar um Conjunto de Dimensionamento de Máquinas Virtuais:
- Percentual da CPU: essa métrica indica o uso da CPU em todas as instâncias. Um valor alto mostra que as instâncias estão se associando à CPU, o que pode atrasar o processamento das solicitações dos clientes.
- Fluxos de entrada e fluxos de saída: essas métricas mostram a velocidade do fluxo do tráfego de rede externa e internamente nas máquinas virtuais do conjunto de dimensionamento.
- Operações de leitura de discos/s e operações de gravação de disco/s: Essas métricas mostram o volume de E/S de disco no conjunto de dimensionamento.
- Profundidade da fila de disco de dados: Essa métrica mostra quantas solicitações de E/S para apenas os discos de dados nas máquinas virtuais estão aguardando para serem atendidas.
Uma regra de escala agrega os valores recuperados de uma métrica para todas as instâncias. Ela agrega os valores de um período conhecido como intervalo de agregação. Cada métrica tem um intervalo de agregação intrínseco, mas, geralmente, esse período é de um minuto. O valor agregado é conhecido como agregação de tempo. As opções de agregação de tempo disponíveis são média, mínima, máxima, total, última e contagem.
Um intervalo de um minuto é muito curto para determinar se qualquer alteração na métrica durará o suficiente para fazer com que o dimensionamento automático valha a pena. Uma regra de escala usa uma segunda etapa, agregando ainda mais o valor da agregação de tempo em um período mais longo, especificado pelo usuário. Esse período é chamado de duração. A duração mínima é de cinco minutos. Por exemplo, se a duração for definida como 10 minutos, a regra de escala agregará os 10 valores calculados para o intervalo de agregação.
O cálculo de agregação da duração pode ser diferente do cálculo de agregação do intervalo de agregação. Por exemplo, digamos que a agregação de tempo seja média e a estatística coletada seja percentual da CPU em um intervalo de agregação de um minuto. Para cada minuto, o uso médio do percentual da CPU em todas as instâncias durante esse minuto será calculado. Se a estatística de intervalo de agregação estiver definida como máxima e a duração da regra estiver definida como 10 minutos, o máximo dos 10 valores médios para o percentual de uso da CPU determinará se o limite da regra foi ultrapassado.
Quando uma regra de escala detecta que uma métrica ultrapassou um limite, ela pode fazer uma ação de dimensionamento. Uma ação de escala pode ser uma expansão ou uma redução horizontal. Uma ação de expansão aumenta o número de instâncias. Uma ação de redução horizontal reduz a contagem de instâncias.
Uma ação de escala usa um operador, como menor que, maior que ou igual a, para determinar como responder ao limite. Normalmente, as ações de expansão horizontal usam o operador maior que para comparar o valor da métrica com o limite. As ações de redução horizontal tendem a comparar o valor da métrica ao limite usando o operador menor que. Uma ação de escala também define a contagem de instâncias com um nível específico, em vez de aumentar ou diminuir o número disponível.
Uma ação de escala tem um período de resfriamento, especificado em minutos. Durante esse período, a regra de escala não é disparada novamente. Esse resfriamento permite que o sistema se estabilize entre os eventos de escala. A inicialização ou o desligamento de instâncias leva algum tempo e, portanto, as métricas coletadas podem não mostrar alterações significativas por vários minutos. O período de resfriamento mínimo é de cinco minutos.
Por fim, você deve planejar uma redução horizontal quando uma carga de trabalho diminuir. Considere a possibilidade de definir regras de escala em pares na mesma condição de escala. Uma regra de escala deve indicar como expandir o sistema quando uma métrica excede um limite superior. A outra regra precisa definir como reduzir horizontalmente o sistema mais uma vez quando a mesma métrica diminui para um valor menor que o limite inferior. Não deixe os dois valores de limite iguais. Caso contrário, você poderá disparar uma série de eventos oscilatórios para expansão e redução horizontal novamente.
A imagem a seguir mostra uma regra de escala definida no portal do Azure.