Restauración de la versión de KCL anterior - Amazon Kinesis Data Streams

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.

Restauración de la versión de KCL anterior

Este tema explica los pasos para revertir al consumidor a la versión anterior. Para poder revertir, existe un proceso de dos pasos:

  1. Ejecución de la herramienta de migración de KCL.

  2. Nueva implementación del código de la versión de KCL anterior (opcional).

Paso 1: ejecución de la herramienta de migración de KCL

Cuando necesite restaurar la versión anterior de KCL, debe ejecutar la herramienta de migración de KCL. La herramienta de migración de KCL realiza dos tareas importantes:

  • Elimina una tabla de metadatos llamada tabla de métricas de procesos de trabajo y el índice secundario global de la tabla de arrendamiento en DynamoDB. Estos dos artefactos los crea KCL 3.x, pero no son necesarios al restaurar la versión anterior.

  • Hace que todos los trabajadores funcionen en un modo compatible con KCL 2.x y comiencen a utilizar el algoritmo de equilibrio de carga utilizado en las versiones anteriores de KCL. Si tiene problemas con el nuevo algoritmo de equilibrio de carga en KCL 3.x, esto mitigará el problema inmediatamente.

importante

La tabla de estados del coordinador en DynamoDB debe existir y no debe eliminarse durante el proceso de migración, restauración y avance.

nota

Es importante que todos los procesos de trabajo de la aplicación de consumo utilicen el mismo algoritmo de equilibrio de carga en un momento dado. La herramienta de migración de KCL se asegura de que todos los procesos de trabajo de la aplicación de consumo KCL 3.x cambien al modo compatible con KCL 2.x, de modo que todos los procesos de trabajo ejecuten el mismo algoritmo de equilibrio de carga durante el despliegue progresivo de su versión anterior de KCL.

Puede descargar la herramienta de migración de KCL en el directorio de scripts del repositorio de KCL. GitHub Puede ejecutar el script desde cualquiera de sus procesos de trabajo o desde cualquier host que tenga los permisos necesarios para escribir en la tabla de estado de coordinadores, eliminar la tabla de métricas de los procesos de trabajo y actualizar la tabla de arrendamiento. Puede consultar Permisos de IAM necesarios para las aplicaciones de consumo de KCL para conocer los permisos de IAM necesarios para ejecutar el script. Debe ejecutar el script solo una vez por aplicación de KCL. Puede ejecutar esta herramienta de migración de KCL con el siguiente comando:

python3 ./KclMigrationTool.py --region <region> --mode rollback [--application_name <applicationName>] [--lease_table_name <leaseTableName>] [--coordinator_state_table_name <coordinatorStateTableName>] [--worker_metrics_table_name <workerMetricsTableName>]

Parámetros

  • --region: sustituya <region> por la suya. Región de AWS

  • --application_name: este parámetro es necesario si utiliza nombres predeterminados para las tablas de metadatos de DynamoDB (tabla de arrendamiento, tabla de estado de coordinadores y tabla de métricas de procesos de trabajo). Si ha especificado nombres personalizados para estas tablas, puede omitir este parámetro. Reemplace <applicationName> por el nombre de la aplicación KCL. La herramienta utiliza este nombre para derivar los nombres de tabla predeterminados si no se proporcionan nombres personalizados.

  • --lease_table_name (opcional): este parámetro es necesario cuando se ha establecido un nombre personalizado para la tabla de arrendamiento en la configuración de KCL. Si utiliza el nombre de tabla predeterminado, puede omitir este parámetro. Reemplace leaseTableName por el nombre de tabla personalizado que especificó para la tabla de arrendamiento.

  • --coordinator_state_table_name (opcional): este parámetro es necesario cuando se ha establecido un nombre personalizado para la tabla de estado de coordinadores en la configuración de KCL. Si utiliza el nombre de tabla predeterminado, puede omitir este parámetro. Reemplace <coordinatorStateTableName> por el nombre de tabla personalizado que especificó para la tabla de estado de coordinadores.

  • --worker_metrics_table_name (opcional): este parámetro es necesario cuando se ha establecido un nombre personalizado para la tabla de métricas de procesos de trabajo en la configuración de KCL. Si utiliza el nombre de tabla predeterminado, puede omitir este parámetro. Reemplace <workerMetricsTableName> por el nombre de tabla personalizado que especificó para la tabla de métricas de procesos de trabajo.

Paso 2: nueva implementación del código con la versión de KCL anterior (opcional)

Tras ejecutar la herramienta de migración de KCL para realizar una recuperación, verá uno de los siguientes mensajes:

  • Mensaje 1: “Se completó la reversión. Su aplicación KCL ejecutaba el modo compatible con KCL 2.x. Si no observa la migración de cualquier regresión, revierta sus archivos binarios de aplicación anteriores al implementar el código con su versión de KCL anterior”.

    • Acción requerida: Esto significa que sus trabajadores estaban trabajando en el modo compatible con KCL 2.x. Si el problema persiste, vuelva a implementar el código con la versión de KCL anterior en los procesos de trabajo.

  • Mensaje 2: “Se completó la reversión. Su aplicación KCL ejecutaba el modo de funcionalidad KCL 3.x. No es necesario volver a los archivos binarios de la aplicación anterior, a menos que no vea ninguna solución al problema en 5 minutos. Si sigue teniendo problemas, regrese a sus archivos binarios de aplicación anteriores al implementar el código con la versión de KCL anterior”.

    • Acción necesaria: Esto significa que sus trabajadores estaban trabajando en el modo KCL 3.x y que la herramienta de migración de KCL cambió a todos los trabajadores al modo compatible con KCL 2.x. Si el problema se resuelve, no es necesario volver a implementar el código con la versión anterior de KCL. Si el problema persiste, vuelva a implementar el código con la versión de KCL anterior en los procesos de trabajo.