Explorar as práticas recomendadas de dimensionamento automático
Se você não seguir as práticas recomendadas ao criar as configurações de dimensionamento automático, poderá criar condições que levam a resultados indesejáveis. Nesta unidade, você aprenderá a evitar criar regras que entrem em conflito umas com as outras.
Conceitos de dimensionamento automático
Uma configuração de dimensionamento automático dimensiona instâncias horizontalmente, que é escalar ao aumentar as instâncias e reduzir ao diminuir o número de instâncias. Uma configuração de dimensionamento automático tem um valor máximo, mínimo e padrão de instâncias.
Um trabalho de dimensionamento automático sempre lê a métrica associada para expandir, verificando se ele ultrapassou o limite configurado para escalar ou reduzir horizontalmente.
Todos os limites são calculados em um nível de instância. Por exemplo, "escalar horizontalmente por uma instância quando a média da CPU > 80% quando a contagem de instâncias for 2" significa escalar horizontalmente quando a média da CPU em todas as instâncias for maior que 80%.
Todos os êxitos e falhas de dimensionamento automático são registrados no Log de Atividades. Você pode configurar um alerta do log de atividades para que possa ser notificado por email, SMS ou webhook sempre que houver uma atividade.
Práticas recomendadas de dimensionamento automático
Use as melhores práticas a seguir ao criar suas regras de dimensionamento automático.
Verifique se os valores mínimo e máximo são diferentes e têm uma margem suficiente entre eles
Se você tiver uma configuração que tenha o máximo = dois, o mínimo = dois e a contagem atual de instâncias for duas, nenhuma ação de escala poderá ocorrer. Mantenha uma margem suficiente entre as contagens de instância máxima e mínima, que são inclusivas. O dimensionamento automático sempre dimensiona dentro desses limites.
Escolher a estatística apropriada para sua métrica de diagnóstico
Para métricas de diagnóstico, você pode escolher entre Média, Mínimo, Máximo e Total como uma métrica para expandir. A estatística mais comum é Média.
Escolha os limites cuidadosamente para todos os tipos de métrica
Recomendamos escolher cuidadosamente limites diferentes para escalar e reduzir horizontalmente com base em situações práticas.
Não recomendamos configurações de dimensionamento automático como os seguintes exemplos, com valores de limite iguais ou semelhantes para as condições de redução e escala:
- Aumentar as instâncias em uma contagem quando a Contagem de Threads >= 600
- Reduzir as instâncias em uma contagem quando a Contagem de Threads <= 600
Vejamos um exemplo de como o que pode levar a um comportamento que possa parecer confuso. Considere a sequência a seguir.
- Suponha que há duas instâncias para começar e, em seguida, o número médio de threads por instância aumenta para 625.
- O dimensionamento automático escala horizontalmente uma terceira instância.
- Em seguida, suponha que a contagem média de threads entre a instância seja de 575.
- Antes de escalar, o dimensionamento automático tentará estimar qual será o estado final se for reduzido horizontalmente. Por exemplo, 575 x 3 (contagem de instância atual) = 1.725/2 (número final de instâncias quando reduzido horizontalmente) = 862,5 threads. Isso significa que o dimensionamento automático precisará escalar horizontalmente de maneira imediata outra vez mesmo depois de ter sido reduzido horizontalmente, se a contagem média de threads permanecer a mesma ou tiver apenas uma pequena quantidade reduzida. No entanto, se fosse escalado horizontalmente, todo o processo se repetiria, levando a um loop infinito.
- Para evitar essa situação (chamada de "oscilação"), o dimensionamento automático não é reduzido horizontalmente. Em vez disso, ele ignora e reavalia a condição novamente na próxima vez em que executa trabalho do serviço. Isso poderia confundir muitas pessoas porque o dimensionamento automático não funcionaria quando a contagem média de threads fosse 575.
A estimativa durante uma escala horizontal destina-se a evitar situações de "oscilação", em que as ações de escala e redução horizontais mudam de maneira contínua. Lembre-se desse comportamento ao escolher os mesmos limites de redução e expansão.
Recomendamos escolher uma margem suficiente entre os limites de redução e escala horizontal. Por exemplo, considere a seguinte combinação de melhor regra.
- Aumentar as instâncias por contagem de 1 quando CPU% >= 80
- Reduzir as instâncias por contagem de 1 quando CPU% <= 60
Nesse caso
- Suponha que há 2 instâncias para começar.
- Se a porcentagem média de CPU entre instâncias for até 80, o dimensionamento automático escalará horizontalmente, adicionando uma terceira instância.
- Agora suponha que, ao longo do tempo, o percentual de CPU caia para 60.
- A regra de redução horizontal do dimensionamento automático estimaria o estado final se fosse necessário fazer a redução horizontal. Por exemplo, 60 x 3 (contagem de instância atual) = 180/2 (número final de instâncias quando reduzido horizontalmente) = 90 threads. Assim, o dimensionamento automático não reduz horizontalmente, pois ele teria que voltar a escalar horizontalmente imediatamente. Em vez disso, ele ignora a redução horizontal.
- Na próxima verificação do dimensionamento automático, a CPU continuará a cair para 50. Ele estima novamente - instância de 50 x 3 = 150 / 2 instâncias = 75, que está abaixo do limite de expansão de 80, portanto ele reduz com êxito para duas instâncias.
Considerações sobre dimensionamento quando várias regras são configuradas em um perfil
Há casos em que talvez você precise definir várias regras em um perfil. O conjunto de regras de dimensionamento automático a seguir é usado por serviços quando várias regras são definidas.
Na expansão, o dimensionamento automático será executado se nenhuma regra for atendida. Em reduzir horizontalmente, o dimensionamento automático exige que todas as regras sejam atendidas.
Para ilustrar, suponha que você tenha as seguintes quatro regras de dimensionamento automático:
- Se a CPU for < 30%, reduza horizontalmente em 1
- Se Memória < 50%, reduza horizontalmente em 1
- Se CPU > 75%, escalar horizontalmente em 1
- Se Memória > 75, escalar horizontalmente em 1
Ocorre o seguinte:
- Se a CPU for 76% e a Memória 50%, escalaremos horizontalmente.
- Se a CPU for 50% e a Memória 76%, escalaremos horizontalmente.
Por outro lado, se a CPU for 25% e a memória for 51%, o dimensionamento automático não fará a redução horizontal. Uma redução horizontal ocorreria se a CPU fosse de 29% e a Memória fosse de 49%, já que ambas as regras de escala seriam verdadeiras.
Sempre selecione uma contagem de instância de segurança padrão
A contagem de instâncias padrão é importante porque o dimensionamento automático escala o serviço para essa contagem quando métricas não estão disponíveis. Portanto, selecione uma contagem de instância padrão que seja segura para suas cargas de trabalho.
Configurar notificações de dimensionamento automático
O dimensionamento automático vai registrar no log de atividades se qualquer das seguintes condições ocorrer:
- O dimensionamento automático emite uma operação de dimensionamento
- O serviço de dimensionamento automático conclui com sucesso uma ação de dimensionamento
- O serviço de dimensionamento automático não pode executar uma ação de dimensionamento.
- As métricas não estão disponíveis para o serviço de dimensionamento automático tomar uma decisão de escala.
- As métricas estão disponíveis (recuperação) novamente para tomar uma decisão de escala.
Você também pode usar um alerta do Log de Atividades para monitorar a integridade do mecanismo de dimensionamento automático. Além de usar os alertas do log de atividades, você também pode configurar as notificações por e-mail ou webhook para obter notificações de ações de dimensionamento bem-sucedidas através do guia de notificações nas configurações de dimensionamento automático.