Escalado automático del número de réplicas de un clúster de bases de datos de Amazon Neptune - Amazon Neptune

Escalado automático del número de réplicas de un clúster de bases de datos de Amazon Neptune

Puede usar el escalado automático de Neptune para ajustar automáticamente el número de réplicas de Neptune en un clúster de base de datos para cumplir con los requisitos de conectividad y carga de trabajo. El escalado automático permite que el clúster de base de datos de Neptune gestione los aumentos de carga de trabajo y, luego, cuando la carga de trabajo disminuye, elimina las réplicas innecesarias, por lo que no tiene que pagar por la capacidad no utilizada.

Solo puede usar el escalado automático con un clúster de base de datos de Neptune que ya tenga una instancia de escritor principal y al menos una instancia de réplica de lectura (consulte Clústeres e instancias de base de datos de Amazon Neptune). Además, todas las instancias de réplica de lectura del clúster deben estar en un estado disponible. Si alguna réplica de lectura está en un estado distinto al disponible, el ajuste de escalado automático de Neptune no hace nada hasta que estén disponibles todas las réplicas de lectura del clúster.

Si necesita crear un nuevo clúster, consulte Creación de un clúster de Neptune.

Con la AWS CLI puede definir y aplicar una política de escalado al clúster de base de datos. También puede utilizar la AWS CLI para editar o eliminar la política de escalado automático. La política especifica los siguientes parámetros de escalado automático:

  • El número mínimo y máximo de réplicas que se van a tener en el clúster.

  • Un intervalo ScaleOutCooldown entre la actividad de escalado de adición de réplicas y un intervalo ScaleInCooldown entre la actividad de escalado de eliminación de réplicas.

  • La métrica de CloudWatch y el valor del desencadenador de métrica para escalar o reducir verticalmente.

La frecuencia de las acciones de escalado automático de Neptune se reduce de varias maneras:

  • Inicialmente, para que el escalado automático añada o elimine un lector, la alarma de umbral máximo CPUUtilization debe superarse durante al menos tres minutos o la alarma de umbral mínimo debe superarse durante al menos 15 minutos.

  • Tras la primera adición o eliminación, la frecuencia de las siguientes acciones de escalado automático de Neptune queda limitada por la configuración ScaleOutCooldown y ScaleInCooldown de la política de escalado automático.

Si la métrica de CloudWatch que está utilizando alcanza el umbral máximo que especificó en la política, si el intervalo ScaleOutCooldown ha transcurrido desde la última acción de escalado automático y si el clúster de base de datos aún no tiene el número máximo de réplicas que estableció, el escalado automático de Neptune crea una nueva réplica con el mismo tipo de instancia que la instancia principal del clúster de base de datos.

Del mismo modo, si la métrica alcanza el umbral mínimo que especificó y si el intervalo ScaleInCooldown ha transcurrido desde la última acción de escalado automático, y si el clúster de base de datos tiene más réplicas que el número mínimo que especificó, el escalado automático de Neptune elimina una de las réplicas.

nota

Escalado automático de Neptune solo elimina las réplicas que ha creado. No elimina las réplicas preexistentes.

Con el parámetro de clúster de base de datos neptune_autoscaling_config, también puede especificar el tipo de instancia de las nuevas réplicas de lectura que crea el escalado automático de Neptune, los periodos de mantenimiento de esas réplicas de lectura y las etiquetas que se asociarán a cada una de las nuevas réplicas de lectura. Estos ajustes de configuración se proporcionan en una cadena JSON como valor del parámetro neptune_autoscaling_config, tal y como se muestra a continuación:

"{ \"tags\": [ { \"key\" : \"reader tag-0 key\", \"value\" : \"reader tag-0 value\" }, { \"key\" : \"reader tag-1 key\", \"value\" : \"reader tag-1 value\" }, ], \"maintenanceWindow\" : \"wed:12:03-wed:12:33\", \"dbInstanceClass\" : \"db.r5.xlarge\" }"

Tenga en cuenta que a todas las comillas de la cadena JSON se les debe aplicar una secuencia de escape con un carácter de barra diagonal inversa (\). Todos los espacios en blanco de la cadena son opcionales, como de costumbre.

Cualquiera de los tres ajustes de configuración no especificados en el parámetro neptune_autoscaling_config se copia de la configuración de la instancia de escritor principal del clúster de base de datos.

Cuando el escalado automático añade una nueva instancia de réplica de lectura, antepone autoscaled-reader al ID de instancia de base de datos (por ejemplo, autoscaled-reader-7r7t7z3lbd-20210828). También añade una etiqueta a cada réplica de lectura que cree con la clave autoscaled-reader y un valor de TRUE. Puede verla en la pestaña Etiquetas de la página de detalles de la instancia de base de datos de la Consola de administración de AWS.

"key" : "autoscaled-reader", "value" : "TRUE"

El nivel de promoción de todas las instancias de réplica de lectura creadas mediante el escalado automático es el de menor prioridad, que, de forma predeterminada es 15. Esto significa que durante una conmutación por error, cualquier réplica con una mayor prioridad, como una creada manualmente, se promocionaría primero. Consulte Tolerancia a errores para un clúster de base de datos de Neptune.

El escalado automático de Neptune se implementa mediante Application Auto Scaling con una política de escalado de seguimiento de destino que utiliza una métrica de CloudWatch CPUUtilization en Neptune como métrica predefinida.

Uso del escalado automático en un clúster de base de datos de Neptune sin servidor

Neptune sin servidor responde mucho más rápido que el escalado automático de Neptune cuando la demanda supera la capacidad de una instancia y escala verticalmente la instancia en lugar de añadir otra. Mientras que el escalado automático se ha diseñado para adaptarse a aumentos o disminuciones relativamente estables de la carga de trabajo, la tecnología sin servidor destaca a la hora de gestionar los picos y fluctuaciones rápidos de la demanda.

Al comprender sus puntos fuertes, puede combinar el escalado automático y la tecnología sin servidor para crear una infraestructura flexible que gestione los cambios en la carga de trabajo de forma eficaz y haga frente a la demanda y, al mismo tiempo, minimice los costos.

Para permitir que el escalado automático funcione de forma eficaz junto con la tecnología sin servidor, es importante establecer la configuración maxNCU del clúster sin servidor lo suficientemente alta como para adaptarse a los picos y los cambios breves en la demanda. De lo contrario, los cambios transitorios no desencadenan el escalado sin servidor, lo que puede provocar que el escalado automático genere muchas instancias adicionales innecesarias. Si la opción maxNCU está establecida en un nivel lo suficientemente alto, el escalado sin servidor puede gestionar esos cambios de forma más rápida y económica.

Cómo habilitar el escalado automático para Amazon Neptune

El escalado automático solo se puede habilitar para un clúster de base de datos de Neptune con la AWS CLI. No se puede habilitar el escalado automático con la Consola de administración de AWS.

Además, el escalado automático no se admite en las siguientes regiones de Amazon:

  • África (Ciudad del Cabo): af-south-1

  • Medio Oriente (EAU): me-central-1

  • AWS GovCloud (EE. UU. Este): us-gov-east-1

  • AWS GovCloud (EE. UU. Oeste): us-gov-west-1

La habilitación del escalado automático para un clúster de base de datos de Neptune consta de tres pasos:

1. Registro de un clúster de base de datos con Application Auto Scaling

El primer paso para habilitar el escalado automático de un clúster de base de datos de Neptune consiste en registrar el clúster con Application Auto Scaling, con la AWS CLI o uno de los SDK de Application Auto Scaling. El clúster ya debe tener una instancia principal y al menos una instancia de lectura de réplica:

Por ejemplo, para registrar un clúster para que se escale automáticamente con de una a ocho réplicas adicionales, puede usar el comando register-scalable-target de la AWS CLI de la siguiente manera:

aws application-autoscaling register-scalable-target \ --service-namespace neptune \ --resource-id cluster:(your DB cluster name) \ --scalable-dimension neptune:cluster:ReadReplicaCount \ --min-capacity 1 \ --max-capacity 8

Esto equivale a usar la operación de la API de Application Auto Scaling RegisterScalableTarget.

El comando register-scalable-target de la AWS CLI usa los siguientes parámetros:

  • service-namespace   –   establezca en neptune.

    Este parámetro equivale al parámetro ServiceNamespace de la API de Application Auto Scaling.

  • resource-id: configure esta opción en el identificador de recursos del clúster de base de datos de Neptune. El tipo de recurso es cluster, seguido de dos puntos (“:”) y, a continuación, el nombre del clúster de base de datos.

    Este parámetro equivale al parámetro ResourceID de la API de Application Auto Scaling.

  • scalable-dimension: la dimensión escalable en este caso es el número de instancias de réplica en el clúster de base de datos, por lo que este parámetro está establecido en neptune:cluster:ReadReplicaCount.

    Este parámetro equivale al parámetro ScalableDimension de la API de Application Auto Scaling.

  • min-capacity: el número mínimo de instancias de réplica de base de datos de lector que Application Auto Scaling va a administrar. Este valor debe establecerse en el rango comprendido entre 0 y 15 y debe ser igual o inferior al valor especificado para el número máximo de réplicas de Neptune en max-capacity. Debe haber al menos un lector en el clúster de base de datos para que funcione el escalado automático.

    Este parámetro equivale al parámetro MinCapacity de la API de Application Auto Scaling.

  • max-capacity: el número máximo de instancias de réplica de base de datos de lector en el clúster de base de datos, incluidas las instancias preexistentes y las instancias nuevas administradas por Application Auto Scaling. Este valor debe establecerse en el rango comprendido entre 0 y 15 y debe ser igual o superior al valor especificado para el número mínimo de réplicas de Neptune en min-capacity.

    El parámetro max-capacity de la AWS CLI equivale al parámetro MaxCapacity de la API de Application Auto Scaling.

Al registrar el clúster de base de datos, Application Auto Scaling crea un rol vinculado a un servicio AWSServiceRoleForApplicationAutoScaling_NeptuneCluster. Para obtener más información, consulte Roles vinculados a servicios para el escalado automático de aplicaciones en la Guía del usuario de Application Auto Scaling.

2. Definición de una política de escalado automático para su uso con un clúster de base de datos

Una política de escalado de seguimiento de destino se define como un objeto de texto JSON que también se puede guardar en un archivo de texto. En el caso de Neptune, esta política actualmente solo puede utilizar la métrica CPUUtilization de CloudWatch en Neptune como una métrica predefinida denominada NeptuneReaderAverageCPUUtilization.

A continuación se muestra un ejemplo de la política de configuración de escalado de seguimiento de destino para Neptune:

{ "PredefinedMetricSpecification": { "PredefinedMetricType": "NeptuneReaderAverageCPUUtilization" }, "TargetValue": 60.0, "ScaleOutCooldown" : 600, "ScaleInCooldown" : 600 }

Este elemento TargetValue incluye el porcentaje de utilización de la CPU por encima del cual el escalado automático se escala horizontalmente (es decir, añade más réplicas) y por debajo se escala verticalmente (es decir, elimina las réplicas). En este caso, el porcentaje de destino que desencadena el escalado es de 60.0 %.

El elemento ScaleInCooldown especifica la cantidad de tiempo, en segundos, tras completarse un actividad de reducción horizontal antes de que pueda comenzar otra. El valor predeterminado es de 300 segundos. En este caso, el valor de 600 especifica que deben transcurrir al menos diez minutos entre la finalización de la eliminación de una réplica y el inicio de otra.

El elemento ScaleOutCooldown especifica la cantidad de tiempo, en segundos, tras completarse un actividad de escalado horizontal antes de que pueda comenzar otra. El valor predeterminado es de 300 segundos. En este caso, el valor de 600 especifica que deben transcurrir al menos diez minutos entre la finalización de la adición de una réplica y el inicio de otra.

El elemento DisableScaleIn es un valor booleano que, si está presente y establecido en true deshabilita la reducción horizontal por completo, lo que significa que el escalado automático puede añadir réplicas, pero nunca eliminará ninguna. De forma predeterminada, el escalado interno está habilitado, y el valor DisableScaleIn está establecido en false.

Tras registrar el clúster de base de datos de Neptune con Application Auto Scaling y definir una política de escalado JSON en un archivo de texto, puede aplicar la política de escalado al clúster de base de datos registrado. Puede utilizar el comando put-scaling-policy de la AWS CLI con los siguientes parámetros:

aws application-autoscaling put-scaling-policy \ --policy-name (name of the scaling policy) \ --policy-type TargetTrackingScaling \ --resource-id cluster:(name of your Neptune DB cluster) \ --service-namespace neptune \ --scalable-dimension neptune:cluster:ReadReplicaCount \ --target-tracking-scaling-policy-configuration file://(path to the JSON configuration file)

Cuando haya aplicado la política de escalado automático, este se habilitará en el clúster de base de datos.

También puede usar el comando put-scaling-policy de la AWS CLI para actualizar una política de escalado automático existente.

Consulte también PutScalingPolicy en la Referencia de la API de Application Auto Scaling.

Eliminación del escalado automático de un clúster de base de datos de Neptune

Para eliminar el escalado automático de un clúster de base de datos de Neptune, utilice los comandos delete-scaling-policy y deregister-scalable-target de la AWS CLI.