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.
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.
| RocksMQ | Pulsar | Kafka | Woodpecker | |
|---|---|---|---|---|
| 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 festpersistence.enabled: Aktiviert persistente Speicherung für RocksMQ-Datenpersistence.pvcDeletion: Wenn true, wird die PVC gelöscht, wenn die Milvus-Instanz gelöscht wirdpersistentVolumeClaim.spec: Standard-Kubernetes-PVC-SpezifikationaccessModes: TypischerweiseReadWriteOncefür BlockspeicherstorageClassName: Die Speicherklasse Ihres Clustersstorage: 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: EintrueWert 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: {}
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 Werttruezeigt 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: