• Sobre Milvus
  • Começar a trabalhar
  • Conceitos
  • Guia do utilizador
  • Importação de dados
  • Ferramentas de IA
  • Guia de Administração
  • Ferramentas
  • Integrações
  • Tutoriais
  • FAQs
  • API Reference

Configurar o armazenamento de mensagens com o Milvus Operator

O Milvus usa RocksMQ, Pulsar ou Kafka para gerenciar logs de alterações recentes, gerar logs de fluxo e fornecer assinaturas de log. Este tópico apresenta como configurar as dependências de armazenamento de mensagens quando você instala o Milvus com o Milvus Operator. Para obter mais detalhes, consulte Configurar o armazenamento de mensagens com o Milvus Operator no repositório do Milvus Operator.

Este tópico pressupõe que você tenha implantado o Milvus Operator.

Consulte Implantar o Milvus Operator para obter mais informações.

É necessário especificar um arquivo de configuração para usar o Milvus Operator para iniciar um cluster do Milvus.

kubectl apply -f https://raw.githubusercontent.com/zilliztech/milvus-operator/main/config/samples/milvus_cluster_default.yaml

Só é necessário editar o modelo de código em milvus_cluster_default.yaml para configurar dependências de terceiros. As secções seguintes apresentam como configurar o armazenamento de objectos, etcd, e Pulsar respetivamente.

Antes de começar

A tabela abaixo mostra se o RocksMQ, o Pulsar, o Kafka e o Woodpecker são suportados no modo autônomo e de cluster do Milvus.

RocksMQPulsarKafkaPica-pau
Modo autónomo✔️✔️✔️✔️
Modo de cluster✖️✔️✔️✔️

Existem também outras limitações para especificar o armazenamento de mensagens:

  • Só é suportado um armazenamento de mensagens para uma instância Milvus. No entanto, continuamos a ter compatibilidade retroactiva com vários armazenamentos de mensagens definidos para uma instância. A prioridade é a seguinte:
    • modo autónomo: RocksMQ (padrão) > Pulsar > Kafka
    • modo de cluster: Pulsar (padrão) > Kafka
  • O armazenamento de mensagens não pode ser alterado enquanto o sistema Milvus estiver a funcionar.
  • Apenas a versão 2.x ou 3.x do Kafka é suportada.
  • Limitações da atualização: Limitações da fila de mensagens: Ao atualizar para o Milvus v2.6.15, é necessário manter a escolha atual da fila de mensagens. Não é possível alternar entre sistemas de filas de mensagens diferentes durante a atualização. O suporte à mudança de sistemas de filas de mensagens estará disponível em versões futuras.

Configurar o RocksMQ

O RocksMQ é o armazenamento de mensagens padrão no Milvus standalone.

Atualmente, só é possível configurar o RocksMQ como o armazenamento de mensagens para o Milvus standalone com o Milvus Operator.

Exemplo de configuração

O exemplo a seguir configura um serviço RocksMQ.

apiVersion: milvus.io/v1beta1
kind: Milvus
metadata:
  name: milvus
spec:
  mode: standalone
  dependencies:
    msgStreamType: rocksmq
    rocksmq:
      persistence:
        enabled: true
        pvcDeletion: true
        persistentVolumeClaim:
          spec:
            accessModes: ["ReadWriteOnce"]
            storageClassName: "local-path"  # Specify your storage class
            resources:
              requests:
                storage: 10Gi  # Specify your desired storage size
  components: {}
  config: {}
Principais opções de configuração:
  • msgStreamType: rocksmq: Define explicitamente o RocksMQ como a fila de mensagens
  • persistence.enabled: Habilita o armazenamento persistente para os dados do RocksMQ
  • persistence.pvcDeletion: Quando verdadeiro, o PVC será apagado quando a instância do Milvus for apagada
  • persistentVolumeClaim.spec: Especificação padrão do PVC do Kubernetes
  • accessModes: Normalmente ReadWriteOnce para armazenamento em bloco
  • storageClassName: Classe de armazenamento do seu cluster
  • storage: Tamanho do volume persistente

Configurar o Woodpecker

O Woodpecker é um Write-Ahead Log (WAL) nativo da nuvem, concebido para armazenamento de objectos. Ele oferece alta taxa de transferência, baixa sobrecarga operacional e escalabilidade contínua. Para obter mais detalhes, consulte Usar o Woodpecker.

Configurar o Pulsar

O Pulsar gerencia logs de alterações recentes, gera logs de fluxo de saída e fornece assinaturas de log. A configuração do Pulsar para armazenamento de mensagens é suportada tanto no Milvus standalone quanto no Milvus cluster. No entanto, com o Milvus Operator, só é possível configurar a Pulsar como armazenamento de mensagens para o Milvus cluster. Adicione os campos obrigatórios em spec.dependencies.pulsar para configurar a Pulsar.

pulsar suporta external e inCluster.

Pulsar externo

external indica o uso de um serviço Pulsar externo. Os campos usados para configurar um serviço Pulsar externo incluem:

  • external: Um valor true indica que o Milvus usa um serviço Pulsar externo.
  • endpoints: Os endpoints do Pulsar.

Exemplo de configuração

O exemplo seguinte configura um serviço Pulsar externo.

apiVersion: milvus.io/v1alpha1
kind: Milvus
metadata:
  name: my-release
  labels:
    app: milvus
spec:
  dependencies: # Optional
    pulsar: # Optional
      # Whether (=true) to use an existed external pulsar as specified in the field endpoints or 
      # (=false) create a new pulsar inside the same kubernetes cluster for milvus.
      external: true # Optional default=false
      # The external pulsar endpoints if external=true
      endpoints:
      - 192.168.1.1:6650
  components: {}
  config: {}           

Pulsar interno

inCluster indica que quando um cluster Milvus é iniciado, um serviço Pulsar é iniciado automaticamente no cluster.

Exemplo

O exemplo a seguir configura um serviço Pulsar interno.

apiVersion: milvus.io/v1alpha1
kind: Milvus
metadata:
  name: my-release
  labels:
    app: milvus
spec:
  dependencies:
    pulsar:
      inCluster:
        values:
          components:
            autorecovery: false
          zookeeper:
            replicaCount: 1
          bookkeeper:
            replicaCount: 1
            resoureces:
              limit:
                cpu: '4'
              memory: 8Gi
            requests:
              cpu: 200m
              memory: 512Mi
          broker:
            replicaCount: 1
            configData:
              ## Enable `autoSkipNonRecoverableData` since bookkeeper is running
              ## without persistence
              autoSkipNonRecoverableData: "true"
              managedLedgerDefaultEnsembleSize: "1"
              managedLedgerDefaultWriteQuorum: "1"
              managedLedgerDefaultAckQuorum: "1"
          proxy:
            replicaCount: 1
  components: {}
  config: {}            
Este exemplo especifica o número de réplicas de cada componente do Pulsar, os recursos de computação do Pulsar BookKeeper e outras configurações.
Encontre os itens de configuração completos para configurar um serviço interno da Pulsar em values.yaml. Adicione itens de configuração conforme necessário em pulsar.inCluster.values como mostrado no exemplo anterior.

Supondo que o arquivo de configuração tenha o nome milvuscluster.yaml, execute o seguinte comando para aplicar a configuração.

kubectl apply -f milvuscluster.yaml

Configurar o Kafka

O Pulsar é o armazenamento de mensagens padrão em um cluster Milvus. Se pretender utilizar o Kafka, adicione o campo opcional msgStreamType para configurar o Kafka.

kafka suporta external e inCluster.

Kafka externo

external indica a utilização de um serviço Kafka externo.

Os campos utilizados para configurar um serviço Kafka externo incluem:

  • external: Um valor true indica que o Milvus utiliza um serviço Kafka externo.
  • brokerList: A lista de corretores para os quais enviar as mensagens.

Exemplo de configuração

O exemplo seguinte configura um serviço Kafka externo.

apiVersion: milvus.io/v1alpha1
kind: Milvus
metadata:
  name: my-release
  labels:
    app: milvus
spec:
  config:
    kafka:
      # securityProtocol supports: PLAINTEXT, SSL, SASL_PLAINTEXT, SASL_SSL 
      securityProtocol: PLAINTEXT
      # saslMechanisms supports: PLAIN, SCRAM-SHA-256, SCRAM-SHA-512
      saslMechanisms: PLAIN
      saslUsername: ""
      saslPassword: ""
  # Omit other fields ...
  dependencies:
    # Omit other fields ...
    msgStreamType: "kafka"
    kafka:
      external: true
      brokerList: 
        - "kafkaBrokerAddr1:9092"
        - "kafkaBrokerAddr2:9092"
        # ...

As configurações SASL são suportadas na versão v0.8.5 ou superior do operador.

Kafka interno

inCluster indica que quando um cluster Milvus é iniciado, um serviço Kafka é iniciado automaticamente no cluster.

Exemplo

O exemplo a seguir configura um serviço Kafka interno.

apiVersion: milvus.io/v1alpha1
kind: Milvus
metadata:
  name: my-release
  labels:
    app: milvus
spec: 
  dependencies:
    msgStreamType: "kafka"
    kafka:
      inCluster: 
        values: {} # values can be found in https://artifacthub.io/packages/helm/bitnami/kafka
  components: {}
  config: {}

Encontre os itens de configuração completos para configurar um serviço Kafka interno aqui. Adicione itens de configuração conforme necessário em kafka.inCluster.values.

Supondo que o ficheiro de configuração tenha o nome milvuscluster.yaml, execute o seguinte comando para aplicar a configuração.

kubectl apply -f milvuscluster.yaml

O que se segue

Saiba como configurar outras dependências do Milvus com o Milvus Operator: