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:
Rezension Leitfaden zur staatlichen Kompatibilität für Flink 2.2-Upgrades
Stellen Sie sicher, dass Sie eine Umgebung zum Testen verwenden, die nicht zur Produktion gehört
Dokumentieren Sie Ihre aktuelle Anwendungskonfiguration und Abhängigkeiten
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: → →
RUNNINGUPDATINGRUNNINGBehalten 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.xmlbuild.gradleAktualisieren 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 Legacy
SourceFunction/SinkFunctiondurch FLIP-27 Source- und FLIP-143 Sink-APIsErsetzen 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:
Navigieren Sie zu Ihrer Anwendung
Wählen Sie Konfiguration
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:
Navigieren Sie zu Ihrer Anwendung
Wählen Sie Snapshots
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 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-applicationAktion. Benutzen CloudFormation.
Aktualisieren Sie das
RuntimeEnvironmentFeld. 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 IhreRuntimeEnvironmentIn-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:
RUNNINGUPDATING→RUNNINGÜberprüfen Sie die Laufzeit der Anwendung. Wenn es 2.2 ist, war der Upgrade-Vorgang erfolgreich.
Wenn Ihre Anwendung zwar installiert ist,
RUNNINGaber 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 NullnumRestartsrunningTimeistuptimeund/oder steigt.
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 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:
Navigieren Sie zu Ihrer Anwendung
Wählen Sie Aktionen → Zurücksetzen
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.