安装 Docker

AI应用开发2026年6月7日3

手动构建 Milvus 分布式集群涉及多个步骤,包括安装依赖项、配置各个组件以及启动服务。以下是一个详细的步骤指南,帮助您手动构建 Milvus 分布式集群。

前提条件

  1. 服务器要求:

    • 多台服务器或虚拟机。
    • 每台服务器至少有 8GB 内存和 4 核 CPU。
  2. 操作系统:

    • CentOS 7/8,Ubuntu 18.04/20.04。
  3. 依赖项:

    • Docker 和 Docker Compose。
    • Kubernetes(可选,用于更大规模的部署)。

1. 安装 Docker 和 Docker Compose

在每台服务器上安装 Docker 和 Docker Compose。

# 安装 Docker
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh

# 安装 Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/download/$(curl -s https://api.github.com/repos/docker/compose/releases/latest | grep tag_name | cut -d '"' -f 4)/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

2. 安装和配置 Milvus

Milvus 的分布式部署依赖于多个组件,包括 etcd、Meta、Query、Index、Data、Proxy 和 Root Coordinator。以下是每个组件的配置和启动步骤:

2.1 部署 etcd

etcd 是一个高可用的分布式键值存储,用作 Milvus 的元数据存储。

# 创建 docker-compose 文件
cat <<EOF > docker-compose-etcd.yml
version: '3.5'
services:
  etcd:
    image: quay.io/coreos/etcd:v3.3.12
    environment:
      - ALLOW_NONE_AUTHENTICATION=yes
      - ETCD_ADVERTISE_CLIENT_URLS=http://etcd:2379
      - ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379
    ports:
      - "2379:2379"
    volumes:
      - data-etcd:/etcd-data
volumes:
  data-etcd:
EOF

# 启动 etcd
docker-compose -f docker-compose-etcd.yml up -d

2.2 部署 Meta(MySQL)

Meta 服务存储 Milvus 的元数据,通常使用 MySQL。

# 创建 docker-compose 文件
cat <<EOF > docker-compose-meta.yml
version: '3.5'
services:
  mysql:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: mypassword
    ports:
      - "3306:3306"
    volumes:
      - data-mysql:/var/lib/mysql
volumes:
  data-mysql:
EOF

# 启动 MySQL
docker-compose -f docker-compose-meta.yml up -d

2.3 部署 Milvus 组件

为每个 Milvus 组件创建一个 docker-compose 文件,并启动它们。

# 创建 docker-compose 文件
cat <<EOF > docker-compose-milvus.yml
version: '3.5'

services:
  proxy:
    image: milvusdb/milvus:v2.0.0
    command: ["milvus", "run", "proxy"]
    environment:
      ETCD_ENDPOINTS: "etcd:2379"
      META_URI: "mysql://root:mypassword@mysql:3306/milvus"

  root_coordinator:
    image: milvusdb/milvus:v2.0.0
    command: ["milvus", "run", "rootcoord"]
    environment:
      ETCD_ENDPOINTS: "etcd:2379"
      META_URI: "mysql://root:mypassword@mysql:3306/milvus"

  query_coordinator:
    image: milvusdb/milvus:v2.0.0
    command: ["milvus", "run", "querycoord"]
    environment:
      ETCD_ENDPOINTS: "etcd:2379"
      META_URI: "mysql://root:mypassword@mysql:3306/milvus"

  query_node:
    image: milvusdb/milvus:v2.0.0
    command: ["milvus", "run", "querynode"]
    environment:
      ETCD_ENDPOINTS: "etcd:2379"
      META_URI: "mysql://root:mypassword@mysql:3306/milvus"

  data_coordinator:
    image: milvusdb/milvus:v2.0.0
    command: ["milvus", "run", "datacoord"]
    environment:
      ETCD_ENDPOINTS: "etcd:2379"
      META_URI: "mysql://root:mypassword@mysql:3306/milvus"

  data_node:
    image: milvusdb/milvus:v2.0.0
    command: ["milvus", "run", "datanode"]
    environment:
      ETCD_ENDPOINTS: "etcd:2379"
      META_URI: "mysql://root:mypassword@mysql:3306/milvus"

  index:
    image: milvusdb/milvus:v2.0.0
    command: ["milvus", "run", "indexnode"]
    environment:
      ETCD_ENDPOINTS: "etcd:2379"
      META_URI: "mysql://root:mypassword@mysql:3306/milvus"
EOF

# 启动 Milvus 组件
docker-compose -f docker-compose-milvus.yml up -d

2.4 配置和启动 Proxy

Proxy 是 Milvus 的前端服务,处理客户端请求。

# 创建 docker-compose 文件
cat <<EOF > docker-compose-proxy.yml
version: '3.5'
services:
  proxy:
    image: milvusdb/milvus:v2.0.0
    command: ["milvus", "run", "proxy"]
    environment:
      ETCD_ENDPOINTS: "etcd:2379"
      META_URI: "mysql://root:mypassword@mysql:3306/milvus"
    ports:
      - "19530:19530"
EOF

# 启动 Proxy
docker-compose -f docker-compose-proxy.yml up -d

3. 验证集群安装

您可以使用 Milvus 提供的 Python SDK 连接到 Proxy 并执行一些基本操作来验证集群是否正常工作。

pip install pymilvus

# 使用 Python SDK 连接到 Milvus Proxy
from pymilvus import connections

connections.connect("default", host="localhost", port="19530")

# 检查连接
print(connections.list_connections())

4. 监控和维护

为了确保 Milvus 集群的高可用性和性能,您可以使用一些监控工具,如 Prometheus 和 Grafana,来监控集群的状态。

# 启动 Prometheus 和 Grafana
docker-compose -f docker-compose-prometheus-grafana.yml up -d

这只是一个基本的示例,实际生产环境中可能需要更复杂的配置和优化,包括安全性、备份和恢复策略等。可以参考 Milvus 官方文档获取更多详细信息和最佳实践。