Mise à niveau vers Flink 2.2 : guide complet - Service géré pour Apache Flink

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Mise à niveau vers Flink 2.2 : guide complet

Ce guide fournit des step-by-step instructions pour mettre à niveau votre application Amazon Managed Service for Apache Flink de Flink 1.x vers Flink 2.2. Il s'agit d'une mise à niveau majeure avec des modifications importantes qui nécessitent une planification et des tests minutieux.

La mise à niveau de la version majeure est unidirectionnelle

L'opération de mise à niveau peut déplacer votre application de Flink 1.x vers la version 2.2 avec préservation de l'état, mais vous ne pouvez pas revenir de la version 2.2 à la version 1.x avec l'état 2.2. Si votre application ne fonctionne plus correctement après la mise à niveau, utilisez l'API Rollback pour revenir à la version 1.x avec l'état 1.x d'origine enregistré dans le dernier instantané.

Conditions préalables

Avant de commencer votre mise à niveau :

Comprendre vos parcours de migration

Votre expérience de mise à niveau dépend de la compatibilité de votre application avec Flink 2.2. La compréhension de ces parcours vous aide à vous préparer de manière appropriée et à définir des attentes réalistes.

Chemin 1 : Binaire compatible et état de l'application

À quoi s'attendre :

  • Invoquez l'opération de mise à niveau

  • Terminez la migration vers la version 2.2 avec la transition du statut de l'application : RUNNING → → UPDATING RUNNING

  • Préservez l'état de toutes les applications sans perte de données ni retraitement

  • Même expérience que les migrations de versions mineures

Idéal pour : les applications apatrides ou les applications utilisant une sérialisation compatible (Avro, schémas Protobuf compatibles, sans collections) POJOs

Voie 2 : Incompatibilités binaires

À quoi s'attendre :

  • Invoquez l'opération de mise à niveau

  • L'opération échoue et révèle l'incompatibilité binaire via l'API Operations et les journaux

  • Lorsque la restauration automatique est activée : les applications sont automatiquement annulées en quelques minutes sans votre intervention

  • Lorsque la restauration automatique est désactivée : les applications restent en cours d'exécution sans traitement des données ; vous revenez manuellement à l'ancienne version

  • Une fois le binaire corrigé, utilisez l'UpdateApplication API pour une expérience similaire à Path 1

Idéal pour : les applications utilisant des applications supprimées APIs détectées lors du démarrage d'une tâche Flink

Chemin 3 : État de l'application incompatible

À quoi s'attendre :

  • Invoquez l'opération de mise à niveau

  • La migration semble réussir au début

  • Les applications entrent dans des boucles de redémarrage en quelques secondes lorsque la restauration de l'état échoue

  • Détectez les défaillances grâce à CloudWatch des métriques indiquant des redémarrages continus

  • Invoquer manuellement l'opération Rollback

  • Revenez à la production dans les minutes qui suivent le lancement du rollback

  • Révision Migration d'État de votre candidature

Idéal pour : les applications présentant des incompatibilités de sérialisation d'états (POJOs avec des collections, certains états sérialisés en Kryo)

Note

Il est vivement recommandé de créer une réplique de votre application de production et de tester chacune des phases suivantes de la mise à niveau sur la réplique avant de suivre les mêmes étapes pour votre application de production.

Phase 1 : Préparation

Mettre à jour le code d'application

Mettez à jour le code de votre application pour qu'il soit compatible avec Flink 2.2 :

  • Mettez à jour les dépendances de Flink vers la version 2.2.0 dans votre ou pom.xml build.gradle

  • Mettre à jour les dépendances du connecteur vers des versions compatibles avec Flink 2.2 (voir) Disponibilité du connecteur

  • Supprimez l'utilisation obsolète de l'API :

    • Remplacer DataSet l'API par une DataStream API ou une table API/SQL

    • Remplacez l'ancienSourceFunction//SinkFunctionpar la source FLIP-27 et le récepteur FLIP-143 APIs

    • Remplacez l'utilisation de l'API Scala par l'API Java

  • Mise à jour vers Java 17

Téléchargez le code d'application mis à jour

  • Créez le fichier JAR de votre application avec les dépendances de Flink 2.2

  • Chargez vers Amazon S3 avec un nom de fichier différent de celui de votre fichier JAR actuel (par exemple,my-app-flink-2.2.jar)

  • Notez le compartiment S3 et la clé à utiliser lors de l'étape de mise à niveau

Phase 2 : activer la restauration automatique

La restauration automatique permet à Amazon Managed Service pour Apache Flink de revenir automatiquement à la version précédente en cas d'échec de la mise à niveau.

Vérifier l'état de la restauration automatique

AWS Management Console:

  1. Accédez à votre application

  2. Choisissez la configuration

  3. Sous Paramètres de l'application, vérifiez que la restauration du système est activée

AWS CLI:

aws kinesisanalyticsv2 describe-application \ --application-name MyApplication \ --query 'ApplicationDetail.ApplicationConfigurationDescription.ApplicationSystemRollbackConfigurationDescription.RollbackEnabled'

Activer la restauration automatique (si elle n'est pas activée)

aws kinesisanalyticsv2 update-application \ --application-name MyApplication \ --current-application-version-id <version-id> \ --application-configuration-update '{ "ApplicationSystemRollbackConfigurationUpdate": { "RollbackEnabledUpdate": true } }'

Phase 3 : Prendre un instantané (facultatif)

Si les instantanés automatiques sont activés pour votre application, vous pouvez ignorer cette étape. Sinon, prenez un instantané de votre application pour enregistrer son état avant de procéder à la mise à niveau.

Prendre un instantané depuis une application en cours d'exécution

AWS Management Console:

  1. Accédez à votre application

  2. Choisissez Snapshots

  3. Choisissez Créer un instantané

  4. Entrez le nom d'un instantané (par exemple,pre-flink-2.2-upgrade)

  5. Sélectionnez Create (Créer).

AWS CLI:

aws kinesisanalyticsv2 create-application-snapshot \ --application-name MyApplication \ --snapshot-name pre-flink-2.2-upgrade

Vérifier la création de snapshots

aws kinesisanalyticsv2 describe-application-snapshot \ --application-name MyApplication \ --snapshot-name pre-flink-2.2-upgrade

Attendez jusqu'à ce que ce SnapshotStatus soit READY le cas avant de continuer.

Phase 4 : mise à niveau de l'application

Vous pouvez mettre à niveau votre application Flink à l'aide de cette UpdateApplicationaction.

Vous pouvez appeler l'UpdateApplicationAPI de différentes manières :

  • Utilisez le AWS Management Console.

    • Accédez à la page de votre application sur le AWS Management Console.

    • Choisissez Configurer.

    • Sélectionnez le nouveau runtime et le snapshot à partir desquels vous souhaitez démarrer, également appelé configuration de restauration. Utilisez le dernier paramètre comme configuration de restauration pour démarrer l'application à partir du dernier instantané. Pointez sur la nouvelle application mise à niveau JAR/zip sur Amazon S3.

  • Utilisez l' AWS CLIupdate-applicationaction.

  • Utiliser CloudFormation.

    • Mettez à jour le RuntimeEnvironment champ. Auparavant, vous CloudFormation supprimiez l'application et créez-en une nouvelle, ce qui entraînait la perte de vos instantanés et de l'historique des autres applications. Met désormais CloudFormation à jour votre RuntimeEnvironment place et ne supprime pas votre application.

  • Utilisez le AWS SDK.

    • Consultez la documentation du SDK pour le langage de programmation de votre choix. Consultez UpdateApplication.

Vous pouvez effectuer la mise à niveau pendant que l'application est en RUNNING état ou pendant que l'application est arrêtée. READY Amazon Managed Service pour Apache Flink valide la compatibilité entre la version d'exécution d'origine et la version d'exécution cible. Ce contrôle de compatibilité s'exécute lorsque vous effectuez une mise à niveau UpdateApplication alors que vous êtes dans RUNNING l'état ou le suivant StartApplication si vous effectuez une mise à niveau alors que vous êtes dans READY l'état.

Mise à niveau depuis l'état RUNNING

aws kinesisanalyticsv2 update-application \ --application-name MyApplication \ --current-application-version-id <version-id> \ --runtime-environment-update FLINK-2_2 \ --application-configuration-update '{ "ApplicationCodeConfigurationUpdate": { "CodeContentUpdate": { "S3ContentLocationUpdate": { "FileKeyUpdate": "my-app-flink-2.2.jar" } } } }'

Mise à niveau depuis l'état PRÊT

aws kinesisanalyticsv2 update-application \ --application-name MyApplication \ --current-application-version-id <version-id> \ --runtime-environment-update FLINK-2_2 \ --application-configuration-update '{ "ApplicationCodeConfigurationUpdate": { "CodeContentUpdate": { "S3ContentLocationUpdate": { "FileKeyUpdate": "my-app-flink-2.2.jar" } } } }'

Phase 5 : mise à niveau du moniteur

Contrôle de compatibilité

  • Utilisez l'API Operations pour vérifier l'état de la mise à niveau. En cas d'incompatibilités binaires ou de problèmes lors du démarrage de la tâche, l'opération de mise à niveau échouera avec les journaux.

  • Si l'opération de mise à niveau a réussi mais que l'application est bloquée dans des boucles de redémarrage, cela signifie que l'état est incompatible avec la nouvelle version de Flink ou qu'il y a un problème avec le code mis à jour. Découvrez Guide de compatibilité d'état pour les mises à niveau de Flink 2.2 comment identifier les problèmes d'incompatibilité entre états.

Surveiller l'état des applications

État de l'application :

  • Le statut de la candidature devrait changer : RUNNINGUPDATINGRUNNING

  • Vérifiez le temps d'exécution de l'application. S'il s'agit de la version 2.2, l'opération de mise à niveau a réussi.

  • Si votre application est active RUNNING mais qu'elle utilise toujours l'ancien environnement d'exécution, le rollback automatique est activé. L'API des opérations affichera l'opération sous la formeFAILED. Consultez les journaux pour trouver l'exception en cas d'échec.

En outre, surveillez ces indicateurs dans CloudWatch :

Métrique de redémarrage :

  • numRestarts: Surveillez les redémarrages inattendus : la mise à niveau est réussie si la valeur numRestarts est nulle uptime et/ou runningTime si elle augmente.

Mesures relatives aux points de contrôle :

  • lastCheckpointDuration: Doit être similaire aux valeurs d'avant la mise à niveau

  • numberOfFailedCheckpoints: Doit rester à 0

Phase 6 : Valider le comportement de l'application

Après l'exécution de l'application sur Flink 2.2 :

Validation fonctionnelle

  • Vérifiez que les données sont lues à partir des sources

  • Vérifiez que les données sont écrites sur les récepteurs

  • Vérifier que la logique métier produit les résultats attendus

  • Comparaison des résultats avec la base de référence avant la mise à niveau

Validation des performances

  • Surveiller les mesures de latence (temps end-to-end de traitement)

  • Surveiller les mesures de débit (enregistrements par seconde)

  • Surveiller la durée et la taille du point de contrôle

  • Surveiller l'utilisation de la mémoire et du processeur

Courez pendant plus de 24 heures

Permettez à l'application de fonctionner pendant au moins 24 heures en production afin de garantir :

  • Aucune fuite de mémoire

  • Comportement stable aux points de contrôle

  • Pas de redémarrages inattendus

  • Débit constant

Phase 7 : Procédures de rétrogradation

Si la mise à niveau échoue ou si l'application est en cours d'exécution mais ne fonctionne pas correctement, revenez à la version précédente.

Annulation automatique

Si la restauration automatique est activée et que la mise à niveau échoue au démarrage, Amazon Managed Service pour Apache Flink revient automatiquement à la version précédente.

Annulation manuelle

Si l'application est en cours d'exécution mais ne fonctionne pas correctement, utilisez l'RollbackApplicationAPI :

AWS Management Console:

  1. Accédez à votre application

  2. Choisissez Actions → Annuler

  3. Confirmez le rollback

AWS CLI:

aws kinesisanalyticsv2 rollback-application \ --application-name MyApplication \ --current-application-version-id <version-id>

Que se passe-t-il lors du rollback :

  • L'application s'arrête

  • Runtime revient à la version précédente de Flink

  • Le code de l'application revient au JAR précédent

  • L'application redémarre à partir du dernier instantané réussi pris avant la mise à niveau

Important
  • Vous ne pouvez pas restaurer un instantané Flink 2.2 sur Flink 1.x

  • Le rollback utilise le snapshot pris avant la mise à niveau

  • Prenez toujours un instantané avant de procéder à la mise à niveau (phase 3)

Étapes suivantes

Pour toute question ou problème lors de la mise à niveau, consultez le Support Résoudre les problèmes liés au service géré pour Apache Flink ou contactez le AWS Support.