• 关于 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 Standalone 模式和集群模式是否支持 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 Standalone 独立部署版本 2.5.x 及更早版本中,RocksMQ 是默认的消息存储(从 2.6.x 版本起被 Woodpecker 取代)。

目前,您只能通过 Milvus Operator 将 RocksMQ 配置为 Milvus Standalone 的消息存储。

示例

以下示例演示了如何配置 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 Standalone 模式还是 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

在 2.5.x 及更早版本中,Pulsar 是 Milvus 集群中的默认消息存储(从 2.6.x 开始被 Woodpecker 取代)。若要使用 Kafka,请添加可选字段 `msgStreamType ` 来配置 Kafka。

kafka 支持externalinCluster

外部 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"
        # ...

操作员 v0.8.5 及更高版本支持 SASL 配置。

内部 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 SaaS服务 ?

Zilliz Cloud是基于Milvus的全托管向量数据库,拥有更高性能,更易扩展,以及卓越性价比

免费试用 Zilliz Cloud
反馈

此页对您是否有帮助?