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 instructions détaillées pour mettre à niveau votre application Amazon Managed Service pour Apache Flink de Flink 1.x à Flink 2.2. Il s'agit d'une mise à niveau majeure de la version avec des modifications majeures 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 après la mise à niveau, utilisez l'API Rollback pour revenir à la version 1.x avec votre état 1.x d'origine à partir du 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 actuelle de votre application et ses dépendances
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 trajectoires vous aide à vous préparer de manière appropriée et à définir des attentes réalistes.
Chemin 1 : état du binaire et de l'application compatibles
À quoi s'attendre :
Invoquer l'opération de mise à niveau
Terminez la migration vers la version 2.2 avec le changement de statut de l'application :
RUNNING→ →UPDATINGRUNNINGPréservez l'état de l'ensemble des applications sans perte de données ni retraitement
Même expérience que les migrations de versions mineures
Idéal pour : les applications sans état ou les applications utilisant une sérialisation compatible (Avro, schémas Protobuf compatibles, POJO sans collections)
Voie 2 : Incompatibilités binaires
À quoi s'attendre :
Invoquer 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 restauré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 API supprimées détectées lors du démarrage de la tâche Flink
Chemin 3 : État de l'application incompatible
À quoi s'attendre :
Invoquer l'opération de mise à niveau
La migration semble réussir dans un premier temps
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 montrant des redémarrages continus
Invoquer manuellement l'opération Rollback
Revenir à la production quelques minutes après le lancement de la restauration
Révision Migration d'État de votre candidature
Idéal pour : les applications présentant des incompatibilités de sérialisation d'états (POJO avec collections, certains états) Kryo-serialized
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'elle soit compatible avec Flink 2.2 :
Mettez à jour les dépendances de Flink vers la version 2.2.1 dans votre ou
pom.xmlbuild.gradleMettez à jour les dépendances des connecteurs vers des versions compatibles avec Flink 2.2 (voir) Disponibilité des connecteurs
Supprimer l'utilisation obsolète de l'API :
Remplacer DataSet l'API par une DataStream API ou une table API/SQL
Remplacez les anciennes API
SourceFunction/SinkFunctionpar des API FLIP-27 Source et FLIP-143 SinkRemplacer 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 JAR de votre application avec les dépendances de Flink 2.2
Téléchargez sur 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 et la clé S3 à utiliser lors de l'étape de mise à niveau
Phase 2 : activer la restauration automatique
Auto-rollback 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 restauration automatique
Console de gestion AWS:
Accédez à votre application
Choisissez la configuration
Dans les 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 l'état de votre application avant la mise à niveau.
Prendre un instantané de l'application en cours d'exécution
Console de gestion AWS:
Accédez à votre application
Choisissez des instantanés
Choisissez Créer un instantané
Entrez un nom de capture d'écran (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 d'un instantané
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 en utilisant cette UpdateApplication action.
Vous pouvez appeler l'UpdateApplicationAPI de différentes manières :
Utilisez le Console de gestion AWS.
Accédez à la page de votre application sur le Console de gestion AWS.
Choisissez Configurer.
Sélectionnez le nouveau moteur d'exécution et le snapshot à partir duquel vous souhaitez démarrer, également connu sous le nom de restauration de la configuration. 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 avez CloudFormation supprimé l'application et en avez créé une nouvelle, ce qui a entraîné la perte de vos instantanés et de l'historique des autres applications. Met désormais CloudFormation à jour votreRuntimeEnvironmentapplication 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 RUNNING en cours d'exécution ou lorsque l'application est READY arrêtée. 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 en RUNNING état ou à la suivante StartApplication si vous effectuez une mise à niveau alors qu'il est en READY état.
Passer de 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 READY
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 la demande :
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, la restauration automatique s'est déclenchée. L'API Operations affichera le fonctionnement sous la formeFAILED. Consultez les journaux pour trouver l'exception en cas d'échec.
En outre, surveillez ces indicateurs dans les domaines CloudWatch suivants :
Métrique de redémarrage :
numRestarts: Surveillez les redémarrages inattendus : la mise à niveau est réussie si ellenumRestartsest nulleuptimeet/ourunningTimesi elle augmente.
Métriques des points de contrôle :
lastCheckpointDuration: Doit être similaire aux valeurs antérieures à la mise à niveaunumberOfFailedCheckpoints: Doit rester à 0
Phase 6 : Valider le comportement de l'application
Une fois l'application exécutée 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 dans les cuves
Vérifiez que la logique métier produit les résultats attendus
Comparez la sortie avec la référence d'avant la mise à niveau
Validation des performances
Surveillez les mesures de latence (temps de traitement de bout en bout)
Surveillez les mesures de débit (enregistrements par seconde)
Surveillez la durée et la taille des points de contrôle
Surveillez l'utilisation de la mémoire et du processeur
Courez pendant plus de 24 heures
Autorisez l'application à s'exécuter pendant au moins 24 heures en production pour 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 restauration
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 qu'elle ne fonctionne pas correctement, utilisez l'RollbackApplicationAPI :
Console de gestion AWS:
Accédez à votre application
Choisissez Actions → Revenir en arrière
Confirmez le rollback
AWS CLI:
aws kinesisanalyticsv2 rollback-application \ --application-name MyApplication \ --current-application-version-id <version-id>
Que se passe-t-il lors de la restauration :
L'application s'arrête
Runtime revient à la version précédente de Flink
Le code de l'application revient au fichier JAR précédent
L'application redémarre à partir de la dernière capture d'écran réussie prise avant la mise à niveau
Important
Vous ne pouvez pas restaurer un snapshot de Flink 2.2 sur Flink 1.x
La restauration utilise la capture d'écran prise avant la mise à niveau
Prenez toujours un instantané avant la mise à niveau (phase 3)
Étapes suivantes
Pour toute question ou problème lors de la mise à niveau, consultez le Résoudre les problèmes liés au service géré pour Apache Flink ou contactez le AWS support.