Wechsel zwischen Pulsar und Woodpecker
Auf dieser Seite wird beschrieben, wie Sie die Nachrichtenwarteschlange (MQ) eines Milvus-Clusters in beide Richtungen zwischen Pulsar (integriert oder extern) und Woodpecker (MinIO-Backend) umschalten können. Informationen zum allgemeinen Arbeitsablauf und zu den Voraussetzungen finden Sie unter „Nachrichtenwarteschlange umschalten“.
Voraussetzung: Die Funktion „Switch MQ“ ist ab Milvus 3.0 verfügbar. Aktualisieren Sie Ihre Milvus-Instanz auf Milvus 3.0 oder höher, bevor Sie beginnen – die Funktion ist in früheren Versionen nicht verfügbar.
Das Umschalten der Nachrichtenwarteschlange ist ein risikoreicher Vorgang. Wählen Sie den Abschnitt aus, der Ihrer Bereitstellungsmethode entspricht – „Mit Helm“ oder „Mit Milvus Operator“ – und befolgen Sie die Anweisungen von oben bis unten. Mischen Sie keine Helm- und Operator-Befehle.
Mit Helm
Wechsel von Pulsar zu Woodpecker (Helm)
Schritt 1: Überprüfen Sie, ob die Milvus-Instanz läuft. Stellen Sie sicher, dass Ihr Milvus-Cluster ordnungsgemäß funktioniert – beispielsweise, indem Sie eine Testkollektion erstellen, Daten einfügen und eine Abfrage ausführen.
Schritt 2: Führen Sie den MQ-Wechsel durch. Stellen Sie die MixCoord-Verwaltungsschnittstelle bereit und rufen Sie dann die Switch-API auf:
kubectl port-forward --address 0.0.0.0 service/my-release-milvus-mixcoord 29091:9091
In einem anderen Terminal:
curl -X POST http://127.0.0.1:29091/management/wal/alter \
-H "Content-Type: application/json" \
-d '{"target_wal_name": "woodpecker"}'
Schritt 3: Überprüfen Sie, ob der Wechsel abgeschlossen ist.
kubectl logs <mixcoord-pod> | grep "successfully updated mq.type configuration in etcd"
Bei einem erfolgreichen Wechsel wird „ [mqTypeValue=woodpecker] “ protokolliert.
Schritt 4: (Optional) Pulsar anhalten und bereinigen. Deaktivieren Sie bei integriertem Pulsar Pulsar und aktivieren Sie Woodpecker; löschen Sie anschließend die Pulsar-PVCs:
helm upgrade my-release zilliztech/milvus \
--set image.all.tag=v3.0.0 \
--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> ...
Bei externem Pulsar bereinigen Sie die Milvus-Themen in der externen Pulsar-Instanz. Milvus-Themen folgen dem Format <cluster_prefix>-dml_<seqNo>_<TimeTick><Version> (zum Beispiel by-dev-rootcoord-dml_10_464633776992639586v0).
Wenn Sie später wieder zu Pulsar wechseln möchten, bereinigen Sie zunächst die Daten/Themen, um Konflikte zu vermeiden. Aufgrund von Einschränkungen des Helm-Charts ist ein Wechsel zurück zu einer integrierten Pulsar-Instanz derzeit nicht möglich.
Wechsel von Woodpecker zu Pulsar (Helm)
Schritt 1: Überprüfen Sie, ob die Milvus-Instanz läuft.
Schritt 2: Konfigurieren Sie die Zielverbindung zu Pulsar und starten Sie Milvus neu. Für den Wechsel muss Milvus die Pulsar-Verbindung bereits kennen. Tragen Sie diese daher über extraConfigFiles in „ user.yaml “ ein und wenden Sie die Änderung mit „ helm upgrade “ an (wodurch die Pods neu gestartet werden). „ streaming.enabled=true “ ist für die Switch-MQ-Funktion erforderlich.
# 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
Warten Sie, bis alle Pods bereit sind, und überprüfen Sie anschließend, ob die Pulsar-Zugriffskonfiguration in die Milvus-Konfiguration übernommen wurde.
Schritt 3: Führen Sie den MQ-Wechsel durch.
Stellen Sie sicher, dass der Ziel-Pulsar keine Milvus-Themen aus einer früheren Konfiguration enthält. Wenn dies Ihr erster Wechsel zu Pulsar ist, überspringen Sie diesen Hinweis; andernfalls bereinigen Sie zunächst verbleibende Milvus-Themen mit denselben Namen.
kubectl port-forward --address 0.0.0.0 service/my-release-milvus-mixcoord 29091:9091
In einem anderen Terminal:
curl -X POST http://127.0.0.1:29091/management/wal/alter \
-H "Content-Type: application/json" \
-d '{"target_wal_name": "pulsar"}'
Schritt 4: Überprüfen Sie, ob der Wechsel abgeschlossen ist.
kubectl logs <mixcoord-pod> | grep "successfully updated mq.type configuration in etcd"
Bei einer erfolgreichen Umstellung wird Folgendes protokolliert: „ [mqTypeValue=pulsar] “.
Schritt 5: (Optional) Woodpecker-Daten bereinigen. Löschen Sie die Woodpecker-Daten auf MinIO/S3 (unter „ <rootPath>/wp/... “, typischerweise „ files/wp/... “) sowie die Woodpecker-Metadaten in etcd (etcdctl get woodpecker --prefix). Wenn Sie später wieder zu Woodpecker zurückwechseln möchten, bereinigen Sie diese Dateien zunächst.
Mit dem Milvus Operator
Wechsel von Pulsar zu Woodpecker (Milvus Operator)
Schritt 1: Überprüfen Sie, ob die Milvus-Instanz läuft.
Schritt 2: Führen Sie den MQ-Wechsel durch. Da der MixCoord-Dienst nicht öffentlich zugänglich ist, führen Sie die Switch-API aus dem MixCoord-Pod heraus aus:
kubectl exec -it <mixcoord-pod> -- \
curl -X POST http://localhost:9091/management/wal/alter \
-H "Content-Type: application/json" \
-d '{"target_wal_name": "woodpecker"}'
Schritt 3: Überprüfen Sie, ob der Wechsel abgeschlossen ist.
kubectl logs <mixcoord-pod> | grep "successfully updated mq.type configuration in etcd"
Bei einem erfolgreichen Wechsel wird „ [mqTypeValue=woodpecker] “ protokolliert.
Schritt 4: Aktualisieren Sie den MQ-Typ im Operator. Aktualisieren Sie die vom Operator verwaltete Konfiguration, damit der Operator den Wechsel nicht rückgängig macht. Erstellen Sie „ 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
Schritt 5: (Optional) Pulsar anhalten und bereinigen. Bei integriertem Pulsar deinstallieren Sie die Pulsar-Version und löschen Sie deren PVCs:
helm uninstall my-release-pulsar
kubectl get pvc | grep my-release-pulsar
kubectl delete pvc <pulsar-pvc-name> ...
Bei externem Pulsar bereinigen Sie die Milvus-Themen (Format „ <cluster_prefix>-dml_<seqNo>_<TimeTick><Version> “).
Wenn Sie später wieder zu Pulsar zurückwechseln möchten, bereinigen Sie zunächst die Daten/Themen, um Konflikte zu vermeiden. Aufgrund von Einschränkungen des Helm-Charts ist ein Rückwechsel zu einer integrierten Pulsar-Instanz derzeit nicht möglich.
Wechsel von Woodpecker zu Pulsar (Milvus-Operator)
Schritt 1: Überprüfen Sie, ob die Milvus-Instanz läuft.
Schritt 2: Konfigurieren Sie die Verbindung zur Ziel-Pulsar-Instanz und starten Sie Milvus neu. Tragen Sie die Pulsar-Verbindung unter „ spec.config “ ein (der Operator wandelt „ spec.config “ in „ user.yaml “ um) und legen Sie den MQ-Typ fest; durch das Anwenden des CR werden die Pods mit der neuen Konfiguration neu gestartet.
# 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
Warten Sie, bis alle Pods bereit sind, und überprüfen Sie anschließend, ob die Pulsar-Zugriffskonfiguration in die Milvus-Konfiguration übernommen wurde.
Schritt 3: Führen Sie den MQ-Wechsel durch.
Stellen Sie sicher, dass das Ziel-Pulsar keine Milvus-Themen aus einer früheren Konfiguration enthält. Wenn dies Ihr erster Wechsel zu Pulsar ist, überspringen Sie diesen Hinweis; andernfalls bereinigen Sie zunächst verbleibende Milvus-Themen mit denselben Namen.
kubectl exec -it <mixcoord-pod> -- \
curl -X POST http://localhost:9091/management/wal/alter \
-H "Content-Type: application/json" \
-d '{"target_wal_name": "pulsar"}'
Schritt 4: Überprüfen Sie, ob die Umstellung abgeschlossen ist.
kubectl logs <mixcoord-pod> | grep "successfully updated mq.type configuration in etcd"
Bei einer erfolgreichen Umstellung wird Folgendes protokolliert: „ [mqTypeValue=pulsar] “.
Schritt 5: (Optional) Woodpecker-Daten bereinigen. Löschen Sie die Woodpecker-Daten auf MinIO/S3 (unter „ <rootPath>/wp/... “, typischerweise „ files/wp/... “) sowie die Woodpecker-Metadaten in etcd (etcdctl get woodpecker --prefix). Wenn Sie später wieder zu Woodpecker zurückwechseln möchten, bereinigen Sie diese Dateien zunächst.
Unterstützte Szenarien
| Quell-MQ | Ziel-MQ | Helm | Milvus-Operator |
|---|---|---|---|
| Integriertes Pulsar | Woodpecker (MinIO) | Unterstützt | Unterstützt |
| Externer Pulsar | Woodpecker (MinIO) | Unterstützt | Unterstützt |
| Woodpecker (MinIO) | Externer Pulsar | Unterstützt | Unterstützt |
| Pulsar | Woodpecker (lokal) | Unterstützt, aber nicht empfohlen (alle Pods benötigen ein gemeinsames Dateisystem) | Nicht unterstützt |