Mengonfigurasi Penyimpanan Pesan dengan Operator Milvus
Milvus menggunakan RocksMQ, Pulsar, atau Kafka untuk mengelola log perubahan terbaru, mengeluarkan log aliran, dan menyediakan langganan log. Topik ini memperkenalkan cara mengonfigurasi ketergantungan penyimpanan pesan ketika Anda menginstal Milvus dengan Milvus Operator. Untuk detail lebih lanjut, lihat Mengonfigurasi Penyimpanan Pesan dengan Milvus Operator di repositori Milvus Operator.
Topik ini mengasumsikan bahwa Anda telah men-deploy Milvus Operator.
Anda perlu menentukan file konfigurasi untuk menggunakan Milvus Operator untuk memulai cluster Milvus.
kubectl apply -f https://raw.githubusercontent.com/zilliztech/milvus-operator/main/config/samples/milvus_cluster_default.yaml
Anda hanya perlu mengedit template kode di milvus_cluster_default.yaml untuk mengonfigurasi dependensi pihak ketiga. Bagian berikut ini memperkenalkan cara mengonfigurasi penyimpanan objek, etcd, dan Pulsar.
Sebelum Anda mulai
Tabel di bawah ini menunjukkan apakah RocksMQ, Pulsar, Kafka, dan Woodpecker didukung dalam mode mandiri dan klaster Milvus.
| RocksMQ | Pulsar | Kafka | Woodpecker | |
|---|---|---|---|---|
| Mode mandiri | ✔️ | ✔️ | ✔️ | ✔️ |
| Mode cluster | ✖️ | ✔️ | ✔️ | ✔️ |
Ada juga batasan lain untuk menentukan penyimpanan pesan:
- Hanya satu penyimpanan pesan untuk satu instance Milvus yang didukung. Namun kami masih memiliki kompatibilitas ke belakang dengan beberapa penyimpanan pesan yang ditetapkan untuk satu instance. Prioritasnya adalah sebagai berikut:
- mode mandiri: RocksMQ (default) > Pulsar > Kafka
- mode cluster: Pulsar (default) > Kafka
- Penyimpanan pesan tidak dapat diubah ketika sistem Milvus sedang berjalan.
- Hanya versi Kafka 2.x atau 3.x yang didukung.
- Batasan peningkatan: Keterbatasan Antrian Pesan: Ketika mengupgrade ke Milvus v2.6.16, anda harus mempertahankan pilihan antrian pesan anda saat ini. Beralih di antara sistem antrian pesan yang berbeda selama upgrade tidak didukung. Dukungan untuk mengubah sistem antrean pesan akan tersedia di versi mendatang.
Mengkonfigurasi RocksMQ
RocksMQ adalah penyimpanan pesan default di Milvus standalone.
Saat ini, anda hanya dapat mengkonfigurasi RocksMQ sebagai penyimpanan pesan untuk Milvus standalone dengan Milvus Operator.
Contoh
Contoh berikut ini 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 antrean pesanpersistence.enabled: Mengaktifkan penyimpanan persisten untuk data RocksMQpersistence.pvcDeletion: Jika benar, PVC akan dihapus ketika instans Milvus dihapuspersistentVolumeClaim.spec: Spesifikasi PVC Kubernetes standaraccessModes: BiasanyaReadWriteOnceuntuk penyimpanan blokstorageClassName: Kelas penyimpanan cluster Andastorage: Ukuran volume persisten
Mengonfigurasi Woodpecker
Woodpecker adalah Write-Ahead Log (WAL) asli cloud yang dirancang untuk penyimpanan objek. Ia menawarkan throughput tinggi, overhead operasional rendah, dan skalabilitas tanpa batas. Untuk detail lebih lanjut, lihat Menggunakan Woodpecker.
Mengkonfigurasi Pulsar
Pulsar mengelola log perubahan terbaru, mengeluarkan log aliran, dan menyediakan langganan log. Mengonfigurasi Pulsar untuk penyimpanan pesan didukung pada Milvus mandiri dan 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 mengkonfigurasi Pulsar.
pulsar Milvus Operator mendukung external dan inCluster.
Pulsar eksternal
external menunjukkan penggunaan layanan Pulsar eksternal. Bidang yang digunakan untuk mengkonfigurasi layanan Pulsar eksternal meliputi:
external: Nilaitruemenunjukkan bahwa Milvus menggunakan layanan Pulsar eksternal.endpoints: Titik akhir Pulsar.
Contoh
Contoh berikut ini 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 ketika kluster Milvus dimulai, layanan Pulsar dimulai secara otomatis di dalam kluster.
Contoh
Contoh berikut ini 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
Mengkonfigurasi Kafka
Pulsar adalah penyimpanan pesan default dalam cluster Milvus. Jika Anda ingin menggunakan Kafka, tambahkan bidang opsional msgStreamType untuk mengkonfigurasi Kafka.
kafka Kafka mendukung external dan inCluster.
Kafka eksternal
external mengindikasikan penggunaan layanan Kafka eksternal.
Bidang yang digunakan untuk mengonfigurasi layanan Kafka eksternal meliputi:
external: Nilaitruemenunjukkan bahwa Milvus menggunakan layanan Kafka eksternal.brokerList: Daftar broker yang akan dikirimi pesan.
Contoh
Contoh berikut ini 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 dalam operator v0.8.5 atau versi yang lebih tinggi.
Kafka internal
inCluster menunjukkan ketika cluster Milvus dimulai, layanan Kafka dimulai secara otomatis dalam cluster.
Contoh
Contoh berikut ini 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 kafka.inCluster.values.
Dengan asumsi bahwa berkas konfigurasi bernama milvuscluster.yaml, jalankan perintah berikut untuk menerapkan konfigurasi.
kubectl apply -f milvuscluster.yaml
Selanjutnya
Pelajari cara mengonfigurasi dependensi Milvus lainnya dengan Milvus Operator: