Passaggio da Pulsar a Woodpecker

Questa pagina descrive come passare dalla coda dei messaggi (MQ) di un cluster Milvus da Pulsar (integrato o esterno) a Woodpecker (backend MinIO) e viceversa. Per il flusso di lavoro generale e i prerequisiti, consultare Passare alla coda dei messaggi.

Prerequisito: la funzionalità "Cambio della coda dei messaggi" è disponibile in Milvus 3.0 e versioni successive. Aggiornare l’istanza di Milvus a Milvus 3.0 o versioni successive prima di iniziare: la funzionalità non è disponibile nelle versioni precedenti.

Il cambio della coda dei messaggi è un’operazione ad alto rischio. Scegli la sezione corrispondente al tuo metodo di distribuzione — Con Helm o Con Milvus Operator — e seguila dall’inizio alla fine. Non mescolare i comandi di Helm e Operator.

Con Helm

Passaggio da Pulsar a Woodpecker (Helm)

Passaggio 1: Verifica che l’istanza di Milvus sia in esecuzione. Assicurati che il tuo cluster Milvus funzioni correttamente — ad esempio, creando una raccolta di prova, inserendo dati ed eseguendo una query.

Passaggio 2: Eseguire il cambio di MQ. Esporre l’interfaccia di gestione MixCoord, quindi chiamare l’API di cambio:

kubectl port-forward --address 0.0.0.0 service/my-release-milvus-mixcoord 29091:9091

In un altro terminale:

curl -X POST http://127.0.0.1:29091/management/wal/alter \
  -H "Content-Type: application/json" \
  -d '{"target_wal_name": "woodpecker"}'

Passaggio 3: verificare che il passaggio sia stato completato.

kubectl logs <mixcoord-pod> | grep "successfully updated mq.type configuration in etcd"

Se il passaggio ha esito positivo, viene registrato il messaggio " [mqTypeValue=woodpecker]".

Passaggio 4: (Facoltativo) Arrestare Pulsar ed eseguire la pulizia. Per Pulsar integrato, disabilitare Pulsar e abilitare Woodpecker, quindi eliminare i PVC di Pulsar:

helm upgrade my-release zilliztech/milvus \
  --set image.all.tag=v3.0.1 \
  --set pulsarv3.enabled=false \
  --set woodpecker.enabled=true \
  --set streaming.enabled=true \
  --set indexNode.enabled=false
kubectl get pvc | grep my-release-pulsarv3
kubectl delete pvc <pulsar-pvc-name> ...

Per Pulsar esterno, ripulire gli argomenti Milvus nell’istanza Pulsar esterna. Gli argomenti Milvus seguono il formato <cluster_prefix>-dml_<seqNo>_<TimeTick><Version> (ad esempio, by-dev-rootcoord-dml_10_464633776992639586v0).

Se si prevede di tornare a Pulsar in un secondo momento, ripulire prima i dati/argomenti per evitare conflitti. A causa delle limitazioni dei chart Helm, al momento non è possibile tornare a un’istanza di Pulsar integrata.

Passaggio da Woodpecker a Pulsar (Helm)

Passaggio 1: Verificare che l’istanza di Milvus sia in esecuzione.

Passaggio 2: configurare la connessione Pulsar di destinazione e riavviare Milvus. Il passaggio richiede che Milvus conosca già la connessione Pulsar, quindi inserirla in user.yaml tramite extraConfigFiles e applicare con helm upgrade (che esegue il rollover dei pod). Per la funzionalità Switch MQ è richiesto streaming.enabled=true.

# values.yaml
extraConfigFiles:
  user.yaml: |+
    pulsar:
      address: <pulsar addr>
      port: <pulsar port, e.g. 6650>
helm upgrade -i my-release zilliztech/milvus \
  --set pulsarv3.enabled=true \
  --set woodpecker.enabled=false \
  --set streaming.enabled=true \
  -f values.yaml

Attendere che tutti i pod siano pronti, quindi verificare che la configurazione di accesso a Pulsar sia stata incorporata nella configurazione di Milvus.

Passaggio 3: Eseguire il passaggio a MQ.

Assicurarsi che il Pulsar di destinazione non contenga argomenti Milvus provenienti da una configurazione precedente. Se si tratta del primo passaggio a Pulsar, ignorare questa nota; in caso contrario, eliminare prima gli argomenti Milvus residui con gli stessi nomi.

kubectl port-forward --address 0.0.0.0 service/my-release-milvus-mixcoord 29091:9091

In un altro terminale:

curl -X POST http://127.0.0.1:29091/management/wal/alter \
  -H "Content-Type: application/json" \
  -d '{"target_wal_name": "pulsar"}'

Passaggio 4: verificare che il passaggio sia stato completato.

kubectl logs <mixcoord-pod> | grep "successfully updated mq.type configuration in etcd"

Se il passaggio va a buon fine, viene registrato il messaggio " [mqTypeValue=pulsar]".

Passaggio 5: (Facoltativo) Rimuovere i dati di Woodpecker. Eliminare i dati di Woodpecker su MinIO/S3 (in <rootPath>/wp/..., in genere files/wp/...) e i metadati di Woodpecker in etcd (etcdctl get woodpecker --prefix). Se si prevede di tornare a Woodpecker in un secondo momento, rimuovere prima questi file.

Con Milvus Operator

Passaggio da Pulsar a Woodpecker (Milvus Operator)

Passaggio 1: Verificare che l’istanza di Milvus sia in esecuzione.

Passaggio 2: Eseguire il passaggio a MQ. Il servizio MixCoord non è esposto, quindi eseguire l’API di passaggio dall’interno del pod MixCoord:

kubectl exec -it <mixcoord-pod> -- \
  curl -X POST http://localhost:9091/management/wal/alter \
  -H "Content-Type: application/json" \
  -d '{"target_wal_name": "woodpecker"}'

Passaggio 3: Verificare che il passaggio sia stato completato.

kubectl logs <mixcoord-pod> | grep "successfully updated mq.type configuration in etcd"

Se il passaggio va a buon fine, viene registrato il messaggio " [mqTypeValue=woodpecker]".

Passaggio 4: Aggiornare il tipo di MQ nell’Operator. Aggiornare la configurazione gestita dall’Operator in modo che l’Operator non annulli il passaggio. Creare change_configmap.yaml:

apiVersion: milvus.io/v1beta1
kind: Milvus
metadata:
  name: my-release
  labels:
    app: milvus
spec:
  dependencies:
    msgStreamType: woodpecker
kubectl patch -f change_configmap.yaml --patch-file change_configmap.yaml --type merge

Passaggio 5: (Facoltativo) Arrestare Pulsar ed eseguire la pulizia. Per Pulsar integrato, disinstallare la versione di Pulsar ed eliminare i relativi PVC:

helm uninstall my-release-pulsar
kubectl get pvc | grep my-release-pulsar
kubectl delete pvc <pulsar-pvc-name> ...

Per Pulsar esterno, ripulire gli argomenti Milvus (formato <cluster_prefix>-dml_<seqNo>_<TimeTick><Version>).

Se si prevede di tornare a Pulsar in un secondo momento, ripulire prima i dati/argomenti per evitare conflitti. A causa delle limitazioni dei chart Helm, al momento non è possibile tornare a un’istanza di Pulsar integrata.

Passaggio da Woodpecker a Pulsar (Milvus Operator)

Passaggio 1: Verificare che l’istanza di Milvus sia in esecuzione.

Passaggio 2: configurare la connessione Pulsar di destinazione e riavviare Milvus. Inserire la connessione Pulsar in spec.config (l’Operator converte spec.config in user.yaml) e impostare il tipo di MQ; l’applicazione del CR aggiorna i pod con la nuova configurazione.

# change_configmap.yaml
apiVersion: milvus.io/v1beta1
kind: Milvus
metadata:
  name: my-release
  labels:
    app: milvus
spec:
  config:
    pulsar:
      address: <pulsar addr>
      port: <pulsar port, e.g. 6650>
  dependencies:
    msgStreamType: pulsar
kubectl patch -f change_configmap.yaml --patch-file change_configmap.yaml --type merge

Attendere che tutti i pod siano pronti, quindi verificare che la configurazione di accesso a Pulsar sia stata integrata nella configurazione di Milvus.

Passaggio 3: Eseguire il passaggio a MQ.

Assicurarsi che il Pulsar di destinazione non contenga argomenti Milvus provenienti da una configurazione precedente. Se si tratta del primo passaggio a Pulsar, ignorare questa nota; in caso contrario, eliminare prima gli argomenti Milvus residui con gli stessi nomi.

kubectl exec -it <mixcoord-pod> -- \
  curl -X POST http://localhost:9091/management/wal/alter \
  -H "Content-Type: application/json" \
  -d '{"target_wal_name": "pulsar"}'

Passaggio 4: verificare che il passaggio sia stato completato.

kubectl logs <mixcoord-pod> | grep "successfully updated mq.type configuration in etcd"

Se il passaggio ha esito positivo, viene registrato il messaggio « [mqTypeValue=pulsar] ».

Passaggio 5: (Facoltativo) Rimuovere i dati di Woodpecker. Eliminare i dati di Woodpecker su MinIO/S3 (nella directory <rootPath>/wp/..., in genere files/wp/...) e i metadati di Woodpecker in etcd (etcdctl get woodpecker --prefix). Se si prevede di tornare a Woodpecker in un secondo momento, rimuovere prima questi file.

Scenari supportati

MQ di origineMQ di destinazioneHelmOperatore Milvus
Pulsar integratoWoodpecker (MinIO)SupportatoSupportato
Pulsar esternoWoodpecker (MinIO)SupportatoSupportato
Woodpecker (MinIO)Pulsar esternoSupportatoSupportato
PulsarWoodpecker (locale)Supportato ma non consigliato (tutti i pod necessitano di un sistema di file condiviso)Non supportato

Tradotto daDeepL

Prova Milvus gestito gratuitamente

Zilliz Cloud è senza problemi, basato su Milvus e 10 volte più veloce.

Inizia
Feedback

Questa pagina è stata utile?