跳到主要内容
版本:v2.4.x

使用 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 部分的值。

YAML
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。

Shell
docker compose up
说明

配置仅在 Milvus 启动后生效。更多信息,请参阅 启动 Milvus

使用 Helm 配置 Pulsar

对于 K8s 上的 Milvus 集群,可以在启动 Milvus 的同一命令中配置 Pulsar。或者,你也可以在启动 Milvus 之前,使用 milvus-helm 仓库中 /charts/milvus 路径下的 values.yml 文件配置 Pulsar。

有关如何使用 Helm 配置 Milvus 的详细信息,请参阅 使用 Helm Chart 配置 Milvus。有关 Pulsar 相关配置项的详情,请参阅 Pulsar 相关配置

使用 YAML 文件

  1. values.yaml 文件中配置 externalConfigFiles 部分。
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
  1. 配置前述部分并保存 values.yaml 文件后,运行以下命令安装使用 Pulsar 配置的 Milvus。
Shell
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 Chart 配置 Milvus。有关 Pulsar 相关配置项的详情,请参阅 Pulsar 相关配置

使用 YAML 文件

  1. 如果要使用 Kafka 作为消息存储系统,请配置 values.yaml 文件中的 externalConfigFiles 部分。
YAML
extraConfigFiles:
user.yaml: |+
kafka:
brokerList:
- <your_kafka_address>:<your_kafka_port>
saslUsername:
saslPassword:
saslMechanisms: PLAIN
securityProtocol: SASL_SSL
  1. 配置完前面的部分并保存 values.yaml 文件后,运行以下命令安装使用 Kafka 配置的 Milvus。
Shell
helm install <your_release_name> milvus/milvus -f values.yaml

使用 Helm 配置 RocksMQ

Milvus Standalone 使用 RocksMQ 作为默认消息存储。关于如何用 Helm 配置 Milvus 的详细步骤,请参阅 用 Helm Chart 配置 Milvus。有关 RocksMQ 相关配置项的详情,请参阅 RocksMQ 相关配置

  • 如果你使用 RocksMQ 启动 Milvus 并想更改其设置,你可以使用以下 YAML 文件中更改后的设置运行 helm upgrade -f

  • 如果你已经使用 Helm 独立安装了 Milvus,并使用了 RocksMQ 以外的消息存储空间,但又想把它改回 RocksMQ,可以在 Flush 所有 Collection 并停止 Milvus 后,使用下面的 YAML 文件运行 helm upgrade -f

YAML
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 Flush 所有 Collection,最后在实际更改消息存储之前停止 Milvus。

用 Helm 配置 NATS

NATS 是 RocksMQ 的实验性消息存储替代品。关于如何用 Helm 配置 Milvus 的详细步骤,请参阅 用 Helm Chart 配置 Milvus。有关 RocksMQ 相关配置项的详情,请参阅 NATS 相关配置

  • 如果使用 NATS 启动 Milvus 并想更改其设置,可以使用以下 YAML 文件中更改后的设置运行 helm upgrade -f

  • 如果你用 NATS 以外的消息存储独立安装了 Milvus,并想将其更改为 NATS,可在 Flush 所有 Collection 并停止 Milvus 后,用以下 YAML 文件运行 helm upgrade -f

YAML
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 之间做选择?

RocksMQ 使用 CGO 与 RocksDB 交互并自行管理内存,而 Milvus 安装中的纯 Go NATS 则将内存管理委托给 Go 的垃圾收集器(GC)。

在数据包小于 64 kb 的情况下,RocksDB 在内存使用率、CPU 使用率和响应时间方面都更胜一筹。另一方面,如果数据包大于 64 kb,则 NATS 在内存充足、GC 调度理想的情况下,响应时间更胜一筹。

目前,我们建议您仅在实验中使用 NATS。

下一步

了解如何使用 Docker Compose 或 Helm 配置 Milvus 的其他依赖项: