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 untuk 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 produser 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. Hitung total bandwidth tulis, termasuk replikasi.

    Total write bandwidth = produce rate * replicas

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

  2. Hitung total bandwidth baca, termasuk replikasi.

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

    Nilai ini mencakup bandwidth untuk operasi baca klien (kecepatan konsumsi), 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. Hitung kecepatan data yang setara dengan tulis.

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

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

  4. Tentukan target penggunaan vCPU Anda. Nilai ini mewakili penggunaan vCPU rata-rata sebagai persentase kapasitas vCPU. Penggunaan sebenarnya mungkin melonjak atau menurun dari waktu ke waktu.

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

    Umumnya, peningkatan penggunaan 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. Hitung jumlah vCPU.

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

    Perkiraan kapasitas untuk satu vCPU dalam satu zona adalah 20 MBps. Oleh karena itu, jika vCPU berjalan dengan penggunaan 100%, Anda akan memerlukan (write-equivalent rate / 20) vCPU. Untuk mendapatkan jumlah sebenarnya, bagi nilai tersebut dengan target penggunaan dan bulatkan ke atas.

    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. Sebaiknya gunakan RAM 4 GiB untuk setiap vCPU.

    Memory = vCPU count * 4 GiB

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

Contoh perhitungan ukuran

Asumsikan bahwa workload memiliki kecepatan tulis 50 MBps dan kecepatan baca 100 MBps, dengan 3 replika dan target penggunaan 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

Broker

Saat Anda membuat cluster, sistem akan menyediakan setidaknya satu broker di masing-masing dari tiga zona. Broker didistribusikan secara merata di seluruh zona, dan semua broker memiliki jumlah vCPU yang sama. Jumlah broker dapat dihitung dengan rumus berikut:

number of brokers = max(3, ceiling(vCPUs / 15))

Misalnya, cluster dengan 75 vCPU dimulai dengan 5 broker.

Jika Anda mengubah jumlah vCPU, vCPU akan didistribusikan ke seluruh broker yang ada, hingga maksimum 15 vCPU per broker. Jika Anda meningkatkan ukuran cluster hingga lebih dari 15 vCPU per broker, sistem akan menyediakan broker baru. Setelah disediakan, broker baru dapat diturunkan skalanya menjadi 1 vCPU, tetapi tidak dapat dihapus.

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. Ini adalah batas yang ketat dan tidak bergantung pada jumlah broker dalam cluster. Jika workload Anda memerlukan lebih dari 100.000 replika partisi, pertimbangkan untuk membaginya 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 menyediakan lebih banyak broker. Anda dapat meningkatkan jumlah broker dengan meningkatkan ukuran vCPU cluster berdasarkan ukuran broker maksimum. Setelah memiliki jumlah broker yang cukup 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 mengakomodasi kebutuhan Anda. Saat Anda memperbarui cluster yang ada, aturan berikut berlaku:

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

  • Jika Anda melakukan penurunan skala, harus ada setidaknya 1 vCPU dan memori 1 GiB untuk setiap broker yang ada. Jumlah broker tidak pernah berkurang.

  • Jika Anda melakukan peningkatan skala, dan perubahan tersebut mengakibatkan penambahan broker baru, vCPU dan memori rata-rata per broker tidak dapat berkurang lebih dari 10% dibandingkan dengan rata-rata sebelum pembaruan.

    Misalnya, jika Anda mencoba meningkatkan skala cluster dari 45 vCPU (3 broker) menjadi 48 vCPU (4 broker), operasi akan gagal. Hal ini karena vCPU rata-rata per broker menurun dari 15 menjadi 12, yang merupakan penurunan 20%, melebihi batas 10%.

Jika Anda perlu mengurangi jumlah CPU lebih dari 10%, sebaiknya kurangi jumlah tersebut dalam beberapa tahap. Setelah setiap pembaruan, pantau penggunaan resource dan seimbangkan kembali partisi jika diperlukan.

Namun, jika Anda yakin bahwa broker Anda akan memiliki kapasitas yang cukup setelah pembaruan, Anda dapat menonaktifkan pemeriksaan ini. Untuk menonaktifkan pemeriksaan, tetapkan flag allow_broker_downscale_on_cluster_upscale ke true dalam perintah gcloud managed-kafka clusters update. Flag ini menandakan bahwa Anda menerima potensi risiko performa.

Untuk memperbarui cluster, lihat Memperbarui cluster Managed Service untuk Apache Kafka.

Contoh operasi pembaruan

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

Contoh operasi peningkatan skala yang gagal

Tingkatkan skala cluster menjadi 80 vCPU dan RAM 140 GiB.

  • Layanan menentukan apakah broker baru diperlukan.

    • ceiling (80 vCPUs / 15) = 6 brokers

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

  • Rata-rata saat ini per broker adalah:

    • 75 vCPUs / 5 brokers = 15 vCPUs per broker

    • 130 GiB / 5 brokers = 26 GiB per broker

  • Dengan 6 broker, rata-rata baru adalah:

    • 80 vCPUs / 6 brokers = 13.33 vCPUs per broker, penurunan 11,1%

    • 140 GiB / 6 brokers = 23.33 GiB per broker, penurunan 10,2%

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

Contoh operasi peningkatan skala yang berhasil

Tingkatkan skala cluster menjadi 85 vCPU dan RAM 150 GiB.

  • Layanan menentukan apakah broker baru diperlukan.

    • ceiling (85 vCPUs / 15) = 6 brokers

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

  • Rata-rata saat ini per broker adalah:

    • 75 vCPUs / 5 brokers = 15 vCPUs per broker

    • 130 GiB / 5 brokers = 26 GiB per broker

  • Dengan 6 broker, rata-rata baru adalah:

    • 85 vCPUs / 6 brokers = 14.17 vCPUs per broker, penurunan 5,5%

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

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

Langkah berikutnya