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 step-by-step Anweisungen für das Upgrade Ihrer Amazon Managed Service for Apache Flink-Anwendung von Flink 1.x auf Flink 2.2. Dies ist ein Hauptversions-Upgrade mit grundlegenden Änderungen, die sorgfältige Planung und Tests 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, Sie können jedoch nicht von 2.2 auf 1.x mit dem Status 2.2 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:
Rückblick Leitfaden zur staatlichen Kompatibilität für Flink 2.2-Upgrades
Stellen Sie sicher, dass Sie über eine Testumgebung außerhalb der Produktionsumgebung verfügen
Dokumentieren Sie Ihre aktuelle Anwendungskonfiguration und Abhängigkeiten
Verstehen Sie Ihre Migrationspfade
Ihr Upgrade-Erlebnis 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 setzen.
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 ab, wobei sich der Status der Anwendung ändert: → →
RUNNINGUPDATINGRUNNINGBehalten Sie den gesamten Anwendungsstatus ohne Datenverlust oder erneute Verarbeitung bei
Gleiche Erfahrung wie bei Migrationen kleinerer Versionen
Am besten geeignet für: Zustandslose Anwendungen oder Anwendungen mit kompatibler Serialisierung (Avro, kompatible Protobuf-Schemas, ohne Sammlungen) POJOs
Pfad 2: Binäre Inkompatibilitäten
Was ist zu erwarten:
Rufen Sie den Upgrade-Vorgang auf
Der Vorgang schlägt fehl und die binäre Inkompatibilität wird über die Operations API und die Protokolle aufgedeckt
Mit aktiviertem Auto-Rollback: Anwendungen werden innerhalb von Minuten automatisch ohne Ihr Eingreifen zurückgesetzt
Bei deaktiviertem Auto-Rollback: Anwendungen bleiben ohne Datenverarbeitung im Ausführungsstatus; Sie führen ein manuelles Rollback zu einer älteren Version durch
Sobald die Binärdatei repariert ist, verwenden Sie die UpdateApplication API für ein ähnliches Erlebnis wie bei Pfad 1
Ideal für: Anwendungen APIs , die entfernte Anwendungen verwenden und beim Start des Flink-Jobs erkannt wurden
Pfad 3: Status der inkompatiblen Anwendung
Was ist zu erwarten:
Rufen Sie den Upgrade-Vorgang auf
Die Migration scheint zunächst erfolgreich zu sein
Anwendungen geraten innerhalb von Sekunden in Neustartschleifen, wenn die Statuswiederherstellung fehlschlägt
Erkennen Sie Fehler anhand von CloudWatch Metriken, die kontinuierliche Neustarts anzeigen
Rufen Sie den Rollback-Vorgang manuell auf
Kehren Sie innerhalb von Minuten nach Initiierung des Rollbacks zur Produktion zurück
Überprüfen Sie Ihre Zustandsmigration Bewerbung
Am besten geeignet für: Anwendungen mit Inkompatibilitäten bei der staatlichen Serialisierung (POJOs mit Sammlungen, bestimmter Status mit Kryo-Serialisierung)
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
Aktualisieren Sie den Anwendungscode
Aktualisieren Sie Ihren Anwendungscode, damit er mit Flink 2.2 kompatibel ist:
Aktualisieren Sie die Flink-Abhängigkeiten auf Version 2.2.0 in Ihrem oder
pom.xmlbuild.gradleAktualisieren Sie die Connector-Abhängigkeiten auf Flink 2.2-kompatible Versionen (siehe) Verfügbarkeit von Anschlüssen
Entfernen Sie die veraltete API-Nutzung:
Ersetzen Sie die DataSet API durch eine API oder eine DataStream Tabellen-API/SQL
Ersetzen Sie die alte Version von
SourceFunction/SinkFunctiondurch FLIP-27 Source und FLIP-143 Sink APIsErsetzen Sie die Verwendung der Scala-API durch die Java-API
Update auf Java 17
Laden Sie den aktualisierten Anwendungscode hoch
Erstellen Sie Ihr Anwendungs-JAR mit Flink 2.2-Abhängigkeiten
Laden Sie mit einem anderen Dateinamen 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
Mit Auto-Rollback kann Amazon Managed Service für Apache Flink automatisch zur vorherigen Version zurückkehren, falls das Upgrade fehlschlägt.
Überprüfen Sie den Status des automatischen Rollbacks
AWS-Managementkonsole:
Navigieren Sie zu Ihrer Bewerbung
Wählen Sie Konfiguration
Stellen Sie unter Anwendungseinstellungen sicher, dass der System-Rollback aktiviert ist
AWS CLI:
aws kinesisanalyticsv2 describe-application \ --application-name MyApplication \ --query 'ApplicationDetail.ApplicationConfigurationDescription.ApplicationSystemRollbackConfigurationDescription.RollbackEnabled'
Automatisches Rollback aktivieren (falls nicht aktiviert)
aws kinesisanalyticsv2 update-application \ --application-name MyApplication \ --current-application-version-id <version-id> \ --application-configuration-update '{ "ApplicationSystemRollbackConfigurationUpdate": { "RollbackEnabledUpdate": true } }'
Phase 3: Schnappschuss 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.
Machen Sie einen Snapshot von der laufenden Anwendung
AWS-Managementkonsole:
Navigieren Sie zu Ihrer Anwendung
Wählen Sie Schnappschüsse
Wählen Sie Snapshot erstellen
Geben Sie einen Snapshot-Namen ein (z. B.
pre-flink-2.2-upgrade)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 Erstellung des Snapshots
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 UpdateApplicationAktion 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, von dem aus Sie beginnen möchten. Dies wird auch als Wiederherstellungskonfiguration bezeichnet. Verwenden Sie die neueste Einstellung als Wiederherstellungskonfiguration, um die App vom neuesten Snapshot aus zu starten. Zeigen Sie auf die neue aktualisierte Anwendung JAR/zip auf Amazon S3.
Verwenden Sie die AWS CLI
update-applicationAktion. Benutze CloudFormation.
Aktualisiere das
RuntimeEnvironmentFeld. Zuvor wurde die Anwendung CloudFormation gelöscht und eine neue erstellt, wodurch Ihre Schnappschüsse und andere App-Historien verloren gingen. CloudFormation Aktualisiert jetzt IhrRuntimeEnvironmentvorhandenes Dokument und löscht Ihre Anwendung nicht.
Verwenden Sie das AWS SDK.
Die Programmiersprache Ihrer Wahl finden Sie in der SDK-Dokumentation. 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 für Apache Flink überprüft die Kompatibilität zwischen der ursprünglichen Runtime-Version und der Ziel-Runtime-Version. Diese Kompatibilitätsprüfung wird ausgeführt, wenn Sie diese durchführen, UpdateApplication während Sie sich im RUNNING Status befinden, oder beim nächsten Mal, StartApplication wenn Sie ein Upgrade durchführen, während Sie sich im READY Status befinden.
Führen Sie das Upgrade vom Status RUNNING aus
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 ein 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: Überwachen Sie das Upgrade
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 stecken bleibt, bedeutet dies, dass der Status nicht mit der neuen Flink-Version kompatibel ist oder dass ein Problem mit dem aktualisierten Code vorliegt. Erfahren SieLeitfaden zur staatlichen Kompatibilität für Flink 2.2-Upgrades, wie Sie Probleme mit staatlichen Inkompatibilitäten identifizieren können.
Überwachen Sie den Zustand der Anwendung
Status der Anwendung:
Der Status der Bewerbung sollte sich ändern:
RUNNING→UPDATING→RUNNINGÜberprüfen Sie die Laufzeit der Anwendung. Wenn es 2.2 ist, war der Upgrade-Vorgang erfolgreich.
Wenn Ihre Anwendung aktiviert ist,
RUNNINGaber noch in der älteren Runtime läuft, wurde das automatische Rollback aktiviert. Die Operations API zeigt den Vorgang als an.FAILEDSuchen Sie in den Protokollen nach der Ausnahme für einen Fehler.
Überwachen Sie außerdem diese Metriken in CloudWatch:
Metrik neu starten:
numRestarts: Achten Sie auf unerwartete Neustarts — das Upgrade ist erfolgreich, wenn der Wert NullnumRestartsist und/oderuptimeder Wert zunimmt.runningTime
Checkpoint-Metriken:
lastCheckpointDuration: Sollte den Werten vor dem Upgrade ähnelnnumberOfFailedCheckpoints: Sollte bei 0 bleiben
Phase 6: Überprüfen Sie das Anwendungsverhalten
Nachdem die Anwendung auf Flink 2.2 ausgeführt wurde:
Funktionale Validierung
Stellen Sie sicher, dass Daten aus Quellen gelesen werden
Stellen Sie sicher, dass Daten auf Speichermedien geschrieben werden
Stellen Sie sicher, dass die Geschäftslogik die erwarteten Ergebnisse liefert
Vergleichen Sie das Ergebnis mit dem Ausgangswert vor dem Upgrade
Überprüfung der Leistung
Überwachen Sie die Latenzkennzahlen (end-to-end 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
Läuft für mehr als 24 Stunden
Lassen Sie die Anwendung mindestens 24 Stunden in der Produktion 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 läuft, aber fehlerhaft ist, führen Sie ein Rollback zur vorherigen Version durch.
Automatisches Rollback
Wenn Auto-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:
Navigieren Sie zu Ihrer Anwendung
Wählen Sie Aktionen → Rollback
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 wird auf die vorherige JAR zurückgesetzt
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 während des Upgrades wenden Sie sich an den Support Fehlerbehebung bei Managed Service für Apache Flink oder wenden Sie sich an den AWS Support.