O auto scaling do SAE aumenta o número de instâncias da aplicação em segundos durante picos de tráfego e as reduz quando a demanda diminui, mantendo a estabilidade das aplicações com sobrecarga operacional mínima. Com base em um exemplo de promoção de e-commerce, este tópico aborda a implantação de aplicações, a configuração de regras de dimensionamento, o monitoramento em tempo real e a otimização pós-evento para garantir que sua plataforma lide com aumentos de demanda de forma confiável.
Fluxo de trabalho do auto scaling
A figura a seguir ilustra o fluxo de trabalho de ponta a ponta do auto scaling do SAE.

Prepare sua aplicação
Configure uma verificação de integridade: Garante o roteamento de tráfego para uma instância somente após ela iniciar e estar pronta para atender solicitações, mantendo a disponibilidade geral durante o dimensionamento. Para mais informações, consulte Definir uma verificação de integridade.
Configure o gerenciamento do ciclo de vida da aplicação: Assegure um encerramento gracioso durante o scale-in ao configurar as PreStop Settings. Para mais informações, consulte Configurar o gerenciamento do ciclo de vida da aplicação.
Implemente um mecanismo de backoff exponencial para chamadas de service na aplicação Java para lidar com falhas causadas por atrasos no dimensionamento, inicializações lentas ou encerramentos não graciosos.
-
Otimize a velocidade de inicialização da aplicação.
Otimização de pacote: Minimize fatores externos, como carregamento de classes e caching, para reduzir o tempo de inicialização.
Otimização de imagem: Reduza o tamanho da imagem para diminuir o tempo de pull ao criar instâncias. Utilize ferramentas open-source para analisar e simplificar as camadas da imagem.
Otimização de inicialização de aplicação Java: Ative a aceleração de aplicação ao criar uma aplicação no SAE selecionando o ambiente Dragonwell 11.
Configure uma política de auto scaling
Escolha métricas de dimensionamento
O SAE oferece suporte a diversas métricas do Basic Monitoring e do Application Monitoring. Configure essas métricas conforme o perfil da aplicação: intensiva em CPU, memória ou I/O.
Analise dados históricos das métricas relevantes no Basic Monitoring e no Application Monitoring — como valores de pico, P95 ou P99 nas últimas 6 horas, 12 horas, 1 dia ou 7 dias — para estimar um valor-alvo. Utilize uma ferramenta de teste de carga, como o Performance Testing Service (PTS), para avaliar a capacidade de pico da aplicação, incluindo o limite de requisições simultâneas, os requisitos de recursos (CPU e memória) e o comportamento de resposta sob alta carga.
Ao configurar uma política de auto scaling, considere os seguintes fatores:
-
Equilibre disponibilidade e custo ao definir valores-alvo para as métricas:
Estratégia otimizada para disponibilidade: Defina o valor da métrica em 40%.
Estratégia equilibrada: Defina o valor da métrica em 50%.
Estratégia otimizada para custo: Defina o valor da métrica em 70%.
Revise dependências como services upstream e downstream, middleware e bancos de dados. Configure políticas de dimensionamento correspondentes ou mecanismos de throttling e degradação para manter a disponibilidade de ponta a ponta durante o scale-out.
Após configurar a política de dimensionamento, monitore e ajuste-a para alinhar a capacidade à carga real da aplicação. Para mais informações sobre monitoramento, consulte Visualizar dados do Basic Monitoring.
Configure métricas de memória
Para aplicações Java, a otimização de runtime melhora a correlação entre métricas de memória e carga de negócios ao liberar memória física. O uso do runtime Dragonwell com o parâmetro JVM ElasticHeap permite o dimensionamento dinâmico da memória heap do Java, reduzindo o consumo de memória física em tempo de execução. Para mais informações sobre o ElasticHeap, consulte G1ElasticHeap.
Recomendamos o modo Dragonwell+ElasticHeap Periodic uncommit (automático). Para etapas detalhadas, consulte Implantar uma aplicação Java e Definir um comando de inicialização.
Ambiente Java: Na seção Configure JAR Package, selecione uma configuração Dragonwell na lista suspensa Java Environment.

Parâmetro JVM: Na seção Startup Command Settings, insira -XX:+ElasticHeapPeriodicUncommit.

O dimensionamento baseado em memória não é adequado para algumas aplicações que usam gerenciamento dinâmico de memória, como aquelas dependentes do gerenciamento de memória da JVM Java ou de operações Malloc e Free do Glibc. Se essas aplicações não liberarem prontamente a memória ociosa para o sistema operacional, o consumo de memória da instância não diminuirá em tempo real. Isso também pode impedir o acionamento do scale-in, pois o consumo médio de memória entre as instâncias permanece alto.
Configure a contagem de instâncias
-
Mínimo de instâncias
Defina a contagem mínima de instâncias como 2 ou mais e configure vSwitches em várias zonas. Essa configuração evita tempo de inatividade da aplicação caso uma instância seja removida devido a uma falha de nó ou se não houver instâncias disponíveis em uma zona.
-
Máximo de instâncias
Garanta que a contagem máxima de instâncias seja menor ou igual ao número de endereços IP disponíveis no vSwitch para evitar falhas de scale-out causadas pelo esgotamento de endereços IP.
Verifique os endereços IP disponíveis para a aplicação atual na seção Application Information da página Basic Information. Se a quantidade for baixa, substitua ou adicione um vSwitch.

Acompanhe o processo de auto scaling
Limite máximo de instâncias
Na página Overview da aplicação, visualize o status do auto scaling. Monitore aplicações que atingem o limite máximo de instâncias e reavalie a configuração de dimensionamento correspondente.

Se uma única aplicação precisar fazer scale-out para mais de 50 instâncias, entre no grupo do DingTalk (ID do grupo: 32874633) para solicitar a inclusão na lista de permissões.
Rebalanceamento de zonas
Após um evento de scale-in, as instâncias podem ficar distribuídas de forma desigual entre as zonas. Visualize a zona de cada instância na lista de instâncias na página Basic Information da aplicação. Caso a distribuição esteja desequilibrada, acione o rebalanceamento de zonas executando uma Restart em uma instância.

Retomada automática
Ao executar uma ordem de alteração, como implantar uma aplicação, o SAE pausa temporariamente a política de auto scaling dessa aplicação para evitar conflitos. Para restaurar a política automaticamente após a conclusão da ordem de alteração, selecione Automatic na página Deploy Application.

Manutenção do auto scaling
Eventos da aplicação
Na página Application Events, acompanhe o comportamento do auto scaling do SAE, incluindo o horário e o tipo das ações de dimensionamento. Use essas informações para avaliar e ajustar a política de dimensionamento conforme necessário. Para mais informações, consulte Visualizar eventos da aplicação.

Gráfico de tendência de instâncias da aplicação
Na página Basic Information da aplicação, a aba Basic Information contém o Application Instance Trend Chart. Esse gráfico exibe as métricas de monitoramento dos últimos 7 dias, incluindo utilização de CPU, uso de memória, conexões TCP ativas, requisições de service e tempo médio de resposta.
