Use Pulsar as the Milvus Message Queue
Apache Pulsar 是 Milvus 支持的消息队列(WAL)后端之一。在 Milvus 3.x 中,Woodpecker 是默认消息队列;对于偏好使用 Pulsar 的用户,Milvus 仍然完全支持 Pulsar。Pulsar 主要用于 Milvus Distributed(集群);单机部署通常使用内嵌的 Woodpecker 或 RocksMQ。
Version compatibility
| Milvus 版本 | 支持的 Pulsar 版本 | 默认值 |
|---|---|---|
| 2.5.x 及以上 | Pulsar v3(推荐)或 Pulsar v2 | Pulsar v3(通过 Helm / Milvus Operator) |
| 2.4.x 及以下 | Pulsar v2 | Pulsar v2 |
自 Milvus 2.5 起,Milvus Helm chart 和 Milvus Operator 默认部署 Pulsar v3;Pulsar v2 仍然兼容。参见 Upgrade Pulsar from v2 to v3 和 Continue Using Pulsar v2。
使用 Helm 部署带 Pulsar 的 Milvus 集群
Install
要部署使用内置 Pulsar(而不是 Woodpecker)的 Milvus 集群,请在启用 Streaming Node 的情况下安装 Helm chart:
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
在 Kubernetes v1.25 及更高版本中,如果内置 Pulsar 子 chart 出现 PodDisruptionBudget API 问题,请禁用 Pulsar PDB 策略:
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
Configure
要将 Milvus 连接到 外部 Pulsar 服务,请在 values.yaml override 中禁用内置 Pulsar,并启用 externalPulsar:
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
Uninstall
helm uninstall my-release
如果你使用了内置的 Pulsar,并希望删除其持久化数据,请删除 Pulsar PVC(名称为 my-release-pulsarv3-*):
kubectl get pvc | grep my-release-pulsarv3
kubectl delete pvc <pulsar-pvc-name> ...
使用 Milvus Operator 部署包含 Pulsar 的 Milvus 集群
使用 Milvus Operator 时,在 spec.dependencies.pulsar 下配置 Pulsar(仅 Milvus 集群支持)。pulsar 支持 external 和 inCluster。
External Pulsar
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: {}
Internal(集群内)Pulsar
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: {}
应用配置(假设文件为 milvuscluster.yaml):
kubectl apply -f milvuscluster.yaml
卸载
kubectl delete milvus my-release
Notes
- 从 2.5.x 升级到 2.6.x: Message Queue 限制:升级到 Milvus v3.0.0 时,必须沿用当前的 message queue 选择。升级期间不支持在不同 message queue 系统之间切换。未来版本将支持更改 message queue 系统。 如果你正在运行 Pulsar 并希望继续使用它,请不要在升级期间更改 message queue。
- Pulsar v2 → v3:请参阅 将 Pulsar 从 v2 升级到 v3;如需继续使用 v2,请参阅 继续使用 Pulsar v2。