🚀 Coba Zilliz Cloud, Milvus yang sepenuhnya terkelola, secara gratis—rasakan performa 10x lebih cepat! Coba Sekarang>>

milvus-logo
LFAI
Beranda
  • Panduan Administrasi
    • Mengelola Ketergantungan
  • Home
  • Docs
  • Panduan Administrasi

  • Mengelola Ketergantungan

  • Dengan Operator Milvus

  • Penyimpanan Pesan

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, NATS, Pulsar, dan Kafka didukung dalam mode mandiri dan klaster Milvus.

RocksMQNATSPulsarKafka
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
    • Nats yang diperkenalkan di 2.3 tidak berpartisipasi dalam aturan prioritas ini untuk kompatibilitas ke belakang.
  • Penyimpanan pesan tidak dapat diubah ketika sistem Milvus sedang berjalan.
  • Hanya versi Kafka 2.x atau 3.x yang didukung.

Mengkonfigurasi RocksMQ

RocksMQ adalah penyimpanan pesan default pada Milvus mandiri.

Saat ini, Anda hanya dapat mengonfigurasi 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

Mengkonfigurasi NATS

NATS adalah penyimpanan pesan alternatif untuk NATS.

Contoh

Contoh berikut ini mengonfigurasi layanan NATS.

apiVersion: milvus.io/v1alpha1
kind: Milvus
metadata:
  name: milvus
spec:
  dependencies: 
    msgStreamType: 'natsmq'
    natsmq:
      # server side configuration for natsmq.
      server: 
        # 4222 by default, Port for nats server listening.
        port: 4222 
        # /var/lib/milvus/nats by default, directory to use for JetStream storage of nats.
        storeDir: /var/lib/milvus/nats 
        # (B) 16GB by default, Maximum size of the 'file' storage.
        maxFileStore: 17179869184 
        # (B) 8MB by default, Maximum number of bytes in a message payload.
        maxPayload: 8388608 
        # (B) 64MB by default, Maximum number of bytes buffered for a connection applies to client connections.
        maxPending: 67108864 
        # (√ms) 4s by default, waiting for initialization of natsmq finished.
        initializeTimeout: 4000 
        monitor:
          # false by default, If true enable debug log messages.
          debug: false 
          # true by default, If set to false, log without timestamps.
          logTime: true 
          # no log file by default, Log file path relative to.. .
          logFile: 
          # (B) 0, unlimited by default, Size in bytes after the log file rolls over to a new one.
          logSizeLimit: 0 
        retention:
          # (min) 3 days by default, Maximum age of any message in the P-channel.
          maxAge: 4320 
          # (B) None by default, How many bytes the single P-channel may contain. Removing oldest messages if the P-channel exceeds this size.
          maxBytes:
          # None by default, How many message the single P-channel may contain. Removing oldest messages if the P-channel exceeds this limit.    
          maxMsgs: 
  components: {}
  config: {}

Untuk memigrasikan penyimpanan pesan dari RocksMQ ke NATS, lakukan hal berikut:

  1. Hentikan semua operasi DDL.

  2. Panggil API FlushAll dan kemudian hentikan Milvus setelah panggilan API selesai dieksekusi.

  3. Ubah msgStreamType menjadi natsmq dan lakukan perubahan yang diperlukan pada pengaturan NATS di spec.dependencies.natsmq.

  4. Jalankan Milvus lagi dan periksa apakah:

    • Entri log yang bertuliskan mqType=natsmq ada pada log.
    • Direktori bernama jetstream ada di direktori yang ditentukan di spec.dependencies.natsmq.server.storeDir.
  5. (Opsional) Cadangkan dan bersihkan berkas data dalam direktori penyimpanan RocksMQ.

Pilih antara RocksMQ dan NATS?

RockMQ menggunakan CGO untuk berinteraksi dengan RocksDB dan mengelola memori dengan sendirinya, sementara NATS murni-GO yang tertanam dalam instalasi Milvus mendelegasikan manajemen memorinya ke pengumpul sampah Go (GC).

Dalam skenario di mana paket data lebih kecil dari 64 kb, RocksDB mengungguli dalam hal penggunaan memori, penggunaan CPU, dan waktu respons. Di sisi lain, jika paket data lebih besar dari 64 kb, NATS unggul dalam hal waktu respons dengan memori yang cukup dan penjadwalan GC yang ideal.

Saat ini, Anda disarankan untuk menggunakan NATS hanya untuk eksperimen.

Mengkonfigurasi Pulsar

Pulsar mengelola log perubahan terbaru, mengeluarkan log aliran, dan menyediakan langganan log. Mengkonfigurasi 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:

Coba Milvus yang Dikelola secara Gratis

Zilliz Cloud bebas masalah, didukung oleh Milvus dan 10x lebih cepat.

Mulai
Umpan balik

Apakah halaman ini bermanfaat?