MilvusのメッセージキューとしてPulsarを使用する
Apache Pulsar は、Milvus がサポートするメッセージキュー(WAL)バックエンドの 1 つです。 Milvus 3.x では、Woodpecker がデフォルトのメッセージキューとなっていますが、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 クラスターをデプロイする
インストール
(Woodpeckerの代わりに)バンドルされたPulsarを使用する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(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 の継続使用」を参照してください。