跳到主要内容
版本:v3.0.x

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 v2Pulsar v3(通过 Helm / Milvus Operator)
2.4.x 及以下Pulsar v2Pulsar v2

自 Milvus 2.5 起,Milvus Helm chart 和 Milvus Operator 默认部署 Pulsar v3;Pulsar v2 仍然兼容。参见 Upgrade Pulsar from v2 to v3Continue Using Pulsar v2

使用 Helm 部署带 Pulsar 的 Milvus 集群

Install

要部署使用内置 Pulsar(而不是 Woodpecker)的 Milvus 集群,请在启用 Streaming Node 的情况下安装 Helm chart:

Shell
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 策略:

Shell
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

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
Shell
helm install my-release zilliztech/milvus -f values.yaml

Uninstall

Shell
helm uninstall my-release

如果你使用了内置的 Pulsar,并希望删除其持久化数据,请删除 Pulsar PVC(名称为 my-release-pulsarv3-*):

Shell
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 支持 externalinCluster

External Pulsar

YAML
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

YAML
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):

Shell
kubectl apply -f milvuscluster.yaml

卸载

Shell
kubectl delete milvus my-release

Notes

  • 从 2.5.x 升级到 2.6.xMessage Queue 限制:升级到 Milvus v3.0.0 时,必须沿用当前的 message queue 选择。升级期间不支持在不同 message queue 系统之间切换。未来版本将支持更改 message queue 系统。 如果你正在运行 Pulsar 并希望继续使用它,请不要在升级期间更改 message queue。
  • Pulsar v2 → v3:请参阅 将 Pulsar 从 v2 升级到 v3;如需继续使用 v2,请参阅 继续使用 Pulsar v2

What's next