• Milvusについて
  • はじめに
  • 概念
  • ユーザーガイド
  • データのインポート
  • AIツール
  • 管理ガイド
  • ツール
  • 連携機能
  • チュートリアル
  • よくある質問
  • API Reference

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 v2Pulsar v3(Helm / Milvus Operator 経由)
2.4.x 以前Pulsar v2Pulsar 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 の継続使用」を参照してください。

今後の予定