Utilizar o Pulsar como fila de mensagens do Milvus
O Apache Pulsar é um dos backends de fila de mensagens (WAL) suportados pelo Milvus. No Milvus 3.x, o Woodpecker é a fila de mensagens predefinida; o Pulsar continua a ser totalmente suportado para os utilizadores que o preferirem. O Pulsar é utilizado principalmente com o Milvus Distributed (cluster); as implementações autónomas utilizam normalmente o Woodpecker incorporado ou o RocksMQ.
Compatibilidade de versões
| Versão do Milvus | Versão do Pulsar suportada | Padrão |
|---|---|---|
| 2.5.x e posteriores | Pulsar v3 (recomendado) ou Pulsar v2 | Pulsar v3 (através do Helm / Milvus Operator) |
| 2.4.x e anteriores | Pulsar v2 | Pulsar v2 |
Desde o Milvus 2.5, o gráfico Helm do Milvus e o Milvus Operator implementam o Pulsar v3 por predefinição; o Pulsar v2 continua a ser compatível. Consulte Atualizar o Pulsar da v2 para a v3 e Continuar a utilizar o Pulsar v2.
Implementar um cluster Milvus com o Pulsar utilizando o Helm
Instalar
Para implementar um cluster Milvus que utilize o Pulsar incluído (em vez do Woodpecker), instale o gráfico Helm com o Streaming Node ativado:
helm install my-release zilliztech/milvus \
--set image.all.tag=v3.0.1 \
--set pulsarv3.enabled=true \
--set woodpecker.enabled=false \
--set streaming.enabled=true \
--set indexNode.enabled=false
No Kubernetes v1.25 e versões posteriores, se enfrentar problemas com a API do PodDisruptionBudget (PDB) decorrentes do sub-chart do Pulsar incluído, desative as políticas de PDB do Pulsar:
helm install my-release zilliztech/milvus \
--set pulsar.bookkeeper.pdb.usePolicy=false \
--set pulsar.broker.pdb.usePolicy=false \
--set pulsar.proxy.pdb.usePolicy=false \
--set pulsar.zookeeper.pdb.usePolicy=false
Configurar
Para ligar o Milvus a um serviço Pulsar externo, desative o Pulsar incluído e ative o « externalPulsar » numa substituição do « values.yaml »:
pulsarv3:
enabled: false
externalPulsar:
enabled: true
host: <your_pulsar_host>
port: 6650
maxMessageSize: "5242880" # 5 MB, maximum size of each message
tenant: public
namespace: default
helm install my-release zilliztech/milvus -f values.yaml
Desinstalar
helm uninstall my-release
Se utilizou o Pulsar incluído e pretende remover os seus dados persistentes, elimine os PVCs do Pulsar (denominados « my-release-pulsarv3-* »):
kubectl get pvc | grep my-release-pulsarv3
kubectl delete pvc <pulsar-pvc-name> ...
Implementar um cluster Milvus com o Pulsar utilizando o Milvus Operator
Com o Milvus Operator, configure o Pulsar em « spec.dependencies.pulsar » (suportado apenas para clusters Milvus). O « pulsar » suporta « external » e « inCluster ».
Pulsar externo
apiVersion: milvus.io/v1alpha1
kind: Milvus
metadata:
name: my-release
labels:
app: milvus
spec:
dependencies:
pulsar:
external: true
endpoints:
- 192.168.1.1:6650
components: {}
config: {}
Pulsar interno (no cluster)
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
broker:
replicaCount: 1
configData:
autoSkipNonRecoverableData: "true"
managedLedgerDefaultEnsembleSize: "1"
managedLedgerDefaultWriteQuorum: "1"
managedLedgerDefaultAckQuorum: "1"
proxy:
replicaCount: 1
components: {}
config: {}
Aplique a configuração (partindo do princípio de que o ficheiro é milvuscluster.yaml):
kubectl apply -f milvuscluster.yaml
Desinstalar
kubectl delete milvus my-release
Notas
- Atualização da versão 2.5.x para a 2.6.x: Limitações da fila de mensagens: Ao atualizar para o Milvus v3.0.1, deve manter a sua escolha atual de fila de mensagens. Não é suportada a mudança entre diferentes sistemas de fila de mensagens durante a atualização. O suporte à alteração de sistemas de fila de mensagens estará disponível em versões futuras. Se estiver a utilizar o Pulsar e pretender mantê-lo, não altere a fila de mensagens durante a atualização.
- Pulsar v2 → v3: consulte Atualizar o Pulsar da v2 para a v3; para permanecer na v2, consulte Continuar a utilizar o Pulsar v2.