View a markdown version of this page

Upgrade auf Flink 2.2: Vollständige Anleitung - Managed Service für Apache Flink

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Upgrade auf Flink 2.2: Vollständige Anleitung

Dieses Handbuch enthält schrittweise Anweisungen zum Upgrade Ihrer Amazon Managed Service for Apache Flink-Anwendung von Flink 1.x auf Flink 2.2. Dies ist ein Hauptversions-Upgrade mit wichtigen Änderungen, die eine sorgfältige Planung und Prüfung erfordern.

Das Upgrade der Hauptversion erfolgt unidirektional

Der Upgrade-Vorgang kann Ihre Anwendung unter Beibehaltung des Zustands von Flink 1.x auf 2.2 verschieben, aber Sie können nicht von 2.2 auf 1.x mit 2.2-Status zurückkehren. Wenn Ihre Anwendung nach dem Upgrade fehlerhaft wird, verwenden Sie die Rollback-API, um zur 1.x-Version mit Ihrem ursprünglichen 1.x-Status aus dem letzten Snapshot zurückzukehren.

Voraussetzungen

Bevor Sie mit dem Upgrade beginnen:

Verstehen Sie Ihre Migrationspfade

Ihre Upgrade-Erfahrung hängt von der Kompatibilität Ihrer Anwendung mit Flink 2.2 ab. Wenn Sie diese Pfade kennen, können Sie sich angemessen vorbereiten und realistische Erwartungen stellen.

Pfad 1: Kompatibler Binär- und Anwendungsstatus

Was ist zu erwarten:

  • Rufen Sie den Upgrade-Vorgang auf

  • Schließen Sie die Migration auf 2.2 mit dem Übergang des Anwendungsstatus ab: → → RUNNING UPDATING RUNNING

  • Behalten Sie den gesamten Anwendungsstatus bei, ohne dass Daten verloren gehen oder erneut verarbeitet werden

  • Gleiche Erfahrung wie bei der Migration kleinerer Versionen

Ideal für: Zustandslose Anwendungen oder Anwendungen mit kompatibler Serialisierung (Avro, kompatible Protobuf-Schemas, POJOs ohne Sammlungen)

Pfad 2: Binäre Inkompatibilitäten

Was ist zu erwarten:

  • Rufen Sie den Upgrade-Vorgang auf

  • Der Vorgang schlägt fehl und die Binärinkompatibilität wird über die Operations API und die Protokolle aufgedeckt

  • Bei aktiviertem Auto-Rollback: Anwendungen werden innerhalb weniger Minuten automatisch ohne Ihr Zutun zurückgesetzt

  • Bei deaktiviertem Auto-Rollback: Anwendungen bleiben ohne Datenverarbeitung im laufenden Zustand; Sie führen ein manuelles Rollback auf eine ältere Version durch

  • Sobald die Binärdatei repariert ist, verwenden Sie die UpdateApplication API für ein Erlebnis, das Path 1 ähnelt

Am besten geeignet für: Anwendungen, die entfernte APIs verwenden und die beim Start des Flink-Jobs erkannt werden

Pfad 3: Inkompatibler Anwendungsstatus

Was ist zu erwarten:

  • Rufen Sie den Upgrade-Vorgang auf

  • Die Migration scheint zunächst erfolgreich zu sein

  • Anwendungen werden innerhalb von Sekunden neu gestartet, wenn die Statuswiederherstellung fehlschlägt

  • Erkennen Sie Fehler anhand von CloudWatch Kennzahlen, die kontinuierliche Neustarts anzeigen

  • Rufen Sie den Rollback-Vorgang manuell auf

  • Kehren Sie innerhalb weniger Minuten nach dem Start des Rollbacks zur Produktion zurück

  • Prüfen Sie Ihre Zustandsmigration Bewerbung

Ideal für: Anwendungen mit Inkompatibilitäten bei der Serialisierung von Bundesstaaten (POJOs mit Sammlungen, bestimmter Status) Kryo-serialized

Anmerkung

Es wird dringend empfohlen, ein Replikat Ihrer Produktionsanwendung zu erstellen und jede der folgenden Phasen des Upgrades auf dem Replikat zu testen, bevor Sie dieselben Schritte für Ihre Produktionsanwendung ausführen.

Phase 1: Vorbereitung

Anwendungscode aktualisieren

Aktualisieren Sie Ihren Anwendungscode, damit er mit Flink 2.2 kompatibel ist:

  • Aktualisieren Sie die Flink-Abhängigkeiten auf Version 2.2.1 in Ihrem oder pom.xml build.gradle

  • Aktualisieren Sie die Connector-Abhängigkeiten auf Flink 2.2-kompatible Versionen (siehe) Verfügbarkeit des Connectors

  • Entfernen Sie die veraltete API-Nutzung:

    • Ersetzen Sie die DataSet API durch die DataStream API oder Tabelle API/SQL

    • Ersetzen Sie LegacySourceFunction/SinkFunctiondurch FLIP-27 Source- und FLIP-143 Sink-APIs

    • Ersetzen Sie die Scala-API-Nutzung durch die Java-API

  • Aktualisieren Sie auf Java 17

Laden Sie den aktualisierten Anwendungscode hoch

  • Erstellen Sie Ihre Anwendungs-JAR mit Flink 2.2-Abhängigkeiten

  • Laden Sie die Datei mit einem anderen Namen als Ihrem aktuellen JAR auf Amazon S3 hoch (z. B.my-app-flink-2.2.jar)

  • Notieren Sie sich den S3-Bucket und den Schlüssel zur Verwendung im Upgrade-Schritt

Phase 2: Automatisches Rollback aktivieren

Auto-rollback ermöglicht Amazon Managed Service für Apache Flink, automatisch zur vorherigen Version zurückzukehren, wenn das Upgrade fehlschlägt.

Überprüfen Sie den Status des automatischen Rollbacks

AWS-Managementkonsole:

  1. Navigieren Sie zu Ihrer Anwendung

  2. Wählen Sie Konfiguration

  3. Vergewissern Sie sich, dass unter Anwendungseinstellungen das System-Rollback aktiviert ist

AWS CLI:

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

Aktivieren Sie das automatische Rollback (falls nicht aktiviert)

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

Phase 3: Snapshot erstellen (optional)

Wenn automatische Snapshots für Ihre Anwendung aktiviert sind, können Sie diesen Schritt überspringen. Andernfalls erstellen Sie vor dem Upgrade einen Snapshot Ihrer Anwendung, um den Status Ihrer Anwendung zu speichern.

Erstellen Sie einen Snapshot von der laufenden Anwendung

AWS-Managementkonsole:

  1. Navigieren Sie zu Ihrer Anwendung

  2. Wählen Sie Snapshots

  3. Wählen Sie Snapshot erstellen

  4. Geben Sie einen Snapshot-Namen ein (z. B.pre-flink-2.2-upgrade)

  5. Wählen Sie Create (Erstellen) aus.

AWS CLI:

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

Überprüfen Sie die Snapshot-Erstellung

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

Warten Sie, bis dies SnapshotStatus der Fall ist, READY bevor Sie fortfahren.

Phase 4: Anwendung aktualisieren

Sie können Ihre Flink-Anwendung aktualisieren, indem Sie die UpdateApplication Aktion verwenden.

Sie können die UpdateApplication API auf verschiedene Arten aufrufen:

  • Benutze die AWS-Managementkonsole.

    • Gehen Sie zu Ihrer App-Seite auf der AWS-Managementkonsole.

    • Wählen Sie Konfigurieren aus.

    • Wählen Sie die neue Laufzeit und den Snapshot aus, mit dem Sie beginnen möchten. Dies wird auch als Konfiguration wiederherstellen bezeichnet. Verwenden Sie die neueste Einstellung als Wiederherstellungskonfiguration, um die App vom neuesten Snapshot aus zu starten. Verweisen Sie auf die neue aktualisierte Anwendung JAR/zip auf Amazon S3.

  • Verwenden Sie die AWS CLI update-application Aktion.

  • Benutzen CloudFormation.

    • Aktualisieren Sie das RuntimeEnvironment Feld. Zuvor haben Sie die Anwendung CloudFormation gelöscht und eine neue erstellt, wodurch Ihre Schnappschüsse und der andere App-Verlauf verloren gingen. CloudFormation Aktualisiert jetzt Ihre RuntimeEnvironment In-Place-Version und löscht Ihre Anwendung nicht.

  • Verwenden Sie das AWS SDK.

    • Konsultieren Sie die SDK-Dokumentation für die Programmiersprache Ihrer Wahl. Siehe UpdateApplication.

Sie können das Upgrade durchführen, während sich die Anwendung im RUNNING Status befindet oder während die Anwendung im READY Status gestoppt ist. Amazon Managed Service for Apache Flink validiert die Kompatibilität zwischen der ursprünglichen Laufzeitversion und der Ziel-Laufzeitversion. Diese Kompatibilitätsprüfung wird ausgeführt, wenn Sie im RUNNING Status sind, oder beim nächsten Mal, StartApplication wenn Sie während des Status ein Upgrade durchführen. UpdateApplication READY

Führen Sie das Upgrade im Status RUNNING durch

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" } } } }'

Führen Sie das Upgrade aus dem Status BEREIT durch

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: Aktualisierung des Monitors

Kompatibilitätsprüfung

  • Verwenden Sie die Operations API, um den Status des Upgrades zu überprüfen. Wenn binäre Inkompatibilitäten oder Probleme beim Jobstart auftreten, schlägt der Upgrade-Vorgang mit Protokollen fehl.

  • Wenn der Upgrade-Vorgang erfolgreich war, die Anwendung jedoch in Neustartschleifen feststeckt, bedeutet dies, dass der Status nicht mit der neuen Flink-Version kompatibel ist oder dass ein Problem mit dem aktualisierten Code vorliegt. Lesen SieLeitfaden zur staatlichen Kompatibilität für Flink 2.2-Upgrades, wie Sie Probleme mit der Inkompatibilität von Bundesstaaten identifizieren können.

Überwachen Sie den Zustand der Anwendung

Status der Anwendung:

  • Der Bewerbungsstatus sollte sich ändern: RUNNING UPDATINGRUNNING

  • Überprüfen Sie die Laufzeit der Anwendung. Wenn es 2.2 ist, war der Upgrade-Vorgang erfolgreich.

  • Wenn Ihre Anwendung zwar installiert ist, RUNNING aber immer noch auf der älteren Runtime läuft, wurde das automatische Rollback aktiviert. Die Operations API zeigt den Betrieb als an. FAILED Überprüfen Sie die Protokolle, um die Ausnahme für einen Fehler zu finden.

Überwachen Sie diese Metriken außerdem in CloudWatch:

Metrik neu starten:

  • numRestarts: Auf unerwartete Neustarts achten — das Upgrade ist erfolgreich, wenn der Wert Null numRestarts runningTime ist uptime und/oder steigt.

Checkpoint-Metriken:

  • lastCheckpointDuration: Sollte den Werten vor dem Upgrade ähneln

  • numberOfFailedCheckpoints: Sollte bei 0 bleiben

Phase 6: Überprüfen Sie das Anwendungsverhalten

Nachdem die Anwendung auf Flink 2.2 ausgeführt wird:

Funktionale Validierung

  • Stellen Sie sicher, dass Daten aus Quellen gelesen werden

  • Stellen Sie sicher, dass Daten in Senken geschrieben werden

  • Stellen Sie sicher, dass die Geschäftslogik die erwarteten Ergebnisse liefert

  • Vergleichen Sie die Leistung mit dem Ausgangswert vor dem Upgrade

Überprüfung der Leistung

  • Überwachen Sie die Latenzmetriken (durchgehende Verarbeitungszeit)

  • Überwachen Sie die Durchsatzmetriken (Datensätze pro Sekunde)

  • Überwachen Sie die Dauer und Größe der Checkpoints

  • Überwachen Sie die Speicher- und CPU-Auslastung

Mehr als 24 Stunden laufen lassen

Lassen Sie die Anwendung in der Produktion mindestens 24 Stunden lang laufen, um Folgendes sicherzustellen:

  • Keine Speicherlecks

  • Stabiles Checkpoint-Verhalten

  • Keine unerwarteten Neustarts

  • Konsistenter Durchsatz

Phase 7: Rollback-Verfahren

Wenn das Upgrade fehlschlägt oder die Anwendung zwar läuft, aber fehlerhaft ist, führen Sie ein Rollback zur vorherigen Version durch.

Automatisches Rollback

Wenn das automatische Rollback aktiviert ist und das Upgrade beim Start fehlschlägt, kehrt Amazon Managed Service für Apache Flink automatisch zur vorherigen Version zurück.

Manuelles Rollback

Wenn die Anwendung läuft, aber fehlerhaft ist, verwenden Sie die RollbackApplication API:

AWS-Managementkonsole:

  1. Navigieren Sie zu Ihrer Anwendung

  2. Wählen Sie Aktionen Zurücksetzen

  3. Bestätigen Sie das Rollback

AWS CLI:

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

Was passiert beim Rollback:

  • Die Anwendung wird gestoppt

  • Runtime kehrt zur vorherigen Flink-Version zurück

  • Der Anwendungscode kehrt zur vorherigen JAR zurück

  • Die Anwendung wird mit dem letzten erfolgreichen Snapshot neu gestartet, der vor dem Upgrade erstellt wurde

Wichtig
  • Sie können einen Flink 2.2-Snapshot auf Flink 1.x nicht wiederherstellen

  • Rollback verwendet den Snapshot, der vor dem Upgrade erstellt wurde

  • Erstellen Sie vor dem Upgrade immer einen Snapshot (Phase 3)

Nächste Schritte

Bei Fragen oder Problemen beim Upgrade wenden Sie sich an den Support Fehlerbehebung bei Managed Service für Apache Flink oder wenden Sie sich an den AWS Support.