• 關於 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
獨立模式✔️✔️✔️✔️
叢集模式✖️✔️✔️✔️

指定訊息儲存時還存在其他限制:

  • 每個 Milvus 實例僅支援一個訊息儲存。不過,我們仍維持向後相容性,允許為單一實例設定多個訊息儲存。其優先順序如下:
    • 獨立模式:Woodpecker(預設) > RocksMQ > Pulsar > Kafka
    • 叢集模式:Woodpecker(預設) > Pulsar > Kafka
  • Milvus 系統運行期間無法變更訊息儲存。
  • 僅支援 Kafka 2.x 或 3.x 版本。
  • 升級限制訊息佇列限制:升級至 Milvus v3.0.1 時,您必須維持當前的訊息佇列選項。升級過程中不支援在不同的訊息佇列系統之間切換。未來版本將支援變更訊息佇列系統的功能。

設定 RocksMQ

在 Milvus 獨立部署版本 2.5.x 之前,RocksMQ 曾是預設的消息儲存系統(自 2.6.x 起由 Woodpecker 取代)。

目前,您僅能透過 Milvus Operator 將 RocksMQ 設定為 Milvus 獨立執行版的訊息儲存系統。

範例

以下範例展示如何配置 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 是一款專為物件儲存設計的雲原生預寫日誌(WAL)。它具備高吞吐量、低運作開銷及無縫擴展性。如需更多詳細資訊,請參閱Woodpecker

配置 Pulsar

Pulsar 負責管理近期變更的日誌、輸出串流日誌,並提供日誌訂閱服務。無論是 Milvus 獨立執行模式還是 Milvus 叢集模式,皆支援將 Pulsar 配置為訊息儲存。然而,若使用 Milvus Operator,您僅能將 Pulsar 配置為 Milvus 叢集的訊息儲存。請在 `spec.dependencies.pulsar ` 下新增必要欄位以配置 Pulsar。

pulsar 支援externalinCluster

外部 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 的運算資源,以及其他設定。
請參閱values.yaml 檔案,以了解用於配置內部 Pulsar 服務的完整配置項目。如前例所示,請根據需要在pulsar.inCluster.values 下新增配置項目。

假設配置檔案名為milvuscluster.yaml ,請執行以下命令以套用配置。

kubectl apply -f milvuscluster.yaml

設定 Kafka

在 Milvus 叢集的 2.5.x 版本之前,Pulsar 是預設的訊息儲存方案(自 2.6.x 版本起由 Woodpecker 取代)。若要使用 Kafka,請新增可選欄位msgStreamType 來配置 Kafka。

kafka 支援externalinCluster

外部 Kafka

external 表示使用外部 Kafka 服務。

用於配置外部 Kafka 服務的欄位包括:

  • externaltrue 值表示 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 倍。

開始使用
反饋

這個頁面有幫助嗎?