Uso de la solución azul/verde de Neptune para realizar actualizaciones azul/verde - Amazon Neptune

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.

Uso de la solución azul/verde de Neptune para realizar actualizaciones azul/verde

Las actualizaciones del motor de Amazon Neptune pueden requerir un tiempo de inactividad de las aplicaciones, ya que la base de datos no está disponible mientras se instalan y verifican las actualizaciones. Esto se aplica tanto si se inician de forma manual como automática.

Neptune proporciona una solución de implementación azul/verde que se puede ejecutar mediante una pila de AWS CloudFormation y que reduce considerablemente ese tiempo de inactividad. Crea un entorno de almacenamiento provisional verde que se sincroniza con el entorno de producción azul. A continuación, puede actualizar ese entorno de almacenamiento provisional para realizar una actualización principal o secundaria de la versión del motor, un cambio en el modelo de datos de gráficos o una actualización del sistema operativo, y comprobar el resultado. Por último, puede cambiarlo rápidamente para que se convierta en su entorno de producción, con muy poco tiempo de inactividad.

La solución azul/verde de Neptune pasa por dos fases, tal y como se muestra en este diagrama:

Diagrama de flujo de alto nivel de la estrategia de implementación azul-verde

La fase 1 crea un clúster de base de datos verde idéntico al clúster de producción

La solución crea un clúster de base de datos con un identificador único de implementación azul/verde y con la misma topología de clúster que el de producción. Es decir, tiene el mismo número y tamaño de instancias de base de datos, los mismos grupos de parámetros y todas las mismas configuraciones que el clúster de base de datos de producción (azul), excepto que se ha actualizado a la versión de motor de destino que especificó, que debe ser posterior a la versión de motor actual (azul). Puede especificar una versión de motor principal y secundaria del motor para el destino. Si es necesario, la solución realizará las actualizaciones intermedias necesarias para alcanzar la versión especificada del motor de destino. Este nuevo clúster se convierte en el entorno de almacenamiento provisional verde.

La fase 2 establece la sincronización continua de datos

Una vez que el entorno verde se ha preparado por completo, la solución establece una replicación continua entre el clúster de origen (azul) y el clúster de destino (verde) mediante transmisiones de Neptune. Cuando la diferencia de replicación entre ellos llegue a cero, el entorno de almacenamiento provisional estará listo para las pruebas. En ese momento, debe hacer una pausa en la escritura en el clúster azul para evitar más retrasos en la replicación.

La versión del motor de destino puede tener nuevas características o dependencias que afecten a las aplicaciones. Consulte la página Versión del motor de destino y las páginas Intervención de las versiones del motor en Versiones del motor para ver qué ha cambiado desde la versión actual del motor. Le recomendamos realizar pruebas de integración o verificar las aplicaciones manualmente en el clúster verde antes de pasarlas al entorno de producción.

Una vez que haya probado y calificado los cambios en el clúster verde, tan solo tiene que cambiar el punto de conexión de la base de datos de las aplicaciones del clúster azul al verde.

Tras la transición, la solución azul/verde de Neptune no elimina el antiguo entorno de producción azul. Seguirá teniendo acceso a él para realizar validaciones y pruebas adicionales si es necesario. Se aplican cargos de facturación estándar a sus instancias hasta que las elimine. La solución azul/verde también utiliza otros servicios deAWS, cuyos costos se facturan a precios normales. Podrá encontrar información sobre cómo eliminar la solución cuando haya terminado de utilizarla en la sección de limpieza.

Requisitos previos para ejecutar la pila azul/verde de Neptune

Antes de lanzar la pila azul y verde de Neptune:

  • Asegúrese de habilitar las transmisiones de Neptune en el clúster de producción (azul).

  • Todas las instancias del clúster azul deben estar en el estado disponible. Puede comprobar los estados de las instancias en la consola de Neptune o mediante la API de describe-db-instances.

  • Todas las instancias también deben estar sincronizadas con el grupo de parámetros del clúster de base de datos.

  • La solución azul/verde de Neptune requiere un punto de conexión de VPC de DynamoDB en la VPC donde se encuentra el clúster azul. Consulte Uso de puntos de conexión de VPC para tener acceso a DynamoDB.

  • Seleccione el momento en el que desee ejecutar la solución cuando la carga de trabajo de escritura del clúster de base de datos de producción azul sea lo más reducida posible. Evite, por ejemplo, ejecutar la solución cuando se produzca una carga masiva o cuando sea probable que haya un gran número de operaciones de escritura por cualquier otro motivo.

Uso de una plantilla de AWS CloudFormation para ejecutar la solución azul/verde de Neptune

Puede utilizar AWS CloudFormation para implementar la solución azul/verde de Neptune. La plantilla CloudFormation crea una instancia de Amazon EC2 en la misma VPC que la base de datos de Neptune de origen azul, instala la solución allí y la ejecuta. Puede supervisar su progreso en los registros de CloudWatch, tal y como se explica en Supervisión del progreso.

Puede utilizar estos enlaces para revisar la plantilla de la solución o seleccionar el botón Lanzar pila para lanzarla en la consola de AWS CloudFormation:

En la consola, elija la región de AWS en la que desee ejecutar la solución en el menú desplegable situado en la parte superior derecha de la ventana.

Establezca los parámetros de pila, tal y como se indica a continuación:

  • DeploymentID: un identificador único para cada implementación azul/verde de Neptune.

    Se utiliza como identificador del clúster de base de datos verde y como prefijo para asignar nombres a los nuevos recursos creados durante la implementación.

  • NeptuneSourceClusterId: el identificador del clúster de base de datos azul que desea actualizar.

  • NeptuneTargetClusterVersion: la versión del motor de Neptune a la que desea actualizar el clúster de base de datos azul.

    Este valor debe ser posterior al de la versión del motor del clúster de la base de datos azul actual.

  • DeploymentMode: indica si se trata de una implementación nueva o de un intento de reanudar una implementación anterior. Si utiliza el mismo DeploymentID que una implementación anterior, establezca DeploymentMode en resume.

    Los valores válidos son: new (valor predeterminado) y resume.

  • GraphQueryType: el tipo de datos del gráfico de la base de datos.

    Los valores válidos son: propertygraph (valor predeterminado) y rdf.

  • SubnetId: un ID de subred de la misma VPC en la que se encuentra el clúster de base de datos azul (consulte Conexión a un clúster de base de datos de Neptune desde una instancia de Amazon EC2 en la misma VPC).

    Proporcione el ID de una subred pública si desea utilizar SSH en la instancia a través de EC2 Connect.

  • InstanceSecurityGroup: un grupo de seguridad para la instancia de Amazon EC2.

    El grupo de seguridad debe tener acceso al clúster de base de datos azul, y debe ser posible conectar SSH a la instancia. Consulte Cree un grupo de seguridad con la consola de VPC.

Espere a que se complete la pila. En cuanto finalice, se iniciará la solución. A continuación, puede supervisar el proceso de implementación mediante los registros de CloudWatch, tal y como se describe en la siguiente sección.

Supervisión del progreso de una implementación azul/verde de Neptune

Para supervisar el progreso de la solución azul/verde de Neptune, vaya a la consola de CloudWatch y consulte los registros del grupo de registro /aws/neptune/(Neptune Blue/Green deployment ID) de CloudWatch. Puede encontrar un enlace a los registros de CloudWatch en los resultados de la pila de AWS CloudFormation de la solución:

Captura de pantalla del resultado de la pila de AWS CloudFormation azul/verde

Si ha proporcionado una subred pública como parámetro de pila, también puede conectar SSH a la instancia de Amazon EC2 creada como parte de la pila y consultar el registro en /var/log/cloud-init-output.log.

El registro muestra las acciones realizadas por la solución azul/verde de Neptune, tal y como se muestra en esta captura de pantalla:

Captura de pantalla de la pantalla de registro azul/verde de Neptune

Los mensajes de registro muestran el estado de sincronización entre el clúster azul y el verde:

Captura de pantalla de los mensajes de registro de la solución azul/verde de Neptune

El proceso de sincronización comprueba el retraso de replicación calculando la diferencia entre el eventID de la última transmisión del clúster azul y el punto de comprobación de replicación presente en la tabla de puntos de comprobación de DynamoDB creada por la pila de replicación de Neptune a Neptune. Con estos mensajes, puede supervisar la diferencia de replicación actual.

Pasar del clúster azul de producción al clúster verde actualizado

Antes de pasar el clúster verde a producción, asegúrese de que la diferencia de confirmación entre el clúster azul y el verde sea cero y, a continuación, deshabilite todo el tráfico de escritura dirigido al clúster azul. Si se sigue escribiendo en el clúster azul mientras se cambia el punto de conexión de la base de datos al clúster verde, se pueden dañar los datos al escribir datos parciales en ambos clústeres. Es posible que aún no necesite deshabilitar el tráfico de lectura.

Si ha habilitado la autenticación de IAM en el clúster de origen (azul), asegúrese de actualizar las políticas de IAM utilizadas en las aplicaciones para que apunten al clúster verde (para ver un ejemplo de estas políticas, consulte esta política de acceso sin restricciones).

Tras deshabilitar el tráfico de escritura, espere a que finalice la replicación y, a continuación, habilite el tráfico de escritura en el clúster verde (pero no en el azul). Cambie también el tráfico de lectura del clúster azul al verde.

Limpieza una vez completada la solución azul/verde de Neptune

Una vez que haya promocionado el clúster de almacenamiento provisional (verde) a producción, limpie los recursos creados por la solución azul/verde de Neptune:

  • Elimine la instancia de Amazon EC2 que se creó para ejecutar la solución.

  • Elimine las plantillas de AWS CloudFormation para la replicación basada en transmisiones de Neptune que mantenían el clúster verde sincronizado con el clúster azul. La principal tiene el nombre de pila que proporcionó anteriormente y la otra consta del ID de implementación seguido de “-replication”, es decir, (DeploymentID)-replication.

Al eliminar las plantillas de AWS CloudFormation, no se eliminan los propios clústeres. Una vez que haya comprobado que el clúster verde funciona según lo previsto, si lo desea, puede tomar una instantánea antes de eliminar manualmente el clúster azul.

Prácticas recomendadas de la solución azul/verde de Neptune

  • Antes de pasar el clúster verde a producción, merece la pena comprobar minuciosamente que funciona de forma correcta. Compruebe la coherencia de los datos y la configuración de la base de datos. Es posible que algunas de las nuevas versiones del motor también requieran actualizaciones del cliente. Consulte las notas de la versión del motor antes de realizar la actualización. Vale la pena probar todo esto en los entornos de desarrollo, pruebas y preproducción antes de iniciar una actualización azul/verde en la fase de producción.

  • Le recomendamos realizar el cambio del servidor azul al verde durante el periodo de mantenimiento.

  • Para garantizar que todo funcione correctamente tras la actualización y la sincronización, merece la pena conservar el clúster original durante un tiempo antes de eliminarlo. Podría resultar útil si surge algún problema imprevisto.

  • Evite las operaciones con mucha escritura, como las cargas masivas, al ejecutar la solución azul/verde de Neptune, ya que pueden provocar un retraso en la replicación que, a su vez, origina un considerable tiempo de inactividad. Lo ideal es que el tiempo que transcurra entre la desactivación de las escrituras en el clúster azul y su activación en el clúster verde sea de solo unos instantes.

Solución de problemas de la solución azul/verde de Neptune

Errores generados por la solución azul/verde de Neptune
  • Cluster with id = (blue_green_deployment_id) already exists: hay un clúster con el identificador (blue_green_deployment_id).

    Proporcione un nuevo ID de implementación o establezca el modo de implementación en resume si el clúster se creó en una ejecución anterior de la solución azul/verde de Neptune.

  • Streams should be enabled on the source Cluster for Blue Green Deployment: permite habilitar las transmisiones de Neptune en el clúster azul (origen).

  • No Bulkload should be in progress on source cluster: (cluster_id): la solución azul/verde de Neptune finaliza si identifica una carga masiva en curso.

    Esto es para garantizar que el proceso de sincronización pueda ponerse al día con las escrituras que se están realizando. Evite o cancele cualquier trabajo de carga masiva en curso antes de iniciar la solución azul/verde de Neptune.

  • Blue Green deployment requires instances to be in sync with db cluster parameter group: cualquier cambio en el grupo de parámetros del clúster debe estar sincronizado en todo el clúster de base de datos. Consulte Grupos de parámetros de Amazon Neptune.

  • Invalid target engine version for Blue Green Deployment: la versión del motor de destino debe figurar como activa en Versiones del motor para Amazon Neptune y debe ser posterior a la versión actual del motor del clúster de origen (azul).