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

Настройка хранилища сообщений в Milvus Operator

Milvus использует RocksMQ, Pulsar или Kafka для управления журналами последних изменений, вывода потоковых журналов и предоставления подписок на журналы. В этой теме описывается настройка зависимостей хранилища сообщений при установке Milvus с Milvus Operator. Дополнительные сведения см. в разделе Настройка хранилища сообщений с Milvus Operator в репозитории Milvus Operator.

В этой теме предполагается, что вы развернули Milvus Operator.

Дополнительные сведения см. в разделе Развертывание Milvus Operator.

Вам нужно указать файл конфигурации для использования Milvus Operator для запуска кластера Milvus.

kubectl apply -f https://raw.githubusercontent.com/zilliztech/milvus-operator/main/config/samples/milvus_cluster_default.yaml

Для настройки сторонних зависимостей достаточно отредактировать шаблон кода в milvus_cluster_default.yaml. В следующих разделах описывается настройка объектного хранилища, etcd и Pulsar соответственно.

Прежде чем начать

В таблице ниже показано, поддерживаются ли RocksMQ, Pulsar, Kafka и Woodpecker в автономном и кластерном режиме Milvus.

RocksMQPulsarKafkaWoodpecker
Автономный режим✔️✔️✔️✔️
Кластерный режим✖️✔️✔️✔️

Существуют и другие ограничения на указание хранилища сообщений:

  • Поддерживается только одно хранилище сообщений для одного экземпляра Milvus. Однако у нас сохраняется обратная совместимость с несколькими хранилищами сообщений, установленными для одного экземпляра. Приоритет следующий:
    • автономный режим: RocksMQ (по умолчанию) > Pulsar > Kafka
    • кластерный режим: Pulsar (по умолчанию) > Kafka
  • Хранилище сообщений не может быть изменено во время работы системы Milvus.
  • Поддерживается только версия Kafka 2.x или 3.x.
  • Ограничения при обновлении: Ограничения очереди сообщений: При обновлении до Milvus v2.6.15 вы должны сохранить текущий выбор очереди сообщений. Переключение между различными системами очередей сообщений во время обновления не поддерживается. Поддержка смены систем очередей сообщений будет доступна в будущих версиях.

Настройка RocksMQ

RocksMQ - это хранилище сообщений по умолчанию в автономном Milvus.

В настоящее время настроить RocksMQ в качестве хранилища сообщений для Milvus standalone можно только с помощью Milvus Operator.

Пример

В следующем примере настраивается служба RocksMQ.

apiVersion: milvus.io/v1beta1
kind: Milvus
metadata:
  name: milvus
spec:
  mode: standalone
  dependencies:
    msgStreamType: rocksmq
    rocksmq:
      persistence:
        enabled: true
        pvcDeletion: true
        persistentVolumeClaim:
          spec:
            accessModes: ["ReadWriteOnce"]
            storageClassName: "local-path"  # Specify your storage class
            resources:
              requests:
                storage: 10Gi  # Specify your desired storage size
  components: {}
  config: {}
Основные параметры конфигурации:
  • msgStreamType: rocksmq: Явно устанавливает RocksMQ в качестве очереди сообщений.
  • persistence.enabled: Включает постоянное хранение данных RocksMQ.
  • persistence.pvcDeletion: При значении true, PVC будет удаляться при удалении экземпляра Milvus.
  • persistentVolumeClaim.spec: Стандартная спецификация Kubernetes PVC
  • accessModes: Обычно ReadWriteOnce для блочного хранилища.
  • storageClassName: Класс хранилища вашего кластера
  • storage: Размер постоянного тома

Настройка Woodpecker

Woodpecker - это облачный журнал с опережающей записью (WAL), предназначенный для хранения объектов. Он обеспечивает высокую пропускную способность, низкие операционные накладные расходы и плавную масштабируемость. Дополнительные сведения см. в разделе Использование Woodpecker.

Настройка Pulsar

Pulsar управляет журналами последних изменений, выводит потоковые журналы и предоставляет подписки на журналы. Настройка Pulsar для хранения сообщений поддерживается как в автономном Milvus, так и в кластере Milvus. Однако в Milvus Operator вы можете настроить Pulsar в качестве хранилища сообщений только для кластера Milvus. Для настройки Pulsar добавьте необходимые поля в поле spec.dependencies.pulsar.

pulsar Поддерживаются external и inCluster.

Внешний Pulsar

external указывает на использование внешней службы Pulsar. Поля, используемые для настройки внешней службы Pulsar, включают:

  • external: Значение true указывает на то, что Milvus использует внешнюю службу Pulsar.
  • endpoints: Конечные точки Pulsar.

Пример

В следующем примере настраивается внешняя служба Pulsar.

apiVersion: milvus.io/v1alpha1
kind: Milvus
metadata:
  name: my-release
  labels:
    app: milvus
spec:
  dependencies: # Optional
    pulsar: # Optional
      # Whether (=true) to use an existed external pulsar as specified in the field endpoints or 
      # (=false) create a new pulsar inside the same kubernetes cluster for milvus.
      external: true # Optional default=false
      # The external pulsar endpoints if external=true
      endpoints:
      - 192.168.1.1:6650
  components: {}
  config: {}           

Внутренний Pulsar

inCluster указывает, что при запуске кластера Milvus в нем автоматически запускается служба Pulsar.

Пример

В следующем примере настраивается внутренняя служба Pulsar.

apiVersion: milvus.io/v1alpha1
kind: Milvus
metadata:
  name: my-release
  labels:
    app: milvus
spec:
  dependencies:
    pulsar:
      inCluster:
        values:
          components:
            autorecovery: false
          zookeeper:
            replicaCount: 1
          bookkeeper:
            replicaCount: 1
            resoureces:
              limit:
                cpu: '4'
              memory: 8Gi
            requests:
              cpu: 200m
              memory: 512Mi
          broker:
            replicaCount: 1
            configData:
              ## Enable `autoSkipNonRecoverableData` since bookkeeper is running
              ## without persistence
              autoSkipNonRecoverableData: "true"
              managedLedgerDefaultEnsembleSize: "1"
              managedLedgerDefaultWriteQuorum: "1"
              managedLedgerDefaultAckQuorum: "1"
          proxy:
            replicaCount: 1
  components: {}
  config: {}            
В этом примере указывается количество реплик каждого компонента Pulsar, вычислительные ресурсы Pulsar BookKeeper и другие конфигурации.
Полный набор элементов конфигурации для настройки внутреннего сервиса Pulsar находится в values.yaml. Добавьте необходимые элементы конфигурации в файл pulsar.inCluster.values, как показано в предыдущем примере.

Предполагая, что файл конфигурации имеет имя milvuscluster.yaml, выполните следующую команду, чтобы применить конфигурацию.

kubectl apply -f milvuscluster.yaml

Настройка Kafka

Pulsar - это хранилище сообщений по умолчанию в кластере Milvus. Если вы хотите использовать Kafka, добавьте необязательное поле msgStreamType для настройки Kafka.

kafka Поддерживаются external и inCluster.

Внешняя Kafka

external указывает на использование внешней службы Kafka.

Поля, используемые для настройки внешнего сервиса Kafka, включают:

  • external: Значение true указывает на то, что Milvus использует внешнюю службу Kafka.
  • brokerList: Список брокеров для отправки сообщений.

Пример

В следующем примере настраивается внешний сервис Kafka.

apiVersion: milvus.io/v1alpha1
kind: Milvus
metadata:
  name: my-release
  labels:
    app: milvus
spec:
  config:
    kafka:
      # securityProtocol supports: PLAINTEXT, SSL, SASL_PLAINTEXT, SASL_SSL 
      securityProtocol: PLAINTEXT
      # saslMechanisms supports: PLAIN, SCRAM-SHA-256, SCRAM-SHA-512
      saslMechanisms: PLAIN
      saslUsername: ""
      saslPassword: ""
  # Omit other fields ...
  dependencies:
    # Omit other fields ...
    msgStreamType: "kafka"
    kafka:
      external: true
      brokerList: 
        - "kafkaBrokerAddr1:9092"
        - "kafkaBrokerAddr2:9092"
        # ...

Конфигурации SASL поддерживаются в версии оператора v0.8.5 или выше.

Внутренний Kafka

inCluster указывает, что при запуске кластера Milvus в нем автоматически запускается служба Kafka.

Пример

В следующем примере настраивается внутренняя служба Kafka.

apiVersion: milvus.io/v1alpha1
kind: Milvus
metadata:
  name: my-release
  labels:
    app: milvus
spec: 
  dependencies:
    msgStreamType: "kafka"
    kafka:
      inCluster: 
        values: {} # values can be found in https://artifacthub.io/packages/helm/bitnami/kafka
  components: {}
  config: {}

Полный список элементов конфигурации для настройки внутренней службы Kafka можно найти здесь. Добавьте необходимые элементы конфигурации по адресу kafka.inCluster.values.

Предполагая, что файл конфигурации имеет имя milvuscluster.yaml, выполните следующую команду, чтобы применить конфигурацию.

kubectl apply -f milvuscluster.yaml

Что дальше

Узнайте, как настроить другие зависимости Milvus с помощью Milvus Operator:

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

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

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

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