🚀 Попробуйте Zilliz Cloud, полностью управляемый Milvus, бесплатно — ощутите 10-кратное увеличение производительности! Попробовать сейчас>

milvus-logo
LFAI
Главная
  • Руководство по администрированию
    • Управление зависимостями
  • Home
  • Docs
  • Руководство по администрированию

  • Управление зависимостями

  • Используйте Pulsa с Milvus

  • Обновление до Pulsar v3

Обновление Pulsar

В этой статье описывается процедура обновления компонента Pulsar с V2 до V3, если у вас уже есть рабочее развертывание Milvus с Pulsar V2.

Начиная с 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. Процесс обновления требует кратковременного отключения сервиса (обычно занимает от нескольких минут до более чем десяти минут, в зависимости от объема данных).

  2. Перед операцией необходимо остановить запись данных в Milvus всеми запущенными клиентами. В противном случае записанные данные могут быть потеряны.

  3. В этой статье предполагается, что Milvus установлен в пространстве имен default и имеет имя my-release. Пожалуйста, измените параметры на свои пространство имен и имя релиза при выполнении команд, скопированных с этой страницы.

  4. Убедитесь, что ваша рабочая среда имеет права на вышеупомянутое пространство имен в кластере Kubernetes и что установлены следующие команды.

    a. kubectl >= 1.20

    b. helm >= 3.14.0

    c. cat, grep, awk для операций манипулирования строками

    d. curl или Attu v2.4+ для взаимодействия с API управления milvus.

Дорожная карта

Процесс обновления включает следующие шаги:

  1. Сохраните данные, не потребляемые в pulsar.

  2. Остановите Milvus и удалите pulsar V2.

  3. Запустите Pulsar V3 и Milvus.

Процедуры

В этом разделе подробно описаны процедуры обновления Pulsar с V2 до V3 в Milvus.

Сохранение данных, не использованных в Pulsar

На этом этапе необходимо убедиться, что существующие данные в Pulsar были сохранены в службе хранения объектов. Существует два подхода, и вы можете выбрать тот, который соответствует вашим потребностям.

Подход 1: использование Attu

Если в вашем рабочем развертывании Milvus имеется лишь небольшое количество коллекций с небольшим количеством сегментов, вы можете использовать Attu для сохранения данных в службе хранения объектов.

  1. Выберите все коллекции во всех базах данных, перейдите на панель Segments, нажмите кнопку Flush.

    Segment panel of a collection Панель сегментов коллекции

  2. Затем во всплывающем окне снова нажмите кнопку Flush.

    Data flush prompt in Attu Запрос на промывку данных в Attu

  3. Затем подождите, пока все состояния постоянных сегментов коллекций не станут Flushed.

    View data flush status in Attu Просмотр состояния промывки данных в Attu

Подход 2: Использование API управления

  1. Проксируйте порт 9091 прокси-сервера Milvus на локальный хост для последующих операций.

    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 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
    
    

    Выход.

    {
      "segmentIDs": [
        454097953998181000,
        454097953999383600,
        454097953998180800
      ]
    }
    
    
  4. Проверить все сегменты (All segments flushed).

    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 pod и удалить развертывание Pulsar V2. Здесь есть два отдельных раздела:

Удаление Pulsar V2 с помощью Helm

Если вы установили Milvus с помощью диаграммы Milvus Helm, выполните следующие действия, чтобы остановить Milvus pod и удалить развертывание 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. Список pulsar PVCs & PVs (Persistent Volume Claims & Persistent Volume) должен быть очищен

    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. Проверьте, все ли PVC в списке pulsar-pvcs.txt предназначены для 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
    
    

Удаление Pulsar V2 с помощью Milvus Operator

Если вы установили Milvus с помощью Milvus Operator, выполните следующие шаги, чтобы остановить Milvus pod и удалить развертывание Pulsar V2.

  1. Сохраните текущий манифест Milvus на 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 со следующим содержимым.

    # 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. Используйте kubectl patch для сохранения данных etcd и хранилища и удаления данных pulsar при удалении milvus.

    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. Здесь есть два отдельных раздела:

  • Для пользователя Helm

    Если вы установили Milvus с помощью схемы Milvus Helm, перейдите к разделу For Helm User.

  • Для пользователей Milvus Operator

    Если вы установили Milvus с помощью Milvus Operator, перейдите к разделу Для пользователей Milvus Operator.

Запустите 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. Установите релиз milvus с новейшей версией карты helm, используя отредактированный values.yaml.

    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 с помощью 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
    
    

Попробуйте Managed Milvus бесплатно

Zilliz Cloud работает без проблем, поддерживается Milvus и в 10 раз быстрее.

Начать
Обратная связь

Была ли эта страница полезной?