Topik ini menjelaskan cara membatasi lalu lintas yang dihasilkan oleh operasi O&M pada kluster Kafka, mencegah gangguan terhadap lalu lintas bisnis normal. Contoh ini menggunakan Kafka 2.4.1 dalam pembuatan kluster E-MapReduce (EMR).
Informasi latar belakang
- Skenario penugasan ulang partisi.
- Skenario pemindahan replika antar direktori dalam node.
- Skenario sinkronisasi data replika selama pemulihan broker dalam kluster.
Catatan penggunaan
- Tentukan apakah akan membatasi lalu lintas O&M berdasarkan komposisi lalu lintas, skenario bisnis, dan kebutuhan operasional Kafka.
- Ambang batas pembatasan harus ditetapkan sesuai dengan skenario bisnis tertentu. Nilai ambang batas yang terlalu kecil dapat menyebabkan kegagalan operasi O&M, sedangkan nilai yang terlalu besar dapat menyebabkan masalah seperti persaingan I/O atau bandwidth penuh, yang memengaruhi lalu lintas bisnis normal. Evaluasi sumber daya kluster untuk menentukan ambang batas yang sesuai.
- Ambang batas pembatasan harus dipertimbangkan berdasarkan faktor-faktor seperti volume lalu lintas bisnis dalam topik, latensi yang dapat ditoleransi, kemungkinan gangguan layanan Kafka, serta kapasitas I/O disk dan jaringan dalam kluster Kafka.
- Operasi O&M disarankan dilakukan selama jam-jam sepi.
Membatasi Lalu Lintas O&M Kafka
Parameter fitur pembatasan
| Parameter | Deskripsi |
| leader.replication.throttled.replicas | Replika pemimpin dari partisi yang lalu lintas O&M-nya perlu dibatasi dalam sebuah topik. Konfigurasikan parameter ini dalam format |
| follower.replication.throttled.replicas | Replika pengikut dari partisi yang lalu lintas O&M-nya perlu dibatasi dalam sebuah topik. Konfigurasikan parameter ini dalam format |
| leader.replication.throttled.rate | Lalu lintas baca replika pemimpin pada broker. |
| follower.replication.throttled.rate | Lalu lintas tulis replika pengikut pada broker. |
Memeriksa parameter fitur pembatasan
Gunakan perintah kafka-configs.sh untuk memeriksa parameter fitur pembatasan.
- Jalankan perintah berikut untuk memeriksa parameter broker yang ditentukan:
kafka-configs.sh --bootstrap-server core-1-1:9092 -entity-type brokers --entity-name <your broker id> --describe - Jalankan perintah berikut untuk memeriksa parameter topik yang ditentukan:
kafka-configs.sh --bootstrap-server core-1-1:9092 -entity-type topics --entity-name <your topic name> --describe
Membatasi lalu lintas O&M dalam skenario di mana partisi ditetapkan ulang
- Nilai ambang batas pembatasan tidak boleh terlalu kecil, karena dapat menyebabkan kegagalan penugasan ulang partisi.
- Fitur pembatasan tidak memengaruhi lalu lintas operasi fetch normal pada replika.
- Setelah pekerjaan selesai, gunakan parameter verifikasi untuk menghapus parameter fitur pembatasan dari topik dan broker.
- Jika parameter fitur pembatasan sudah dikonfigurasi, jalankan perintah
executeuntuk memodifikasinya. - Jika belum dikonfigurasi, gunakan perintah
kafka-configs.shuntuk memodifikasi parameter leader.replication.throttled.replicas dan follower.replication.throttled.replicas untuk topik, serta leader.replication.throttled.rate dan follower.replication.throttled.rate untuk broker.
Alat kafka-reassign-partitions.sh digunakan untuk menetapkan ulang partisi, dengan parameter fitur pembatasan untuk menentukan ambang batas. Berikut adalah contoh skenario:
- Buat topik uji.
- Masuk ke node master kluster Kafka melalui SSH. Untuk informasi lebih lanjut, lihat Masuk ke Kluster.
- Jalankan perintah berikut untuk membuat topik:
kafka-topics.sh --bootstrap-server core-1-1:9092 --topic test-throttled --partitions 1 --replication-factor 3 --createJalankan perintah berikut untuk memeriksa detail topik:kafka-topics.sh --bootstrap-server core-1-1:9092 --topic test-throttled --describe
- Jalankan perintah berikut untuk mensimulasikan penulisan data:
kafka-producer-perf-test.sh --topic test-throttled --record-size 1000 --num-records 600000000 --print-metrics --throughput 10240 --producer-props acks=-1 linger.ms=0 bootstrap.servers=core-1-1:9092 - Konfigurasikan parameter fitur pembatasan dan tetapkan ulang partisi.
- Buat file bernama reassign.json untuk penugasan ulang partisi dan tambahkan konten berikut:
{"version":1,"partitions":[{"topic":"test-throttled","partition":0,"replicas":[2,0,3],"log_dirs":["any","any","any"]}]} - Jalankan perintah berikut untuk menetapkan ulang partisi:Dalam contoh ini, kecepatan penulisan simulasi adalah 10 Mbit/s. Tetapkan ambang batas pembatasan menjadi 30 Mbit/s untuk penugasan ulang partisi.
kafka-reassign-partitions.sh --bootstrap-server core-1-1:9092 --reassignment-json-file reassign.json --throttle 30000000 --execute
- Buat file bernama reassign.json untuk penugasan ulang partisi dan tambahkan konten berikut:
- Periksa parameter fitur pembatasan.
- Jalankan perintah berikut untuk memeriksa parameter broker yang ditentukan:
kafka-configs.sh --bootstrap-server core-1-1:9092 -entity-type brokers --entity-name 2 --describe - Jalankan perintah berikut untuk memeriksa parameter topik yang ditentukan:
kafka-configs.sh --bootstrap-server core-1-1:9092 -entity-type topics --entity-name test-throttled --describe
- Jalankan perintah berikut untuk memeriksa parameter broker yang ditentukan:
- Lihat hasil pekerjaan.
kafka-reassign-partitions.sh --bootstrap-server core-1-1:9092 --reassignment-json-file reassign.json --verifynull Setelah pekerjaan selesai, jalankan perintah di atas lagi untuk menghapus parameter fitur pembatasan.
Membatasi lalu lintas O&M dalam skenario di mana replika dalam node dipindahkan ke direktori yang berbeda
Alat kafka-reassign-partitions.sh dapat digunakan untuk memigrasi replika dalam broker. Parameter replica-alter-log-dirs-throttle membatasi migrasi I/O dalam broker. Berikut adalah contoh skenario:
- Buat topik uji.
- Masuk ke node master kluster Kafka melalui SSH. Untuk informasi lebih lanjut, lihat Masuk ke Kluster.
- Jalankan perintah berikut untuk membuat topik:
kafka-topics.sh --bootstrap-server core-1-1:9092 --topic test-throttled --partitions 1 --replication-factor 3 --createJalankan perintah berikut untuk memeriksa detail topik:kafka-topics.sh --bootstrap-server core-1-1:9092 --topic test-throttled --describe
- Jalankan perintah berikut untuk mensimulasikan penulisan data:
kafka-producer-perf-test.sh --topic test-throttled --record-size 1000 --num-records 600000000 --print-metrics --throughput 10240 --producer-props acks=-1 linger.ms=0 bootstrap.servers=core-1-1:9092 - Konfigurasikan parameter replica-alter-log-dirs-throttle dan pindahkan replika.
- Buat file bernama reassign.json dan tuliskan direktori tujuan ke file tersebut. Tambahkan konten berikut:
{"version":1,"partitions":[{"topic":"test-throttled","partition":0,"replicas":[2,0,3],"log_dirs":["any","/mnt/disk1/kafka/log","any"]}]} - Jalankan perintah berikut untuk memindahkan replika:
kafka-reassign-partitions.sh --bootstrap-server core-1-1:9092 --reassignment-json-file reassign.json --replica-alter-log-dirs-throttle 30000000 --execute
- Buat file bernama reassign.json dan tuliskan direktori tujuan ke file tersebut. Tambahkan konten berikut:
- Periksa parameter fitur pembatasan.Jika Anda memindahkan replika antara direktori dalam broker, parameter Brokerreplica.alter.log.dirs.io.max.bytes.per.second digunakan untuk menentukan ambang batas pembatasan pada broker.Jalankan perintah berikut untuk memeriksa parameter broker yang ditentukan:
kafka-configs.sh --bootstrap-server core-1-1:9092 -entity-type brokers --describe --entity-name 0 - Lihat hasil pekerjaan.
kafka-reassign-partitions.sh --bootstrap-server core-1-1:9092 --reassignment-json-file reassign.json --verifynull Setelah pekerjaan selesai, jalankan perintah di atas lagi untuk menghapus parameter fitur pembatasan.
Membatasi lalu lintas O&M dalam skenario di mana data dalam replika disinkronkan ketika broker dalam kluster dipulihkan
- Nilai ambang batas pembatasan tidak boleh terlalu kecil, karena dapat menyebabkan kegagalan penugasan ulang partisi.
- Fitur pembatasan tidak memengaruhi lalu lintas operasi fetch normal pada replika.
- Setelah data dipulihkan, jalankan perintah
kafka-configs.shuntuk menghapus parameter fitur pembatasan.
Setelah broker dihidupkan ulang, ia menyinkronkan data replika dari replika pemimpin. Dalam skenario seperti migrasi broker atau perbaikan disk yang rusak, broker perlu menyinkronkan data replika yang hilang untuk pemulihan data. Ini menghasilkan sejumlah besar lalu lintas sinkronisasi. Dalam skenario seperti itu, lalu lintas sinkronisasi harus dibatasi untuk mencegah gangguan terhadap lalu lintas normal akibat lonjakan lalu lintas pemulihan data. Berikut adalah contoh skenario:
- Buat topik uji.
- Masuk ke node master kluster Kafka melalui SSH. Untuk informasi lebih lanjut, lihat Masuk ke Kluster.
- Jalankan perintah berikut untuk membuat topik:
kafka-topics.sh --bootstrap-server core-1-1:9092 --topic test-throttled --partitions 1 --replication-factor 3 --createJalankan perintah berikut untuk memeriksa detail topik:kafka-topics.sh --bootstrap-server core-1-1:9092 --topic test-throttled --describe
- Jalankan perintah berikut untuk menulis data uji:
kafka-producer-perf-test.sh --topic test-throttled --record-size 1000 --num-records 600000000 --print-metrics --throughput 10240 --producer-props acks=-1 linger.ms=0 bootstrap.servers=core-1-1:9092 - Jalankan perintah
kafka-configs.shuntuk mengonfigurasi parameter fitur pembatasan.// Konfigurasikan parameter fitur pembatasan untuk topik uji. kafka-configs.sh --bootstrap-server core-1-1:9092 --entity-type topics --entity-name test-throttled --alter --add-config "leader.replication.throttled.replicas=*,follower.replication.throttled.replicas=*" // Konfigurasikan parameter fitur pembatasan untuk broker. kafka-configs.sh --bootstrap-server core-1-1:9092 --entity-type brokers --alter --add-config "leader.replication.throttled.rate=1024,follower.replication.throttled.rate=1024" --entity-name 0 kafka-configs.sh --bootstrap-server core-1-1:9092 --entity-type brokers --alter --add-config "leader.replication.throttled.rate=1024,follower.replication.throttled.rate=1024" --entity-name 1 kafka-configs.sh --bootstrap-server core-1-1:9092 --entity-type brokers --alter --add-config "leader.replication.throttled.rate=1024,follower.replication.throttled.rate=1024" --entity-name 2 ...... - Hentikan Broker 1 di konsol EMR.
- Hapus data replika dari Broker 1 untuk mensimulasikan skenario kehilangan data.
rm -rf /mnt/disk2/kafka/log/test-throttled-0/ - Mulai Broker 1 di konsol EMR dan periksa apakah parameter fitur pembatasan berlaku.
- Setelah data replika dipulihkan di Broker 1 dan replika muncul dalam daftar in-sync replica (ISR), jalankan perintah
kafka-configs.shuntuk menghapus parameter fitur pembatasan.// Hapus parameter fitur pembatasan dari topik uji. kafka-configs.sh --bootstrap-server core-1-1:9092 -entity-type topics --alter --delete-config 'leader.replication.throttled.replicas,follower.replication.throttled.replicas' --entity-name test-throttled // Hapus parameter fitur pembatasan dari broker. kafka-configs.sh --bootstrap-server core-1-1:9092 -entity-type brokers --alter --delete-config 'leader.replication.throttled.replicas,follower.replication.throttled.replicas,leader.replication.throttled.rate,follower.replication.throttled.rate' --entity-name 0 ......