Configurar o armazenamento de mensagens com Docker Compose ou Helm
O Milvus usa Pulsar ou Kafka para gerenciar logs de mudanças recentes, gerar logs de fluxo e fornecer assinaturas de log. O Pulsar é o sistema de armazenamento de mensagens padrão. Este tópico apresenta como configurar o armazenamento de mensagens com o Docker Compose ou Helm.
É possível configurar o Pulsar com o Docker Compose ou no K8s e configurar o Kafka no K8s.
Configurar a Pulsar com o Docker Compose
1. Configurar o Pulsar
Para configurar o Pulsar com o Docker Compose, forneça seus valores para a seção pulsar
no arquivo milvus.yaml
no caminho 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.
Consulte Configurações relacionadas ao Pulsar para obter mais informações.
2. Executar o Milvus
Execute o seguinte comando para iniciar o Milvus que usa as configurações do Pulsar.
docker compose up
Configurar o Pulsar com o Helm
Para clusters Milvus em K8s, você pode configurar a Pulsar no mesmo comando que inicia o Milvus. Alternativamente, você pode configurar o Pulsar usando o arquivo values.yml
no caminho /charts/milvus no repositório milvus-helm antes de iniciar o Milvus.
Para obter detalhes sobre como configurar o Milvus usando o Helm, consulte Configurar o Milvus com Helm Charts. Para obter detalhes sobre os itens de configuração relacionados ao Pulsar, consulte Configurações relacionadas ao Pulsar.
Usando o arquivo YAML
- Configure a secção
externalConfigFiles
no ficheirovalues.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
- Depois de configurar as seções anteriores e salvar o arquivo
values.yaml
, execute o comando a seguir para instalar o Milvus, que usa as configurações do Pulsar.
helm install <your_release_name> milvus/milvus -f values.yaml
Configurar o Kafka com o Helm
Para clusters do Milvus no K8s, é possível configurar o Kafka no mesmo comando que inicia o Milvus. Como alternativa, é possível configurar o Kafka usando o arquivo values.yml
no caminho /charts/milvus no repositório milvus-helm antes de iniciar o Milvus.
Para obter detalhes sobre como configurar o Milvus usando o Helm, consulte Configurar o Milvus com Helm Charts. Para obter detalhes sobre os itens de configuração relacionados ao Pulsar, consulte Configurações relacionadas ao Pulsar.
Usando o arquivo YAML
- Configure a secção
externalConfigFiles
no ficheirovalues.yaml
se pretender utilizar o Kafka como sistema de armazenamento de mensagens.
extraConfigFiles:
user.yaml: |+
kafka:
brokerList:
- <your_kafka_address>:<your_kafka_port>
saslUsername:
saslPassword:
saslMechanisms: PLAIN
securityProtocol: SASL_SSL
- Depois de configurar as seções anteriores e salvar o arquivo
values.yaml
, execute o seguinte comando para instalar o Milvus que usa as configurações do Kafka.
helm install <your_release_name> milvus/milvus -f values.yaml
Configurar o RocksMQ com o Helm
O Milvus standalone usa o RocksMQ como armazenamento de mensagens padrão. Para obter etapas detalhadas sobre como configurar o Milvus com o Helm, consulte Configurar o Milvus com gráficos do Helm. Para obter detalhes sobre os itens de configuração relacionados ao RocksMQ, consulte Configurações relacionadas ao RocksMQ.
Se você iniciar o Milvus com o RocksMQ e quiser alterar suas configurações, poderá executar
helm upgrade -f
com as configurações alteradas no seguinte arquivo YAML.Se tiver instalado o Milvus standalone usando o Helm com um armazenamento de mensagens diferente do RocksMQ e quiser alterá-lo de volta para o RocksMQ, execute
helm upgrade -f
com o seguinte arquivo YAML depois de ter liberado todas as coleções e parado o 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]
Não é recomendável alterar o armazenamento de mensagens. Se quiser fazer isso, interrompa todas as operações DDL e, em seguida, chame a API FlushAll para liberar todas as coleções e, finalmente, interrompa o Milvus no final, antes de alterar o armazenamento de mensagens.
Configurar o NATS com o Helm
O NATS é um armazenamento de mensagens experimental alternativo ao RocksMQ. Para obter etapas detalhadas sobre como configurar o Milvus com o Helm, consulte Configurar o Milvus com Helm Charts. Para obter detalhes sobre os itens de configuração relacionados ao RocksMQ, consulte Configurações relacionadas ao NATS.
Se você iniciar o Milvus com NATS e quiser alterar suas configurações, poderá executar
helm upgrade -f
com as configurações alteradas no seguinte arquivo YAML.Se tiver instalado o Milvus standalone com um armazenamento de mensagens diferente do NATS e pretender alterá-lo para o NATS, execute
helm upgrade -f
com o seguinte ficheiro YAML depois de ter descarregado todas as colecções e parado o 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:
Escolher entre RocksMQ e NATS?
O RockMQ usa o CGO para interagir com o RocksDB e gerencia a memória por si só, enquanto o NATS puro do Go incorporado na instalação do Milvus delega seu gerenciamento de memória ao coletor de lixo (GC) do Go.
No cenário em que o pacote de dados é menor que 64 kb, o RocksDB tem um desempenho melhor em termos de uso de memória, uso de CPU e tempo de resposta. Por outro lado, se o pacote de dados for maior que 64 kb, o NATS se destaca em termos de tempo de resposta com memória suficiente e agendamento ideal do GC.
Atualmente, aconselha-se a utilização do NATS apenas para experiências.
O que vem a seguir
Saiba como configurar outras dependências do Milvus com o Docker Compose ou o Helm: