Configurare l'archiviazione dei messaggi con Docker Compose o Helm
Milvus utilizza Pulsar o Kafka per la gestione dei log delle modifiche recenti, l'output dei log dei flussi e la fornitura di sottoscrizioni ai log. Pulsar è il sistema di archiviazione dei messaggi predefinito. Questo argomento illustra come configurare l'archiviazione dei messaggi con Docker Compose o Helm.
È possibile configurare Pulsar con Docker Compose o su K8s e configurare Kafka su K8s.
Configurare Pulsar con Docker Compose
1. Configurare Pulsar
Per configurare Pulsar con Docker Compose, fornire i valori della sezione pulsar
nel file milvus.yaml
nel percorso milvus/configs.
pulsar:
address: localhost # Address of pulsar
port: 6650 # Port of pulsar
maxMessageSize: 5242880 # 5 * 1024 * 1024 Bytes, Maximum size of each message in pulsar.
Per ulteriori informazioni, vedere le configurazioni relative a Pulsar.
2. Eseguire Milvus
Eseguire il seguente comando per avviare Milvus che utilizza le configurazioni di Pulsar.
docker compose up
Configurare Pulsar con Helm
Per i cluster Milvus su K8, è possibile configurare Pulsar con lo stesso comando di avvio di Milvus. In alternativa, è possibile configurare Pulsar utilizzando il file values.yml
nel percorso /charts/milvus nel repository milvus-helm prima di avviare Milvus.
Per i dettagli su come configurare Milvus usando Helm, fare riferimento a Configurare Milvus con i grafici Helm. Per i dettagli sulle voci di configurazione relative a Pulsar, consultare Configurazioni relative a Pulsar. |
Uso del file YAML
- Configurare la sezione
externalConfigFiles
nel filevalues.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
- Dopo aver configurato le sezioni precedenti e salvato il file
values.yaml
, eseguire il seguente comando per installare Milvus che utilizza le configurazioni di Pulsar.
helm install <your_release_name> milvus/milvus -f values.yaml
Configurare Kafka con Helm
Per i cluster Milvus su K8s, è possibile configurare Kafka con lo stesso comando che avvia Milvus. In alternativa, è possibile configurare Kafka utilizzando il file values.yml
nel percorso /charts/milvus nel repository milvus-helm prima di avviare Milvus.
Per i dettagli su come configurare Milvus usando Helm, fare riferimento a Configurare Milvus con i grafici Helm. Per i dettagli sulle voci di configurazione relative a Pulsar, fare riferimento a Configurazioni relative a Pulsar.
Uso del file YAML
- Configurare la sezione
externalConfigFiles
nel filevalues.yaml
se si desidera utilizzare Kafka come sistema di archiviazione dei messaggi.
extraConfigFiles:
user.yaml: |+
kafka:
brokerList:
- <your_kafka_address>:<your_kafka_port>
saslUsername:
saslPassword:
saslMechanisms: PLAIN
securityProtocol: SASL_SSL
- Dopo aver configurato le sezioni precedenti e salvato il file
values.yaml
, eseguire il seguente comando per installare Milvus che utilizza le configurazioni di Kafka.
helm install <your_release_name> milvus/milvus -f values.yaml
Configurare RocksMQ con Helm
Milvus standalone utilizza RocksMQ come archivio messaggi predefinito. Per i passi dettagliati su come configurare Milvus con Helm, fate riferimento a Configurare Milvus con i grafici di Helm. Per i dettagli sulle voci di configurazione relative a RocksMQ, fate riferimento a Configurazioni relative a RocksMQ.
Se si avvia Milvus con RocksMQ e si vogliono modificare le sue impostazioni, si può eseguire
helm upgrade -f
con le impostazioni modificate nel seguente file YAML.Se avete installato Milvus standalone usando Helm con un message store diverso da RocksMQ e volete tornare a RocksMQ, eseguite
helm upgrade -f
con il seguente file YAML dopo aver scaricato tutte le collezioni e fermato Milvus.
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]
La modifica dell'archivio messaggi non è consigliata. Se si desidera farlo, interrompere tutte le operazioni DDL, quindi richiamare l'API FlushAll per eseguire il flush di tutte le collezioni e infine arrestare Milvus alla fine, prima di cambiare effettivamente l'archivio dei messaggi.
Configurare NATS con Helm
NATS è un archivio di messaggi sperimentale alternativo a RocksMQ. Per informazioni dettagliate su come configurare Milvus con Helm, consultare Configurare Milvus con i grafici di Helm. Per i dettagli sulle voci di configurazione relative a RocksMQ, fate riferimento a Configurazioni relative a NATS.
Se si avvia Milvus con NATS e si vogliono modificare le sue impostazioni, si può eseguire
helm upgrade -f
con le impostazioni modificate nel seguente file YAML.Se avete installato Milvus standalone con un message store diverso da NATS e volete cambiarlo con NATS, eseguite
helm upgrade -f
con il seguente file YAML dopo aver scaricato tutte le collezioni e fermato Milvus.
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:
Scegliere tra RocksMQ e NATS?
RockMQ usa CGO per interagire con RocksDB e gestisce la memoria da solo, mentre il NATS puro di Go incorporato nell'installazione di Milvus delega la gestione della memoria al garbage collector (GC) di Go.
Nello scenario in cui il pacchetto di dati è più piccolo di 64 kb, RocksDB ha prestazioni migliori in termini di utilizzo della memoria, della CPU e del tempo di risposta. D'altra parte, se il pacchetto di dati è superiore a 64 kb, NATS eccelle in termini di tempo di risposta con una memoria sufficiente e una pianificazione GC ideale.
Attualmente, si consiglia di utilizzare NATS solo per esperimenti.
Il prossimo passo
Scoprite come configurare le altre dipendenze di Milvus con Docker Compose o Helm: