milvus-logo
LFAI
フロントページへ
  • 管理ガイド
    • 依存関係の管理

Pulsarのアップグレード

この記事では、既にPulsar V2を使ったMilvusデプロイメントが動作している場合に、PulsarコンポーネントをV2からV3にアップグレードする手順を説明します。

Milvus v2.5以降、milvus-helmと milvus-operatorは、いくつかのバグとセキュリティ脆弱性を修正するため、デフォルトでPulsar V3を使用します。 Milvus 2.5はPulsar 2.xと互換性がありますが、Pulsar V3へのアップグレードはオプションです。安定性とパフォーマンスを向上させるため、Pulsar V3へのアップグレードをお勧めします。

Pulsar V2をMilvus v2.5.xと併用したい場合は、Pulsar V2をMilvus v2.5.xと併用するをご参照ください。

  1. アップグレード作業には短時間のサービス停止が必要です(データ量にもよりますが、通常数分から10分以上かかります)。

  2. アップグレード作業前に、Milvusへのデータ書き込みを停止する必要があります。さもないと、書き込まれたデータが失われる可能性があります。

  3. 本記事では、Milvusが名前空間default 、名前my-release にインストールされていることを前提としています。このページからコピーしたコマンドを実行する際には、パラメータをご自身の名前空間とリリース名に変更してください。

  4. 作業環境がKubernetesクラスタの上記の名前空間配下にパーミッションがあり、以下のコマンドがインストールされていることを確認してください。

    a.kubectl >= 1.20

    b.helm >= 3.14.0

    c.catb.awk >= 1.20 b.grep>= 3.14.0 c. , , 文字列操作用

    d. milvus管理APIと対話するためのcurl またはAttu v2.4+

ロードマップ

アップグレードプロセスには以下のステップが含まれます:

  1. パルサーで消費されていないデータを永続化する。

  2. milvusを停止し、パルサーV2を削除。

  3. Pulsar V3とMilvusを起動します。

手順

このセクションでは、MilvusでPulsarをV2からV3にアップグレードする詳細手順を説明します。

Pulsarで消費されなかったデータの永続化

この手順では、Pulsar内の既存データがオブジェクト・ストレージ・サービスに永続化されていることを確認する必要があります。 2つのアプローチがあり、ニーズに合わせて選択することができます。

アプローチ1:Attuを使う

Milvusデプロイメントのコレクション数が少なく、セグメント数もそれほど多くない場合は、Attuを使用してデータをオブジェクト・ストレージ・サービスに永続化することができます。

  1. 全てのデータベースで全てのコレクションを選択し、Segments パネルに入り、Flush ボタンをクリックします。

    Segment panel of a collection コレクションのセグメントパネル

  2. ポップアップが表示されたら、Flush を再度クリックします。

    Data flush prompt in Attu Attuのデータフラッシュプロンプト

  3. すべてのコレクションのPersistent Segment StateがFlushed になるまで待ちます。

    View data flush status in Attu Attuでデータフラッシュステータスを表示する

アプローチ 2: 管理 API を使用する

  1. Milvusプロキシのポート9091をローカルホストにプロキシする。

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

    出力。

    [1] 8116
    Forwarding from 127.0.0.1:9091 -> 9091
    
    
  2. 後のクリーンアップのためにPidを保存。

    pid=8116
    
    
  3. 挿入された全てのデータをPulsarからOjbectストレージに永続化するアクションをトリガーする。

    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
    
    

    出力。

    {
      "segmentIDs": [
        454097953998181000,
        454097953999383600,
        454097953998180800
      ]
    }
    
    
  4. 全てのセグメントがフラッシュされたことを確認する。

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

    完了すると、以下の出力が表示されます。

    {"status":{},"flushed":true}
    
    
  5. バックグランドkubectl port-forward プロセスを停止する。

    kill $pid
    
    

    出力

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

Milvusを停止し、Pulsar V2を削除する

このステップでは、Milvusポッドを停止し、Pulsar V2デプロイメントを削除する必要があります。 利用可能なセクションは2つに分かれています:

Helmを使ってPulsar V2を削除する

Milvus Helmチャートを使用してMilvusをインストールした場合は、以下の手順に従ってMilvusポッドを停止し、Pulsar V2配備を削除してください。

  1. 後で復元できるよう、現在のMilvusリリース値をvalues.yaml

    helm -n default get values my-release -o yaml > values.yaml
    cat values.yaml
    
    
  2. コマンドを使用して、Milvusとすべての依存関係を停止します。データ・ボリュームについては心配しないでください、デフォルトで保持されます。

    helm -n default uninstall my-release
    
    

    出力

    These resources were kept due to the resource policy:
    [PersistentVolumeClaim] my-release-minio
    
    release "my-release" uninstalled
    
    
  3. リスト・パルサーPVC & PV(持続ボリューム・クレーム & 持続ボリューム)をクリアする必要があります。

    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
    
    

    出力

    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. pulsar-pvcs.txt 、PVCリストがすべてPulsar用かどうかを確認します。エラーがないことを確認したら、PVCを削除します。

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

    出力する。

    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. (オプション)PVCを提供しているストレージ・クラスによっては、PVを手動で削除する必要もあります。

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

    NotFoundエラーが出力されても問題ありません。kubernetesコントローラによって既に削除されています。

    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
    
    

Milvus Operatorを使ったPulsar V2の削除

Milvus Operatorを使ってMilvusをインストールした場合は、以下の手順でMilvusポッドを停止し、Pulsar V2デプロイメントを削除してください。

  1. 後で使用するため、現在のMilvus Manifestをmilvus.yaml

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

    出力します。

    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. 以下の内容を含むpatch.yaml Fileを作成します。

    # 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. milvusを削除する間、kubectl patch 、etcdとストレージ・データを保持し、パルサー・データを削除する。

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

    出力。

    milvus.milvus.io/my-release patched
    
    
  4. milvusを停止し、パルサーV2を削除する。etcdとオブジェクト・ストレージのデータ量はデフォルトで保持されるため、心配する必要はない。

    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
    
    

    出力:milvusの停止とpulsarボリュームの削除には数分かかる場合があります。

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

    コマンドが終了するまでお待ちください。

  5. milvusリソースがなくなっていることを再度確認してください。

    kubectl -n default get milvus my-release
    
    

    出力は以下のようになるはずです。

    No resources found in default namespace.
    
    

Pulsar V3とmilvusの起動

このステップでは、Pulsar V3とMilvusポッドを起動する必要があります。 利用可能なセクションは2つに分かれています:

  • Helmユーザの場合

    Milvus Helmチャートを使ってMilvusをインストールした場合は、"Helm User"へ進んでください。

  • Milvus Operator ユーザ向け

    Milvus Operatorを使ってMilvusをインストールした場合は、For Milvus Operator Userへ進んでください。

Pulsar V3を起動し、Helmを使用する。

  1. 前のステップで保存した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. ローカルのhelmレポを更新する

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

    出力

    "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. 編集したvalues.yaml を使用して、最新のhelmチャート・バージョンでmilvusリリースをインストールします。

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

    出力

    NAME: my-release
    LAST DEPLOYED: Fri Nov 22 15:31:27 2024
    NAMESPACE: default
    STATUS: deployed
    REVISION: 1
    TEST SUITE: None
    
    
  4. kubectl -n default get pods を使って、すべてのポッドがスケジュールされ実行されているか確認してください。

    すべてのポッドが起動するまで数分かかるかもしれません。

    出力はこんな感じ。

    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を起動し、Milvus Operatorを使用する。

  1. 前のステップで保存した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. Milvus Operatorがv1.1.2またはそれ以降のバージョンにアップグレードされていることを確認する。

    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
    
    

    milvus with pulsar v3を起動するコマンドを使用します。

    kubectl create -f milvus.yaml
    
    

    出力

    milvus.milvus.io/my-release created
    
    
  3. すべてのポッドがスケジュールされ、kubectl -n default get pods

    すべてのポッドが起動するまで数分かかることがあります。

    出力はこんな感じ。

    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
    
    

翻訳DeepL

Try Managed Milvus for Free

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

Get Started
フィードバック

このページは役に立ちましたか ?