Memecahkan masalah klaster Amazon Anda MSK - Amazon Managed Streaming untuk Apache Kafka

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

Memecahkan masalah klaster Amazon Anda MSK

Informasi berikut dapat membantu Anda memecahkan masalah yang mungkin Anda miliki dengan klaster Amazon MSK Anda. Anda juga dapat memposting masalah Anda ke AWS re:Post. Untuk memecahkan masalah Amazon MSK Replicator, lihat. Pemecahan Masalah Replikator MSK

Penggantian volume menyebabkan saturasi disk karena kelebihan replikasi

Selama kegagalan perangkat keras volume yang tidak direncanakan, Amazon MSK dapat mengganti volume dengan instance baru. Kafka mengisi kembali volume baru dengan mereplikasi partisi dari broker lain di cluster. Setelah partisi direplikasi dan ditangkap, mereka memenuhi syarat untuk kepemimpinan dan keanggotaan replika () in-sync. ISR

Masalah

Dalam broker yang pulih dari penggantian volume, beberapa partisi dengan berbagai ukuran dapat kembali online sebelum yang lain. Ini bisa menjadi masalah karena partisi tersebut dapat melayani lalu lintas dari broker yang sama yang masih mengejar (mereplikasi) partisi lain. Lalu lintas replikasi ini terkadang dapat memenuhi batas throughput volume yang mendasarinya, yaitu 250 MiB per detik dalam kasus default. Ketika saturasi ini terjadi, partisi apa pun yang sudah tertangkap akan terpengaruh, menghasilkan latensi di seluruh cluster untuk setiap broker yang berbagi ISR dengan partisi yang tertangkap (bukan hanya partisi pemimpin karena acks jarak jauh). acks=all Masalah ini lebih sering terjadi pada cluster yang lebih besar yang memiliki jumlah partisi yang lebih besar yang ukurannya bervariasi.

Rekomendasi
  • Untuk meningkatkan postur I/O replikasi, pastikan pengaturan utas praktik terbaik sudah ada.

  • Untuk mengurangi kemungkinan saturasi volume yang mendasarinya, aktifkan penyimpanan yang disediakan dengan throughput yang lebih tinggi. Nilai throughput min 500 MiB/s direkomendasikan untuk kasus replikasi throughput tinggi, tetapi nilai aktual yang dibutuhkan akan bervariasi dengan throughput dan use case. Penyediaan throughput penyimpanan.

  • Untuk meminimalkan tekanan replikasi, turunkan num.replica.fetchers ke nilai default. 2

Kelompok konsumen terjebak di PreparingRebalance negara bagian

Jika satu atau lebih grup konsumen Anda terjebak dalam keadaan penyeimbangan kembali terus-menerus, penyebabnya mungkin masalah Apache Kafka KAFKA-9752, yang memengaruhi Apache Kafka versi 2.3.1 dan 2.4.1.

Untuk mengatasi masalah ini, kami sarankan Anda meningkatkan klaster Anda keAmazon MSK bug-fix versi 2.4.1.1, yang berisi perbaikan untuk masalah ini. Untuk informasi tentang memperbarui klaster yang ada ke Amazon MSK bug-fix versi 2.4.1.1, lihat. Memperbarui versi Apache Kafka

Solusi untuk menyelesaikan masalah ini tanpa memutakhirkan cluster ke Amazon MSK bug-fix versi 2.4.1.1 adalah dengan mengatur klien Kafka untuk digunakanProtokol keanggotaan statis, atau ke Identifikasi dan reboot simpul broker koordinasi dari grup konsumen yang macet.

Menerapkan protokol keanggotaan statis

Untuk menerapkan Protokol Keanggotaan Statis di klien Anda, lakukan hal berikut:

  1. Atur group.instance.id properti konfigurasi Konsumen Kafka Anda ke string statis yang mengidentifikasi konsumen dalam grup.

  2. Pastikan bahwa contoh lain dari konfigurasi diperbarui untuk menggunakan string statis.

  3. Terapkan perubahan ke Konsumen Kafka Anda.

Menggunakan Protokol Keanggotaan Statis lebih efektif jika batas waktu sesi dalam konfigurasi klien diatur ke durasi yang memungkinkan konsumen untuk pulih tanpa memicu penyeimbangan ulang grup konsumen sebelum waktunya. Misalnya, jika aplikasi konsumen Anda dapat mentolerir ketidaktersediaan 5 menit, nilai yang wajar untuk batas waktu sesi adalah 4 menit, bukan nilai default 10 detik.

catatan

Menggunakan Protokol Keanggotaan Statis hanya mengurangi kemungkinan menghadapi masalah ini. Anda mungkin masih mengalami masalah ini bahkan saat menggunakan Protokol Keanggotaan Statis.

Mem-boot ulang node broker koordinasi

Untuk me-reboot node broker koordinator, lakukan hal berikut:

  1. Identifikasi koordinator grup menggunakan kafka-consumer-groups.sh perintah.

  2. Mulai ulang koordinator grup grup konsumen yang macet menggunakan RebootBrokerAPItindakan.

Kesalahan saat mengirimkan log broker ke Amazon CloudWatch Logs

Saat Anda mencoba menyiapkan klaster untuk mengirim log broker ke Amazon CloudWatch Logs, Anda mungkin mendapatkan salah satu dari dua pengecualian.

Jika Anda mendapatkan InvalidInput.LengthOfCloudWatchResourcePolicyLimitExceeded pengecualian, coba lagi tetapi gunakan grup log yang dimulai dengan/aws/vendedlogs/. Untuk informasi selengkapnya, lihat Mengaktifkan Logging dari Amazon Web Services tertentu.

Jika Anda mendapatkan InvalidInput.NumberOfCloudWatchResourcePoliciesLimitExceeded pengecualian, pilih kebijakan CloudWatch Log Amazon yang ada di akun Anda, dan tambahkan yang berikut iniJSON.

{"Sid":"AWSLogDeliveryWrite","Effect":"Allow","Principal":{"Service":"delivery.logs.amazonaws.com"},"Action":["logs:CreateLogStream","logs:PutLogEvents"],"Resource":["*"]}

Jika Anda mencoba menambahkan kebijakan di JSON atas ke kebijakan yang ada tetapi mendapatkan kesalahan yang mengatakan Anda telah mencapai panjang maksimum untuk kebijakan yang Anda pilih, coba tambahkan ke salah satu kebijakan CloudWatch Log Amazon Anda yang lain. JSON Setelah Anda menambahkan JSON ke kebijakan yang ada, coba sekali lagi untuk menyiapkan pengiriman broker-log ke Amazon Logs. CloudWatch

Tidak ada grup keamanan default

Jika Anda mencoba membuat klaster dan mendapatkan kesalahan yang menunjukkan bahwa tidak ada grup keamanan default, itu mungkin karena Anda menggunakan VPC yang dibagikan dengan Anda. Minta administrator Anda untuk memberi Anda izin untuk menjelaskan grup keamanan tentang ini VPC dan coba lagi. Untuk contoh kebijakan yang mengizinkan tindakan ini, lihat AmazonEC2: Mengizinkan Mengelola Grup EC2 Keamanan yang Terkait Dengan SpesifikVPC, Secara Terprogram, dan di Konsol.

Cluster tampak macet di CREATING negara bagian

Terkadang pembuatan cluster bisa memakan waktu hingga 30 menit. Tunggu selama 30 menit dan periksa status cluster lagi.

Status cluster berubah dari CREATING ke FAILED

Coba buat cluster lagi.

Status klaster adalah ACTIVE tetapi produsen tidak dapat mengirim data atau konsumen tidak dapat menerima data

  • Jika pembuatan klaster berhasil (status klasterACTIVE), tetapi Anda tidak dapat mengirim atau menerima data, pastikan bahwa aplikasi produsen dan konsumen Anda memiliki akses ke klaster. Untuk informasi lebih lanjut, lihat panduan diLangkah 3: Buat mesin klien.

  • Jika produsen dan konsumen Anda memiliki akses ke cluster tetapi masih mengalami masalah dalam memproduksi dan mengkonsumsi data, penyebabnya mungkin KAFKA-7697, yang mempengaruhi Apache Kafka versi 2.1.0 dan dapat menyebabkan kebuntuan di satu atau lebih broker. Pertimbangkan untuk bermigrasi ke Apache Kafka 2.2.1, yang tidak terpengaruh oleh bug ini. Untuk informasi tentang cara bermigrasi, lihatMigrasi ke Cluster MSK Amazon.

AWS CLI tidak mengenali Amazon MSK

Jika Anda memiliki AWS CLI diinstal, tetapi tidak mengenali MSK perintah Amazon, tingkatkan AWS CLI ke versi terbaru. Untuk petunjuk rinci tentang cara meng-upgrade AWS CLI, lihat Memasang AWS Command Line Interface. Untuk informasi tentang cara menggunakan AWS CLI untuk menjalankan MSK perintah Amazon, lihatAmazonMSK: Cara kerjanya.

Partisi offline atau replika tidak sinkron

Ini bisa menjadi gejala ruang disk rendah. Lihat Ruang disk hampir habis.

Ruang disk hampir habis

Lihat praktik terbaik berikut untuk mengelola ruang disk: Memantau ruang disk danSesuaikan parameter retensi data.

Memori hampir habis

Jika Anda melihat MemoryUsed metrik berjalan tinggi atau MemoryFree hampir habis, itu tidak berarti ada masalah. Apache Kafka dirancang untuk menggunakan memori sebanyak mungkin, dan mengelolanya secara optimal.

Produser mendapat NotLeaderForPartitionException

Ini sering merupakan kesalahan sementara. Tetapkan parameter retries konfigurasi produsen ke nilai yang lebih tinggi dari nilai saat ini.

Partisi yang kurang direplikasi () URP lebih besar dari nol

UnderReplicatedPartitionsMetrik adalah salah satu yang penting untuk dipantau. Dalam MSK cluster yang sehat, metrik ini memiliki nilai 0. Jika lebih besar dari nol, itu mungkin karena salah satu alasan berikut.

  • Jika UnderReplicatedPartitions runcing, masalahnya mungkin cluster tidak disediakan pada ukuran yang tepat untuk menangani lalu lintas masuk dan keluar. Lihat Praktik terbaik.

  • Jika UnderReplicatedPartitions secara konsisten lebih besar dari 0 termasuk selama periode lalu lintas rendah, masalahnya mungkin Anda telah menetapkan pembatasan ACLs yang tidak memberikan akses topik ke broker. Untuk mereplikasi partisi, broker harus diberi wewenang untuk keduanya READ dan DESCRIBE topik. DESCRIBEdiberikan secara default dengan READ otorisasi. Untuk informasi tentang pengaturanACLs, lihat Otorisasi dan ACLs dalam dokumentasi Apache Kafka.

Cluster memiliki topik yang disebut __amazon_msk_canary dan __amazon_msk_canary_state

Anda mungkin melihat bahwa MSK klaster Anda memiliki topik dengan nama __amazon_msk_canary dan satu lagi dengan nama__amazon_msk_canary_state. Ini adalah topik internal yang MSK dibuat dan digunakan Amazon untuk kesehatan klaster dan metrik diagnostik. Topik-topik ini dapat diabaikan dalam ukuran dan tidak dapat dihapus.

Replikasi partisi gagal

Pastikan Anda belum mengatur ACLs CLUSTER _ACTIONS.

Tidak dapat mengakses klaster yang mengaktifkan akses publik

Jika klaster Anda mengaktifkan akses publik, tetapi Anda masih tidak dapat mengaksesnya dari internet, ikuti langkah-langkah berikut:

  1. Pastikan aturan masuk grup keamanan klaster memungkinkan alamat IP Anda dan port cluster. Untuk daftar nomor port cluster, lihatInformasi pelabuhan. Juga pastikan bahwa aturan keluar grup keamanan memungkinkan komunikasi keluar. Untuk informasi selengkapnya tentang grup keamanan serta aturan masuk dan keluarnya, lihat Grup keamanan untuk Anda VPC di VPC Panduan Pengguna Amazon.

  2. Pastikan alamat IP Anda dan port cluster diizinkan dalam aturan masuk VPC jaringan ACL cluster. Tidak seperti kelompok keamanan, jaringan tidak ACLs memiliki kewarganegaraan. Ini berarti Anda harus mengonfigurasi aturan masuk dan keluar. Dalam aturan keluar, izinkan semua lalu lintas (rentang port: 0-65535) ke alamat IP Anda. Untuk informasi selengkapnya, lihat Menambahkan dan menghapus aturan di Panduan VPC Pengguna Amazon.

  3. Pastikan Anda menggunakan string bootstrap-broker akses publik untuk mengakses cluster. Sebuah MSK cluster yang memiliki akses publik diaktifkan memiliki dua string bootstrap-broker yang berbeda, satu untuk akses publik, dan satu untuk akses dari dalam. AWS Untuk informasi selengkapnya, lihat Mendapatkan broker bootstrap menggunakan AWS Management Console.

Tidak dapat mengakses klaster dari dalam AWS: Masalah jaringan

Jika Anda memiliki aplikasi Apache Kafka yang tidak dapat berkomunikasi dengan sukses dengan MSK cluster, mulailah dengan melakukan tes konektivitas berikut.

  1. Gunakan salah satu metode yang dijelaskan Mendapatkan broker bootstrap untuk MSK cluster Amazon untuk mendapatkan alamat broker bootstrap.

  2. Dalam perintah berikut ganti bootstrap-broker dengan salah satu alamat broker yang Anda peroleh pada langkah sebelumnya. Ganti port-number dengan 9094 jika cluster diatur untuk menggunakan TLS otentikasi. Jika cluster tidak menggunakan TLS otentikasi, ganti port-number dengan 9092. Jalankan perintah dari mesin klien.

    telnet bootstrap-broker port-number

    Dimana nomor port adalah:

    • 9094 jika cluster diatur untuk menggunakan TLS otentikasi.

    • 9092 Jika cluster tidak menggunakan TLS otentikasi.

    • Nomor port yang berbeda diperlukan jika akses publik diaktifkan.

    Jalankan perintah dari mesin klien.

  3. Ulangi perintah sebelumnya untuk semua broker bootstrap.

Jika mesin klien dapat mengakses broker, ini berarti tidak ada masalah konektivitas. Dalam hal ini, jalankan perintah berikut untuk memeriksa apakah klien Apache Kafka Anda sudah diatur dengan benar. Untuk mendapatkan bootstrap-brokers, gunakan salah satu metode yang dijelaskan dalamMendapatkan broker bootstrap untuk MSK cluster Amazon. Ganti topic dengan nama topik Anda.

<path-to-your-kafka-installation>/bin/kafka-console-producer.sh --broker-list bootstrap-brokers --producer.config client.properties --topic topic

Jika perintah sebelumnya berhasil, ini berarti klien Anda diatur dengan benar. Jika Anda masih tidak dapat memproduksi dan mengkonsumsi dari aplikasi, debug masalah di tingkat aplikasi.

Jika mesin klien tidak dapat mengakses broker, lihat subbagian berikut untuk panduan yang didasarkan pada pengaturan mesin klien Anda.

EC2Klien dan MSK cluster Amazon dalam hal yang sama VPC

Jika mesin klien VPC sama dengan MSK cluster, pastikan grup keamanan klaster memiliki aturan masuk yang menerima lalu lintas dari grup keamanan mesin klien. Untuk informasi tentang mengatur aturan ini, lihat Aturan Grup Keamanan. Untuk contoh cara mengakses cluster dari EC2 instance Amazon yang VPC sama dengan cluster, lihatMemulai menggunakan Amazon MSK.

EC2Klien dan MSK cluster Amazon berbeda VPCs

Jika mesin klien dan cluster berada dalam dua yang berbedaVPCs, pastikan hal berikut:

  • Keduanya VPCs diintip.

  • Status koneksi peering aktif.

  • Tabel rute keduanya VPCs diatur dengan benar.

Untuk informasi tentang VPC peering, lihat Bekerja dengan Koneksi VPC Peering.

Klien lokal

Dalam kasus klien lokal yang diatur untuk terhubung ke MSK kluster menggunakan AWS VPN, pastikan yang berikut:

  • Status VPN koneksi adalahUP. Untuk informasi tentang cara memeriksa status VPN koneksi, lihat Bagaimana cara memeriksa status VPN terowongan saya saat ini? .

  • Tabel rute klaster VPC berisi rute untuk lokal yang CIDR targetnya memiliki formatVirtual private gateway(vgw-xxxxxxxx).

  • Grup keamanan MSK klaster memungkinkan lalu lintas pada port 2181, port 9092 (jika klaster Anda menerima lalu lintas teks biasa), dan port 9094 (jika klaster Anda menerima lalu lintas yang dienkripsi). TLS

Untuk lebih AWS VPN Panduan pemecahan masalah, lihat Pemecahan Masalah Klien. VPN

AWS Direct Connect

Jika klien menggunakan AWS Direct Connect, lihat Pemecahan Masalah AWS Direct Connect.

Jika panduan pemecahan masalah sebelumnya tidak menyelesaikan masalah, pastikan tidak ada firewall yang memblokir lalu lintas jaringan. Untuk debugging lebih lanjut, gunakan alat seperti tcpdump dan Wireshark untuk menganalisis lalu lintas dan untuk memastikan bahwa itu mencapai MSK cluster.

Otentikasi gagal: Terlalu banyak koneksi

Failed authentication ... Too many connectsKesalahan menunjukkan bahwa broker melindungi dirinya sendiri karena satu atau lebih IAM klien mencoba menghubungkannya dengan tingkat yang agresif. Untuk membantu broker menerima tingkat IAM koneksi baru yang lebih tinggi, Anda dapat meningkatkan parameter reconnect.backoff.mskonfigurasi.

Untuk mempelajari lebih lanjut tentang batas tarif untuk koneksi baru per broker, lihat MSKKuota Amazon halaman.

MSKTanpa Server: Pembuatan cluster gagal

Jika Anda mencoba membuat klaster MSK Tanpa Server dan alur kerja gagal, Anda mungkin tidak memiliki izin untuk membuat titik akhir. VPC Verifikasi bahwa administrator Anda telah memberi Anda izin untuk membuat VPC titik akhir dengan mengizinkan ec2:CreateVpcEndpoint tindakan.

Untuk daftar lengkap izin yang diperlukan untuk melakukan semua MSK tindakan Amazon, lihatAWS kebijakan terkelola: mazonMSKFull Akses.