Merencanakan ukuran cluster Managed Service for Apache Kafka

Dokumen ini menjelaskan cara memperkirakan kapasitas yang Anda butuhkan untuk cluster Managed Service untuk Apache Kafka, dan cara menyesuaikan ukuran cluster yang ada.

Saat membuat cluster Managed Service for Apache Kafka, Anda memilih parameter berikut untuk ukuran cluster:

  • vCPUs: Jumlah vCPU dalam cluster. Jumlah vCPU minimum adalah 3.

  • Memori: Jumlah memori per vCPU. Anda harus menyediakan antara 1 GiB dan 8 GiB per vCPU.

Anda dapat memperbarui nilai ini setelah cluster dibuat.

Memilih ukuran cluster awal

Untuk memilih ukuran cluster awal, mulailah dengan memperkirakan nilai berikut, berdasarkan workload tertentu Anda.

  • Throughput tulis: Total kecepatan produsen mengirim data ke cluster, dalam MBps.
  • Throughput baca: Total kecepatan konsumen membaca data dari cluster, dalam MBps.

Untuk memperkirakan ukuran cluster yang diperlukan untuk menangani throughput ini, lakukan langkah-langkah berikut:

  1. Menghitung total bandwidth penulisan, termasuk replikasi.

    Total write bandwidth = produce rate * replicas

    Nilai ini mencakup bandwidth dari klien ke broker pemimpin, dan dari pemimpin ke broker replika. Jumlah replika default adalah 3.

  2. Menghitung total bandwidth baca, termasuk replikasi.

    Total read bandwidth = consume rate + produce rate * ( replicas - 1)

    Nilai ini mencakup bandwidth untuk operasi baca klien (tingkat penggunaan), ditambah bandwidth yang diperlukan agar replika tetap disinkronkan. Replika disinkronkan dengan membaca data dari pemimpin partisi. Istilah (replicas - 1) digunakan karena pemimpin partisi tidak membaca dari replika mana pun.

  3. Menghitung kecepatan data yang setara dengan penulisan.

    Sebagai aturan umum, bandwidth baca 4 kali lebih efisien untuk diproses daripada bandwidth tulis. Untuk memperhitungkan perbedaan ini, hitung kecepatan transfer data setara tulis sebagai berikut:

    Write-equivalent rate = (total write bandwidth) + (total read bandwidth / 4)

  4. Tentukan target pemanfaatan vCPU Anda. Nilai ini mewakili pemanfaatan vCPU rata-rata sebagai persentase kapasitas vCPU. Penggunaan sebenarnya dapat meningkat atau menurun dari waktu ke waktu.

    • Sebagai dasar, mulailah dengan target pemanfaatan sebesar 50%.
    • Jika Anda mengetahui pola traffic yang diharapkan, tetapkan target pemanfaatan yang sama dengan rasio bandwidth setara penulisan rata-rata terhadap bandwidth puncak yang harus Anda akomodasi.

    Secara umum, peningkatan pemakaian akan menurunkan biaya cluster Anda dengan mengurangi ukurannya, tetapi juga lebih berisiko jika traffic melebihi perkiraan. Penggunaan vCPU yang berlebihan dapat menyebabkan latensi dan error yang tinggi.

  5. Menghitung jumlah vCPU.

    vCPU count = ceiling (write-equivalent rate / 20 MBps / utilization)

    Estimasi kapasitas untuk satu vCPU di satu zona adalah 20 MBps. Oleh karena itu, jika vCPU berjalan dengan pemanfaatan 100%, Anda memerlukan (write-equivalent rate / 20) vCPU. Untuk mendapatkan angka sebenarnya, bagi nilai tersebut dengan target pemanfaatan dan bulatkan.

    Selain itu, mengirim pesan dalam batch yang lebih kecil dari 10 KB akan mengurangi throughput per CPU, dibandingkan dengan tolok ukur di sini. Dalam hal ini, perhitungkan kapasitas throughput yang berkurang atau pertimbangkan untuk mengirim batch yang lebih besar.

  6. Perkirakan memori yang diperlukan. Kami merekomendasikan RAM 4 GiB untuk setiap vCPU.

    Memory = vCPU count * 4 GiB

Lakukan pengujian dengan beban kerja sebenarnya untuk mendapatkan ukuran yang paling akurat. Pantau penggunaan resource cluster dan lakukan peningkatan skala jika diperlukan.

Contoh penghitungan ukuran

Asumsikan bahwa workload memiliki kecepatan tulis 50 MBps dan kecepatan baca 100 MBps, dengan 3 replika dan target pemakaian vCPU sebesar 50%.

  1. Total write bandwidth = 50 MBps * 3 replicas = 150 MBps
  2. Total read traffic = 100 MBps + 50 MBps * (3 - 1) = 200 MBps
  3. Write-equivalent rate = 150 MBps + (200 MBps / 4) = 200 MBps
  4. Target utilization = 0.5
  5. Number of vCPUs = ceiling (200 MBps / 20 MBps / 0.5) = 20 vCPUs
  6. Memory = 20 vCPUs * 4 GiB = 80 GiB

Batas replika partisi

Ada batasan jumlah replika partisi per cluster dan per broker yang penting untuk dipertimbangkan saat menentukan ukuran cluster.

Batas per cluster adalah 100.000 replika partisi. Batas ini adalah batas tetap dan tidak bergantung pada jumlah broker dalam cluster. Jika workload Anda memerlukan lebih dari 100.000 replika partisi, pertimbangkan untuk membaginya di antara dua cluster atau lebih.

Batas per broker adalah 4.000 replika partisi. Ini bukan batas yang ketat. Jika Anda perlu menangani lebih dari jumlah replika ini, pertimbangkan untuk meningkatkan ukuran cluster untuk menyediakan lebih banyak broker. Untuk mengetahui informasi tentang cara layanan menentukan jumlah broker, lihat Penyediaan broker.

Setelah memiliki jumlah broker yang memadai untuk menangani partisi, Anda dapat menskalakan ukuran broker untuk mengakomodasi throughput.

Memperbarui ukuran cluster

Setelah membuat cluster Managed Service untuk Apache Kafka, Anda dapat menyesuaikan jumlah vCPU dan memori untuk memenuhi kebutuhan Anda. Untuk mengetahui informasi selengkapnya, lihat Memperbarui cluster Managed Service untuk Apache Kafka.

Saat Anda mengupdate cluster yang ada, aturan berikut akan berlaku:

  • Rasio vCPU terhadap memori keseluruhan cluster harus selalu berada di antara 1:1 dan 1:8.

  • Harus ada minimal 1 vCPU dan 1 GiB memori untuk setiap broker yang ada. Jumlah broker tidak pernah berkurang.

  • Jika cluster memiliki konfigurasi disk kustom, update harus memenuhi persyaratan konfigurasi disk untuk penyimpanan lokal.

  • Jika Anda melakukan penskalaan ke atas, vCPU dan memori rata-rata per broker tidak boleh berkurang lebih dari 10% dibandingkan dengan rata-rata sebelum update. Misalnya, jika Anda mencoba menaikkan skala cluster dari 45 vCPU (3 broker) menjadi 48 vCPU (4 broker), vCPU rata-rata per broker akan berkurang dari 15 menjadi 12, yang merupakan pengurangan sebesar 20%, melebihi batas 10%.

    Jika Anda perlu mengurangi jumlah vCPU lebih dari 10%, sebaiknya kurangi dalam beberapa tahap. Setelah setiap pembaruan, pantau pemakaian resource, dan seimbangkan ulang partisi jika diperlukan.

    Namun, jika Anda yakin bahwa broker Anda akan memiliki kapasitas yang cukup setelah update, Anda dapat menonaktifkan pemeriksaan ini dengan menjalankan perintah gcloud managed-kafka clusters update dengan tanda allow_broker_downscale_on_cluster_upscale=true. Flag ini menandakan bahwa Anda menerima potensi risiko performa.

Contoh operasi pembaruan

Contoh berikut dimulai dengan cluster yang memiliki 75 vCPU, RAM 130 GiB, dan 5 broker.

Contoh operasi peningkatan kualitas yang gagal

Tingkatkan skala cluster menjadi 80 vCPU dan RAM 140 GiB.

  • Layanan menentukan apakah broker baru diperlukan.

    • ceiling (80 vCPU / 15) = 6 broker

    Cluster akan bertambah dari 5 menjadi 6 broker, sehingga pemeriksaan keamanan 10% akan dipicu.

  • Rata-rata saat ini per pialang adalah:

    • 75 vCPU / 5 broker = 15 vCPU per broker

    • 130 GiB / 5 broker = 26 GiB per broker

  • Dengan 6 pialang, rata-rata baru adalah:

    • 80 vCPU / 6 broker = 13,33 vCPU per broker, pengurangan 11,1%

    • 140 GiB / 6 broker = 23,33 GiB per broker, penurunan 10,2%

    Operasi gagal, karena rata-rata ini melebihi 10%.

Contoh operasi peningkatan kualitas yang berhasil

Tingkatkan skala cluster menjadi 85 vCPU dan 150 GiB RAM.

  • Layanan menentukan apakah broker baru diperlukan.

    • ceiling (85 vCPU / 15) = 6 broker

    Cluster akan bertambah dari 5 menjadi 6 broker, sehingga pemeriksaan keamanan 10% akan dipicu.

  • Rata-rata saat ini per pialang adalah:

    • 75 vCPU / 5 broker = 15 vCPU per broker

    • 130 GiB / 5 broker = 26 GiB per broker

  • Dengan 6 pialang, rata-rata baru adalah:

    • 85 vCPU / 6 broker = 14,17 vCPU per broker, penurunan 5,5%

    • 150 GiB / 6 broker = 25 GiB per broker, pengurangan 3,8%

Operasi ini berhasil karena pengurangan vCPU dan memori rata-rata per broker berada dalam batas 10%.

Memperkirakan ukuran disk yang diperlukan

Secara default, Managed Service for Apache Kafka mengalokasikan 100 GiB per vCPU untuk setiap broker. Alokasi default menyediakan penyimpanan lokal yang cukup untuk sebagian besar beban kerja, tetapi Anda dapat mengonfigurasi ukuran disk broker untuk persyaratan spesifik Anda. Bagian ini menjelaskan cara memperkirakan jumlah kapasitas disk yang Anda butuhkan.

Saat menerima pesan, broker akan menulis pesan ke file segmen lokal. Saat file segmen mencapai ukuran atau usia maksimum, file tersebut akan ditutup (atau "di-roll") dan dipindahkan ke penyimpanan jarak jauh. Ukuran maksimum file segmen ditentukan oleh setelan log.roll.bytes, dan usia maksimum ditentukan oleh setelan log.segment.ms.

Saat file segmen di-roll, broker akan membuka file segmen baru. Segmen yang di-roll tetap berada di penyimpanan lokal saat broker menyalinnya ke penyimpanan jarak jauh. Oleh karena itu, setiap partisi memerlukan ruang yang cukup untuk menyimpan file segmen yang di-roll, ditambah ruang untuk file segmen baru saat segmen yang di-roll dipindahkan ke penyimpanan jarak jauh.

Secara default, ukuran maksimum file segmen adalah 230 MiB. Untuk cluster dengan pemakaian sedang, Anda dapat mengasumsikan bahwa 250 MiB diperlukan per partisi, untuk memberikan ruang buffer tambahan saat segmen yang di-roll dipindahkan. Dengan asumsi ini, ukuran disk minimum per broker adalah:

250 MiB * partition count * replication factor / broker count

Namun, ukuran yang diperlukan bergantung pada faktor-faktor seperti ukuran file segmen maksimum, beban pada cluster, kecepatan penulisan data baru, dan latensi penulisan ke penyimpanan jangka panjang.

Penting untuk mempertahankan beberapa kapasitas disk yang tidak digunakan di setiap broker. Perilaku broker tanpa kapasitas disk tidak dapat diprediksi, dan dapat menyebabkan hilangnya data serta ketidakstabilan cluster. Pantau penggunaan disk (disk/used_bytes) terhadap total ukuran disk yang tersedia (disk/limit). Jika penggunaan disk melebihi 80% dari total ukuran disk yang tersedia, konfigurasikan ukuran disk yang lebih besar. Untuk mengetahui informasi selengkapnya, lihat Memantau kapasitas cluster.

Langkah berikutnya