Quando a demanda por recursos diminui, o grupo de dimensionamento aciona um evento de scale-in com base nas políticas definidas para reduzir automaticamente o número de instâncias e evitar desperdício. Este guia apresenta as práticas recomendadas para realizar um scale-in controlado.
Processo de scale-in
Durante um evento de scale-in, o grupo de dimensionamento seleciona instâncias para remoção conforme as políticas configuradas e as recupera de acordo com o modo de recuperação de instância definido. Configure ações em várias etapas desse processo, conforme ilustrado no fluxograma a seguir:
Acionar um scale-in
Controlar os limites do scale-in
-
Método: Defina o Minimum Number of Instances do grupo de dimensionamento.
O número mínimo de instâncias funciona como limite inferior para o scale-in. Se uma atividade de scale-in reduzir a quantidade de instâncias abaixo desse mínimo, o sistema rejeitará a ação. Isso garante que o grupo mantenha capacidade suficiente para a carga de trabalho básica.
Procedimento: Para mais informações, consulte Gerencie grupos de dimensionamento.
Realizar scale-in por níveis de carga de trabalho
-
Método: Crie uma regra de dimensionamento em etapas para o grupo de dimensionamento.
Uma regra de dimensionamento em etapas executa o scale-in gradualmente com base em níveis de carga de trabalho. Isso evita interrupções de service causadas pela remoção excessiva de instâncias de uma só vez. Por exemplo, elabore um plano de scale-in baseado na utilização média de CPU do grupo:
Remova 5 instâncias quando a utilização média de CPU estiver abaixo de 20%.
Remova 3 instâncias quando a utilização média de CPU estiver abaixo de 30%.
Remova 1 instância quando a utilização média de CPU estiver abaixo de 50%.
Para implementar essa configuração, defina a seguinte regra de dimensionamento em etapas. Na caixa de diálogo Create Scaling Rule, configure Monitoring Type como System Monitoring. Em Execution Time, selecione a tarefa de alarme Low CPU Utilization (utilização média de CPU (Agent) menor ou igual a 50% por 3 vezes consecutivas). Configure a regra para remover instâncias em etapas: remova 1 instância quando a utilização de CPU estiver entre 30% e 50%, remova 3 instâncias quando estiver entre 20% e 30% e remova 5 instâncias quando estiver abaixo de 20%. Defina instance warmup como 300 segundos.
Procedimento: Para mais informações, consulte Configure regras de dimensionamento.
Controlar a velocidade e a frequência do scale-in
Defina um período de resfriamento e a frequência de acionamento das tarefas de alarme para evitar interrupções de service provocadas por atividades rápidas de scale-in.
Personalizar os acionadores de scale-in
Adapte o momento de acionamento do scale-in às suas necessidades específicas. Os métodos a seguir estão disponíveis.
Selecionar instâncias para scale-in
Por padrão, o grupo de dimensionamento remove instâncias seguindo a prioridade de vSwitch definida. Altere a política de scale-in para escolher as instâncias a serem removidas conforme seus critérios.
Caso não deseje remover uma instância crítica durante o scale-in, ative o estado Protegido para impedir sua exclusão acidental. Para instruções detalhadas, consulte Manually add an instance to or remove an instance from the Protected state.
Grupos de dimensionamento de Elastic Container Instance (ECI) não permitem configurar uma Scaling Policy nem uma Instance Removing Policy. Por padrão, esses grupos selecionam primeiro o conjunto de instâncias criado pela configuração de dimensionamento mais antiga e, em seguida, removem as instâncias mais antigas dentro desse conjunto.
Solução 1: Política de distribuição equilibrada
Esta solução prioriza a recuperação de desastres ao manter as instâncias distribuídas uniformemente entre as zonas após o scale-in, facilitando a alta disponibilidade multizona.
-
Método: Defina a Scaling Policy como Balanced Distribution Policy.
Com essa política, o grupo de dimensionamento prioriza a remoção de instâncias da zona com maior quantidade delas. Se houver várias instâncias elegíveis para remoção, o grupo aplica a Instance Removing Policy configurada para fazer a seleção final. Exemplos incluem remover as instâncias mais antigas ou mais recentes, ou aquelas provenientes da configuração de dimensionamento mais antiga.
Procedimento: Para mais informações, consulte Scenario 2: Scaling Policy (Balanced Distribution Policy) + Scale-In Policy.
Solução 2: Política de otimização de custos
Focada no controle de despesas, esta abordagem remove primeiramente as instâncias com maior preço unitário.
-
Método: Defina a Scaling Policy como Cost Optimization Policy.
Sob esta política, o grupo de dimensionamento prioriza a remoção das instâncias com o maior preço unitário de vCPU. Quando múltiplas instâncias compartilham o mesmo preço máximo, o grupo utiliza a Instance Removing Policy configurada para decidir quais remover. As opções incluem as mais antigas, as mais recentes ou as da configuração de dimensionamento inicial.
Procedimento: Para mais informações, consulte Scenario 3: Scaling Policy (Cost Optimization Policy) + Scale-In Policy.
Esta solução também permite ajustar a proporção entre instâncias preemptíveis e instâncias de pagamento conforme o uso no grupo de dimensionamento para equilibrar os custos.
Solução 3: Política de combinação personalizada
Combine as estratégias da Solução 1 e da Solução 2 para atender aos seus requisitos específicos.
-
Método: Defina a Scaling Policy como Custom Combination Policy.
Essa política possibilita ajustar a relação entre instâncias de pagamento conforme o uso e instâncias preemptíveis, equilibrar a capacidade entre zonas e definir estratégias distintas de distribuição de capacidade para cada tipo de instância.
Procedimento: Para mais informações, consulte Configure an instance termination policy for a scaling group.
Solução 4: Política de scale-in personalizada
Se as políticas nativas de scale-in não forem suficientes, crie uma política personalizada utilizando o Function Compute.
-
Método: Defina a Instance Removing Policy como Custom Policy.
Implemente sua lógica personalizada de scale-in no Function Compute. Sempre que um evento de scale-in for acionado, o sistema invocará sua função. Assim, você poderá especificar exatamente quais instâncias remover e quais manter.
Procedimento: Para mais informações, consulte Customize an ECS instance removal policy by using a function.
Scale-in controlado
O scale-in controlado pausa a remoção de instâncias que ainda processam tarefas. Isso permite que elas concluam suas operações antes da liberação e evita interrupções no service.
-
Método: Configure um Lifecycle Hook.
Um lifecycle hook interrompe temporariamente a remoção da instância durante o scale-in para permitir a execução de ações personalizadas. Também é possível chamar uma API para estender o tempo de espera do hook. Dessa forma, a instância terá o tempo necessário para finalizar suas tarefas antes do encerramento.
Procedimento: Para mais informações, consulte Overview of lifecycle hooks e Extend the wait time of a lifecycle hook.
A remoção, exclusão ou parada direta de instâncias não aciona lifecycle hooks. Portanto, este método não se aplica a esses casos.
Recuperar instâncias removidas
Por padrão, o grupo de dimensionamento utiliza o modo Force Release para recuperar instâncias. Esse modo libera imediatamente as instâncias removidas. Para alterar o Instance Reclaim Mode, consulte Gerencie grupos de dimensionamento.