Menetapkan Skala Cluster Milvus
Milvus mendukung penskalaan horizontal pada komponen-komponennya. Ini berarti Anda dapat menambah atau mengurangi jumlah node pekerja dari setiap jenis sesuai dengan kebutuhan Anda.
Topik ini menjelaskan cara untuk melakukan scale out dan scale in pada cluster Milvus. Kami mengasumsikan bahwa Anda telah menginstal cluster Milvus sebelum melakukan penskalaan. Selain itu, kami sarankan untuk membiasakan diri Anda dengan arsitektur Milvus sebelum memulai.
Tutorial ini menggunakan penskalaan tiga node kueri sebagai contoh. Untuk menskalakan jenis node lainnya, ganti queryNode
dengan jenis node yang sesuai pada baris perintah.
Untuk informasi tentang cara menskalakan cluster dengan Milvus Operator, lihat Menskalakan Cluster dengan Milvus Operator.
Apa yang dimaksud dengan penskalaan horizontal?
Penskalaan horizontal meliputi penskalaan keluar dan penskalaan masuk.
Scaling out
Scaling out mengacu pada peningkatan jumlah node dalam sebuah cluster. Tidak seperti scaling up, scaling out tidak mengharuskan Anda mengalokasikan lebih banyak sumber daya ke satu node dalam cluster. Sebaliknya, scaling out memperluas cluster secara horizontal dengan menambahkan lebih banyak node.
Pengecilan ukuran
Peningkatan
Menurut arsitektur Milvus, node pekerja tanpa kewarganegaraan meliputi node kueri, node data, node indeks, dan proxy. Oleh karena itu, Anda dapat melakukan scale out node jenis ini agar sesuai dengan kebutuhan bisnis dan skenario aplikasi Anda. Anda dapat menskalakan cluster Milvus secara manual atau otomatis.
Umumnya, Anda perlu melakukan scale out cluster Milvus yang Anda buat jika cluster tersebut digunakan secara berlebihan. Di bawah ini adalah beberapa situasi umum di mana Anda mungkin perlu melakukan scale out cluster Milvus:
- Penggunaan CPU dan memori tinggi untuk jangka waktu tertentu.
- Throughput kueri menjadi lebih tinggi.
- Diperlukan kecepatan yang lebih tinggi untuk pengindeksan.
- Volume besar dari kumpulan data yang besar perlu diproses.
- Ketersediaan layanan Milvus yang tinggi perlu dipastikan.
Penskalaan ke dalam
Scaling in mengacu pada pengurangan jumlah node dalam sebuah cluster. Umumnya, Anda perlu melakukan penskalaan dalam cluster Milvus yang Anda buat jika cluster tersebut kurang dimanfaatkan. Di bawah ini adalah beberapa situasi umum di mana Anda perlu melakukan penskalaan dalam cluster Milvus:
- Pemanfaatan CPU dan memori rendah untuk jangka waktu tertentu.
- Throughput kueri menjadi lebih rendah.
- Kecepatan yang lebih tinggi untuk pengindeksan tidak diperlukan.
- Ukuran dataset yang akan diproses kecil.
Prasyarat
Jalankan kubectl get pods
untuk mendapatkan daftar komponen dan status kerjanya dalam cluster Milvus yang Anda buat.
NAME READY STATUS RESTARTS AGE
my-release-etcd-0 1/1 Running 0 1m
my-release-milvus-datacoord-7b5d84d8c6-rzjml 1/1 Running 0 1m
my-release-milvus-datanode-665d4586b9-525pm 1/1 Running 0 1m
my-release-milvus-indexcoord-9669d5989-kr5cm 1/1 Running 0 1m
my-release-milvus-indexnode-b89cc5756-xbpbn 1/1 Running 0 1m
my-release-milvus-proxy-7cbcc8ffbc-4jn8d 1/1 Running 0 1m
my-release-milvus-pulsar-6b9754c64d-4tg4m 1/1 Running 0 1m
my-release-milvus-querycoord-75f6c789f8-j28bg 1/1 Running 0 1m
my-release-milvus-querynode-7c7779c6f8-pnjzh 1/1 Running 0 1m
my-release-milvus-rootcoord-75585dc57b-cjh87 1/1 Running 0 1m
my-release-minio-5564fbbddc-9sbgv 1/1 Running 0 1m
Mengukur skala klaster Milvus
Anda dapat melakukan penskalaan pada klaster Milvus Anda secara manual atau otomatis. Jika autoscaling diaktifkan, cluster Milvus akan menyusut atau membesar secara otomatis ketika konsumsi sumber daya CPU dan memori mencapai nilai yang Anda tetapkan.
Saat ini, Milvus 2.1.0 hanya mendukung penskalaan masuk dan keluar secara manual.
Mengecilkan skala
Jalankan helm upgrade my-release milvus/milvus --set queryNode.replicas=3 --reuse-values
untuk memperkecil node kueri secara manual.
Jika berhasil, tiga pod yang sedang berjalan pada node kueri akan ditambahkan seperti yang ditunjukkan pada contoh berikut.
NAME READY STATUS RESTARTS AGE
my-release-etcd-0 1/1 Running 0 2m
my-release-milvus-datacoord-7b5d84d8c6-rzjml 1/1 Running 0 2m
my-release-milvus-datanode-665d4586b9-525pm 1/1 Running 0 2m
my-release-milvus-indexcoord-9669d5989-kr5cm 1/1 Running 0 2m
my-release-milvus-indexnode-b89cc5756-xbpbn 1/1 Running 0 2m
my-release-milvus-proxy-7cbcc8ffbc-4jn8d 1/1 Running 0 2m
my-release-milvus-pulsar-6b9754c64d-4tg4m 1/1 Running 0 2m
my-release-milvus-querycoord-75f6c789f8-j28bg 1/1 Running 0 2m
my-release-milvus-querynode-7c7779c6f8-czq9f 1/1 Running 0 5s
my-release-milvus-querynode-7c7779c6f8-jcdcn 1/1 Running 0 5s
my-release-milvus-querynode-7c7779c6f8-pnjzh 1/1 Running 0 2m
my-release-milvus-rootcoord-75585dc57b-cjh87 1/1 Running 0 2m
my-release-minio-5564fbbddc-9sbgv 1/1 Running 0 2m
Penskalaan masuk
Jalankan helm upgrade my-release milvus/milvus --set queryNode.replicas=1 --reuse-values
untuk menskalakan node kueri.
Jika berhasil, tiga pod yang sedang berjalan pada simpul kueri dikurangi menjadi satu seperti yang ditunjukkan pada contoh berikut.
NAME READY STATUS RESTARTS AGE
my-release-etcd-0 1/1 Running 0 2m
my-release-milvus-datacoord-7b5d84d8c6-rzjml 1/1 Running 0 2m
my-release-milvus-datanode-665d4586b9-525pm 1/1 Running 0 2m
my-release-milvus-indexcoord-9669d5989-kr5cm 1/1 Running 0 2m
my-release-milvus-indexnode-b89cc5756-xbpbn 1/1 Running 0 2m
my-release-milvus-proxy-7cbcc8ffbc-4jn8d 1/1 Running 0 2m
my-release-milvus-pulsar-6b9754c64d-4tg4m 1/1 Running 0 2m
my-release-milvus-querycoord-75f6c789f8-j28bg 1/1 Running 0 2m
my-release-milvus-querynode-7c7779c6f8-pnjzh 1/1 Running 0 2m
my-release-milvus-rootcoord-75585dc57b-cjh87 1/1 Running 0 2m
my-release-minio-5564fbbddc-9sbgv 1/1 Running 0 2m
Apa selanjutnya
Jika Anda ingin mempelajari cara memonitor layanan Milvus dan membuat peringatan:
- Pelajari Memantau Milvus dengan Operator Prometheus di Kubernetes
Jika Anda siap untuk men-deploy cluster Anda di awan:
- Pelajari cara Menerapkan Milvus di Amazon EKS dengan Terraform
- Pelajari cara Menerapkan Cluster Milvus di GCP dengan Kubernetes
- Pelajari cara Menerapkan Milvus di Microsoft Azure dengan Kubernetes
Jika Anda mencari petunjuk tentang cara mengalokasikan sumber daya: