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

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

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

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

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

С помощью Helm

Переход с Kafka на 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: (Необязательно) Остановите Kafka и выполните очистку. Для встроенного Kafka удалите поды Kafka и их PVC. Для внешнего Kafka очистите темы Milvus во внешнем экземпляре Kafka — они имеют формат <cluster_prefix>-dml_<seqNo>_<TimeTick><Version>.

Если вы планируете позже вернуться к Kafka, сначала очистите данные/темы, чтобы избежать конфликтов.

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

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

Шаг 2: Настройте целевое соединение с Kafka и перезапустите Milvus. Для перехода необходимо, чтобы Milvus уже знал данные соединения с Kafka, поэтому запишите их в файл ` user.yaml ` с помощью команды ` extraConfigFiles ` и примените изменения с помощью ` helm upgrade ` (команда перезапускает поды). Для работы функции Switch MQ требуется ` streaming.enabled=true `. Подробности о SASL/SSL см. в разделе «Подключение к Kafka с помощью SASL/SSL».

# values.yaml
extraConfigFiles:
  user.yaml: |+
    kafka:
      brokerList:
        - <your_kafka_address>:<your_kafka_port>
      saslUsername:
      saslPassword:
      saslMechanisms: PLAIN
      securityProtocol: SASL_SSL
helm upgrade -i my-release zilliztech/milvus \
  --set kafka.enabled=true \
  --set woodpecker.enabled=false \
  --set streaming.enabled=true \
  -f values.yaml

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

Шаг 3: Выполните переход на MQ.

Убедитесь, что целевой Kafka не содержит тем Milvus из предыдущей конфигурации. Если это ваш первый переход на Kafka, пропустите это примечание; в противном случае сначала удалите оставшиеся темы 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": "kafka"}'

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

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

При успешном переключении в журнале появляется запись « [mqTypeValue=kafka] ».

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

С помощью Milvus Operator

Переход с Kafka на 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: (Необязательно) Остановите Kafka и выполните очистку. Для встроенного Kafka удалите поды Kafka и их PVC. Для внешнего Kafka очистите темы Milvus (формат <cluster_prefix>-dml_<seqNo>_<TimeTick><Version>).

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

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

Шаг 2: Настройте целевое соединение с Kafka и перезапустите Milvus. Укажите соединение с Kafka в разделе spec.config (оператор преобразует spec.config в user.yaml) и задайте тип MQ; применение CR приведет к перезапуску под с новой конфигурацией. Подробности о SASL/SSL см. в разделе «Подключение к Kafka с помощью SASL/SSL».

# change_configmap.yaml
apiVersion: milvus.io/v1beta1
kind: Milvus
metadata:
  name: my-release
  labels:
    app: milvus
spec:
  config:
    kafka:
      brokerList:
        - <your_kafka_address>:<your_kafka_port>
      saslUsername:
      saslPassword:
      saslMechanisms: PLAIN
      securityProtocol: SASL_SSL
  dependencies:
    msgStreamType: kafka
kubectl patch -f change_configmap.yaml --patch-file change_configmap.yaml --type merge

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

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

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

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

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

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

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

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

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

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

ПереведеноDeepL

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

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

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

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