Configurazione dell'archiviazione dei messaggi con Milvus Operator
Milvus utilizza RocksMQ, Pulsar o Kafka per la gestione dei log delle modifiche recenti, l'output dei log dei flussi e la fornitura di sottoscrizioni ai log. Questo argomento illustra come configurare le dipendenze dello storage dei messaggi quando si installa Milvus con Milvus Operator. Per maggiori dettagli, consultate Configurazione dell'archiviazione dei messaggi con Milvus Operator nel repository di Milvus Operator.
Questo argomento presuppone che abbiate installato Milvus Operator.
È necessario specificare un file di configurazione per utilizzare Milvus Operator per avviare un cluster Milvus.
kubectl apply -f https://raw.githubusercontent.com/zilliztech/milvus-operator/main/config/samples/milvus_cluster_default.yaml
È sufficiente modificare il modello di codice in milvus_cluster_default.yaml per configurare le dipendenze di terzi. Le sezioni seguenti illustrano come configurare rispettivamente object storage, etcd e Pulsar.
Prima di iniziare
La tabella seguente mostra se RocksMQ, Pulsar, Kafka e Woodpecker sono supportati in Milvus in modalità standalone e cluster.
| RocksMQ | Pulsar | Kafka | Woodpecker | |
|---|---|---|---|---|
| Modalità standalone | ✔️ | ✔️ | ✔️ | ✔️ |
| Modalità cluster | ✖️ | ✔️ | ✔️ | ✔️ |
Ci sono anche altre limitazioni per specificare l'archiviazione dei messaggi:
- È supportato un solo archivio messaggi per un'istanza Milvus. Tuttavia, esiste ancora una compatibilità con più archivi di messaggi impostati per un'istanza. La priorità è la seguente:
- modalità standalone: RocksMQ (predefinito) > Pulsar > Kafka
- modalità cluster: Pulsar (predefinito) > Kafka
- L'archiviazione dei messaggi non può essere modificata mentre il sistema Milvus è in funzione.
- È supportata solo la versione Kafka 2.x o 3.x.
- Limitazioni dell'aggiornamento: Limitazioni della coda di messaggi: Quando si esegue l'aggiornamento a Milvus v2.6.15, è necessario mantenere l'attuale scelta della coda di messaggi. Il passaggio da un sistema di code di messaggi all'altro durante l'aggiornamento non è supportato. Il supporto per il cambio di sistemi di code di messaggi sarà disponibile nelle versioni future.
Configurare RocksMQ
RocksMQ è il sistema di archiviazione dei messaggi predefinito in Milvus standalone.
Attualmente è possibile configurare RocksMQ come archivio messaggi per Milvus standalone solo con Milvus Operator.
Esempio
L'esempio seguente configura 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 chiave di configurazione:
msgStreamTyperocksmq: imposta esplicitamente RocksMQ come coda di messaggi.persistence.enabled: Abilita l'archiviazione persistente per i dati RocksMQpersistence.pvcDeletion: Quando è vero, il PVC viene cancellato quando l'istanza Milvus viene cancellata.persistentVolumeClaim.spec: Specifiche standard del PVC KubernetesaccessModes: TipicamenteReadWriteOnceper lo storage a blocchistorageClassName: Classe di archiviazione del clusterstorage: Dimensione del volume persistente
Configurare Woodpecker
Woodpecker è un registro Write-Ahead (WAL) cloud-native progettato per lo storage di oggetti. Offre un elevato throughput, un basso overhead operativo e una scalabilità senza soluzione di continuità. Per maggiori dettagli, vedere Utilizzo di Woodpecker.
Configurare Pulsar
Pulsar gestisce i registri delle modifiche recenti, produce registri di flusso e fornisce sottoscrizioni ai registri. La configurazione di Pulsar per l'archiviazione dei messaggi è supportata sia in Milvus standalone che in Milvus cluster. Tuttavia, con Milvus Operator, è possibile configurare Pulsar come archivio messaggi solo per Milvus cluster. Aggiungere i campi richiesti 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 si avvia automaticamente nel cluster.
Esempio
L'esempio seguente configura 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 sia denominato milvuscluster.yaml, eseguire il seguente comando per applicare la configurazione.
kubectl apply -f milvuscluster.yaml
Configurare Kafka
Pulsar è il sistema di archiviazione dei 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'uso 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 dell'operatore v0.8.5 o superiore.
Kafka interno
inCluster indica che all'avvio di un cluster Milvus, un servizio Kafka si avvia automaticamente nel cluster.
Esempio
L'esempio seguente configura 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 si trovano gli elementi di configurazione completi per configurare un servizio Kafka interno. Aggiungere le voci di configurazione necessarie sotto kafka.inCluster.values.
Supponendo che il file di configurazione sia denominato milvuscluster.yaml, eseguire il comando seguente per applicare la configurazione.
kubectl apply -f milvuscluster.yaml
Cosa succede dopo
Imparare a configurare altre dipendenze di Milvus con Milvus Operator: