• О компании Milvus
  • Начать работу
  • Понятия
  • Руководство пользователя
  • Импорт данных
  • Инструменты искусственного интеллекта
  • Руководство по администрированию
  • Инструменты
  • Интеграции
  • Учебные материалы
  • Часто задаваемые вопросы
  • API Reference

Переключение между Pulsar и Woodpecker

На этой странице описано, как переключить очередь сообщений (MQ) кластера Milvus между Pulsar (встроенным или внешним) и Woodpecker (с бэкэндом MinIO) в обоих направлениях. Общий порядок действий и необходимые условия см. в разделе «Переключение очереди сообщений».

Предпосылка: функция «Переключение MQ» доступна в Milvus 3.0 и более поздних версиях. Перед началом обновите свой экземпляр Milvus до версии 3.0 или более поздней — эта функция недоступна в более ранних версиях.

Переключение очереди сообщений — операция с высоким уровнем риска. Выберите раздел, соответствующий вашему способу развертывания — «С помощью Helm» или «С помощью Milvus Operator» — и следуйте инструкциям от начала до конца. Не смешивайте команды Helm и Operator.

С помощью Helm

Переход с Pulsar на Woodpecker (Helm)

Шаг 1: Убедитесь, что экземпляр Milvus работает. Убедитесь, что ваш кластер Milvus работает корректно — например, создав тестовую коллекцию, вставив данные и выполнив запрос.

Шаг 2: Выполните переключение MQ. Откройте интерфейс управления MixCoord, затем вызовите API переключения:

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

В другом терминале:

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

Шаг 3: Убедитесь, что переключение завершено.

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

В случае успешного переключения в журнале регистрируется сообщение « [mqTypeValue=woodpecker] ».

Шаг 4: (Необязательно) Остановите Pulsar и выполните очистку. Для встроенного Pulsar отключите Pulsar и включите Woodpecker, затем удалите PVC Pulsar:

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

Для внешнего Pulsar очистите темы Milvus во внешнем экземпляре Pulsar. Темы Milvus имеют формат <cluster_prefix>-dml_<seqNo>_<TimeTick><Version> (например, by-dev-rootcoord-dml_10_464633776992639586v0).

Если вы планируете позже вернуться к Pulsar, сначала очистите данные/темы, чтобы избежать конфликтов. Из-за ограничений диаграмм Helm возвращение к встроенному экземпляру Pulsar в настоящее время невозможно.

Переход с Woodpecker на Pulsar (Helm)

Шаг 1: Убедитесь, что экземпляр Milvus работает.

Шаг 2: Настройте целевое соединение с Pulsar и перезапустите Milvus. Для перехода необходимо, чтобы Milvus уже знал о соединении с Pulsar, поэтому запишите его в файл « user.yaml » через extraConfigFiles и примените с помощью команды helm upgrade (которая перезапускает поды). Для работы функции Switch MQ требуется файл « 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

Дождитесь, пока все поды будут готовы, затем убедитесь, что конфигурация доступа к Pulsar была применена к конфигурации Milvus.

Шаг 3: Выполните переключение MQ.

Убедитесь, что целевой Pulsar не содержит тем Milvus из предыдущей конфигурации. Если это ваш первый переход на Pulsar, пропустите это примечание; в противном случае сначала удалите оставшиеся темы Milvus с такими же именами.

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

В другом терминале:

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

Шаг 4: Убедитесь, что переход завершен.

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

При успешном переключении в журнале регистрируется сообщение « [mqTypeValue=pulsar] ».

Шаг 5: (Необязательно) Удалите данные Woodpecker. Удалите данные Woodpecker на MinIO/S3 (в каталоге <rootPath>/wp/..., обычно files/wp/...) и метаданные Woodpecker в etcd (etcdctl get woodpecker --prefix). Если вы планируете позже вернуться к Woodpecker, сначала удалите эти файлы.

С помощью Milvus Operator

Переход с Pulsar на Woodpecker (Milvus Operator)

Шаг 1: Убедитесь, что экземпляр Milvus запущен.

Шаг 2: Выполните переключение MQ. Сервис MixCoord не доступен извне, поэтому запустите API переключения изнутри пода 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"}'

Шаг 3: Убедитесь, что переключение завершено.

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

В случае успешного переключения в журнале регистрируется сообщение « [mqTypeValue=woodpecker] ».

Шаг 4: Обновите тип MQ в Operator. Обновите конфигурацию, управляемую Operator, чтобы Operator не отменил переключение. Создайте файл 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

Шаг 5: (Необязательно) Остановите Pulsar и выполните очистку. Для встроенного Pulsar удалите релиз Pulsar и удалите его PVC:

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

Для внешнего Pulsar очистите темы Milvus (формат <cluster_prefix>-dml_<seqNo>_<TimeTick><Version>).

Если вы планируете позже вернуться к Pulsar, сначала очистите данные/темы, чтобы избежать конфликтов. Из-за ограничений диаграмм Helm возврат к встроенному экземпляру Pulsar в настоящее время невозможен.

Переход с Woodpecker на Pulsar (оператор Milvus)

Шаг 1: Убедитесь, что экземпляр Milvus запущен.

Шаг 2: Настройте подключение к целевому Pulsar и перезапустите Milvus. Добавьте подключение к Pulsar в файл spec.config (оператор преобразует spec.config в user.yaml) и установите тип MQ; приложение CR перезапустит поды с новой конфигурацией.

# 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

Дождитесь, пока все поды будут готовы, затем убедитесь, что конфигурация доступа к Pulsar была преобразована в конфигурацию Milvus.

Шаг 3: Выполните переключение MQ.

Убедитесь, что целевой Pulsar не содержит тем Milvus из предыдущей конфигурации. Если это ваш первый переход на Pulsar, пропустите это примечание; в противном случае сначала удалите оставшиеся темы Milvus с такими же именами.

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

Шаг 4: Убедитесь, что переход завершён.

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

В случае успешного переключения в журнале регистрируется сообщение « [mqTypeValue=pulsar] ».

Шаг 5: (Необязательно) Удалите данные Woodpecker. Удалите данные Woodpecker на MinIO/S3 (в каталоге <rootPath>/wp/..., обычно files/wp/...) и метаданные Woodpecker в etcd (etcdctl get woodpecker --prefix). Если вы планируете позже вернуться к Woodpecker, сначала удалите эти файлы.

Поддерживаемые сценарии

Источник MQЦелевой MQHelmОператор Milvus
Встроенный PulsarWoodpecker (MinIO)ПоддерживаетсяПоддерживается
Внешний PulsarWoodpecker (MinIO)ПоддерживаетсяПоддерживается
Woodpecker (MinIO)Внешний PulsarПоддерживаетсяПоддерживается
PulsarWoodpecker (локальный)Поддерживается, но не рекомендуется (все модули требуют общей файловой системы)Не поддерживается

ПереведеноDeepL

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

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

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

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