Milvus 是一款开源的、专为 AI 应用打造的向量数据库。它能够高效存储、索引和检索由深度学习模型生成的向量数据,是构建 RAG(检索增强生成)、推荐系统、图像检索、语义搜索等 AI 应用的核心基础设施。今天重点介绍一下2.6.10的安装部署。
一、核心组件对比:2.6.10 与之前版本的本质差异
1.1 消息队列(WAL)组件演进
选型结论:
Woodpecker 是 Milvus 2.6 才推出的全新组件,虽然在官方基准测试中表现亮眼,但缺乏大规模生产环境的长期验证。相比之下,Kafka 已支撑数万个企业的核心数据流十年以上,在故障恢复、数据一致性、运维工具链方面积累深厚。
因此,本文档的部署方案仍采用 Kafka 作为消息队列。
二、高可用 Milvus 2.6 集群完整组件清单(Kafka 模式)
三、部署架构说明
本教程采用混合部署方式,兼顾稳定性与运维便捷性:
扩展说明:
以上组件也可以迁移至 Kubernetes 容器平台部署,部署逻辑和配置方式类似,本文不再赘述。
一、安装 Docker
curl -fsSL https://get.docker.com | sh1.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" ]}EOF1.2 重启 Docker
sudo systemctl daemon-reloadsudo systemctl restart docker1.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/minio4.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 36505.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: truenohup /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 admin6.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成功列出数据库即表示安装完成。
夜雨聆风