将 Pulsar 用作 Milvus 消息队列
Apache Pulsar 是 Milvus 支持的消息队列(WAL)后端之一。 在 Milvus 3.x 中,Woodpecker是默认的消息队列;但对于偏好 Pulsar 的用户,Pulsar 仍提供全面支持。Pulsar 主要与 Milvus Distributed(集群)配合使用;独立部署通常使用嵌入式的 Woodpecker 或RocksMQ。
版本兼容性
| 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 图表和 Milvus Operator 默认部署Pulsar v3;Pulsar v2 仍保持兼容。请参阅《将 Pulsar 从 v2 升级至 v3》和《继续使用 Pulsar v2》。
使用 Helm 部署带 Pulsar 的 Milvus 集群
安装
若要部署使用捆绑版 Pulsar(而非 Woodpecker)的 Milvus 集群,请安装启用了流式处理节点的 Helm 图表:
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 子图引发 PodDisruptionBudget(PDB)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
配置
若要将 Milvus 连接到外部Pulsar 服务,请在 `values.yaml ` 覆盖配置中禁用内置的 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
卸载
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 。
外部 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: {}
内部(集群内)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
注意事项
- 从 2.5.x 升级到 2.6.x: 消息队列限制:升级到 Milvus v3.0.0 时,必须保留当前的消息队列选择。升级过程中不支持在不同的消息队列系统之间切换。未来版本将支持更改消息队列系统。 如果您正在运行 Pulsar 且希望继续使用,请在升级过程中不要更改消息队列。
- Pulsar v2 → v3:请参阅《将 Pulsar 从 v2 升级至 v3》;若要继续使用 v2,请参阅《继续使用 Pulsar v2》。