View a markdown version of this page

Escalar los entornos de Beanstalk Cluster - AWS Elastic Beanstalk

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

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

Establecer los límites de la réplica

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

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

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 ymemory-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

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 amin-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 enCombinación de desencadenantes.

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

Escalar una métrica desde tu propio punto final

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 de100, 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

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-modeEstablé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

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

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 enCómo decide Elastic Beanstalk cuándo escalar. 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

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

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.