使用 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 之前,使用 /charts/milvus 路徑下milvus-helm套件庫中的values.yml
檔來設定 Pulsar。
關於如何使用 Helm設定 Milvus 的詳細資訊,請參考 使用Helm Charts 設定 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 的詳細資訊,請參考Configure Milvus with Helm Charts。有關 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 standalone 使用 RocksMQ 作為預設的訊息儲存空間。有關如何使用 Helm 配置 Milvus 的詳細步驟,請參考Configure Milvus with Helm Charts。關於 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 的詳細步驟,請參考Configure Milvus with Helm Charts。關於 RocksMQ 相關設定項的詳細步驟,請參考NATS 相關設定。
如果你用 NATS 啟動 Milvus 並想要改變它的設定,你可以用以下 YAML 檔案中改變的設定執行
helm upgrade -f
。如果您用 NATS 以外的消息存储安装了 Milvus standalone,并想将其更改为 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 依賴項目: