• Über Milvus
  • Los geht's
  • Konzepte
  • Benutzerhandbuch
  • Datenimport
  • AI-Tools
  • Leitfaden für die Verwaltung
  • Werkzeuge
  • Integrationen
  • Anleitungen
  • FAQs
  • API Reference

Konfigurieren der Nachrichtenspeicherung mit Milvus Operator

Milvus verwendet RocksMQ, Pulsar oder Kafka für die Verwaltung von Protokollen der letzten Änderungen, die Ausgabe von Stream-Protokollen und die Bereitstellung von Protokollabonnements. In diesem Thema wird erläutert, wie Sie die Abhängigkeiten für den Nachrichtenspeicher konfigurieren, wenn Sie Milvus mit Milvus Operator installieren. Weitere Details finden Sie unter Konfigurieren des Nachrichtenspeichers mit Milvus Operator im Milvus Operator Repository.

Dieses Thema setzt voraus, dass Sie Milvus Operator installiert haben.

Weitere Informationen finden Sie unter Bereitstellen von Milvus Operator.

Sie müssen eine Konfigurationsdatei für die Verwendung von Milvus Operator angeben, um einen Milvus-Cluster zu starten.

kubectl apply -f https://raw.githubusercontent.com/zilliztech/milvus-operator/main/config/samples/milvus_cluster_default.yaml

Sie müssen nur die Codevorlage in milvus_cluster_default.yaml bearbeiten, um die Abhängigkeiten von Dritten zu konfigurieren. In den folgenden Abschnitten wird beschrieben, wie Sie Objektspeicher, etcd und Pulsar konfigurieren.

Bevor Sie beginnen

Die folgende Tabelle zeigt, ob RocksMQ, Pulsar, Kafka und Woodpecker im Milvus-Einzelplatz- und Clustermodus unterstützt werden.

RocksMQPulsarKafkaWoodpecker
Eigenständiger Modus✔️✔️✔️✔️
Cluster-Modus✖️✔️✔️✔️

Es gibt noch weitere Einschränkungen bei der Angabe des Nachrichtenspeichers:

  • Es wird nur ein Nachrichtenspeicher für eine Milvus-Instanz unterstützt. Es besteht jedoch Abwärtskompatibilität mit mehreren Nachrichtenspeichern für eine Instanz. Die Priorität ist wie folgt:
    • Standalone-Modus: RocksMQ (Standard) > Pulsar > Kafka
    • Clustermodus: Pulsar (Standard) > Kafka
  • Der Nachrichtenspeicher kann nicht geändert werden, während das Milvus-System läuft.
  • Es wird nur die Kafka-Version 2.x oder 3.x unterstützt.
  • Upgrade-Einschränkungen: Einschränkungen bei der Nachrichtenwarteschlange: Bei einem Upgrade auf Milvus v2.6.16 müssen Sie Ihre aktuelle Wahl der Nachrichtenwarteschlange beibehalten. Der Wechsel zwischen verschiedenen Message-Queue-Systemen während des Upgrades wird nicht unterstützt. Unterstützung für den Wechsel von Message-Queue-Systemen wird in zukünftigen Versionen verfügbar sein.

Konfigurieren von RocksMQ

RocksMQ ist der Standard-Nachrichtenspeicher in Milvus Standalone.

Derzeit können Sie RocksMQ als Nachrichtenspeicher für Milvus standalone nur mit Milvus Operator konfigurieren.

Beispiel

Das folgende Beispiel konfiguriert einen RocksMQ-Dienst.

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: {}
Die wichtigsten Konfigurationsoptionen:
  • msgStreamType: rocksmq: Legt RocksMQ explizit als Nachrichtenwarteschlange fest
  • persistence.enabled: Aktiviert persistente Speicherung für RocksMQ-Daten
  • persistence.pvcDeletion: Wenn true, wird die PVC gelöscht, wenn die Milvus-Instanz gelöscht wird
  • persistentVolumeClaim.spec: Standard-Kubernetes-PVC-Spezifikation
  • accessModes: Typischerweise ReadWriteOnce für Blockspeicher
  • storageClassName: Die Speicherklasse Ihres Clusters
  • storage: Größe des persistenten Volumes

Woodpecker konfigurieren

Woodpecker ist ein Cloud-natives Write-Ahead Log (WAL), das für Objektspeicher entwickelt wurde. Es bietet einen hohen Durchsatz, einen geringen operativen Overhead und eine nahtlose Skalierbarkeit. Weitere Einzelheiten finden Sie unter Woodpecker verwenden.

Konfigurieren Sie Pulsar

Pulsar verwaltet Protokolle der letzten Änderungen, gibt Stream-Protokolle aus und bietet Protokollabonnements. Die Konfiguration von Pulsar für die Nachrichtenspeicherung wird sowohl in Milvus standalone als auch in Milvus cluster unterstützt. Mit Milvus Operator können Sie Pulsar jedoch nur als Nachrichtenspeicher für Milvus-Cluster konfigurieren. Fügen Sie die erforderlichen Felder unter spec.dependencies.pulsar hinzu, um Pulsar zu konfigurieren.

pulsar unterstützt external und inCluster.

Externer Pulsar

external gibt an, dass ein externer Pulsar-Dienst verwendet wird. Die zur Konfiguration eines externen Pulsar-Dienstes verwendeten Felder umfassen:

  • external: Ein true Wert zeigt an, dass Milvus einen externen Pulsar-Dienst verwendet.
  • endpoints: Die Endpunkte von Pulsar.

Beispiel

Das folgende Beispiel konfiguriert einen externen Pulsar-Dienst.

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: {}           

Interner Pulsar

inCluster zeigt an, dass beim Start eines Milvus-Clusters automatisch ein Pulsar-Dienst im Cluster gestartet wird.

Beispiel

Das folgende Beispiel konfiguriert einen internen Pulsar-Dienst.

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: {}            
Dieses Beispiel gibt die Anzahl der Replikate jeder Komponente von Pulsar, die Rechenressourcen von Pulsar BookKeeper und andere Konfigurationen an.
Die vollständigen Konfigurationseinträge zur Konfiguration eines internen Pulsar-Dienstes finden Sie in values.yaml. Fügen Sie die Konfigurationselemente nach Bedarf unter pulsar.inCluster.values hinzu, wie im vorangegangenen Beispiel gezeigt.

Unter der Annahme, dass die Konfigurationsdatei den Namen milvuscluster.yaml trägt, führen Sie den folgenden Befehl aus, um die Konfiguration anzuwenden.

kubectl apply -f milvuscluster.yaml

Konfigurieren Sie Kafka

Pulsar ist der Standardspeicher für Nachrichten in einem Milvus-Cluster. Wenn Sie Kafka verwenden möchten, fügen Sie das optionale Feld msgStreamType hinzu, um Kafka zu konfigurieren.

kafka unterstützt external und inCluster.

Externes Kafka

external gibt die Verwendung eines externen Kafka-Dienstes an.

Folgende Felder werden zur Konfiguration eines externen Kafka-Dienstes verwendet:

  • external: Der Wert true zeigt an, dass Milvus einen externen Kafka-Dienst verwendet.
  • brokerList: Die Liste der Makler, an die die Nachrichten gesendet werden sollen.

Beispiel

Das folgende Beispiel konfiguriert einen externen Kafka-Dienst.

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"
        # ...

SASL-Konfigurationen werden in der Version operator v0.8.5 oder höher unterstützt.

Internes Kafka

inCluster gibt an, dass beim Start eines Milvus-Clusters automatisch ein Kafka-Dienst im Cluster gestartet wird.

Beispiel

Das folgende Beispiel konfiguriert einen internen Kafka-Dienst.

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: {}

Hier finden Sie die vollständige Konfiguration für einen internen Kafka-Dienst. Fügen Sie die Konfigurationselemente nach Bedarf unter kafka.inCluster.values hinzu.

Unter der Annahme, dass die Konfigurationsdatei den Namen milvuscluster.yaml trägt, führen Sie den folgenden Befehl aus, um die Konfiguration anzuwenden.

kubectl apply -f milvuscluster.yaml

Was kommt als nächstes?

Erfahren Sie, wie Sie andere Milvus-Abhängigkeiten mit Milvus Operator konfigurieren können: