View a markdown version of this page

Dimensionamento de ambientes Beanstalk Cluster - AWS Elastic Beanstalk

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Dimensionamento de ambientes Beanstalk Cluster

Um ambiente Beanstalk Cluster se expande alterando o número de réplicas do aplicativo que ele executa. Uma réplica é uma cópia em execução da imagem do contêiner. O Amazon EKS fornece a capacidade de nós que essas réplicas precisam e adiciona ou remove nós de acordo com elas, então você dimensiona o aplicativo em vez de uma frota de instâncias.

Essa é a principal diferença do Beanstalk Standard, que dimensiona um grupo de instâncias do Amazon EC2 do Auto Scaling. Os aws:autoscaling:* namespaces não se aplicam a um ambiente Beanstalk Cluster. Em vez disso, o dimensionamento é configurado por meio do aws:elasticbeanstalk:eks:environment:autoscaling namespace e de seus namespaces secundários. Para cada opção e seus valores aceitos, consulteOpções de configuração para ambientes Beanstalk Cluster.

Definindo os limites da réplica

Duas opções limitam a contagem de réplicas: min-replica emax-replica, ambas no aws:elasticbeanstalk:eks:environment:autoscaling namespace. O Elastic Beanstalk mantém a contagem de réplicas entre eles.

Defina as duas opções com o mesmo valor para executar um número fixo de réplicas. Defina um max-replica valor mais alto do que min-replica para permitir que o ambiente escale entre os dois. Um ambiente sempre executa pelo menos uma réplica, porque min-replica aceita 1 como seu menor valor.

$ aws elasticbeanstalk update-environment \ --environment-name my-cluster-env \ --option-settings \ Namespace=aws:elasticbeanstalk:eks:environment:autoscaling,OptionName=min-replica,Value=2 \ Namespace=aws:elasticbeanstalk:eks:environment:autoscaling,OptionName=max-replica,Value=20

Como o Elastic Beanstalk decide quando escalar

Dentro desses limites, um ou mais gatilhos decidem a contagem de réplicas. O Elastic Beanstalk avalia os gatilhos no intervalo definido. polling-interval Quando os gatilhos param de reportar atividades, o Elastic Beanstalk aguarda o período cooldown-period definido antes de reduzir a escala do ambiente, o que impede uma breve pausa na remoção de réplicas que estão prestes a ser necessárias novamente.

Se você não configurar nenhum acionador, o ambiente escalará a utilização da CPU de suas réplicas. As seções restantes descrevem os gatilhos que você pode configurar em vez disso.

Escalabilidade na CPU ou na memória

Para escalar os recursos que suas réplicas consomem, defina um tipo de métrica e um valor alvo no aws:elasticbeanstalk:eks:environment:autoscaling:trigger namespace. O Elastic Beanstalk adiciona ou remove réplicas para manter o ambiente próximo ao alvo que você definiu.

  • Para CPU, cpu-metric-type defina cpu-value e.

  • Para memória, memory-metric-type defina memory-value e.

Um tipo de métrica Utilization trata o valor como uma porcentagem do que a réplica reserva por meio das memory opções cpu e, portanto, um cpu-value of 75 tem como alvo 75 por cento da CPU reservada. Um tipo de métrica AverageValue trata o valor como um valor absoluto por réplica.

Você pode definir a CPU e o gatilho de memória em um ambiente.

$ aws elasticbeanstalk update-environment \ --environment-name my-cluster-env \ --option-settings \ Namespace=aws:elasticbeanstalk:eks:environment:autoscaling:trigger,OptionName=cpu-metric-type,Value=Utilization \ Namespace=aws:elasticbeanstalk:eks:environment:autoscaling:trigger,OptionName=cpu-value,Value=75

Dimensionamento de acordo com um cronograma

Para executar um determinado número de réplicas durante uma janela de tempo recorrente, scaler-type defina cron e descreva a janela emscaler-metadata, que usa um objeto JSON com quatro campos.

Campo Description
timezone O fuso horário em que a janela é expressa, como um nome de fuso horário da IANAUTC, comoAmerica/New_York, ouAsia/Tokyo.
start Quando a janela se abre, como uma expressão cron de cinco campos (minuto, hora, dia do mês, mês, dia da semana).
end Quando a janela se fecha, no mesmo formato.
desiredReplicas O número de réplicas a serem executadas enquanto a janela está aberta. Escolha um valor dentro dos min-replica seus max-replica limites.

Do lado de fora da janela, o ambiente volta para min-replica o. O exemplo a seguir executa cinco réplicas durante o horário de trabalho dos dias úteis em UTC:

$ cat schedule.json [ { "Namespace": "aws:elasticbeanstalk:eks:environment:autoscaling:trigger", "OptionName": "scaler-type", "Value": "cron" }, { "Namespace": "aws:elasticbeanstalk:eks:environment:autoscaling:trigger", "OptionName": "scaler-metadata", "Value": "{\"timezone\":\"UTC\",\"start\":\"0 8 * * 1-5\",\"end\":\"0 18 * * 1-5\",\"desiredReplicas\":\"5\"}" } ] $ aws elasticbeanstalk update-environment \ --environment-name my-cluster-env \ --option-settings file://schedule.json

Um ambiente exige um cronograma. Para variar a contagem de réplicas em várias janelas, como uma programação de fim de semana diferente, combine a programação com outro acionador, conforme descrito emCombinando gatilhos.

nota

As configurações entram em um arquivo porque o próprio scaler-metadata valor é um documento JSON. Para os formulários que o AWS CLI aceita--option-settings, consulte Usando sintaxe abreviada no. AWS CLI

Dimensionamento com base em uma métrica do seu próprio endpoint

Para escalar um valor que seu próprio serviço reporta, como a profundidade da fila ou a contagem de trabalhos em andamento, scaler-type defina como. metrics-api O Elastic Beanstalk lê um endpoint HTTP que você fornece e dimensiona de acordo com o número que ele encontra lá. Descreva o endpoint emscaler-metadata.

Campo Description
url O endpoint que o Elastic Beanstalk lê.
valueLocation Onde o número está na resposta JSON, como um caminho pontilhado. Para um corpo de resposta de{"data":{"result":[{"value":"500"}]}}, a localização édata.result.0.value.
targetValue A quantidade que se espera que uma réplica possa suportar.

O Elastic Beanstalk divide o valor relatado por targetValue e arredonda para cima para obter a contagem de réplicas e, em seguida, mantém essa contagem dentro dos limites de suas réplicas. Com um targetValue of100, um valor relatado de 500 solicita cinco réplicas.

Você pode apontar o gatilho para seu próprio ambiente. Como o URL do ambiente só é conhecido após o lançamento, definido url em uma atualização e não no momento da criação.

O exemplo a seguir se adapta à profundidade relatada pelo aplicativo, com uma réplica para cada 100 unidades de trabalho relatado:

$ cat trigger.json [ { "Namespace": "aws:elasticbeanstalk:eks:environment:autoscaling:trigger", "OptionName": "scaler-type", "Value": "metrics-api" }, { "Namespace": "aws:elasticbeanstalk:eks:environment:autoscaling:trigger", "OptionName": "scaler-metadata", "Value": "{\"url\":\"https://my-service.example.com/queue-depth\",\"valueLocation\":\"data.result.0.value\",\"targetValue\":\"100\"}" } ] $ aws elasticbeanstalk update-environment \ --environment-name my-cluster-env \ --option-settings file://trigger.json

Autenticação no endpoint

Se seu endpoint exigir credenciais, armazene-as em um AWS Secrets Manager segredo e defina-as como o scaler-auth-secret ARN do segredo. Você pode configurá-lo somente quando scaler-type estivermetrics-api. scaler-auth-modeDefina o esquema que seu endpoint espera. O valor do segredo é um objeto JSON cujas chaves dependem desse esquema.

Modo de autenticação Chaves necessárias no segredo
bearer, o padrão token
basic username e password
apiKey apiKey
tls ca, cert, e key

Defina também a application-role opção do ambiente. O Elastic Beanstalk monta as credenciais em suas réplicas por meio da identidade de pod do ambiente, que existe somente quando está definida. application-role Sem ela, a montagem falha e as réplicas não iniciam. Um gatilho de agendamento não exige isso, assim como um endpoint de métricas que não precisa de credenciais.

A função de aplicativo do ambiente lê o segredo, então conceda-o tanto secretsmanager:GetSecretValue quanto secretsmanager:DescribeSecret no ARN do segredo. O Elastic Beanstalk atualiza as credenciais de acordo com um cronograma e a atualização verifica a versão atual do segredo, portanto, um ambiente concedido só GetSecretValue inicia normalmente e falha a cada atualização posterior. Para as funções que um ambiente Beanstalk Cluster usa, consulte. Permissões para o Beanstalk Cluster

Esse segredo é separado da secrets opção que fornece segredos para seu aplicativo. A alteração do valor de scaler-auth-secret substitui as réplicas do ambiente, pois as credenciais são montadas quando uma réplica é iniciada.

Combinando gatilhos

Um ambiente usa um gatilho orientado por eventos, seja um cronograma ou uma métrica de endpoint, porque scaler-type e scaler-metadata descreve um único acionador. Ele pode carregar os gatilhos de CPU e memória junto com esse.

Vale a pena conhecer dois comportamentos antes de combiná-los:

  • A configuração scaler-type substitui a escala padrão da CPU descrita em. Como o Elastic Beanstalk decide quando escalar Para continuar escalando também na CPU, defina cpu-metric-type e cpu-value explicitamente.

  • Quando mais de um acionador é aplicado, a maior contagem de réplicas vence. Um cronograma que solicita cinco réplicas e um acionador de CPU que solicita três produzem cinco.

Combinar um agendamento com um acionador de CPU é uma combinação comum: o agendamento carrega a contagem de réplicas que você espera durante o horário de pico, e o acionador de CPU permanece disponível pelo resto do tempo.

Observando a escala do ambiente

A página de monitoramento do ambiente no console do Elastic Beanstalk mostra um gráfico de contagem de réplicas de aplicativos, que relata as réplicas que o ambiente está executando ao longo do tempo. Compará-lo com os gráficos de CPU (núcleos) e memória (bytes) mostra se um gatilho está segurando seu alvo. Para saber a integridade e as métricas que um ambiente Beanstalk Cluster relata, consulte. Monitorando ambientes do Beanstalk Cluster

O Elastic Beanstalk registra um evento do ambiente quando ele altera uma configuração de escalabilidade, então o fluxo de eventos do ambiente mostra quando uma alteração de escala entrou em vigor.