将 Kafka 用作 Milvus 消息队列
Apache Kafka 是 Milvus 支持的消息队列(WAL)后端之一。 在 Milvus 3.x 中,Woodpecker是默认的消息队列;但对于偏好使用 Kafka 的用户,系统仍提供全面支持。Kafka 主要与 Milvus Distributed(集群)配合使用;独立部署通常使用嵌入式的 Woodpecker 或RocksMQ。
版本兼容性
- Milvus 仅支持Kafka 2.x 和 3.x版本。
- 可通过 Helm 或 Milvus Operator 为 Milvus Distributed(集群)配置 Kafka。
使用 Helm 部署基于 Kafka 的 Milvus 集群
安装与配置
若要使用外部 Kafka 服务,请禁用内置的 Pulsar,并在 `values.yaml ` 覆盖配置中启用 `externalKafka `,然后使用该配置安装 Milvus:
pulsarv3:
enabled: false
externalKafka:
enabled: true
brokerList: <your_kafka_address>:<your_kafka_port>
securityProtocol: SASL_SSL
sasl:
mechanisms: PLAIN
username: ""
password: ""
helm install my-release zilliztech/milvus -f values.yaml
有关 SASL/SSL 身份验证的详细信息,请参阅《使用 SASL/SSL 连接到 Kafka》。
卸载
helm uninstall my-release
使用 Milvus Operator 部署带 Kafka 的 Milvus 集群
使用 Milvus Operator 时,请在spec.dependencies.kafka (仅限集群)下设置spec.dependencies.msgStreamType: "kafka" 并配置 Kafka。kafka 支持external 和inCluster 。
外部 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: ""
dependencies:
msgStreamType: "kafka"
kafka:
external: true
brokerList:
- "kafkaBrokerAddr1:9092"
- "kafkaBrokerAddr2:9092"
Milvus Operator v0.8.5 及更高版本支持 SASL 配置。
内部(集群内)Kafka
apiVersion: milvus.io/v1alpha1
kind: Milvus
metadata:
name: my-release
labels:
app: milvus
spec:
dependencies:
msgStreamType: "kafka"
kafka:
inCluster:
values: {} # see https://artifacthub.io/packages/helm/bitnami/kafka
components: {}
config: {}
应用配置(假设文件名为milvuscluster.yaml ):
kubectl apply -f milvuscluster.yaml
卸载
kubectl delete milvus my-release
注意事项
- 从 2.5.x 升级至 2.6.x: 消息队列限制:升级至 Milvus v3.0.0 时,必须保留当前的消息队列选择。升级过程中不支持在不同的消息队列系统之间切换。未来版本将支持更改消息队列系统。 如果您正在运行 Kafka 且希望继续使用它,请在升级过程中不要更改消息队列。
- 仅支持Kafka 2.x 和 3.x版本。
- 有关 SASL/SSL 连接,请参阅《使用 SASL/SSL 连接到 Kafka》。