將 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 叢集,請安裝已啟用「串流節點」(Streaming Node)功能的 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 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》。