Настройте хранилище сообщений с помощью Docker Compose или Helm
Milvus использует Pulsar или Kafka для управления журналами последних изменений, вывода потоковых журналов и обеспечения подписки на журналы. Pulsar является системой хранения сообщений по умолчанию. В этой теме рассказывается о том, как настроить хранилище сообщений с помощью Docker Compose или Helm.
Вы можете настроить Pulsar с помощью Docker Compose или на K8s и сконфигурировать Kafka на K8s.
Настройка Pulsar с помощью Docker Compose
1. Настройка Pulsar
Чтобы настроить Pulsar с помощью Docker Compose, укажите значения для секции pulsar
в файле milvus.yaml
по пути milvus/configs.
pulsar:
address: localhost # Address of pulsar
port: 6650 # Port of pulsar
maxMessageSize: 5242880 # 5 * 1024 * 1024 Bytes, Maximum size of each message in pulsar.
Дополнительные сведения см. в разделе Конфигурации, связанные с Pulsar.
2. Запустите Milvus
Выполните следующую команду, чтобы запустить Milvus, использующий конфигурации Pulsar.
docker compose up
Настройка Pulsar с помощью Helm
Для кластеров Milvus на K8s можно настроить Pulsar в той же команде, которая запускает Milvus. В качестве альтернативы можно настроить Pulsar с помощью файла values.yml
по пути /charts/milvus в репозитории milvus-helm перед запуском Milvus.
Подробнее о том, как настроить Milvus с помощью Helm, см. в разделе Настройка Milvus с помощью Helm Charts. Подробные сведения об элементах конфигурации, связанных с Pulsar, см. в разделе Конфигурации, связанные с Pulsar.|
Использование файла YAML
- Настройте секцию
externalConfigFiles
в файлеvalues.yaml
.
extraConfigFiles:
user.yaml: |+
pulsar:
address: localhost # Address of pulsar
port: 6650 # Port of Pulsar
webport: 80 # Web port of pulsar, if you connect direcly without proxy, should use 8080
maxMessageSize: 5242880 # 5 * 1024 * 1024 Bytes, Maximum size of each message in pulsar.
tenant: public
namespace: default
- После настройки предыдущих разделов и сохранения файла
values.yaml
выполните следующую команду для установки Milvus, который использует конфигурации Pulsar.
helm install <your_release_name> milvus/milvus -f values.yaml
Настройка Kafka с помощью Helm
Для кластеров Milvus на K8s вы можете настроить Kafka в той же команде, которая запускает Milvus. В качестве альтернативы можно настроить Kafka с помощью файла values.yml
по пути /charts/milvus в репозитории milvus-helm перед запуском Milvus.
Подробнее о том, как настроить Milvus с помощью Helm, см. в разделе Настройка Milvus с помощью диаграмм Helm. Подробные сведения об элементах конфигурации, связанных с Pulsar, см. в разделе Конфигурации, связанные с Pulsar.
Использование файла YAML
- Настройте раздел
externalConfigFiles
в файлеvalues.yaml
, если вы хотите использовать Kafka в качестве системы хранения сообщений.
extraConfigFiles:
user.yaml: |+
kafka:
brokerList:
- <your_kafka_address>:<your_kafka_port>
saslUsername:
saslPassword:
saslMechanisms: PLAIN
securityProtocol: SASL_SSL
- После настройки предыдущих разделов и сохранения файла
values.yaml
выполните следующую команду, чтобы установить Milvus, использующий конфигурации Kafka.
helm install <your_release_name> milvus/milvus -f values.yaml
Настройка RocksMQ с помощью Helm
Автономный Milvus использует RocksMQ в качестве хранилища сообщений по умолчанию. Подробные шаги по настройке Milvus с помощью Helm см. в разделе Настройка Milvus с помощью диаграмм Helm. Подробные сведения об элементах конфигурации, связанных с RocksMQ, см. в разделе Конфигурации, связанные с RocksMQ.
Если вы запустили Milvus с RocksMQ и хотите изменить его настройки, вы можете запустить
helm upgrade -f
с измененными настройками в следующем YAML-файле.Если вы установили автономный Milvus с помощью Helm с хранилищем сообщений, отличным от RocksMQ, и хотите изменить его обратно на RocksMQ, запустите
helm upgrade -f
со следующим YAML-файлом после того, как вы промоете все коллекции и остановите Milvus.
extraConfigFiles:
user.yaml: |+
rocksmq:
# The path where the message is stored in rocksmq
# please adjust in embedded Milvus: /tmp/milvus/rdb_data
path: /var/lib/milvus/rdb_data
lrucacheratio: 0.06 # rocksdb cache memory ratio
rocksmqPageSize: 67108864 # 64 MB, 64 * 1024 * 1024 bytes, The size of each page of messages in rocksmq
retentionTimeInMinutes: 4320 # 3 days, 3 * 24 * 60 minutes, The retention time of the message in rocksmq.
retentionSizeInMB: 8192 # 8 GB, 8 * 1024 MB, The retention size of the message in rocksmq.
compactionInterval: 86400 # 1 day, trigger rocksdb compaction every day to remove deleted data
# compaction compression type, only support use 0,7.
# 0 means not compress, 7 will use zstd
# len of types means num of rocksdb level.
compressionTypes: [0, 0, 7, 7, 7]
Менять хранилище сообщений не рекомендуется. Если вы хотите это сделать, остановите все операции DDL, затем вызовите API FlushAll для промывки всех коллекций и, наконец, остановите Milvus до того, как вы действительно измените хранилище сообщений.
Настройка NATS с помощью Helm
NATS - это экспериментальное хранилище сообщений, альтернативное RocksMQ. Подробные шаги по настройке Milvus с помощью Helm см. в разделе Настройка Milvus с помощью диаграмм Helm. Подробные сведения о конфигурационных элементах, связанных с RocksMQ, см. в разделе Конфигурации, связанные с NATS.
Если вы запустили Milvus с NATS и хотите изменить его настройки, вы можете запустить
helm upgrade -f
с измененными настройками в следующем YAML-файле.Если вы установили Milvus standalone с хранилищем сообщений, отличным от NATS, и хотите изменить его на NATS, запустите
helm upgrade -f
со следующим YAML-файлом после того, как вы промыли все коллекции и остановили Milvus.
extraConfigFiles:
user.yaml: |+
mq:
type: natsmq
natsmq:
# server side configuration for natsmq.
server:
# 4222 by default, Port for nats server listening.
port: 4222
# /var/lib/milvus/nats by default, directory to use for JetStream storage of nats.
storeDir: /var/lib/milvus/nats
# (B) 16GB by default, Maximum size of the 'file' storage.
maxFileStore: 17179869184
# (B) 8MB by default, Maximum number of bytes in a message payload.
maxPayload: 8388608
# (B) 64MB by default, Maximum number of bytes buffered for a connection applies to client connections.
maxPending: 67108864
# (√ms) 4s by default, waiting for initialization of natsmq finished.
initializeTimeout: 4000
monitor:
# false by default, If true enable debug log messages.
debug: false
# true by default, If set to false, log without timestamps.
logTime: true
# no log file by default, Log file path relative to.. .
logFile:
# (B) 0, unlimited by default, Size in bytes after the log file rolls over to a new one.
logSizeLimit: 0
retention:
# (min) 3 days by default, Maximum age of any message in the P-channel.
maxAge: 4320
# (B) None by default, How many bytes the single P-channel may contain. Removing oldest messages if the P-channel exceeds this size.
maxBytes:
# None by default, How many message the single P-channel may contain. Removing oldest messages if the P-channel exceeds this limit.
maxMsgs:
Выбор между RocksMQ и NATS?
RockMQ использует CGO для взаимодействия с RocksDB и самостоятельно управляет памятью, в то время как NATS, встроенный в Milvus, делегирует управление памятью сборщику мусора (GC) Go.
В сценарии, когда пакет данных меньше 64 кб, RocksDB превосходит по использованию памяти, загрузке процессора и времени отклика. С другой стороны, если пакет данных больше 64 кб, NATS превосходит по времени отклика при достаточном объеме памяти и идеальном планировании GC.
В настоящее время рекомендуется использовать NATS только для экспериментов.
Что дальше
Узнайте, как настроить другие зависимости Milvus с помощью Docker Compose или Helm: