

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Escalar los entornos de Beanstalk Cluster
<a name="configuring-cluster-scaling"></a>

Un entorno de Beanstalk Cluster se escala al cambiar la cantidad de * réplicas * de la aplicación que ejecuta. Una réplica es una copia en ejecución de la imagen de su contenedor. Amazon EKS proporciona la capacidad de nodos que necesitan esas réplicas y añade o elimina nodos para que se ajusten a ellas, por lo que puede dimensionar la aplicación en lugar de una flota de instancias.

Esta es la principal diferencia con Beanstalk Standard, que escala un grupo de instancias de Amazon EC2 de Auto Scaling. Los `aws:autoscaling:*` espacios de nombres no se aplican a un entorno de clúster de Beanstalk. En su lugar, el escalado se configura a través del espacio de nombres y sus espacios de `aws:elasticbeanstalk:eks:environment:autoscaling` nombres secundarios. Para ver cada opción y sus valores aceptados, consulte. [Opciones de configuración para entornos de Beanstalk Cluster](command-options-general-eks.md)

## Establecer los límites de la réplica
<a name="configuring-cluster-scaling-replicas"></a>

Dos opciones limitan el recuento de réplicas: `min-replica` y `max-replica` ambas en el espacio de `aws:elasticbeanstalk:eks:environment:autoscaling` nombres. Elastic Beanstalk mantiene el recuento de réplicas entre ellas.

Establezca ambas opciones en el mismo valor para ejecutar un número fijo de réplicas. Establezca `max-replica` un valor más alto que `min-replica` para permitir que el entorno escale entre las dos. Un entorno siempre ejecuta al menos una réplica, porque `min-replica` acepta `1` como valor más bajo.

```
$ 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
```

## Cómo decide Elastic Beanstalk cuándo escalar
<a name="configuring-cluster-scaling-triggers"></a>

Dentro de esos límites, uno o más * desencadenantes * deciden el recuento de réplicas. Elastic Beanstalk evalúa los desencadenadores en el intervalo establecido. `polling-interval` Cuando los activadores dejan de informar sobre la actividad, Elastic Beanstalk espera el período establecido antes de volver a reducir la escala del entorno, lo que `cooldown-period` evita que, durante un breve período de pausa, se eliminen las réplicas que están a punto de volver a necesitarse.

Si no configura ningún desencadenador, el entorno se adapta a la utilización de la CPU de sus réplicas. En las secciones restantes se describen los desencadenadores que puede configurar en su lugar.

## Ampliación de la CPU o la memoria
<a name="configuring-cluster-scaling-cpu-memory"></a>

Para escalar los recursos que consumen tus réplicas, establece un tipo de métrica y un valor objetivo en el espacio de `aws:elasticbeanstalk:eks:environment:autoscaling:trigger` nombres. Elastic Beanstalk agrega o elimina réplicas para mantener el entorno cerca del objetivo establecido.
+ Para la CPU, configure y. `cpu-metric-type` `cpu-value`
+ Para la memoria, defina `memory-metric-type` y`memory-value`.

Un tipo de métrica `Utilization` trata el valor como un porcentaje de lo que la réplica reserva mediante las `memory` opciones `cpu` y, por lo tanto, a `cpu-value` `75` apunta al 75 por ciento de la CPU reservada. El tipo de métrica `AverageValue` trata el valor como una cantidad absoluta por réplica.

Puede configurar tanto el activador de la CPU como el de la memoria en un entorno.

```
$ 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
```

## Escalar según un cronograma
<a name="configuring-cluster-scaling-schedule"></a>

Para ejecutar un número determinado de réplicas durante una ventana de tiempo recurrente, `scaler-type` defina `cron` y describa la ventana en `scaler-metadata` la que se utilizará un objeto JSON con cuatro campos.


| Campo | Description (Descripción) | 
| --- | --- | 
| timezone | La zona horaria en la que se expresa la ventana, como un nombre de zona horaria de la IANAUTC, comoAmerica/New\_York, o. Asia/Tokyo | 
| start | Cuando se abre la ventana, como expresión cron de cinco campos (minuto, hora, día del mes, mes, día de la semana). | 
| end | Cuando se cierre la ventana, en el mismo formato. | 
| desiredReplicas | El número de réplicas que se ejecutarán mientras la ventana esté abierta. Elija un valor que esté dentro de sus min-replica límites. max-replica | 

Fuera de la ventana, el entorno vuelve a`min-replica`. El siguiente ejemplo ejecuta cinco réplicas durante el horario laboral de lunes a viernes en 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
```

Un entorno requiere una programación. Para variar el recuento de réplicas en varias ventanas, por ejemplo, en una programación de fin de semana diferente, combine la programación con otro desencadenante, tal y como se describe en[Combinación de desencadenantes](#configuring-cluster-scaling-combining).

**nota**  
La configuración se guarda en un archivo porque un `scaler-metadata` valor es en sí mismo un documento JSON. Para ver los formularios que AWS CLI acepta`--option-settings`, consulte [ Uso de la sintaxis abreviada en. AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-shorthand.html)

## Escalar una métrica desde tu propio punto final
<a name="configuring-cluster-scaling-metrics-api"></a>

Para escalar en función de un valor que indique tu propio servicio, como la profundidad de las colas o el recuento de trabajos en curso, configúralo en. `scaler-type` `metrics-api` Elastic Beanstalk lee un punto final HTTP que usted proporciona y escala en función del número que encuentra allí. Describa el punto final en. `scaler-metadata`


| Campo | Description (Descripción) | 
| --- | --- | 
| url | El punto final que lee Elastic Beanstalk. | 
| valueLocation | Dónde se encuentra el número en la respuesta de JSON, en forma de ruta punteada. En el caso de un cuerpo de respuesta de{"data":{"result":[{"value":"500"}]}}, la ubicación esdata.result.0.value. | 
| targetValue | La cantidad que se espera que maneje una réplica. | 

Elastic Beanstalk divide el valor registrado y lo redondea hacia arriba para obtener el recuento de réplicas `targetValue` y, a continuación, mantiene ese recuento dentro de los límites de las réplicas. Con un `targetValue` de`100`, un valor declarado de `500` solicita cinco réplicas.

Puede dirigir el disparador a su propio entorno. Como la URL del entorno solo se conoce después de su lanzamiento, se configura `url` en una actualización y no en el momento de la creación.

El siguiente ejemplo se ajusta a la profundidad que informa la aplicación, con una réplica por cada 100 unidades de trabajo reportado:

```
$ 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
```

### Autenticar en el punto final
<a name="configuring-cluster-scaling-metrics-api-auth"></a>

Si su terminal requiere credenciales, guárdelas en un AWS Secrets Manager secreto y `scaler-auth-secret` configúrelas en el ARN del secreto. Puede configurarlo solo cuando `scaler-type` esté`metrics-api`. `scaler-auth-mode`Establézcalo según el esquema que espera su terminal. El valor del secreto es un objeto JSON cuyas claves dependen de ese esquema.


| Modo de autenticación | Las claves necesarias están en el secreto | 
| --- | --- | 
| bearer, el valor predeterminado | token | 
| basic | username y password | 
| apiKey | apiKey | 
| tls | ca, cert, y key | 

Establezca también la `application-role` opción del entorno. Elastic Beanstalk monta las credenciales en sus réplicas a través de la identidad del pod del entorno, que solo existe cuando está configurada. `application-role` Sin ella, el montaje falla y las réplicas no se inician. Un activador programado no lo requiere, ni tampoco un punto final de métricas que no necesita credenciales.

El rol de * aplicación del entorno * lee el secreto, así que concédelo ambos `secretsmanager:GetSecretValue` y `secretsmanager:DescribeSecret` en el ARN del secreto. Elastic Beanstalk actualiza las credenciales según un cronograma y la actualización comprueba la versión actual del secreto, de modo que un entorno que se concede solo se `GetSecretValue` inicia con normalidad y falla en cada actualización posterior. Para conocer las funciones que utiliza un entorno de Beanstalk Cluster, consulte. [Permisos para Beanstalk Cluster](beanstalk-cluster-permissions.md)

Este secreto es independiente de la `secrets` opción que proporciona secretos a su aplicación. Al cambiar el valor de, se `scaler-auth-secret` reemplazan las réplicas del entorno, ya que las credenciales se montan cuando se inicia una réplica.

## Combinación de desencadenantes
<a name="configuring-cluster-scaling-combining"></a>

Un entorno utiliza un disparador basado en eventos, ya sea un cronograma o una métrica de punto final, porque `scaler-type` `scaler-metadata` describe un único desencadenante. Puede combinar los activadores de la CPU y la memoria con ese disparador.

Vale la pena conocer dos comportamientos antes de combinarlos:
+ La configuración `scaler-type` reemplaza la escala de CPU predeterminada que se describe en[Cómo decide Elastic Beanstalk cuándo escalar](#configuring-cluster-scaling-triggers). Para seguir escalando también en la CPU, configúrelo `cpu-metric-type` de `cpu-value` forma explícita.
+ Cuando se aplica más de un activador, gana el mayor número de réplicas. Un programa que pide cinco réplicas y un disparador de CPU que pide tres producen cinco.

Combinar una programación con un activador de CPU es una combinación habitual: la programación contiene el número de réplicas que se espera durante las horas de mayor actividad y el activador de CPU permanece disponible el resto del tiempo.

## Observar cómo se amplía el entorno
<a name="configuring-cluster-scaling-watching"></a>

La página de monitoreo del entorno en la consola de Elastic Beanstalk muestra un ** gráfico del recuento de réplicas de ** aplicaciones, que muestra las réplicas que el entorno ejecuta a lo largo del tiempo. Al compararlo con los ** gráficos de ** CPU (núcleos) ** y ** memoria (bytes), se muestra si un disparador cumple su objetivo. Para conocer el estado y las métricas de los que informa un entorno de Beanstalk Cluster, consulte. [Supervisión de los entornos de Beanstalk Cluster](monitoring-cluster-environments.md)

Elastic Beanstalk registra un evento del entorno cuando cambia una configuración de escalado, por lo que el flujo de eventos del entorno muestra cuándo se efectuó un cambio de escalado.