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:
Ulasan Panduan kompatibilitas status untuk peningkatan Flink 2.2
Pastikan Anda memiliki lingkungan non-produksi untuk pengujian
Dokumentasikan konfigurasi dan dependensi aplikasi Anda saat ini
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: → →
RUNNINGUPDATINGRUNNINGPertahankan 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.xmlbuild.gradlePerbarui 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
SourceFunctionSinkFunctionlawasan/dengan FLIP-27 Source dan FLIP-143 Sink APIsGanti 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.jarPerhatikan 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:
Arahkan ke aplikasi Anda
Pilih Konfigurasi
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:
Arahkan ke aplikasi Anda
Pilih Snapshots
Pilih Buat snapshot
Masukkan nama snapshot (misalnya,
pre-flink-2.2-upgrade)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 CLI
update-applicationtindakan. Gunakan CloudFormation.
Perbarui
RuntimeEnvironmentbidang. Sebelumnya, CloudFormation menghapus aplikasi dan membuat yang baru, menyebabkan snapshot Anda dan riwayat aplikasi lainnya hilang. Sekarang CloudFormation perbaruiRuntimeEnvironmenttempat 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:
RUNNING→UPDATING→RUNNINGPeriksa runtime aplikasi. Jika 2.2, operasi upgrade berhasil.
Jika aplikasi Anda dalam
RUNNINGtetapi 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 berhasilnumRestartsjika nol danuptimeataurunningTimemeningkat.
Metrik pos pemeriksaan:
lastCheckpointDuration: Harus mirip dengan nilai pra-peningkatannumberOfFailedCheckpoints: 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:
Arahkan ke aplikasi Anda
Pilih Tindakan → Gulung kembali
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.