使用 Milvus Operator 設定訊息儲存
在 Milvus 3.x 中,Woodpecker 是預設的訊息佇列(請參閱Woodpecker)。透過 Milvus Operator,您亦可配置 RocksMQ、Pulsar 或 Kafka,用以管理最新變更的日誌、輸出串流日誌,並提供日誌訂閱服務。 本主題介紹在透過 Milvus Operator 安裝 Milvus 時,如何配置訊息儲存依賴項。如需更多詳細資訊,請參閱 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。
| RocksMQ | Pulsar | Kafka | Woodpecker | |
|---|---|---|---|---|
| 獨立模式 | ✔️ | ✔️ | ✔️ | ✔️ |
| 叢集模式 | ✖️ | ✔️ | ✔️ | ✔️ |
指定訊息儲存時還存在其他限制:
- 每個 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: 通常用於區塊儲存的ReadWriteOncestorageClassName: 您的叢集所使用的儲存類別storage: 持久化卷的大小
設定 Woodpecker
Woodpecker 是一款專為物件儲存設計的雲原生預寫日誌(WAL)。它具備高吞吐量、低運作開銷及無縫擴展性。如需更多詳細資訊,請參閱Woodpecker。
配置 Pulsar
Pulsar 負責管理近期變更的日誌、輸出串流日誌,並提供日誌訂閱服務。無論是 Milvus 獨立執行模式還是 Milvus 叢集模式,皆支援將 Pulsar 配置為訊息儲存。然而,若使用 Milvus Operator,您僅能將 Pulsar 配置為 Milvus 叢集的訊息儲存。請在 `spec.dependencies.pulsar ` 下新增必要欄位以配置 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.inCluster.values 下新增配置項目。假設配置檔案名為milvuscluster.yaml ,請執行以下命令以套用配置。
kubectl apply -f milvuscluster.yaml
設定 Kafka
在 Milvus 叢集的 2.5.x 版本之前,Pulsar 是預設的訊息儲存方案(自 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 依賴項: