Saltar para o conteúdo
Índice
Sites

Escalar e Auto-Escalar uma Aplicação Node.js

Tradução automática. O original em inglês está disponível.

O auto-scaling aumenta e diminui o número de instâncias em execução da sua aplicação Node.js à medida que a carga de CPU varia, para que os períodos de maior movimento tenham mais capacidade e os períodos de calma custem menos. Este guia aborda o separador do KPanel, todas as definições, o que é faturado e como tornar uma aplicação segura para escalar.

Onde Fica a Escalabilidade no KPanel

  1. Inicie sessão no KPanel.
  2. Clique em Websites na barra lateral esquerda e depois clique no site.
  3. No menu esquerdo do site, abra Desempenho e depois Escalabilidade.

O endereço direto é /websites/<site-id>/autoscale. O endereço antigo /websites/<site-id>/scaling continua a funcionar e leva-o ao mesmo sítio.

Definições de auto-scaling para uma aplicação Node.js no KPanel

Este separador só aparece em sites Node.js. Não estará presente no menu de um site WordPress, WooCommerce, estático, PHP, Python ou Ruby, porque o mecanismo escala um cluster de processos Node.js.

Um Único Separador, Uma Única Configuração

O KPanel costumava ter dois separadores aqui, Escalabilidade e Escalabilidade automática, sobre um único conjunto de definições. Eram duas vistas da mesma configuração, o que só servia para gerar confusão, pelo que agora existe um único separador Escalabilidade: estado em tempo real, as definições, eventos recentes de escalabilidade e o painel de utilização e custo do período de faturação atual, tudo num só sítio.

Como Funciona

A sua aplicação é executada como um cluster de processos. O auto-scaling monitoriza a CPU média entre as instâncias em execução e adiciona ou remove instâncias de acordo com os limiares que definir.

O modo cluster é obrigatório. Se a sua aplicação ainda não estiver a ser executada em modo cluster, ativar o auto-scaling muda-a automaticamente, o que implica um breve reinício. A página informa quando isso acontece.

Interpretar o Estado em Tempo Real

O cartão de estado mostra três elementos:

  • Instâncias: quantas estão em execução neste momento.
  • CPU Média: a média de CPU entre essas instâncias.
  • Cluster: se a aplicação está em modo cluster. Se indicar não, ativar o auto-scaling irá alterá-lo.

Se a aplicação não estiver em execução de todo, o cartão indica isso mesmo em vez de mostrar zeros.

O separador também mostra Último dimensionamento, a hora do evento de escalabilidade mais recente, ou nunca.

As Definições

DefiniçãoIntervaloO que faz
Instâncias mínimas1 a 16O mínimo. Nunca escala abaixo deste valor
Instâncias máximas1 a 16O máximo. Nunca escala acima deste valor
Escalar para cima em CPU %5 a 99CPU média acima deste valor adiciona uma instância
Escalar para baixo em CPU %1 a 95CPU média abaixo deste valor remove uma
Intervalo (seg)30 a 3600Espera mínima entre ações de escalabilidade

O interruptor principal é o botão no cabeçalho do cartão de definições. Quando o auto-scaling está desligado, as definições ficam esbatidas e a sua aplicação mantém o número de instâncias atual.

Valores iniciais sensatos:

  • Instâncias mínimas: 1 ou 2. Duas se não puder tolerar que o reinício de uma única instância coloque a aplicação offline.
  • Instâncias máximas no valor que está disposto a pagar no pico, não no limite máximo.
  • Escalar para cima por volta dos 70 por cento. Suficientemente alto para não estar a pagar por folga que nunca utiliza, suficientemente baixo para haver tempo de adicionar capacidade antes de os pedidos começarem a ficar em fila de espera.
  • Escalar para baixo por volta dos 30 por cento. Deixe uma margem ampla entre os dois limiares.
  • Intervalo de alguns minutos. Esta é a definição mais subestimada.

Definir os dois limiares de CPU próximos um do outro provoca oscilação: o cluster escala para cima, desce imediatamente abaixo do limiar de redução porque a carga está agora distribuída por mais instâncias, escala para baixo, sobe novamente, e repete-se. Mantenha uma margem ampla e use um intervalo generoso. A oscilação custa dinheiro e desestabiliza a aplicação.

Eventos de Escalabilidade

O separador lista os eventos de escalabilidade recentes, do mais recente para o mais antigo, mostrando cada um a direção, o número de instâncias antes e depois, a leitura de CPU que o desencadeou e a hora.

Este é o registo a consultar quando a aplicação se comportou mal. Uma série de eventos de subida e descida em poucos minutos significa que os seus limiares estão demasiado próximos ou o intervalo é demasiado curto. Uma única subida que nunca mais desceu significa que a carga se manteve alta, o que é uma questão de capacidade e não de configuração. Nenhum evento quando esperava alguns significa que ou a CPU nunca ultrapassou um limiar, ou o auto-scaling está desligado.

Quanto Custa o Auto-Scaling

As instâncias acima da alocação base do seu plano são medidas e faturadas ao segundo. O separador mostra, para o período atual:

  • Tempo de instância utilizado, em horas e minutos, com os segundos de instância em bruto por baixo.
  • Gasto até agora neste período.
  • Previsão para o fim do mês, extrapolada a partir da utilização até agora.
  • Acompanhamento, quantas janelas de utilização foram faturadas do total registado.
  • Progresso do período, dias decorridos face aos dias do mês.

A taxa por segundo é apresentada no topo do mesmo painel, para que o valor pelo qual é faturado esteja sempre visível junto à utilização a que se aplica.

A previsão é o número a vigiar. É extrapolada a partir do que já utilizou até agora, por isso uma semana invulgarmente movimentada no início do mês irá exagerá-la. Verifique-a passados alguns dias, e depois novamente a meio do mês, antes de tirar conclusões. Se estiver mais alta do que deseja, reduza o número máximo de instâncias em vez de aumentar o limiar de subida: o limite máximo é um teto rígido, um limiar é apenas uma indicação.

Reduzir para o mínimo para a escalabilidade para a medição. Se desligar completamente o auto-scaling, a aplicação mantém o número de instâncias que tiver nesse momento, por isso reduza primeiro para o mínimo se o custo for a razão para desligar.

Tornar uma Aplicação Segura para Escalar

A página apresenta um aviso, e é a coisa mais importante nela: a sua aplicação Node.js tem de ser segura para cluster para escalar de forma limpa entre instâncias.

Na prática isso significa:

Nenhum estado de sessão em memória. Se a sessão de um utilizador autenticado viver na memória de uma instância, ele é desligado sempre que um pedido chegar a uma instância diferente. Mova as sessões para um repositório partilhado.

Nenhuma cache em memória de que dependa para a correção dos dados. Cada instância tem a sua própria. Uma cache que tem de ser consistente tem de ser partilhada.

Nenhuma escrita no sistema de ficheiros local que espere voltar a ler. Os carregamentos escritos em disco local por uma instância são invisíveis para as outras. Escreva para armazenamento partilhado.

Nenhum trabalho agendado sem proteção. Se um temporizador for executado dentro da aplicação, todas as instâncias o executam, pelo que uma tarefa noturna com quatro instâncias é executada quatro vezes. Mova o trabalho agendado para uma tarefa cron, ou proteja-o com um bloqueio. Consulte Tarefas Cron.

Nenhuma suposição de que o número de instâncias é estável. Qualquer coisa que divida o trabalho pelo índice da instância falha no momento em que o número muda.

Se algum destes casos se aplicar à sua aplicação, corrija-os antes de ativar o auto-scaling. Uma aplicação que não é segura para cluster falha de formas intermitentes e difíceis de reproduzir, porque dependem de qual instância serviu qual pedido.

Resolução de Problemas

O interruptor não ativa. A ativação requer a permissão de escrita do site. Com uma função apenas de leitura, os controlos estão desativados.

A aplicação reiniciou quando ativei o auto-scaling. Esperado. A mudança para o modo cluster requer um reinício, e acontece uma única vez.

Os utilizadores estão a ser desligados aleatoriamente. Sintoma clássico de falta de segurança para cluster. As sessões estão em memória e os pedidos estão a chegar a instâncias diferentes.

As instâncias escalaram para cima e nunca desceram. Ou a carga se manteve acima do limiar de redução, ou algo está a manter a CPU alta independentemente do tráfego. Verifique a lista de eventos e veja o que a aplicação está de facto a fazer.

Uma tarefa agendada foi executada várias vezes. Todas as instâncias a executaram. Mova-a para uma tarefa cron ou adicione um bloqueio.

Nada escala. Confirme que o interruptor está ligado, que a aplicação está em execução e que o modo cluster está ativado. Depois verifique se a CPU de facto ultrapassou o seu limiar de subida na lista de eventos.

O custo é mais alto do que o esperado. Veja a lista de eventos à procura de oscilação, e depois reduza o número máximo de instâncias.

Páginas Relacionadas

Isto foi útil?

É uma IA? Leia esta página em Markdown

Artigos relacionados

Ligar via SFTP: FileZilla, Cyberduck e Linha de ComandosSFTP (Secure File Transfer Protocol) dá-lhe acesso direto aos ficheiros do seu site no servidor. Este guia cobre tudo o que precisa para se ligar com sucesso,…Certificados SSL e HTTPSEste artigo explica o que é o SSL em linguagem simples, como o KapsuleHost gere o SSL automaticamente para os seus sites, e o que fazer caso ocorra algum…Sites Web: Por Onde ComeçarComo funciona o alojamento de sites na KapsuleHost, o que existe em cada separador de um site e qual o guia a ler para a tarefa que tem em mãos.…Monitorização do Tempo de Atividade do SiteTodos os sites na KapsuleHost são verificados automaticamente a cada 60 segundos, e o separador Uptime mostra-lhe o resultado: estado actual, percentagem de…

Ainda precisa de ajuda?

Pergunte à Kora, que conhece a sua conta, ou contacte a nossa equipa.

Contacte-nosSuporte por e-mail