Mengonfigurasi Penyimpanan Pesan dengan Milvus Operator
Pada Milvus 3.x, Woodpecker merupakan antrian pesan default (lihat Woodpecker). Dengan Milvus Operator, Anda juga dapat mengonfigurasi RocksMQ, Pulsar, atau Kafka untuk mengelola log perubahan terbaru, mengeluarkan log aliran, dan menyediakan langganan log. Topik ini menjelaskan cara mengonfigurasi dependensi penyimpanan pesan saat Anda menginstal Milvus dengan Milvus Operator. Untuk detail lebih lanjut, lihat Konfigurasi Penyimpanan Pesan dengan Milvus Operator di repositori Milvus Operator.
Topik ini mengasumsikan bahwa Anda telah menerapkan Milvus Operator.
Anda perlu menentukan berkas konfigurasi untuk menggunakan Milvus Operator guna memulai kluster Milvus.
kubectl apply -f https://raw.githubusercontent.com/zilliztech/milvus-operator/main/config/samples/milvus_cluster_default.yaml
Anda hanya perlu mengedit templat kode di ` milvus_cluster_default.yaml ` untuk mengonfigurasi dependensi pihak ketiga. Bagian-bagian berikut ini menjelaskan cara mengonfigurasi penyimpanan objek, etcd, dan Pulsar masing-masing.
Sebelum Anda mulai
Tabel di bawah ini menunjukkan apakah RocksMQ, Pulsar, Kafka, dan Woodpecker didukung dalam mode standalone dan cluster Milvus.
| RocksMQ | Pulsar | Kafka | Woodpecker | |
|---|---|---|---|---|
| Mode standalone | ✔️ | ✔️ | ✔️ | ✔️ |
| Mode kluster | ✖️ | ✔️ | ✔️ | ✔️ |
Ada juga batasan lain dalam menentukan penyimpanan pesan:
- Hanya satu penyimpanan pesan yang didukung untuk satu instance Milvus. Namun, kami masih mendukung kompatibilitas mundur dengan pengaturan beberapa penyimpanan pesan untuk satu instance. Prioritasnya adalah sebagai berikut:
- mode mandiri: Woodpecker (default) > RocksMQ > Pulsar > Kafka
- mode cluster: Woodpecker (default) > Pulsar > Kafka
- Penyimpanan pesan tidak dapat diubah saat sistem Milvus sedang berjalan.
- Hanya versi Kafka 2.x atau 3.x yang didukung.
- Batasan peningkatan versi: Batasan Antrian Pesan: Saat meningkatkan ke Milvus v3.0.0, Anda harus mempertahankan pilihan antrian pesan Anda saat ini. Beralih di antara sistem antrian pesan yang berbeda selama peningkatan versi tidak didukung. Dukungan untuk mengubah sistem antrian pesan akan tersedia di versi mendatang.
Konfigurasi RocksMQ
RocksMQ adalah penyimpanan pesan default di Milvus standalone hingga versi 2.5.x (digantikan oleh Woodpecker mulai versi 2.6.x).
Saat ini, Anda hanya dapat mengonfigurasi RocksMQ sebagai penyimpanan pesan untuk Milvus standalone dengan Milvus Operator.
Contoh
Contoh berikut mengonfigurasi layanan RocksMQ.
apiVersion: milvus.io/v1beta1
kind: Milvus
metadata:
name: milvus
spec:
mode: standalone
dependencies:
msgStreamType: rocksmq
rocksmq:
persistence:
enabled: true
pvcDeletion: true
persistentVolumeClaim:
spec:
accessModes: ["ReadWriteOnce"]
storageClassName: "local-path" # Specify your storage class
resources:
requests:
storage: 10Gi # Specify your desired storage size
components: {}
config: {}
Opsi konfigurasi utama:
msgStreamType: rocksmq: Secara eksplisit menetapkan RocksMQ sebagai antrian pesanpersistence.enabled: Mengaktifkan penyimpanan persisten untuk data RocksMQpersistence.pvcDeletion: Jika bernilai true, PVC akan dihapus saat instance Milvus dihapuspersistentVolumeClaim.spec: Spesifikasi PVC Kubernetes standaraccessModes: Biasanya `ReadWriteOnce` untuk penyimpanan blokstorageClassName: Kelas penyimpanan kluster Andastorage: Ukuran volume persisten
Konfigurasi Woodpecker
Woodpecker adalah Write-Ahead Log (WAL) cloud-native yang dirancang untuk penyimpanan objek. Layanan ini menawarkan throughput tinggi, beban operasional rendah, dan skalabilitas yang mulus. Untuk detail lebih lanjut, lihat Woodpecker.
Konfigurasi Pulsar
Pulsar mengelola log perubahan terbaru, menghasilkan log aliran, dan menyediakan langganan log. Konfigurasi Pulsar sebagai penyimpanan pesan didukung baik di Milvus standalone maupun Milvus cluster. Namun, dengan Milvus Operator, Anda hanya dapat mengonfigurasi Pulsar sebagai penyimpanan pesan untuk Milvus cluster. Tambahkan bidang yang diperlukan di bawah " spec.dependencies.pulsar " untuk mengonfigurasi Pulsar.
pulsar mendukung external dan inCluster.
Pulsar Eksternal
external menandakan penggunaan layanan Pulsar eksternal.
Bidang yang digunakan untuk mengonfigurasi layanan Pulsar eksternal meliputi:
external: Nilai "true" menunjukkan bahwa Milvus menggunakan layanan Pulsar eksternal.endpoints: Titik akhir (endpoint) Pulsar.
Contoh
Contoh berikut mengonfigurasi layanan Pulsar eksternal.
apiVersion: milvus.io/v1alpha1
kind: Milvus
metadata:
name: my-release
labels:
app: milvus
spec:
dependencies: # Optional
pulsar: # Optional
# Whether (=true) to use an existed external pulsar as specified in the field endpoints or
# (=false) create a new pulsar inside the same kubernetes cluster for milvus.
external: true # Optional default=false
# The external pulsar endpoints if external=true
endpoints:
- 192.168.1.1:6650
components: {}
config: {}
Pulsar Internal
inCluster menunjukkan bahwa saat kluster Milvus dimulai, layanan Pulsar akan dimulai secara otomatis di dalam kluster tersebut.
Contoh
Contoh berikut mengonfigurasi layanan Pulsar internal.
apiVersion: milvus.io/v1alpha1
kind: Milvus
metadata:
name: my-release
labels:
app: milvus
spec:
dependencies:
pulsar:
inCluster:
values:
components:
autorecovery: false
zookeeper:
replicaCount: 1
bookkeeper:
replicaCount: 1
resoureces:
limit:
cpu: '4'
memory: 8Gi
requests:
cpu: 200m
memory: 512Mi
broker:
replicaCount: 1
configData:
## Enable `autoSkipNonRecoverableData` since bookkeeper is running
## without persistence
autoSkipNonRecoverableData: "true"
managedLedgerDefaultEnsembleSize: "1"
managedLedgerDefaultWriteQuorum: "1"
managedLedgerDefaultAckQuorum: "1"
proxy:
replicaCount: 1
components: {}
config: {}
pulsar.inCluster.values ` seperti yang ditunjukkan pada contoh sebelumnya.Dengan asumsi bahwa berkas konfigurasi bernama ` milvuscluster.yaml`, jalankan perintah berikut untuk menerapkan konfigurasi.
kubectl apply -f milvuscluster.yaml
Konfigurasi Kafka
Pulsar merupakan penyimpanan pesan default dalam kluster Milvus hingga versi 2.5.x (digantikan oleh Woodpecker mulai versi 2.6.x). Jika Anda ingin menggunakan Kafka, tambahkan bidang opsional ` msgStreamType ` untuk mengonfigurasi Kafka.
kafka Mendukung external dan inCluster.
Kafka Eksternal
external Menandakan penggunaan layanan Kafka eksternal.
Bidang yang digunakan untuk mengonfigurasi layanan Kafka eksternal meliputi:
external: Nilai `true` menunjukkan bahwa Milvus menggunakan layanan Kafka eksternal.brokerList: Daftar broker yang akan menerima pesan.
Contoh
Contoh berikut mengonfigurasi layanan Kafka eksternal.
apiVersion: milvus.io/v1alpha1
kind: Milvus
metadata:
name: my-release
labels:
app: milvus
spec:
config:
kafka:
# securityProtocol supports: PLAINTEXT, SSL, SASL_PLAINTEXT, SASL_SSL
securityProtocol: PLAINTEXT
# saslMechanisms supports: PLAIN, SCRAM-SHA-256, SCRAM-SHA-512
saslMechanisms: PLAIN
saslUsername: ""
saslPassword: ""
# Omit other fields ...
dependencies:
# Omit other fields ...
msgStreamType: "kafka"
kafka:
external: true
brokerList:
- "kafkaBrokerAddr1:9092"
- "kafkaBrokerAddr2:9092"
# ...
Konfigurasi SASL didukung pada operator versi v0.8.5 atau yang lebih baru.
Kafka Internal
inCluster menunjukkan bahwa saat kluster Milvus dimulai, layanan Kafka akan dimulai secara otomatis di dalam kluster tersebut.
Contoh
Contoh berikut mengonfigurasi layanan Kafka internal.
apiVersion: milvus.io/v1alpha1
kind: Milvus
metadata:
name: my-release
labels:
app: milvus
spec:
dependencies:
msgStreamType: "kafka"
kafka:
inCluster:
values: {} # values can be found in https://artifacthub.io/packages/helm/bitnami/kafka
components: {}
config: {}
Temukan item konfigurasi lengkap untuk mengonfigurasi layanan Kafka internal di sini. Tambahkan item konfigurasi sesuai kebutuhan di bawah ` kafka.inCluster.values`.
Dengan asumsi bahwa berkas konfigurasi tersebut bernama ` milvuscluster.yaml`, jalankan perintah berikut untuk menerapkan konfigurasi.
kubectl apply -f milvuscluster.yaml
Langkah Selanjutnya
Pelajari cara mengonfigurasi dependensi Milvus lainnya dengan Milvus Operator: