使用 Milvus Operator 設定訊息儲存
Milvus 使用 RocksMQ、Pulsar 或 Kafka 來管理最近變更的日誌、輸出串流日誌,以及提供日誌訂閱。本主題介紹如何在使用 Milvus Operator 安裝 Milvus 時,設定訊息儲存的依賴性。如需詳細資訊,請參閱 Milvus Operator 套件庫中的Configure Message Storage with 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 | 卡夫卡 | 啄木鳥 | |
|---|---|---|---|---|
| 單機模式 | ✔️ | ✔️ | ✔️ | ✔️ |
| 叢集模式 | ✖️ | ✔️ | ✔️ | ✔️ |
指定訊息儲存也有其他限制:
- 一個 Milvus 實例只支援一個訊息儲存空間。然而,我們仍然向後相容為一個實例設定多個訊息儲存空間。優先順序如下:
- 獨立模式: RocksMQ (預設) > Pulsar > Kafka
- 群集模式:Pulsar (預設) > Kafka
- 當 Milvus 系統在執行時,訊息儲存是無法改變的。
- 只支援 Kafka 2.x 或 3.x 版本。
- 升級限制:訊息佇列限制:當升級到Milvus v2.6.16時,您必須維持目前的訊息佇列選擇。不支援在升級過程中在不同的訊息佇列系統之間切換。在未來的版本中,將會支援轉換訊息佇列系統。
設定 RocksMQ
RocksMQ 是 Milvus 單機版的預設訊息儲存空間。
目前,你只能使用 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 時,PVC 將會在 Milvus 刪除時被刪除。persistentVolumeClaim.spec:標準 Kubernetes PVC 規格accessModes:通常ReadWriteOnce用於區塊儲存storageClassName:您集群的儲存類別storage:持久卷的大小
配置 Woodpecker
Woodpecker 是專為物件儲存設計的雲端原生 Write-Ahead Log (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
Pulsar 是 Milvus 叢集的預設訊息儲存空間。如果要使用 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"
# ...
操作員 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 依賴項目: