安装与配置 #

一、安装方式概览 #

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