Utilizar Pulsar como cola de mensajes de Milvus
Apache Pulsar es uno de los backends de cola de mensajes (WAL) compatibles con Milvus. En Milvus 3.x, Woodpecker es la cola de mensajes predeterminada; no obstante, Pulsar sigue siendo totalmente compatible para los usuarios que lo prefieran. Pulsar se utiliza principalmente con Milvus Distributed (clúster); las implementaciones independientes suelen utilizar Woodpecker integrado o RocksMQ.
Compatibilidad de versiones
| Versión de Milvus | Versión de Pulsar compatible | Predeterminada |
|---|---|---|
| 2.5.x y posteriores | Pulsar v3 (recomendada) o Pulsar v2 | Pulsar v3 (a través de Helm / Milvus Operator) |
| 2.4.x y anteriores | Pulsar v2 | Pulsar v2 |
Desde Milvus 2.5, el gráfico Helm de Milvus y Milvus Operator implementan Pulsar v3 de forma predeterminada; Pulsar v2 sigue siendo compatible. Consulta «Actualizar Pulsar de la v2 a la v3 » y «Seguir utilizando Pulsar v2».
Implementar un clúster de Milvus con Pulsar mediante Helm
Instalación
Para implementar un clúster de Milvus que utilice el Pulsar incluido (en lugar de Woodpecker), instala el gráfico de Helm con el nodo de streaming habilitado:
helm install my-release zilliztech/milvus \
--set image.all.tag=v3.0.0 \
--set pulsarv3.enabled=true \
--set woodpecker.enabled=false \
--set streaming.enabled=true \
--set indexNode.enabled=false
En Kubernetes v1.25 y versiones posteriores, si se producen problemas con la API de PodDisruptionBudget (PDB) debido al sub-chart de Pulsar incluido, desactive las políticas de PDB de 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
Configuración
Para conectar Milvus a un servicio Pulsar externo, desactiva el Pulsar integrado y habilita « externalPulsar » en una anulación de « 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
Si has utilizado el Pulsar incluido y deseas eliminar sus datos persistentes, elimina los PVC de Pulsar (denominados « my-release-pulsarv3-* »):
kubectl get pvc | grep my-release-pulsarv3
kubectl delete pvc <pulsar-pvc-name> ...
Implementar un clúster de Milvus con Pulsar utilizando Milvus Operator
Con Milvus Operator, configura Pulsar en spec.dependencies.pulsar (compatible únicamente con clústeres de Milvus). pulsar admite external y 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 (dentro del clúster)
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: {}
Aplica la configuración (suponiendo que el archivo sea milvuscluster.yaml):
kubectl apply -f milvuscluster.yaml
Desinstalar
kubectl delete milvus my-release
Notas
- Actualización de la versión 2.5.x a la 2.6.x: Limitaciones de la cola de mensajes: Al actualizar a Milvus v3.0.0, debes mantener tu elección actual de cola de mensajes. No se admite el cambio entre diferentes sistemas de colas de mensajes durante la actualización. La compatibilidad con el cambio de sistemas de colas de mensajes estará disponible en futuras versiones. Si utilizas Pulsar y deseas seguir utilizándolo, no cambies la cola de mensajes durante la actualización.
- Pulsar v2 → v3: consulta Actualizar Pulsar de la v2 a la v3; para seguir con la v2, consulta Seguir utilizando Pulsar v2.