Configurar o armazenamento de mensagens com o Milvus Operator
No Milvus 3.x, o Woodpecker é a fila de mensagens predefinida (consulte Woodpecker). Com o Milvus Operator, também é possível configurar o RocksMQ, o Pulsar ou o Kafka para gerir registos de alterações recentes, gerar registos de fluxo e disponibilizar subscrições de registos. Este tópico apresenta como configurar as dependências de armazenamento de mensagens ao instalar o Milvus com o Milvus Operator. Para mais detalhes, consulte «Configurar o armazenamento de mensagens com o Milvus Operator » no repositório do Milvus Operator.
Este tópico pressupõe que já tenha implementado o Milvus Operator.
É necessário especificar um ficheiro de configuração para utilizar o Milvus Operator e iniciar um cluster Milvus.
kubectl apply -f https://raw.githubusercontent.com/zilliztech/milvus-operator/main/config/samples/milvus_cluster_default.yaml
Basta editar o modelo de código em « milvus_cluster_default.yaml » para configurar as dependências de terceiros. As secções seguintes explicam como configurar o armazenamento de objetos, o etcd e o Pulsar, respetivamente.
Antes de começar
A tabela abaixo indica se o RocksMQ, o Pulsar, o Kafka e o Woodpecker são suportados no Milvus nos modos autónomo e em cluster.
| RocksMQ | Pulsar | Kafka | Woodpecker | |
|---|---|---|---|---|
| Modo autónomo | ✔️ | ✔️ | ✔️ | ✔️ |
| Modo de cluster | ✖️ | ✔️ | ✔️ | ✔️ |
Existem também outras limitações quanto à especificação do armazenamento de mensagens:
- É suportado apenas um armazenamento de mensagens por instância do Milvus. No entanto, mantemos a compatibilidade retroativa com a configuração de vários armazenamentos de mensagens para uma única instância. A prioridade é a seguinte:
- modo autónomo: Woodpecker (predefinição) > RocksMQ > Pulsar > Kafka
- modo de cluster: Woodpecker (padrão) > Pulsar > Kafka
- O armazenamento de mensagens não pode ser alterado enquanto o sistema Milvus estiver em execução.
- Apenas são suportadas as versões 2.x ou 3.x do Kafka.
- Limitações da atualização: Limitações da fila de mensagens: Ao atualizar para o Milvus v3.0.1, deve manter a sua escolha atual de fila de mensagens. A alternância entre diferentes sistemas de filas de mensagens durante a atualização não é suportada. O suporte à alteração de sistemas de filas de mensagens estará disponível em versões futuras.
Configurar o RocksMQ
O RocksMQ era o armazenamento de mensagens predefinido no Milvus autónomo até à versão 2.5.x (substituído pelo Woodpecker a partir da versão 2.6.x).
Atualmente, só é possível configurar o RocksMQ como armazenamento de mensagens para o Milvus autónomo com o Milvus Operator.
Exemplo
O exemplo seguinte 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: {}
Opções-chave de configuração:
msgStreamType: rocksmq: Define explicitamente o RocksMQ como a fila de mensagenspersistence.enabled: Ativa o armazenamento persistente para os dados do RocksMQpersistence.pvcDeletion: Quando definido como «true», o PVC será eliminado quando a instância do Milvus for eliminadapersistentVolumeClaim.spec: Especificação padrão do PVC do KubernetesaccessModes: Normalmente, «ReadWriteOnce» para armazenamento em blocostorageClassName: A classe de armazenamento do seu clusterstorage: Tamanho do volume persistente
Configurar o Woodpecker
O Woodpecker é um Write-Ahead Log (WAL) nativo da nuvem, concebido para armazenamento de objetos. Oferece elevado débito, baixa sobrecarga operacional e escalabilidade sem interrupções. Para mais detalhes, consulte Woodpecker.
Configurar o Pulsar
O Pulsar gere registos de alterações recentes, gera registos de fluxo e disponibiliza subscrições de registos. A configuração do Pulsar para armazenamento de mensagens é suportada tanto no Milvus autónomo como no cluster Milvus. No entanto, com o Milvus Operator, só é possível configurar o Pulsar como armazenamento de mensagens para o cluster Milvus. Preencha os campos obrigatórios em « spec.dependencies.pulsar » para configurar o Pulsar.
pulsar Suporta external e inCluster.
Pulsar externo
external indica a utilização de um serviço Pulsar externo.
Os campos utilizados para configurar um serviço Pulsar externo incluem:
external: Um valor de «true» indica que o Milvus utiliza um serviço Pulsar externo.endpoints: Os endpoints do Pulsar.
Exemplo
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 do Milvus é iniciado, um serviço do Pulsar é iniciado automaticamente nesse cluster.
Exemplo
O exemplo seguinte 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: {}
pulsar.inCluster.values », tal como mostrado no exemplo anterior.Partindo do princípio de que o ficheiro de configuração se chama « milvuscluster.yaml », execute o comando seguinte para aplicar a configuração.
kubectl apply -f milvuscluster.yaml
Configurar o Kafka
O Pulsar era o armazenamento de mensagens predefinido num cluster Milvus até à versão 2.5.x (substituído pelo Woodpecker a partir da versão 2.6.x). 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 brokers para os quais as mensagens devem ser enviadas.
Exemplo
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 nesse cluster.
Exemplo
O exemplo seguinte 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: {}
Consulte aqui os itens de configuração completos para configurar um serviço Kafka interno. Adicione os itens de configuração necessários em « kafka.inCluster.values ».
Partindo do princípio de que o ficheiro de configuração se chama « milvuscluster.yaml », execute o comando seguinte para aplicar a configuração.
kubectl apply -f milvuscluster.yaml
Próximos passos
Saiba como configurar outras dependências do Milvus com o Milvus Operator: