使用 Docker Compose 或 Helm 配置消息存储
Milvus 使用 Pulsar 或 Kafka 管理最近更改的日志、输出流日志并提供日志订阅。Pulsar 是默认的消息存储系统。本主题介绍如何使用 Docker Compose 或 Helm 配置消息存储。
你可以使用Docker Compose或在 K8s 上配置 Pulsar,并在 K8s 上配置 Kafka。
使用 Docker Compose 配置 Pulsar
1.配置 Pulsar
要使用 Docker Compose 配置 Pulsar,请在 milvus/configs 路径下的milvus.yaml
文件中提供pulsar
部分的值。
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
运行以下命令启动使用 Pulsar 配置的 Milvus。
docker compose up
使用 Helm 配置 Pulsar
对于 K8s 上的 Milvus 群集,可以在启动 Milvus 的同一命令中配置 Pulsar。或者,你也可以在启动Milvus之前,使用milvus-helm资源库中 /charts/milvus 路径下的values.yml
文件配置 Pulsar。
有关如何使用 Helm配置 Milvus的详细信息,请参阅使用 Helm 图表配置 Milvus。有关 Pulsar 相关配置项的详情,请参阅Pulsar 相关配置。
使用 YAML 文件
- 在
values.yaml
文件中配置externalConfigFiles
部分。
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
文件后,运行以下命令安装使用 Pulsar 配置的 Milvus。
helm install <your_release_name> milvus/milvus -f values.yaml
使用 Helm 配置 Kafka
对于 K8s 上的 Milvus 集群,可以在启动 Milvus 的同一命令中配置 Kafka。或者,你也可以在启动Milvus之前,使用 /charts/milvus 路径下milvus-helm资源库中的values.yml
文件配置 Kafka。
有关如何使用 Helm配置 Milvus的详情,请参阅《使用 Helm 图表配置 Milvus》。有关 Pulsar 相关配置项的详情,请参阅Pulsar 相关配置。
使用 YAML 文件
- 如果要使用 Kafka 作为消息存储系统,请配置
values.yaml
文件中的externalConfigFiles
部分。
extraConfigFiles:
user.yaml: |+
kafka:
brokerList:
- <your_kafka_address>:<your_kafka_port>
saslUsername:
saslPassword:
saslMechanisms: PLAIN
securityProtocol: SASL_SSL
- 配置完前面的部分并保存
values.yaml
文件后,运行以下命令安装使用 Kafka 配置的 Milvus。
helm install <your_release_name> milvus/milvus -f values.yaml
使用 Helm 配置 RocksMQ
Milvus 单机版使用 RocksMQ 作为默认消息存储。关于如何用 Helm配置 Milvus 的详细步骤,请参阅《用 Helm 图表配置 Milvus》。有关 RocksMQ 相关配置项的详情,请参阅RocksMQ 相关配置。
如果你使用 RocksMQ 启动 Milvus 并想更改其设置,你可以使用以下 YAML 文件中更改后的设置运行
helm upgrade -f
。如果你已经使用 Helm 独立安装了 Milvus,并使用了 RocksMQ 以外的消息存储空间,但又想把它改回 RocksMQ,可以在刷新所有集合并停止 Milvus 后,使用下面的 YAML 文件运行
helm upgrade -f
。
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 操作,然后调用 FlushAll API 冲洗所有集合,最后在实际更改消息存储之前停止 Milvus。
用 Helm 配置 NATS
NATS 是 RocksMQ 的实验性消息存储替代品。关于如何用 Helm配置 Milvus 的详细步骤,请参阅《用 Helm 图表配置 Milvus》。有关 RocksMQ 相关配置项的详情,请参阅NATS 相关配置。
如果使用 NATS 启动 Milvus 并想更改其设置,可以使用以下 YAML 文件中更改后的设置运行
helm upgrade -f
。如果你用 NATS 以外的消息存储独立安装了 Milvus,并想将其更改为 NATS,可在刷新所有集合并停止 Milvus 后,用以下 YAML 文件运行
helm upgrade -f
。
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 交互并自行管理内存,而 Milvus 安装中的纯 Go NATS 则将内存管理委托给 Go 的垃圾收集器(GC)。
在数据包小于 64 kb 的情况下,RocksDB 在内存使用率、CPU 使用率和响应时间方面都更胜一筹。另一方面,如果数据包大于 64 kb,则 NATS 在内存充足、GC 调度理想的情况下,响应时间更胜一筹。
目前,我们建议您仅在实验中使用 NATS。
下一步
了解如何使用 Docker Compose 或 Helm 配置 Milvus 的其他依赖项: