

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
<a name="configuring-cluster-scaling"></a>

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, consulte[Opções de configuração para ambientes Beanstalk Cluster](command-options-general-eks.md).

## Definindo os limites da réplica
<a name="configuring-cluster-scaling-replicas"></a>

Duas opções limitam a contagem de réplicas: `min-replica` e`max-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
<a name="configuring-cluster-scaling-triggers"></a>

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
<a name="configuring-cluster-scaling-cpu-memory"></a>

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
<a name="configuring-cluster-scaling-schedule"></a>

Para executar um determinado número de réplicas durante uma janela de tempo recorrente, `scaler-type` defina `cron` e descreva a janela em`scaler-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 em[Combinando gatilhos](#configuring-cluster-scaling-combining).

**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](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-shorthand.html)

## Dimensionamento com base em uma métrica do seu próprio endpoint
<a name="configuring-cluster-scaling-metrics-api"></a>

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 em`scaler-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` of`100`, 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
<a name="configuring-cluster-scaling-metrics-api-auth"></a>

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` estiver`metrics-api`. `scaler-auth-mode`Defina 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](beanstalk-cluster-permissions.md)

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
<a name="configuring-cluster-scaling-combining"></a>

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](#configuring-cluster-scaling-triggers) 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 name="configuring-cluster-scaling-watching"></a>

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](monitoring-cluster-environments.md)

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.