• Tentang Milvus
  • Memulai
  • Konsep
  • Panduan Pengguna
  • Impor Data
  • Alat AI
  • Panduan Administrasi
  • Peralatan
  • Integrasi
  • Tutorial
  • Pertanyaan Umum
  • API Reference

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.

Lihat Menyebarkan Operator Milvus untuk informasi lebih lanjut.

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.

RocksMQPulsarKafkaWoodpecker
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 pesan
  • persistence.enabled: Mengaktifkan penyimpanan persisten untuk data RocksMQ
  • persistence.pvcDeletion: Jika benar, PVC akan dihapus ketika instans Milvus dihapus
  • persistentVolumeClaim.spec: Spesifikasi PVC Kubernetes standar
  • accessModes: Biasanya ReadWriteOnce untuk penyimpanan blok
  • storageClassName: Kelas penyimpanan cluster Anda
  • storage: 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: Nilai true menunjukkan 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: {}            
Contoh ini menentukan jumlah replika setiap komponen Pulsar, sumber daya komputasi Pulsar BookKeeper, dan konfigurasi lainnya.
Temukan item konfigurasi lengkap untuk mengonfigurasi layanan Pulsar internal di values.yaml. Tambahkan item konfigurasi sesuai kebutuhan di 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: Nilai true menunjukkan 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: