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 :
Révision Changements majeurs et dépréciations
Révision Guide de compatibilité d'état pour les mises à niveau de Flink 2.2
Assurez-vous de disposer d'un environnement hors production pour les tests
Documentez la configuration et les dépendances actuelles de votre application
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→ →UPDATINGRUNNINGPré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.xmlbuild.gradleMettre à 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'ancien
SourceFunction//SinkFunctionpar la source FLIP-27 et le récepteur FLIP-143 APIsRemplacez 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:
Accédez à votre application
Choisissez la configuration
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:
Accédez à votre application
Choisissez Snapshots
Choisissez Créer un instantané
Entrez le nom d'un instantané (par exemple,
pre-flink-2.2-upgrade)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 CLI
update-applicationaction. Utiliser CloudFormation.
Mettez à jour le
RuntimeEnvironmentchamp. 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 votreRuntimeEnvironmentplace 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 :
RUNNING→UPDATING→RUNNINGVé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
RUNNINGmais 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 valeurnumRestartsest nulleuptimeet/ourunningTimesi elle augmente.
Mesures relatives aux points de contrôle :
lastCheckpointDuration: Doit être similaire aux valeurs d'avant la mise à niveaunumberOfFailedCheckpoints: 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:
Accédez à votre application
Choisissez Actions → Annuler
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.