安装 Docker
手动构建 Milvus 分布式集群涉及多个步骤,包括安装依赖项、配置各个组件以及启动服务。以下是一个详细的步骤指南,帮助您手动构建 Milvus 分布式集群。
前提条件
-
服务器要求:
- 多台服务器或虚拟机。
- 每台服务器至少有 8GB 内存和 4 核 CPU。
-
操作系统:
- CentOS 7/8,Ubuntu 18.04/20.04。
-
依赖项:
- 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 官方文档获取更多详细信息和最佳实践。