

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
<a name="flink-2-2-upgrade-guide"></a>

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
<a name="upgrade-guide-prerequisites"></a>

Bevor Sie mit dem Upgrade beginnen:
+ Bewertung [Wichtige Änderungen und veraltete Versionen](flink-2-2.md#flink-2-2-breaking-changes)
+ Rückblick [Leitfaden zur staatlichen Kompatibilität für Flink 2.2-Upgrades](state-compatibility.md)
+ 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
<a name="upgrade-guide-migration-paths"></a>

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: → → `RUNNING` `UPDATING` `RUNNING`
+ Behalten 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](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_UpdateApplication.html) 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](state-compatibility.md#state-compat-migration) 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
<a name="upgrade-guide-phase-1"></a>

**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.xml` `build.gradle`
+ **Aktualisieren Sie die Connector-Abhängigkeiten** auf Flink 2.2-kompatible Versionen (siehe) [Verfügbarkeit von Anschlüssen](flink-2-2.md#flink-2-2-connectors)
+ **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`/`SinkFunction`durch FLIP-27 Source und FLIP-143 Sink APIs
  + Ersetzen 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
<a name="upgrade-guide-phase-2"></a>

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:*

1. Navigieren Sie zu Ihrer Bewerbung

1. Wählen Sie **Konfiguration**

1. 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)
<a name="upgrade-guide-phase-3"></a>

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:*

1. Navigieren Sie zu Ihrer Anwendung

1. Wählen Sie **Schnappschüsse**

1. Wählen Sie **Snapshot erstellen**

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

1. 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
<a name="upgrade-guide-phase-4"></a>

Sie können Ihre Flink-Anwendung aktualisieren, indem Sie die [https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_UpdateApplication.html)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, 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[https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kinesisanalyticsv2/update-application.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kinesisanalyticsv2/update-application.html)**Aktion.
+ **Benutze CloudFormation.**
  + Aktualisiere das `RuntimeEnvironment` Feld. Zuvor wurde die Anwendung CloudFormation gelöscht und eine neue erstellt, wodurch Ihre Schnappschüsse und andere App-Historien verloren gingen. CloudFormation Aktualisiert jetzt Ihr `RuntimeEnvironment` vorhandenes Dokument und löscht Ihre Anwendung nicht.
+ **Verwenden Sie das AWS SDK.**
  + Die Programmiersprache Ihrer Wahl finden Sie in der SDK-Dokumentation. Siehe [https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_UpdateApplication.html).

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
<a name="upgrade-guide-phase-5"></a>

**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 Sie[Leitfaden zur staatlichen Kompatibilität für Flink 2.2-Upgrades](state-compatibility.md), 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, `RUNNING` aber noch in der älteren Runtime läuft, wurde das automatische Rollback aktiviert. Die Operations API zeigt den Vorgang als an. `FAILED` Suchen 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 Null `numRestarts` ist und/oder `uptime` der Wert zunimmt. `runningTime`

*Checkpoint-Metriken:*
+ `lastCheckpointDuration`: Sollte den Werten vor dem Upgrade ähneln
+ `numberOfFailedCheckpoints`: Sollte bei 0 bleiben

## Phase 6: Überprüfen Sie das Anwendungsverhalten
<a name="upgrade-guide-phase-6"></a>

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
<a name="upgrade-guide-phase-7"></a>

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:*

1. Navigieren Sie zu Ihrer Anwendung

1. Wählen Sie **Aktionen** → **Rollback**

1. 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
<a name="upgrade-guide-next-steps"></a>

Bei Fragen oder Problemen während des Upgrades wenden Sie sich an den Support [Fehlerbehebung bei Managed Service für Apache Flink](troubleshooting.md) oder wenden Sie sich an den AWS Support.