milvus-logo
LFAI
Home
  • Leitfaden für die Verwaltung
    • Verwalten von Abhängigkeiten

Aufrüstung von Pulsar

Dieser Artikel beschreibt, wie Sie Ihre Pulsar-Komponente von V2 auf V3 aktualisieren können, wenn Sie bereits einen funktionierenden Milvus-Einsatz mit Pulsar V2 haben.

Seit Milvus v2.5 verwenden milvus-helm und milvus-operator standardmäßig Pulsar V3, um einige Bugs und Sicherheitslücken zu beheben. Während Milvus 2.5 mit Pulsar 2.x kompatibel ist, ist ein Upgrade auf Pulsar V3 optional. Um die Stabilität und Leistung zu verbessern, empfehlen wir ein Upgrade auf Pulsar V3.

Wenn Sie lieber Pulsar V2 mit Milvus v2.5.x verwenden möchten, lesen Sie bitte Pulsar V2 mit Milvus v2.5.x verwenden.

  1. Der Upgrade-Vorgang erfordert eine kurze Unterbrechung des Dienstes (je nach Datenmenge dauert er zwischen einigen Minuten und mehr als zehn Minuten).

  2. Vor dem Vorgang müssen Sie alle laufenden Clients davon abhalten, Daten in Milvus zu schreiben. Andernfalls können die geschriebenen Daten verloren gehen.

  3. Dieser Artikel geht davon aus, dass Milvus im Namensraum default installiert ist und den Namen my-release trägt. Bitte ändern Sie die Parameter auf Ihren eigenen Namespace und Freigabenamen, während Sie die von dieser Seite kopierten Befehle ausführen.

  4. Stellen Sie sicher, dass Ihre Arbeitsumgebung unter dem oben genannten Namespace im Kubernetes-Cluster über Berechtigungen verfügt und die folgenden Befehle installiert sind.

    a. kubectl >= 1.20

    b. helm >= 3.14.0

    c. cat, grep, awk für String-Manipulationsoperationen

    d. curl oder Attu v2.4+ für die Interaktion mit der milvus management API

Fahrplan

Der Upgrade-Prozess umfasst die folgenden Schritte:

  1. Persistieren Sie nicht verbrauchte Daten in pulsar.

  2. Stoppen Sie Milvus und löschen Sie Pulsar V2.

  3. Starten Sie Pulsar V3 und Milvus.

Prozeduren

Dieser Abschnitt enthält die detaillierten Verfahren für das Upgrade von Pulsar von V2 auf V3 in Milvus.

Persistieren von nicht verbrauchten Daten in Pulsar

In diesem Schritt müssen Sie sicherstellen, dass die in Pulsar vorhandenen Daten in den Objektspeicherdienst persistiert wurden. Es gibt zwei Ansätze, von denen Sie den Ihren Bedürfnissen entsprechenden wählen können.

Ansatz 1: Verwendung von Attu

Wenn Sie nur eine kleine Anzahl von Sammlungen in Ihrer Milvus-Bereitstellung mit nicht vielen Segmenten haben, können Sie Attu verwenden, um die Daten im Objektspeicherdienst zu persistieren.

  1. Wählen Sie jede Sammlung in all Ihren Datenbanken aus, gehen Sie in das Panel Segments und klicken Sie auf die Schaltfläche Flush

    Segment panel of a collection Segment-Panel einer Sammlung

  2. Klicken Sie dann im Popup-Fenster erneut auf Flush.

    Data flush prompt in Attu Aufforderung zur Datenflutung in Attu

  3. Warten Sie dann, bis die Persistent Segment States aller Sammlungen Flushed sind.

    View data flush status in Attu Anzeigen des Datenflush-Status in Attu

Ansatz 2: Verwendung der Verwaltungs-API

  1. Proxy-Port 9091 des Milvus-Proxys auf dem lokalen Host für nachfolgende Operationen.

    kubectl -n default port-forward deploy/my-release-milvus-proxy 9091:9091 &
    

    Ausgabe.

    [1] 8116
    Forwarding from 127.0.0.1:9091 -> 9091
    
    
  2. Pid für spätere Bereinigung speichern.

    pid=8116
    
    
  3. Auslösen der Aktion zum Persistieren aller eingefügten Daten von Pulsar zu Ojbect Storage.

    curl 127.0.0.1:9091/api/v1/collections \
    |curl 127.0.0.1:9091/api/v1/persist -d @/dev/stdin\
    |jq '.flush_coll_segIDs'| jq '[.[] | .data[]]' | jq '{segmentIDs: (.)}' \
    > flushing_segments.json
    cat flushing_segments.json
    
    

    Ausgabe.

    {
      "segmentIDs": [
        454097953998181000,
        454097953999383600,
        454097953998180800
      ]
    }
    
    
  4. Prüfen Sie Alle Segmente geleert.

    cat flushing_segments.json|  curl -X GET 127.0.0.1:9091/api/v1/persist/state -d @/dev/stdin 
    
    

    Wenn der Vorgang abgeschlossen ist, sollten Sie die folgende Ausgabe sehen

    {"status":{},"flushed":true}
    
    
  5. Stoppen Sie den kubectl port-forward Prozess im Hintergrund.

    kill $pid
    
    

    Ausgabe.

    [1]  + 8116 terminated  kubectl -n default port-forward deploy/my-release-milvus-proxy 9091:9091                      
    
    

Milvus stoppen und Pulsar V2 löschen

In diesem Schritt müssen Sie den Milvus-Pod stoppen und die Pulsar-V2-Bereitstellung löschen. Es sind zwei separate Abschnitte verfügbar:

Pulsar V2 mit dem Helm löschen

Wenn Sie Milvus mit Hilfe des Milvus Helm-Diagramms installiert haben, befolgen Sie die nachstehenden Schritte, um den Milvus-Pod zu stoppen und die Pulsar V2-Bereitstellung zu löschen.

  1. Speichern Sie die aktuellen Milvus-Freigabewerte auf values.yaml für eine spätere Wiederherstellung.

    helm -n default get values my-release -o yaml > values.yaml
    cat values.yaml
    
    
  2. Verwenden Sie den Befehl, um Milvus und alle Abhängigkeiten zu stoppen. Machen Sie sich keine Sorgen um die Datenvolumina, sie werden standardmäßig beibehalten.

    helm -n default uninstall my-release
    
    

    Ausgabe

    These resources were kept due to the resource policy:
    [PersistentVolumeClaim] my-release-minio
    
    release "my-release" uninstalled
    
    
  3. Liste pulsar PVCs & PVs (Persistent Volume Claims & Persistent Volume) muss gelöscht werden

    kubectl -n default get pvc -lapp=pulsar,release=my-release |grep -v NAME |awk '{print $1}' > pulsar-pvcs.txt
    kubectl -n default get pvc -lapp=pulsar,release=my-release -o custom-columns=VOL:.spec.volumeName|grep -v VOL > pulsar-pvs.txt
    echo "Volume Claims:"
    cat pulsar-pvcs.txt
    echo "Volumes:"
    cat pulsar-pvs.txt
    
    

    Ausgabe

    Volume Claims:
    my-release-pulsar-bookie-journal-my-release-pulsar-bookie-0
    my-release-pulsar-bookie-journal-my-release-pulsar-bookie-1
    my-release-pulsar-bookie-ledgers-my-release-pulsar-bookie-0
    my-release-pulsar-bookie-ledgers-my-release-pulsar-bookie-1
    my-release-pulsar-zookeeper-data-my-release-pulsar-zookeeper-0
    Volumes:
    pvc-f590a4de-df31-4ca8-a424-007eac3c619a
    pvc-17b0e215-3e14-4d14-901e-1a1dda9ff5a3
    pvc-72f83c25-6ea1-45ee-9559-0b783f2c530b
    pvc-60dcb6e4-760d-46c7-af1a-d1fc153b0caf
    pvc-2da33f64-c053-42b9-bb72-c5d50779aa0a
    
    
  4. Prüfen Sie, ob die PVC-Liste von pulsar-pvcs.txt alle für Pulsar ist. Sobald Sie bestätigt haben, dass kein Fehler vorliegt, löschen Sie die PVCs.

    cat pulsar-pvcs.txt |xargs -I {} kubectl -n default delete pvc {} --wait=false
    
    

    Ausgabe.

    persistentvolumeclaim "my-release-pulsar-bookie-journal-my-release-pulsar-bookie-0" deleted
    persistentvolumeclaim "my-release-pulsar-bookie-journal-my-release-pulsar-bookie-1" deleted
    persistentvolumeclaim "my-release-pulsar-bookie-ledgers-my-release-pulsar-bookie-0" deleted
    persistentvolumeclaim "my-release-pulsar-bookie-ledgers-my-release-pulsar-bookie-1" deleted
    persistentvolumeclaim "my-release-pulsar-zookeeper-data-my-release-pulsar-zookeeper-0" deleted
    
    
  5. (Optional) Je nach der Speicherklasse, die das PVC bereitstellt, müssen Sie das PV eventuell auch manuell entfernen.

    cat pulsar-pvs.txt |xargs -I {} kubectl -n default delete pvc {} --wait=false
    
    

    Es ist in Ordnung, wenn sie NotFound-Fehler ausgibt. Sie ist bereits von den Kubernetes-Controllern gelöscht worden.

    Error from server (NotFound): persistentvolumeclaims "pvc-f590a4de-df31-4ca8-a424-007eac3c619a" not found
    Error from server (NotFound): persistentvolumeclaims "pvc-17b0e215-3e14-4d14-901e-1a1dda9ff5a3" not found
    Error from server (NotFound): persistentvolumeclaims "pvc-72f83c25-6ea1-45ee-9559-0b783f2c530b" not found
    Error from server (NotFound): persistentvolumeclaims "pvc-60dcb6e4-760d-46c7-af1a-d1fc153b0caf" not found
    Error from server (NotFound): persistentvolumeclaims "pvc-2da33f64-c053-42b9-bb72-c5d50779aa0a" not found
    
    

Pulsar V2 mit Milvus Operator löschen

Wenn Sie Milvus mit dem Milvus Operator installiert haben, befolgen Sie die folgenden Schritte, um den Milvus-Pod zu stoppen und die Pulsar-V2-Bereitstellung zu löschen.

  1. Speichern Sie das aktuelle Milvus-Manifest unter milvus.yaml zur späteren Verwendung.

    kubectl -n default get milvus my-release -o yaml > milvus.yaml
    head milvus.yaml -n 20
    
    

    Ausgabe.

    apiVersion: milvus.io/v1beta1
    kind: Milvus
    metadata:
      annotations:
        milvus.io/dependency-values-merged: "true"
        milvus.io/pod-service-label-added: "true"
        milvus.io/querynode-current-group-id: "0"
      creationTimestamp: "2024-11-22T08:06:59Z"
      finalizers:
      - milvus.milvus.io/finalizer
      generation: 3
      labels:
        app: milvus
        milvus.io/operator-version: 1.1.2
    name: my-release
    namespace: default
    resourceVersion: "692217324"
    uid: 7a469ed0-9df1-494e-bd9a-340fac4305b5
    spec:
      components:
    
    
  2. Erstellen Sie eine patch.yaml Datei mit folgendem Inhalt.

    # a patch to retain etcd & storage data and delete pulsar data while delete milvus
    spec:
      dependencies:
        etcd:
          inCluster:
            deletionPolicy: Retain
            pvcDeletion: false
        storage:
          inCluster:
            deletionPolicy: Retain
            pvcDeletion: false
        pulsar:
          inCluster:
            deletionPolicy: Delete
            pvcDeletion: true
    
    
  3. Verwenden Sie kubectl patch, um etcd- und Speicherdaten beizubehalten und Pulsar-Daten zu löschen, während Sie Milvus löschen.

    kubectl -n default patch milvus my-release --patch-file patch.yaml --type=merge
    
    

    Ausgabe.

    milvus.milvus.io/my-release patched
    
    
  4. Stoppen Sie Milvus und löschen Sie pulsar V2. Kümmern Sie sich nicht um die etcd- und Objektspeicherdaten, diese werden standardmäßig beibehalten.

    kubectl -n default delete milvus my-release --wait=false
    kubectl -n default get milvus my-release
    kubectl -n default delete milvus my-release --wait=true
    
    

    Ausgabe: Beachten Sie, dass es ein paar Minuten dauern kann, bis milvus ordnungsgemäß beendet ist und der Operator die pulsar-Volumes gelöscht hat.

    milvus.milvus.io "my-release" deleted
    NAME         MODE      STATUS     UPDATED   AGE
    my-release   cluster   Deleting   True      41m
    milvus.milvus.io "my-release" deleted
    
    

    Warten Sie, bis der Befehl beendet ist.

  5. Prüfen Sie erneut, ob die Milvus-Ressource verschwunden ist.

    kubectl -n default get milvus my-release
    
    

    Die Ausgabe sollte wie folgt aussehen.

    No resources found in default namespace.
    
    

Pulsar V3 und Milvus starten

In diesem Schritt müssen Sie die Pulsar V3- und Milvus-Pods starten. Es sind zwei separate Abschnitte verfügbar:

  • Für Helm-Benutzer

    Wenn Sie Milvus mit Hilfe des Milvus Helm Diagramms installiert haben, gehen Sie zu Für Helm Benutzer.

  • Für Milvus Operator Benutzer

    Wenn Sie Milvus mit dem Milvus Operator installiert haben, gehen Sie zu Für Milvus Operator Benutzer.

Starten Sie Pulsar V3 und verwenden Sie Helm

  1. Bearbeiten Sie die im vorherigen Schritt gespeicherte values.yaml.

    # change the following:
    pulsar:
      enabled: false # set to false
      # you may also clean up rest fields under pulsar field
      # it's ok to keep them though.
    pulsarv3:
      enabled: true
      # append other values for pulsar v3 chart if needs
    
    
  2. Aktualisieren Sie Ihr lokales Helm-Repositorium

    helm repo add zilliztech https://zilliztech.github.io/milvus-helm
    helm repo update zilliztech
    
    

    Ausgabe

    "zilliztech" already exists with the same configuration, skipping
    Hang tight while we grab the latest from your chart repositories...
    ...Successfully got an update from the "zilliztech" chart repository
    Update Complete. ⎈Happy Helming!⎈
    
    
  3. Installieren Sie Ihre Milvus-Version mit der neuesten Helm-Chart-Version unter Verwendung der editierten values.yaml

    helm -n default install my-release zilliztech/milvus --reset-values -f values.yaml
    
    

    Ausgabe

    NAME: my-release
    LAST DEPLOYED: Fri Nov 22 15:31:27 2024
    NAMESPACE: default
    STATUS: deployed
    REVISION: 1
    TEST SUITE: None
    
    
  4. Überprüfen Sie die Pods, um zu sehen, ob alle mit kubectl -n default get pods geplant und ausgeführt werden.

    Es kann ein paar Minuten dauern, bis alle Pods gestartet sind.

    Die Ausgabe ist wie folgt.

    NAME                                          READY   STATUS      RESTARTS   AGE
    my-release-etcd-0                             1/1     Running     0          4m3s
    my-release-milvus-datanode-56487bc4bc-s6mbd   1/1     Running     0          4m5s
    my-release-milvus-indexnode-6476894d6-rv85d   1/1     Running     0          4m5s
    my-release-milvus-mixcoord-6d8875cb9c-67fcq   1/1     Running     0          4m4s
    my-release-milvus-proxy-7bc45d57c5-2qf8m      1/1     Running     0          4m4s
    my-release-milvus-querynode-77465747b-kt7f4   1/1     Running     0          4m4s
    my-release-minio-684ff4f5df-pnc97             1/1     Running     0          4m5s
    my-release-pulsarv3-bookie-0                  1/1     Running     0          4m3s
    my-release-pulsarv3-bookie-1                  1/1     Running     0          4m3s
    my-release-pulsarv3-bookie-2                  1/1     Running     0          4m3s
    my-release-pulsarv3-bookie-init-6z4tk         0/1     Completed   0          4m1s
    my-release-pulsarv3-broker-0                  1/1     Running     0          4m2s
    my-release-pulsarv3-broker-1                  1/1     Running     0          4m2s
    my-release-pulsarv3-proxy-0                   1/1     Running     0          4m2s
    my-release-pulsarv3-proxy-1                   1/1     Running     0          4m2s
    my-release-pulsarv3-pulsar-init-wvqpc         0/1     Completed   0          4m1s
    my-release-pulsarv3-recovery-0                1/1     Running     0          4m3s
    my-release-pulsarv3-zookeeper-0               1/1     Running     0          4m2s
    my-release-pulsarv3-zookeeper-1               1/1     Running     0          4m2s
    my-release-pulsarv3-zookeeper-2               1/1     Running     0          4m2s
    
    

Pulsar V3 starten und Milvus Operator verwenden

  1. Bearbeiten Sie die im vorherigen Schritt gespeicherte milvus.yaml.

    # change the followings fields:
    apiVersion: milvus.io/v1beta1
    kind: Milvus
    metadata:
      annotations: null # this field should be removed or set to null
      resourceVersion: null # this field should be removed or set to null
      uid: null # this field should be removed or set to null
    spec:
      dependencies:
        pulsar:
          inCluster:
            chartVersion: pulsar-v3
            # delete all previous values for pulsar v2 and set it to null.
            # you may add additional values here for pulsar v3 if you're sure about it.
            values: null
    
    
  2. Stellen Sie sicher, dass Ihr Milvus Operator auf v1.1.2 oder eine neuere Version aktualisiert wurde.

    helm repo add milvus-operator https://zilliztech.github.io/milvus-operator
    helm repo update milvus-operator
    helm -n milvus-operator upgrade milvus-operator milvus-operator/milvus-operator
    
    

    Verwenden Sie den Befehl zum Starten von Milvus mit Pulsar V3

    kubectl create -f milvus.yaml
    
    

    Ausgabe

    milvus.milvus.io/my-release created
    
    
  3. Überprüfen Sie die Pods, um zu sehen, ob sie alle mit kubectl -n default get pods geplant und ausgeführt werden.

    Es kann ein paar Minuten dauern, bis alle Pods gestartet sind.

    Die Ausgabe ist wie folgt.

    NAME                                            READY   STATUS      RESTARTS   AGE
    my-release-etcd-0                               1/1     Running     0          65m
    my-release-milvus-datanode-57fd59ff58-5mdrk     1/1     Running     0          93s
    my-release-milvus-indexnode-67867c6b9b-4wsbw    1/1     Running     0          93s
    my-release-milvus-mixcoord-797849f9bb-sf8z5     1/1     Running     0          93s
    my-release-milvus-proxy-5d5bf98445-c55m6        1/1     Running     0          93s
    my-release-milvus-querynode-0-64797f5c9-lw4rh   1/1     Running     0          92s
    my-release-minio-79476ccb49-zvt2h               1/1     Running     0          65m
    my-release-pulsar-bookie-0                      1/1     Running     0          5m10s
    my-release-pulsar-bookie-1                      1/1     Running     0          5m10s
    my-release-pulsar-bookie-2                      1/1     Running     0          5m10s
    my-release-pulsar-bookie-init-v8fdj             0/1     Completed   0          5m11s
    my-release-pulsar-broker-0                      1/1     Running     0          5m11s
    my-release-pulsar-broker-1                      1/1     Running     0          5m10s
    my-release-pulsar-proxy-0                       1/1     Running     0          5m11s
    my-release-pulsar-proxy-1                       1/1     Running     0          5m10s
    my-release-pulsar-pulsar-init-5lhx7             0/1     Completed   0          5m11s
    my-release-pulsar-recovery-0                    1/1     Running     0          5m11s
    my-release-pulsar-zookeeper-0                   1/1     Running     0          5m11s
    my-release-pulsar-zookeeper-1                   1/1     Running     0          5m10s
    my-release-pulsar-zookeeper-2                   1/1     Running     0          5m10s
    
    

Übersetzt vonDeepL

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started
Feedback

War diese Seite hilfreich?