安装与配置 #
一、安装方式概览 #
text
Milvus安装方式:
┌─────────────────────────────────────────┐
│ 安装方式选择 │
├─────────────────────────────────────────┤
│ │
│ ┌─────────────┐ ┌─────────────┐ │
│ │ 单机模式 │ │ 集群模式 │ │
│ │ (开发测试) │ │ (生产环境) │ │
│ └──────┬──────┘ └──────┬──────┘ │
│ │ │ │
│ ┌────┴────┐ ┌────┴────┐ │
│ │ Docker │ │ K8s │ │
│ │ Compose │ │ Helm │ │
│ └─────────┘ └─────────┘ │
│ │
└─────────────────────────────────────────┘
二、环境要求 #
2.1 硬件要求 #
| 组件 | 最低要求 | 推荐配置 |
|---|---|---|
| CPU | 2核 | 8核+ |
| 内存 | 8GB | 32GB+ |
| 磁盘 | 20GB SSD | 100GB+ NVMe SSD |
| GPU | 可选 | NVIDIA GPU (CUDA支持) |
2.2 软件要求 #
| 软件 | 版本要求 |
|---|---|
| Docker | 19.03+ |
| Docker Compose | 2.0+ |
| Kubernetes | 1.20+ (集群模式) |
| Python | 3.7+ |
| Go | 1.17+ (源码编译) |
三、Docker Compose安装(推荐) #
3.1 下载安装脚本 #
bash
# 创建目录
mkdir -p ~/milvus && cd ~/milvus
# 下载docker-compose配置
wget https://github.com/milvus-io/milvus/releases/download/v2.4.0/milvus-standalone-docker-compose.yml -O docker-compose.yml
3.2 启动Milvus #
bash
# 启动Milvus
docker-compose up -d
# 查看状态
docker-compose ps
# 输出示例:
# Name Command State Ports
# ─────────────────────────────────────────────────────────────────────────────────────
# milvus-etcd etcd -advertise-client-urls Up 2379/tcp, 2380/tcp
# milvus-minio /usr/bin/docker-entrypoint... Up 9000/tcp
# milvus-standalone /tini -- milvus run standa... Up 0.0.0.0:19530->19530/tcp
3.3 验证安装 #
bash
# 检查端口
netstat -an | grep 19530
# 使用curl测试
curl -X POST "http://localhost:19530/v1/vector/collections" \
-H "Content-Type: application/json" \
-d '{"collection_name": "test"}'
3.4 停止和清理 #
bash
# 停止服务
docker-compose down
# 停止并删除数据
docker-compose down -v
# 删除所有数据
rm -rf ~/milvus/volumes
四、Docker单容器安装 #
4.1 快速启动 #
bash
# 启动Milvus单容器
docker run -d --name milvus-standalone \
-p 19530:19530 \
-p 9091:9091 \
-v ~/milvus/data:/var/lib/milvus \
milvusdb/milvus:v2.4.0 \
milvus run standalone
4.2 带ETCD和MinIO的完整部署 #
bash
# 创建网络
docker network create milvus
# 启动ETCD
docker run -d --name milvus-etcd \
--network milvus \
-e ETCD_AUTO_COMPACTION_MODE=revision \
-e ETCD_AUTO_COMPACTION_RETENTION=1000 \
quay.io/coreos/etcd:v3.5.5 \
etcd -advertise-client-urls=http://127.0.0.1:2379 \
-listen-client-urls http://0.0.0.0:2379 \
--data-dir /etcd
# 启动MinIO
docker run -d --name milvus-minio \
--network milvus \
-e MINIO_ACCESS_KEY=minioadmin \
-e MINIO_SECRET_KEY=minioadmin \
minio/minio:RELEASE.2023-03-20T20-16-18Z \
minio server /minio_data
# 启动Milvus
docker run -d --name milvus-standalone \
--network milvus \
-p 19530:19530 \
-p 9091:9091 \
-e ETCD_ENDPOINTS=milvus-etcd:2379 \
-e MINIO_ADDRESS=milvus-minio:9000 \
milvusdb/milvus:v2.4.0 \
milvus run standalone
五、Kubernetes安装(生产环境) #
5.1 使用Helm安装 #
bash
# 添加Milvus Helm仓库
helm repo add milvus https://zilliztech.github.io/milvus-helm/
helm repo update
# 创建命名空间
kubectl create namespace milvus
# 安装Milvus集群
helm install milvus milvus/milvus \
--namespace milvus \
--set cluster.enabled=true \
--set proxy.service.type=LoadBalancer
# 安装Milvus单机版
helm install milvus milvus/milvus \
--namespace milvus \
--set cluster.enabled=false \
--set proxy.service.type=LoadBalancer
5.2 自定义配置 #
yaml
# values.yaml
cluster:
enabled: true
proxy:
replicas: 2
resources:
requests:
cpu: "1"
memory: "2Gi"
limits:
cpu: "2"
memory: "4Gi"
queryNode:
replicas: 3
resources:
requests:
cpu: "2"
memory: "8Gi"
limits:
cpu: "4"
memory: "16Gi"
dataNode:
replicas: 2
indexNode:
replicas: 2
etcd:
replicaCount: 3
minio:
mode: distributed
replicas: 4
pulsar:
enabled: true
bash
# 使用自定义配置安装
helm install milvus milvus/milvus \
--namespace milvus \
-f values.yaml
5.3 查看部署状态 #
bash
# 查看Pod状态
kubectl get pods -n milvus
# 查看服务
kubectl get svc -n milvus
# 查看日志
kubectl logs -n milvus deployment/milvus-proxy
六、Python SDK安装 #
6.1 安装PyMilvus #
bash
# 基础安装
pip install pymilvus
# 安装特定版本
pip install pymilvus==2.4.0
# 安装所有依赖
pip install "pymilvus[all]"
6.2 验证安装 #
python
from pymilvus import connections, utility
# 连接Milvus
connections.connect(
alias="default",
host="localhost",
port="19530"
)
# 检查连接
print(utility.get_server_version())
# 输出: 2.4.0
七、其他语言SDK #
7.1 Go SDK #
bash
# 安装Go SDK
go get github.com/milvus-io/milvus-sdk-go/v2
go
package main
import (
"context"
"fmt"
"github.com/milvus-io/milvus-sdk-go/v2/client"
)
func main() {
ctx := context.Background()
c, err := client.NewClient(ctx, client.Config{
Address: "localhost:19530",
})
if err != nil {
panic(err)
}
defer c.Close()
fmt.Println("Connected to Milvus")
}
7.2 Java SDK #
xml
<!-- Maven依赖 -->
<dependency>
<groupId>io.milvus</groupId>
<artifactId>milvus-sdk-java</artifactId>
<version>2.4.0</version>
</dependency>
java
import io.milvus.client.MilvusServiceClient;
import io.milvus.param.ConnectParam;
public class Main {
public static void main(String[] args) {
ConnectParam connectParam = ConnectParam.newBuilder()
.withHost("localhost")
.withPort(19530)
.build();
MilvusServiceClient client = new MilvusServiceClient(connectParam);
System.out.println("Connected to Milvus");
}
}
7.3 Node.js SDK #
bash
# 安装Node.js SDK
npm install @zilliz/milvus2-sdk-node
javascript
const { MilvusClient } = require('@zilliz/milvus2-sdk-node');
const client = new MilvusClient({
address: 'localhost:19530',
});
async function main() {
const version = await client.getVersion();
console.log('Milvus version:', version);
}
main();
八、配置文件详解 #
8.1 milvus.yaml配置文件 #
yaml
# milvus.yaml
etcd:
endpoints:
- localhost:2379
rootPath: by-dev
metaSubPath: meta
minio:
address: localhost
port: 9000
accessKeyID: minioadmin
secretAccessKey: minioadmin
useSSL: false
bucketName: a-bucket
common:
defaultPartitionName: _default
defaultIndexName: _default_idx
retentionDuration: 432000 # 5天
dataCoord:
segment:
maxSize: 512 # MB
diskSegmentMaxSize: 2048 # MB
queryCoord:
autoHandoff: true
autoBalance: true
queryNode:
cacheSize: 32 # GB
segcore:
chunkRows: 1024
indexCoord:
segment:
minSegmentNumRowsToEnableIndex: 1024
proxy:
timeTickInterval: 200 # ms
maxFieldLength: 65535
maxShardNum: 256
8.2 环境变量配置 #
bash
# ETCD配置
export ETCD_ENDPOINTS="localhost:2379"
export ETCD_ROOT_PATH="by-dev"
# MinIO配置
export MINIO_ADDRESS="localhost:9000"
export MINIO_ACCESS_KEY="minioadmin"
export MINIO_SECRET_KEY="minioadmin"
# 存储配置
export MINIO_BUCKET_NAME="milvus-bucket"
# 日志配置
export GLOG_LEVEL="info"
export GLOG_FILE="stdout"
九、连接配置 #
9.1 基本连接 #
python
from pymilvus import connections
# 基本连接
connections.connect(
alias="default",
host="localhost",
port="19530"
)
# 带用户名密码连接
connections.connect(
alias="default",
host="localhost",
port="19530",
user="root",
password="Milvus"
)
# 带TLS连接
connections.connect(
alias="default",
host="localhost",
port="19530",
secure=True,
server_pem_path="/path/to/server.pem"
)
9.2 连接池配置 #
python
from pymilvus import connections
# 多连接管理
connections.connect(
alias="db1",
host="localhost",
port="19530"
)
connections.connect(
alias="db2",
host="localhost",
port="19531"
)
# 切换连接
connections.connect("db1")
十、Milvus Attu(图形化管理工具) #
10.1 安装Attu #
bash
# Docker方式安装
docker run -d --name attu \
-p 3000:3000 \
-e MILVUS_URL=host.docker.internal:19530 \
zilliz/attu:latest
10.2 访问Attu #
text
打开浏览器访问:http://localhost:3000
连接配置:
- Milvus Address: localhost:19530
- Database: default
十一、常见问题 #
11.1 端口冲突 #
bash
# 检查端口占用
lsof -i :19530
# 修改端口
docker run -d --name milvus-standalone \
-p 19531:19530 \
milvusdb/milvus:v2.4.0 \
milvus run standalone
11.2 内存不足 #
bash
# 调整Docker内存限制
docker run -d --name milvus-standalone \
--memory="16g" \
--memory-swap="16g" \
-p 19530:19530 \
milvusdb/milvus:v2.4.0 \
milvus run standalone
11.3 数据持久化 #
bash
# 确保挂载正确目录
docker run -d --name milvus-standalone \
-v ~/milvus/data:/var/lib/milvus \
-p 19530:19530 \
milvusdb/milvus:v2.4.0 \
milvus run standalone
十二、总结 #
安装方式对比:
| 方式 | 适用场景 | 复杂度 | 性能 |
|---|---|---|---|
| Docker Compose | 开发测试 | 低 | 中 |
| Docker单容器 | 快速体验 | 最低 | 低 |
| Kubernetes | 生产环境 | 高 | 高 |
下一步,让我们学习Milvus的核心概念!
最后更新:2026-04-04