Настройка хранилища сообщений в Milvus Operator
Milvus использует RocksMQ, Pulsar или Kafka для управления журналами последних изменений, вывода потоковых журналов и предоставления подписок на журналы. В этой теме описывается настройка зависимостей хранилища сообщений при установке Milvus с 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.
| RocksMQ | Pulsar | Kafka | Woodpecker | |
|---|---|---|---|---|
| Автономный режим | ✔️ | ✔️ | ✔️ | ✔️ |
| Кластерный режим | ✖️ | ✔️ | ✔️ | ✔️ |
Существуют и другие ограничения на указание хранилища сообщений:
- Поддерживается только одно хранилище сообщений для одного экземпляра 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 PVCaccessModes: Обычно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.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: