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

Milvus Operator を使用したメッセージストレージの設定

Milvus 3.x では、Woodpecker がデフォルトのメッセージキューとして使用されます(Woodpecker を参照)。Milvus Operator を使用すると、RocksMQ、Pulsar、または Kafka を設定して、最近の変更のログ管理、ストリームログの出力、およびログのサブスクリプションを提供することもできます。 このトピックでは、Milvus Operator を使用して Milvus をインストールする際に、メッセージストレージの依存関係を設定する方法について説明します。詳細については、Milvus Operator リポジトリの「Milvus Operator を使用したメッセージストレージの設定」を参照してください。

このトピックでは、Milvus Operator がすでにデプロイされていることを前提としています。

詳細については、「Milvus Operatorのデプロイ」を参照してください。

Milvus Operator を使用して Milvus クラスタを起動するには、設定ファイルを指定する必要があります。

kubectl apply -f https://raw.githubusercontent.com/zilliztech/milvus-operator/main/config/samples/milvus_cluster_default.yaml

サードパーティの依存関係を設定するには、milvus_cluster_default.yaml 内のコードテンプレートを編集するだけで済みます。以下のセクションでは、オブジェクトストレージ、etcd、および Pulsar の設定方法をそれぞれ紹介します。

開始する前に

以下の表は、Milvus のスタンドアロンモードおよびクラスタモードにおいて、RocksMQ、Pulsar、Kafka、Woodpecker がサポートされているかどうかを示しています。

RocksMQPulsarKafkaWoodpecker
スタンドアロンモード✔️✔️✔️✔️
クラスターモード✖️✔️✔️✔️

メッセージストレージの指定に関しては、他にも以下の制限があります:

  • 1つのMilvusインスタンスにつき、1つのメッセージストレージのみがサポートされています。ただし、1つのインスタンスに複数のメッセージストレージが設定されていた場合についても、下位互換性は維持されています。優先順位は以下の通りです:
    • スタンドアロンモード:Woodpecker(デフォルト) > RocksMQ > Pulsar > Kafka
    • クラスタモード:Woodpecker(デフォルト) > Pulsar > Kafka
  • Milvus システムの稼働中は、メッセージストアを変更することはできません。
  • Kafka 2.x または 3.x バージョンのみがサポートされています。
  • アップグレードに関する制限事項メッセージキューに関する制限事項:Milvus v3.0.1 へのアップグレード時には、現在のメッセージキューの選択を維持する必要があります。アップグレード中に異なるメッセージキューシステム間での切り替えはサポートされていません。メッセージキューシステムの変更機能は、将来のバージョンで提供される予定です。

RocksMQ の設定

RocksMQ は、2.5.x までの Milvus スタンドアロンにおけるデフォルトのメッセージストレージでした(2.6.x からは Woodpecker に置き換えられました)。

現在、Milvus Operator を使用する場合にのみ、Milvus スタンドアロンのメッセージストアとして RocksMQ を設定できます。

以下の例は、RocksMQ サービスを設定するものです。

apiVersion: milvus.io/v1beta1
kind: Milvus
metadata:
  name: milvus
spec:
  mode: standalone
  dependencies:
    msgStreamType: rocksmq
    rocksmq:
      persistence:
        enabled: true
        pvcDeletion: true
        persistentVolumeClaim:
          spec:
            accessModes: ["ReadWriteOnce"]
            storageClassName: "local-path"  # Specify your storage class
            resources:
              requests:
                storage: 10Gi  # Specify your desired storage size
  components: {}
  config: {}
主な設定オプション:
  • msgStreamType: rocksmq: RocksMQをメッセージキューとして明示的に設定します
  • persistence.enabled: RocksMQ データの永続ストレージを有効にします
  • persistence.pvcDeletion: true の場合、Milvus インスタンスが削除されると PVC も削除されます
  • persistentVolumeClaim.spec: 標準のKubernetes PVC仕様
  • accessModes: ブロックストレージの場合は通常、ReadWriteOnce
  • storageClassName: クラスタのストレージクラス
  • storage: 永続ボリュームのサイズ

Woodpecker の設定

Woodpeckerは、オブジェクトストレージ向けに設計されたクラウドネイティブなWrite-Ahead Log(WAL)です。高いスループット、低い運用オーバーヘッド、シームレスなスケーラビリティを提供します。詳細については、「Woodpecker」を参照してください。

Pulsar の設定

Pulsarは、最近の変更のログを管理し、ストリームログを出力し、ログのサブスクリプションを提供します。メッセージストレージとしてのPulsarの設定は、MilvusスタンドアロンおよびMilvusクラスターの両方でサポートされています。ただし、Milvus Operatorを使用する場合、Pulsarをメッセージストレージとして設定できるのはMilvusクラスターのみです。Pulsarを設定するには、「spec.dependencies.pulsar 」の下に必要なフィールドを追加してください。

pulsar external および をサポートしています。inCluster

外部Pulsar

external は、外部のPulsarサービスの使用を示します。 外部のPulsarサービスを設定するために使用されるフィールドには、以下のものがあります:

  • external:true に値が設定されている場合、Milvus は外部の Pulsar サービスを使用することを示します。
  • endpoints: Pulsar のエンドポイント。

以下の例は、外部Pulsarサービスを設定するものです。

apiVersion: milvus.io/v1alpha1
kind: Milvus
metadata:
  name: my-release
  labels:
    app: milvus
spec:
  dependencies: # Optional
    pulsar: # Optional
      # Whether (=true) to use an existed external pulsar as specified in the field endpoints or 
      # (=false) create a new pulsar inside the same kubernetes cluster for milvus.
      external: true # Optional default=false
      # The external pulsar endpoints if external=true
      endpoints:
      - 192.168.1.1:6650
  components: {}
  config: {}           

内部Pulsar

inCluster は、Milvus クラスタの起動時に、Pulsar サービスがクラスタ内で自動的に起動することを示します。

次の例は、内部 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
            resoureces:
              limit:
                cpu: '4'
              memory: 8Gi
            requests:
              cpu: 200m
              memory: 512Mi
          broker:
            replicaCount: 1
            configData:
              ## Enable `autoSkipNonRecoverableData` since bookkeeper is running
              ## without persistence
              autoSkipNonRecoverableData: "true"
              managedLedgerDefaultEnsembleSize: "1"
              managedLedgerDefaultWriteQuorum: "1"
              managedLedgerDefaultAckQuorum: "1"
          proxy:
            replicaCount: 1
  components: {}
  config: {}            
この例では、Pulsar の各コンポーネントのレプリカ数、Pulsar BookKeeper のコンピューティングリソース、およびその他の設定を指定しています。
内部 Pulsar サービスを構成するための完全な設定項目については、values.yaml を参照してください。前の例に示すように、pulsar.inCluster.values の下に必要に応じて設定項目を追加してください。

設定ファイルの名前がmilvuscluster.yaml であると仮定して、次のコマンドを実行し、設定を適用します。

kubectl apply -f milvuscluster.yaml

Kafka の設定

2.5.x までは、Pulsar が Milvus クラスタのデフォルトのメッセージストレージでした(2.6.x からは Woodpecker に置き換えられました)。Kafka を使用する場合は、オプションフィールドmsgStreamType を追加して Kafka を設定してください。

kafka external および をサポートしています。inCluster

外部Kafka

external は、外部のKafkaサービスを使用することを示します。

外部Kafkaサービスを設定するために使用されるフィールドは次のとおりです:

  • external:true の値は、Milvus が外部 Kafka サービスを使用することを示します。
  • brokerList: メッセージを送信するブローカーのリスト。

以下の例は、外部Kafkaサービスを設定するものです。

apiVersion: milvus.io/v1alpha1
kind: Milvus
metadata:
  name: my-release
  labels:
    app: milvus
spec:
  config:
    kafka:
      # securityProtocol supports: PLAINTEXT, SSL, SASL_PLAINTEXT, SASL_SSL 
      securityProtocol: PLAINTEXT
      # saslMechanisms supports: PLAIN, SCRAM-SHA-256, SCRAM-SHA-512
      saslMechanisms: PLAIN
      saslUsername: ""
      saslPassword: ""
  # Omit other fields ...
  dependencies:
    # Omit other fields ...
    msgStreamType: "kafka"
    kafka:
      external: true
      brokerList: 
        - "kafkaBrokerAddr1:9092"
        - "kafkaBrokerAddr2:9092"
        # ...

SASLの設定は、operator v0.8.5以降のバージョンでサポートされています。

内部 Kafka

inCluster は、Milvus クラスタの起動時に、そのクラスタ内で Kafka サービスが自動的に起動することを示しています。

以下の例は、内部 Kafka サービスを設定するものです。

apiVersion: milvus.io/v1alpha1
kind: Milvus
metadata:
  name: my-release
  labels:
    app: milvus
spec: 
  dependencies:
    msgStreamType: "kafka"
    kafka:
      inCluster: 
        values: {} # values can be found in https://artifacthub.io/packages/helm/bitnami/kafka
  components: {}
  config: {}

内部Kafkaサービスを設定するための完全な設定項目については、こちらをご覧ください。必要に応じて、kafka.inCluster.values の下に設定項目を追加してください。

設定ファイルの名前をmilvuscluster.yaml とする場合、以下のコマンドを実行して設定を適用します。

kubectl apply -f milvuscluster.yaml

次の手順

Milvus Operator を使用して他の Milvus 依存関係を設定する方法については、以下をご覧ください:

翻訳DeepL

マネージド Milvus を無料で試す

Zilliz Cloud は手間いらず、Milvus を基盤に 10 倍高速です。

始める
フィードバック

このページは役に立ちましたか ?