Configurazione dell'archiviazione dei messaggi con Milvus Operator
Milvus utilizza RocksMQ, Pulsar o Kafka per gestire i log delle modifiche recenti, generare log in streaming e fornire sottoscrizioni ai log. Questo argomento illustra come configurare le dipendenze relative all'archiviazione dei messaggi quando si installa Milvus con Milvus Operator. Per ulteriori dettagli, consultare la sezione "Configurazione dell'archiviazione dei messaggi con Milvus Operator " nel repository di Milvus Operator.
Questo argomento presuppone che Milvus Operator sia già stato distribuito.
È necessario specificare un file di configurazione per utilizzare Milvus Operator e avviare un cluster Milvus.
kubectl apply -f https://raw.githubusercontent.com/zilliztech/milvus-operator/main/config/samples/milvus_cluster_default.yaml
Per configurare le dipendenze di terze parti è sufficiente modificare il modello di codice in ` milvus_cluster_default.yaml `. Le sezioni seguenti illustrano come configurare rispettivamente l’object storage, etcd e Pulsar.
Prima di iniziare
La tabella sottostante mostra se RocksMQ, Pulsar, Kafka e Woodpecker sono supportati in Milvus in modalità standalone e in modalità cluster.
| RocksMQ | Pulsar | Kafka | Woodpecker | |
|---|---|---|---|---|
| Modalità standalone | ✔️ | ✔️ | ✔️ | ✔️ |
| Modalità cluster | ✖️ | ✔️ | ✔️ | ✔️ |
Esistono anche altre limitazioni relative alla specificazione dell'archivio messaggi:
- È supportato un solo archivio messaggi per ogni istanza di Milvus. Tuttavia, è ancora garantita la retrocompatibilità con più archivi messaggi configurati per una singola istanza. L'ordine di priorità è il seguente:
- modalità standalone: RocksMQ (predefinito) > Pulsar > Kafka
- modalità cluster: Pulsar (predefinito) > Kafka
- L'archivio dei messaggi non può essere modificato mentre il sistema Milvus è in esecuzione.
- Sono supportate solo le versioni 2.x o 3.x di Kafka.
- Limiti dell'aggiornamento: Limiti della coda dei messaggi: durante l'aggiornamento a Milvus v2.6.21, è necessario mantenere la coda dei messaggi attualmente in uso. Il passaggio da un sistema di code dei messaggi a un altro durante l'aggiornamento non è supportato. Il supporto per la modifica dei sistemi di code dei messaggi sarà disponibile nelle versioni future.
Configurazione di RocksMQ
RocksMQ è l’archivio messaggi predefinito in Milvus standalone.
Attualmente, è possibile configurare RocksMQ come archivio messaggi per Milvus standalone solo tramite Milvus Operator.
Esempio
L'esempio seguente illustra la configurazione di un servizio 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: {}
Opzioni di configurazione principali:
msgStreamType: rocksmq: Imposta esplicitamente RocksMQ come coda dei messaggipersistence.enabled: Abilita l'archiviazione persistente dei dati di RocksMQpersistence.pvcDeletion: Se impostato su true, il PVC verrà eliminato quando l’istanza di Milvus verrà eliminatapersistentVolumeClaim.spec: Specifiche standard del PVC di KubernetesaccessModes: In genereReadWriteOnceper lo storage a blocchistorageClassName: La classe di archiviazione del proprio clusterstorage: Dimensione del volume persistente
Configurazione di Woodpecker
Woodpecker è un Write-Ahead Log (WAL) cloud-native progettato per lo storage a oggetti. Offre un throughput elevato, un basso overhead operativo e una scalabilità senza soluzione di continuità. Per ulteriori dettagli, consultare Utilizzo di Woodpecker.
Configurazione di Pulsar
Pulsar gestisce i log delle modifiche recenti, genera log di streaming e fornisce sottoscrizioni ai log. La configurazione di Pulsar come archivio dei messaggi è supportata sia in Milvus standalone che nel cluster Milvus. Tuttavia, con Milvus Operator, è possibile configurare Pulsar come archivio dei messaggi solo per il cluster Milvus. Aggiungere i campi obbligatori in " spec.dependencies.pulsar " per configurare Pulsar.
pulsar Supporta external e inCluster.
Pulsar esterno
external indica l’utilizzo di un servizio Pulsar esterno.
I campi utilizzati per configurare un servizio Pulsar esterno includono:
external: Un valoretrueindica che Milvus utilizza un servizio Pulsar esterno.endpoints: Gli endpoint di Pulsar.
Esempio
L'esempio seguente configura un servizio Pulsar esterno.
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 interno
inCluster indica che all’avvio di un cluster Milvus, un servizio Pulsar viene avviato automaticamente all’interno del cluster.
Esempio
L'esempio seguente illustra la configurazione di un servizio Pulsar interno.
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 `, come mostrato nell’esempio precedente.Supponendo che il file di configurazione si chiami ` milvuscluster.yaml`, eseguire il comando seguente per applicare la configurazione.
kubectl apply -f milvuscluster.yaml
Configurazione di Kafka
Pulsar è l’archivio messaggi predefinito in un cluster Milvus. Se si desidera utilizzare Kafka, aggiungere il campo opzionale ` msgStreamType ` per configurare Kafka.
kafka Supporta external e inCluster.
Kafka esterno
external indica l’utilizzo di un servizio Kafka esterno.
I campi utilizzati per configurare un servizio Kafka esterno includono:
external: Un valoretrueindica che Milvus utilizza un servizio Kafka esterno.brokerList: L'elenco dei broker a cui inviare i messaggi.
Esempio
L'esempio seguente configura un servizio Kafka esterno.
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"
# ...
Le configurazioni SASL sono supportate nella versione v0.8.5 o successive dell’operatore.
Kafka interno
inCluster indica che all’avvio di un cluster Milvus, un servizio Kafka si avvia automaticamente all’interno del cluster.
Esempio
L'esempio seguente illustra la configurazione di un servizio Kafka interno.
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: {}
Qui è possibile trovare tutte le voci di configurazione necessarie per configurare un servizio Kafka interno. Aggiungere le voci di configurazione necessarie nella sezione " kafka.inCluster.values".
Supponendo che il file di configurazione si chiami milvuscluster.yaml, eseguire il comando seguente per applicare la configurazione.
kubectl apply -f milvuscluster.yaml
Prossimi passi
Scopri come configurare altre dipendenze di Milvus con Milvus Operator: