Konfigurieren Sie den Nachrichtenspeicher mit Docker Compose oder Helm
Milvus verwendet Pulsar oder Kafka für die Verwaltung von Protokollen der letzten Änderungen, die Ausgabe von Stream-Protokollen und die Bereitstellung von Protokollabonnements. Pulsar ist das standardmäßige Nachrichtenspeichersystem. In diesem Thema wird beschrieben, wie Sie den Nachrichtenspeicher mit Docker Compose oder Helm konfigurieren.
Sie können Pulsar mit Docker Compose oder auf K8s konfigurieren und Kafka auf K8s konfigurieren.
Konfigurieren von Pulsar mit Docker Compose
1. Pulsar konfigurieren
Um Pulsar mit Docker Compose zu konfigurieren, geben Sie Ihre Werte für den Abschnitt pulsar
in der Datei milvus.yaml
im Pfad milvus/configs an.
pulsar:
address: localhost # Address of pulsar
port: 6650 # Port of pulsar
maxMessageSize: 5242880 # 5 * 1024 * 1024 Bytes, Maximum size of each message in pulsar.
Siehe Pulsar-bezogene Konfigurationen für weitere Informationen.
2. Starten Sie Milvus
Führen Sie den folgenden Befehl aus, um Milvus zu starten, das die Pulsar-Konfigurationen verwendet.
docker compose up
Konfigurieren Sie Pulsar mit Helm
Für Milvus-Cluster auf K8s können Sie Pulsar mit demselben Befehl konfigurieren, mit dem Milvus gestartet wird. Alternativ können Sie Pulsar mit der Datei values.yml
im Pfad /charts/milvus im milvus-helm-Repository konfigurieren, bevor Sie Milvus starten.
Einzelheiten zur Konfiguration von Milvus mit Helm finden Sie unter Konfigurieren von Milvus mit Helm Charts. Details zu Pulsar-bezogenen Konfigurationselementen finden Sie unter Pulsar-bezogene Konfigurationen.
Verwendung der YAML-Datei
- Konfigurieren Sie den Abschnitt
externalConfigFiles
in der Dateivalues.yaml
.
extraConfigFiles:
user.yaml: |+
pulsar:
address: localhost # Address of pulsar
port: 6650 # Port of Pulsar
webport: 80 # Web port of pulsar, if you connect direcly without proxy, should use 8080
maxMessageSize: 5242880 # 5 * 1024 * 1024 Bytes, Maximum size of each message in pulsar.
tenant: public
namespace: default
- Nachdem Sie die vorangegangenen Abschnitte konfiguriert und die Datei
values.yaml
gespeichert haben, führen Sie den folgenden Befehl aus, um Milvus zu installieren, das die Pulsar-Konfigurationen verwendet.
helm install <your_release_name> milvus/milvus -f values.yaml
Konfigurieren Sie Kafka mit Helm
Für Milvus-Cluster auf K8s können Sie Kafka mit demselben Befehl konfigurieren, mit dem Milvus gestartet wird. Alternativ können Sie Kafka mit der Datei values.yml
unter dem Pfad /charts/milvus im milvus-helm-Repository konfigurieren, bevor Sie Milvus starten.
Einzelheiten zur Konfiguration von Milvus mit Helm finden Sie unter Konfigurieren von Milvus mit Helm Charts. Details zu Pulsar-bezogenen Konfigurationselementen finden Sie unter Pulsar-bezogene Konfigurationen.
Verwendung der YAML-Datei
- Konfigurieren Sie den Abschnitt
externalConfigFiles
in der Dateivalues.yaml
, wenn Sie Kafka als Nachrichtenspeichersystem verwenden möchten.
extraConfigFiles:
user.yaml: |+
kafka:
brokerList:
- <your_kafka_address>:<your_kafka_port>
saslUsername:
saslPassword:
saslMechanisms: PLAIN
securityProtocol: SASL_SSL
- Nachdem Sie die vorangegangenen Abschnitte konfiguriert und die Datei
values.yaml
gespeichert haben, führen Sie den folgenden Befehl aus, um Milvus zu installieren, das die Kafka-Konfigurationen verwendet.
helm install <your_release_name> milvus/milvus -f values.yaml
Konfigurieren Sie RocksMQ mit Helm
Milvus Standalone verwendet RocksMQ als Standardnachrichtenspeicher. Detaillierte Schritte zur Konfiguration von Milvus mit Helm finden Sie unter Konfigurieren von Milvus mit Helm-Diagrammen. Einzelheiten zu RocksMQ-bezogenen Konfigurationselementen finden Sie unter RocksMQ-bezogene Konfigurationen.
Wenn Sie Milvus mit RocksMQ starten und seine Einstellungen ändern möchten, können Sie
helm upgrade -f
mit den geänderten Einstellungen in der folgenden YAML-Datei ausführen.Wenn Sie Milvus eigenständig mit Helm mit einem anderen Nachrichtenspeicher als RocksMQ installiert haben und wieder zu RocksMQ wechseln möchten, führen Sie
helm upgrade -f
mit der folgenden YAML-Datei aus, nachdem Sie alle Sammlungen geleert und Milvus gestoppt haben.
extraConfigFiles:
user.yaml: |+
rocksmq:
# The path where the message is stored in rocksmq
# please adjust in embedded Milvus: /tmp/milvus/rdb_data
path: /var/lib/milvus/rdb_data
lrucacheratio: 0.06 # rocksdb cache memory ratio
rocksmqPageSize: 67108864 # 64 MB, 64 * 1024 * 1024 bytes, The size of each page of messages in rocksmq
retentionTimeInMinutes: 4320 # 3 days, 3 * 24 * 60 minutes, The retention time of the message in rocksmq.
retentionSizeInMB: 8192 # 8 GB, 8 * 1024 MB, The retention size of the message in rocksmq.
compactionInterval: 86400 # 1 day, trigger rocksdb compaction every day to remove deleted data
# compaction compression type, only support use 0,7.
# 0 means not compress, 7 will use zstd
# len of types means num of rocksdb level.
compressionTypes: [0, 0, 7, 7, 7]
Das Ändern des Nachrichtenspeichers wird nicht empfohlen. Wenn Sie dies tun möchten, stoppen Sie alle DDL-Vorgänge, rufen Sie dann die FlushAll-API auf, um alle Sammlungen zu flushen, und stoppen Sie schließlich Milvus, bevor Sie den Nachrichtenspeicher tatsächlich ändern.
Konfigurieren Sie NATS mit Helm
NATS ist eine experimentelle Nachrichtenspeicher-Alternative zu RocksMQ. Detaillierte Schritte zur Konfiguration von Milvus mit Helm finden Sie unter Konfigurieren von Milvus mit Helm-Diagrammen. Einzelheiten zu RocksMQ-bezogenen Konfigurationselementen finden Sie unter NATS-bezogene Konfigurationen.
Wenn Sie Milvus mit NATS starten und seine Einstellungen ändern möchten, können Sie
helm upgrade -f
mit den geänderten Einstellungen in der folgenden YAML-Datei ausführen.Wenn Sie Milvus standalone mit einem anderen Nachrichtenspeicher als NATS installiert haben und diesen auf NATS umstellen wollen, führen Sie
helm upgrade -f
mit der folgenden YAML-Datei aus, nachdem Sie alle Collections geleert und Milvus gestoppt haben.
extraConfigFiles:
user.yaml: |+
mq:
type: 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:
Zwischen RocksMQ und NATS wählen?
RockMQ verwendet CGO für die Interaktion mit RocksDB und verwaltet den Speicher selbst, während das in die Milvus-Installation eingebettete reine Go-NATS die Speicherverwaltung an den Garbage Collector (GC) von Go delegiert.
In dem Szenario, in dem das Datenpaket kleiner als 64 kb ist, schneidet RocksDB in Bezug auf Speicherverbrauch, CPU-Nutzung und Antwortzeit besser ab. Ist das Datenpaket hingegen größer als 64 KB, so ist NATS bei ausreichendem Speicher und idealer GC-Planung in Bezug auf die Antwortzeit überlegen.
Derzeit wird empfohlen, NATS nur für Experimente zu verwenden.
Was kommt als nächstes?
Erfahren Sie, wie Sie andere Milvus-Abhängigkeiten mit Docker Compose oder Helm konfigurieren können: