Upgrade ke Flink 2.2: Panduan lengkap - Layanan Terkelola untuk Apache Flink

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Upgrade ke Flink 2.2: Panduan lengkap

Panduan ini memberikan step-by-step petunjuk untuk meningkatkan Layanan Terkelola Amazon Anda untuk aplikasi Apache Flink dari Flink 1.x ke Flink 2.2. Ini adalah peningkatan versi utama dengan perubahan yang melanggar yang memerlukan perencanaan dan pengujian yang cermat.

Upgrade versi utama adalah uni-directional

Operasi Upgrade dapat memindahkan aplikasi Anda dari Flink 1.x ke 2.2 dengan pelestarian status, tetapi Anda tidak dapat bergerak kembali dari 2.2 ke 1.x dengan status 2.2. Jika aplikasi Anda menjadi tidak sehat setelah memutakhirkan, gunakan Rollback API untuk kembali ke versi 1.x dengan status 1.x asli Anda dari snapshot terbaru.

Prasyarat

Sebelum memulai upgrade Anda:

Memahami jalur migrasi Anda

Pengalaman upgrade Anda bergantung pada kompatibilitas aplikasi Anda dengan Flink 2.2. Memahami jalur ini membantu Anda mempersiapkan dengan tepat dan menetapkan harapan yang realistis.

Jalur 1: Status biner dan aplikasi yang kompatibel

Apa yang diharapkan:

  • Memanggil operasi Upgrade

  • Selesaikan migrasi ke 2.2 dengan transisi status aplikasi: → → RUNNING UPDATING RUNNING

  • Pertahankan semua status aplikasi tanpa kehilangan data atau pemrosesan ulang

  • Pengalaman yang sama dengan migrasi versi minor

Terbaik untuk: Aplikasi atau aplikasi stateless menggunakan serialisasi yang kompatibel (Avro, skema Protobuf yang kompatibel, tanpa koleksi) POJOs

Jalur 2: Ketidakcocokan biner

Apa yang diharapkan:

  • Memanggil operasi Upgrade

  • Operasi gagal dan memunculkan ketidakcocokan biner melalui API Operasi dan log

  • Dengan auto-rollback diaktifkan: Aplikasi secara otomatis berputar kembali dalam beberapa menit tanpa intervensi Anda

  • Dengan auto-rollback dinonaktifkan: Aplikasi tetap dalam keadaan berjalan tanpa pemrosesan data; Anda secara manual memutar kembali ke versi yang lebih lama

  • Setelah biner diperbaiki, gunakan UpdateApplication API untuk pengalaman yang mirip dengan Path 1

Terbaik untuk: Aplikasi yang menggunakan dihapus APIs yang terdeteksi selama startup pekerjaan Flink

Jalur 3: Status aplikasi yang tidak kompatibel

Apa yang diharapkan:

  • Memanggil operasi Upgrade

  • Migrasi tampaknya berhasil pada awalnya

  • Aplikasi memasuki loop restart dalam hitungan detik karena pemulihan status gagal

  • Mendeteksi kegagalan melalui CloudWatch Metrik yang menunjukkan restart terus menerus

  • Memanggil operasi Rollback secara manual

  • Kembali ke produksi dalam beberapa menit setelah memulai rollback

  • Tinjau Migrasi negara untuk aplikasi Anda

Terbaik untuk: Aplikasi dengan ketidakcocokan serialisasi status (POJOs dengan koleksi, status serial KRYO tertentu)

catatan

Sangat disarankan untuk membuat replika aplikasi produksi Anda dan menguji setiap fase peningkatan berikut pada replika sebelum mengikuti langkah yang sama untuk aplikasi produksi Anda.

Tahap 1: Persiapan

Perbarui kode aplikasi

Perbarui kode aplikasi Anda agar kompatibel dengan Flink 2.2:

  • Perbarui dependensi Flink ke versi 2.2.0 di atau pom.xml build.gradle

  • Perbarui dependensi konektor ke versi yang kompatibel dengan Flink 2.2 (lihat) Ketersediaan konektor

  • Hapus penggunaan API yang tidak digunakan lagi:

    • Ganti DataSet API dengan DataStream API atau Tabel API/SQL

    • Ganti SourceFunction SinkFunction lawasan/dengan FLIP-27 Source dan FLIP-143 Sink APIs

    • Ganti penggunaan Scala API dengan Java API

  • Perbarui ke Java 17

Unggah kode aplikasi yang diperbarui

  • Bangun JAR aplikasi Anda dengan dependensi Flink 2.2

  • Unggah ke Amazon S3 dengan nama file yang berbeda dari JAR Anda saat ini (misalnya,) my-app-flink-2.2.jar

  • Perhatikan bucket dan kunci S3 untuk digunakan pada langkah upgrade

Tahap 2: Aktifkan rollback otomatis

Auto-rollback memungkinkan Amazon Managed Service untuk Apache Flink untuk secara otomatis kembali ke versi sebelumnya jika upgrade gagal.

Periksa status rollback otomatis

Konsol Manajemen AWS:

  1. Arahkan ke aplikasi Anda

  2. Pilih Konfigurasi

  3. Di bawah Pengaturan aplikasi, verifikasi Rollback sistem diaktifkan

AWS CLI:

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

Aktifkan auto-rollback (jika tidak diaktifkan)

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

Fase 3: Ambil snapshot (opsional)

Jika snapshot otomatis diaktifkan untuk aplikasi Anda, Anda dapat melewati langkah ini, jika tidak, ambil snapshot aplikasi Anda untuk menyimpan status aplikasi Anda sebelum memutakhirkan.

Ambil snapshot dari menjalankan aplikasi

Konsol Manajemen AWS:

  1. Arahkan ke aplikasi Anda

  2. Pilih Snapshots

  3. Pilih Buat snapshot

  4. Masukkan nama snapshot (misalnya,pre-flink-2.2-upgrade)

  5. Pilih Buat

AWS CLI:

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

Verifikasi pembuatan snapshot

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

Tunggu sampai SnapshotStatus READY sebelum melanjutkan.

Tahap 4: Tingkatkan aplikasi

Anda dapat meningkatkan aplikasi Flink Anda dengan menggunakan UpdateApplicationtindakan.

Anda dapat memanggil UpdateApplication API dengan berbagai cara:

  • Gunakan Konsol Manajemen AWS.

    • Buka halaman aplikasi Anda di file Konsol Manajemen AWS.

    • Pilih Konfigurasikan

    • Pilih runtime baru dan snapshot yang ingin Anda mulai, juga dikenal sebagai konfigurasi pemulihan. Gunakan pengaturan terbaru sebagai konfigurasi pemulihan untuk memulai aplikasi dari snapshot terbaru. Arahkan ke aplikasi baru yang ditingkatkan JAR/zip di Amazon S3.

  • Gunakan AWS CLIupdate-applicationtindakan.

  • Gunakan CloudFormation.

    • Perbarui RuntimeEnvironment bidang. Sebelumnya, CloudFormation menghapus aplikasi dan membuat yang baru, menyebabkan snapshot Anda dan riwayat aplikasi lainnya hilang. Sekarang CloudFormation perbarui RuntimeEnvironment tempat Anda dan tidak menghapus aplikasi Anda.

  • Gunakan AWS SDK.

    • Konsultasikan dokumentasi SDK untuk bahasa pemrograman pilihan Anda. Lihat UpdateApplication.

Anda dapat melakukan pemutakhiran saat aplikasi dalam RUNNING keadaan atau saat aplikasi dihentikan dalam READY status. Amazon Managed Service untuk Apache Flink memvalidasi kompatibilitas antara versi runtime asli dan versi runtime target. Pemeriksaan kompatibilitas ini berjalan saat Anda melakukan UpdateApplication saat dalam RUNNING status atau berikutnya StartApplication jika Anda memutakhirkan saat dalam READY status.

Tingkatkan dari status 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" } } } }'

Tingkatkan dari status 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" } } } }'

Tahap 5: Memantau peningkatan

Pemeriksaan kompatibilitas

  • Gunakan API Operasi untuk memeriksa status pemutakhiran. Jika ada ketidakcocokan biner atau masalah dengan startup pekerjaan, operasi pemutakhiran akan gagal dengan log.

  • Jika Operasi Upgrade telah berhasil tetapi aplikasi macet di loop restart, ini berarti status tidak kompatibel dengan versi Flink baru atau ada masalah dengan kode yang diperbarui. Tinjau Panduan kompatibilitas status untuk peningkatan Flink 2.2 tentang cara mengidentifikasi masalah ketidakcocokan negara.

Pantau kesehatan aplikasi

Status aplikasi:

  • Status aplikasi harus transisi: RUNNINGUPDATINGRUNNING

  • Periksa runtime aplikasi. Jika 2.2, operasi upgrade berhasil.

  • Jika aplikasi Anda dalam RUNNING tetapi masih pada runtime yang lebih lama, auto-rollback dimulai. Operasi API akan menampilkan operasi sebagaiFAILED. Periksa log untuk menemukan pengecualian untuk kegagalan.

Selain itu, pantau metrik ini di CloudWatch:

Mulai ulang metrik:

  • numRestarts: Monitor untuk restart yang tidak terduga - upgrade berhasil numRestarts jika nol dan uptime atau runningTime meningkat.

Metrik pos pemeriksaan:

  • lastCheckpointDuration: Harus mirip dengan nilai pra-peningkatan

  • numberOfFailedCheckpoints: Harus tetap di 0

Fase 6: Validasi perilaku aplikasi

Setelah aplikasi berjalan di Flink 2.2:

Validasi fungsional

  • Verifikasi data sedang dibaca dari sumber

  • Verifikasi data sedang ditulis ke sink

  • Verifikasi logika bisnis menghasilkan hasil yang diharapkan

  • Bandingkan output dengan baseline pra-upgrade

Validasi kinerja

  • Pantau metrik latensi (waktu end-to-end pemrosesan)

  • Pantau metrik throughput (catatan per detik)

  • Pantau durasi dan ukuran pos pemeriksaan

  • Memantau memori dan pemanfaatan CPU

Jalankan selama 24+ jam

Biarkan aplikasi berjalan setidaknya selama 24 jam dalam produksi untuk memastikan:

  • Tidak ada kebocoran memori

  • Perilaku pos pemeriksaan yang stabil

  • Tidak ada restart yang tidak terduga

  • Throughput yang konsisten

Fase 7: Prosedur rollback

Jika pemutakhiran gagal atau aplikasi berjalan tetapi tidak sehat, putar kembali ke versi sebelumnya.

Rollback otomatis

Jika auto-rollback diaktifkan dan upgrade gagal selama startup, Amazon Managed Service untuk Apache Flink otomatis kembali ke versi sebelumnya.

Rollback manual

Jika aplikasi berjalan tetapi tidak sehat, gunakan RollbackApplication API:

Konsol Manajemen AWS:

  1. Arahkan ke aplikasi Anda

  2. Pilih TindakanGulung kembali

  3. Konfirmasikan rollback

AWS CLI:

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

Apa yang terjadi selama rollback:

  • Aplikasi berhenti

  • Runtime kembali ke versi Flink sebelumnya

  • Kode aplikasi kembali ke JAR sebelumnya

  • Aplikasi dimulai ulang dari snapshot terakhir yang berhasil diambil sebelum peningkatan

penting
  • Anda tidak dapat memulihkan snapshot Flink 2.2 di Flink 1.x

  • Rollback menggunakan snapshot yang diambil sebelum upgrade

  • Selalu ambil snapshot sebelum meningkatkan (Fase 3)

Langkah selanjutnya

Untuk pertanyaan atau masalah selama upgrade, lihat Memecahkan Masalah Layanan Terkelola untuk Apache Flink atau hubungi AWS Support.