乐于分享
好东西不私藏

Milvus 2.6.10 保姆级安装教程

Milvus 2.6.10 保姆级安装教程

Milvus 是一款开源的、专为 AI 应用打造的向量数据库。它能够高效存储、索引和检索由深度学习模型生成的向量数据,是构建 RAG(检索增强生成)、推荐系统、图像检索、语义搜索等 AI 应用的核心基础设施。今天重点介绍一下2.6.10的安装部署。

一、核心组件对比:2.6.10 与之前版本的本质差异

1.1 消息队列(WAL)组件演进

对比维度
v2.1 - v2.5(Kafka/Pulsar)
v2.6+(Woodpecker)
核心架构
依赖外部 Broker(Kafka/Pulsar)
嵌入式 WAL,直接读写对象存储
存储依赖
需要本地磁盘(Kafka/Pulsar 数据目录)
零磁盘架构,所有日志存 S3/MinIO
元数据管理
Zookeeper(Kafka)或 BookKeeper(Pulsar)
etcd 统一管理
部署复杂度
需独立维护 Kafka/ZK 或 Pulsar 集群
两种模式:MemoryBuffer(无额外组件)或 QuorumBuffer(3节点仲裁)
运维成本
高(需管理磁盘、分区、副本、再均衡)
低(对象存储自动扩展,无需容量规划)
成熟度
生产验证充分,社区生态成熟
Milvus 2.6 新引入,需持续验证

选型结论:

Woodpecker 是 Milvus 2.6 才推出的全新组件,虽然在官方基准测试中表现亮眼,但缺乏大规模生产环境的长期验证。相比之下,Kafka 已支撑数万个企业的核心数据流十年以上,在故障恢复、数据一致性、运维工具链方面积累深厚。

因此,本文档的部署方案仍采用 Kafka 作为消息队列。

二、高可用 Milvus 2.6 集群完整组件清单(Kafka 模式)

组件
建议节点数
高可用要求
备注
etcd
3
集群模式,奇数节点
元数据存储
Kafka
3
分区副本数 ≥ 3,min.insync.replicas = 2
WAL 存储
Zookeeper
3
集群模式
Kafka 依赖
MinIO / S3
分布式
多节点或云服务
数据持久化
MixCoord
1 主 1 备
mixCoord.enableActiveStandby: true
合并后的协调器,管理所有协调工作
Proxy
≥ 2
多副本 + 负载均衡
请求接入
QueryNode
≥ 2
多副本 + 内存副本
批式数据检索
StreamingNode
≥ 2
多副本
流式数据消费与写入(2.6 新增)
DataNode
≥ 2
多副本
数据落盘、索引构建、压缩(已合并 IndexNode)
负载均衡器
2(主备)
Keepalived VIP 漂移
流量入口

三、部署架构说明

本教程采用混合部署方式,兼顾稳定性与运维便捷性:

组件类型
部署方式
说明
Kafka
集群模式
独立部署,确保消息队列高可用
ZooKeeper
集群模式
Kafka 依赖,独立部署
etcd
二进制宿主机部署
元数据存储,集群模式(3节点)
MinIO
二进制宿主机部署
对象存储,分布式模式(≥4节点)
Milvus 组件
Docker 容器部署
包括 MixCoord、Proxy、QueryNode、StreamingNode、DataNode

扩展说明:

以上组件也可以迁移至 Kubernetes 容器平台部署,部署逻辑和配置方式类似,本文不再赘述。

一、安装 Docker

curl -fsSL https://get.docker.com | sh

1.1 配置镜像加速器

sudo mkdir -p /etc/dockersudo tee /etc/docker/daemon.json <<-'EOF'{  "registry-mirrors": [    "https://docker.m.daocloud.io",    "https://docker.xuanyuan.me",    "https://docker.1ms.run"  ]}EOF

1.2 重启 Docker

sudo systemctl daemon-reloadsudo systemctl restart docker

1.3 验证配置

docker info | grep -A 5 "Registry Mirrors"

二、安装 Docker Compose

wget https://github.com/docker/compose/releases/download/v2.30.3/docker-compose-linux-x86_64sudo mv docker-compose-linux-x86_64 /usr/local/bin/docker-composesudo chmod +x /usr/local/bin/docker-composedocker-compose --version

三、组件下载地址(备查)

docker pull milvusdb/milvus:v2.6.10wget https://github.com/etcd-io/etcd/releases/download/v3.5.5/etcd-v3.5.5-linux-amd64.tar.gzwget https://dl.minio.org.cn/server/minio/release/linux-amd64/miniowget https://archive.apache.org/dist/kafka/3.6.0/kafka_2.13-3.6.0.tgzwget https://archive.apache.org/dist/zookeeper/zookeeper-3.9.1/apache-zookeeper-3.9.1-bin.tar.gz

四、搭建 MinIO

4.1 基础配置

chmod +x minioecho "*   soft    nofile  65535" | sudo tee -a /etc/security/limits.confecho "*   hard    nofile  65535" | sudo tee -a /etc/security/limits.confmkdir -p /data/minio

4.2 systemd 服务配置

创建 /etc/systemd/system/minio.service

[Unit]Description=MinIOAfter=network-online.target[Service]User=rootGroup=rootEnvironmentFile=/home/puaiuc/minio/conf/minio.confExecStart=/home/puaiuc/minio/minio server $MINIO_OPTSRestart=alwaysLimitNOFILE=65536[Install]WantedBy=multi-user.target

创建 /home/puaiuc/minio/conf/minio.conf

MINIO_ROOT_USER=adminMINIO_ROOT_PASSWORD=admin123MINIO_OPTS="server --address :9000 --console-address :9001 /data/minio"

4.3 启动服务

systemctl start miniosystemctl enable minio

五、部署 etcd

5.1 生成证书

mkdir -p /home/puaiuc/etcd/ssl && cd /home/puaiuc/etcd/ssl# CA 证书openssl genrsa -out ca.key 4096openssl req -x509 -new -key ca.key -days 3650 -out ca.crt -subj "/CN=etcd Root CA"# 服务端证书openssl genrsa -out etcd-server.key 2048openssl req -new -key etcd-server.key -out etcd-server.csr -subj "/CN=etcd-server"openssl x509 -req -in etcd-server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out etcd-server.crt -days 3650# 客户端证书openssl genrsa -out client.key 2048openssl req -new -key client.key -out client.csr -subj "/CN=etcd-client"openssl x509 -req -in client.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out client.crt -days 3650

5.2 配置并启动

tar -zxvf etcd-v3.5.5-linux-amd64.tar.gzmkdir -p /home/puaiuc/etcd/data

创建 /home/puaiuc/etcd/etcd.conf

name: 'etcd'data-dir: '/home/puaiuc/etcd/data'listen-client-urls: 'https://0.0.0.0:2379'advertise-client-urls: 'https://你的IP:2379'cert-file: '/home/puaiuc/etcd/ssl/etcd-server.crt'key-file: '/home/puaiuc/etcd/ssl/etcd-server.key'trusted-ca-file: '/home/puaiuc/etcd/ssl/ca.crt'client-cert-auth: true
nohup /home/puaiuc/etcd/etcd-v3.5.5-linux-amd64/etcd --config-file=/home/puaiuc/etcd/etcd.conf > /home/puaiuc/etcd/etcd.log 2>&1 &

六、部署 Milvus

6.1 生成 MinIO Access Key

wget https://dl.min.io/client/mc/release/linux-amd64/mcchmod +x mc && sudo mv mc /usr/local/bin/mc alias set myminio http://你的MinIO_IP:9000 admin admin123mc admin accesskey create myminio admin

6.2 编写 docker-compose 文件

创建 docker-compose-milvus-cluster.yaml

version: '3.5'services:  mixcoord:    image: milvusdb/milvus:v2.6.10    command: ["milvus", "run", "mixcoord"]    network_mode: host    environment:      ETCD_ENDPOINTS: "你的ETCD_IP:2379"      MINIO_ADDRESS: "你的MinIO_IP:9000"      MINIO_ACCESS_KEY_ID: "生成的AccessKey"      MINIO_SECRET_ACCESS_KEY: "生成的SecretKey"      MQ_TYPE: "kafka"      KAFKA_BROKER_LIST: "你的Kafka_IP:9092"  proxy:    image: milvusdb/milvus:v2.6.10    command: ["milvus", "run", "proxy"]    network_mode: host    environment:      ETCD_ENDPOINTS: "你的ETCD_IP:2379"      MINIO_ADDRESS: "你的MinIO_IP:9000"      MINIO_ACCESS_KEY_ID: "生成的AccessKey"      MINIO_SECRET_ACCESS_KEY: "生成的SecretKey"      MQ_TYPE: "kafka"      KAFKA_BROKER_LIST: "你的Kafka_IP:9092"  streamingnode:    image: milvusdb/milvus:v2.6.10    command: ["milvus", "run", "streamingnode"]    network_mode: host    environment:      ETCD_ENDPOINTS: "你的ETCD_IP:2379"      MINIO_ADDRESS: "你的MinIO_IP:9000"      MINIO_ACCESS_KEY_ID: "生成的AccessKey"      MINIO_SECRET_ACCESS_KEY: "生成的SecretKey"      MQ_TYPE: "kafka"      KAFKA_BROKER_LIST: "你的Kafka_IP:9092"  querynode:    image: milvusdb/milvus:v2.6.10    command: ["milvus", "run", "querynode"]    network_mode: host    environment:      ETCD_ENDPOINTS: "你的ETCD_IP:2379"      MINIO_ADDRESS: "你的MinIO_IP:9000"      MINIO_ACCESS_KEY_ID: "生成的AccessKey"      MINIO_SECRET_ACCESS_KEY: "生成的SecretKey"      MQ_TYPE: "kafka"      KAFKA_BROKER_LIST: "你的Kafka_IP:9092"  datanode:    image: milvusdb/milvus:v2.6.10    command: ["milvus", "run", "datanode"]    network_mode: host    environment:      ETCD_ENDPOINTS: "你的ETCD_IP:2379"      MINIO_ADDRESS: "你的MinIO_IP:9000"      MINIO_ACCESS_KEY_ID: "生成的AccessKey"      MINIO_SECRET_ACCESS_KEY: "生成的SecretKey"      MQ_TYPE: "kafka"      KAFKA_BROKER_LIST: "你的Kafka_IP:9092"

6.3 启动集群

docker-compose -f docker-compose-milvus-cluster.yaml up -dcurl http://localhost:9091/healthz

七、验证安装

pip install pymilvus==2.6.10 milvus-cli -i https://pypi.tuna.tsinghua.edu.cn/simplemilvus_cli

进入 CLI 后执行:

connect -uri http://localhost:19530list databases

成功列出数据库即表示安装完成。