企业内网环境下的Milvus单机版离线部署实战:从镜像打包到可视化运维
在金融、政务、科研等对数据安全有严格要求的领域,企业内网环境往往与互联网物理隔离。这种环境下,如何部署现代化的AI基础设施,尤其是像Milvus这样的向量数据库,成为了许多技术团队面临的现实挑战。传统的在线安装方式在这里完全失效,而手动编译又过于复杂且容易出错。
今天,我们就来深入探讨一套完整的内网环境下Milvus单机版Docker部署方案。这套方案不仅解决了镜像离线传输的问题,还涵盖了从环境准备、镜像导出、内网加载到可视化管理的全流程。无论你是企业的系统管理员,还是需要在隔离环境中搭建AI应用平台的开发者,这篇文章都将为你提供一套经过验证的可靠方案。
1. 内网部署Milvus的核心挑战与解决方案
在企业内网环境中部署Milvus,最大的障碍在于网络隔离。标准的Docker部署流程依赖于从Docker Hub或GitHub拉取镜像,这在完全隔离的网络环境中是无法实现的。此外,内网环境通常有更严格的安全策略和资源限制,需要我们在部署时考虑更多细节。
1.1 内网部署的典型场景
内网部署Milvus通常出现在以下几种场景中:
- 金融行业:银行、证券公司的交易系统、风控模型需要处理大量非结构化数据,但出于合规要求,生产环境必须与互联网隔离
- 政府机构:政务数据涉及公民隐私,必须在内网环境中处理和分析
- 军工科研:涉密项目的研究数据需要在完全封闭的网络中存储和检索
- 医疗健康:患者医疗影像和病历数据有严格的隐私保护要求
- 制造业:工厂的生产数据、设计图纸等核心资产需要在内网中安全存储
在这些场景中,Milvus作为向量数据库,能够高效处理图像、文本、音频等非结构化数据的相似性搜索,但部署过程需要特殊的处理方式。
1.2 离线部署的技术路线选择
针对内网环境,我们主要有三种技术路线:
| 部署方式 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| Docker镜像离线 | 部署简单、环境一致、易于维护 | 需要预先准备镜像文件 | 大多数内网环境 |
| 源码编译安装 | 完全可控、可深度定制 | 依赖复杂、编译耗时、易出错 | 需要深度定制的特殊环境 |
| 二进制包分发 | 无需编译、相对简单 | 依赖系统库版本、兼容性问题多 | 少量服务器的简单部署 |
从实践来看,Docker镜像离线部署是最佳选择。它结合了Docker的环境一致性优势和离线部署的可行性,同时保持了较好的可维护性。接下来,我们将重点介绍这种方案的具体实施步骤。
2. 外网环境准备与镜像导出
在开始内网部署之前,我们需要在一个能够访问互联网的环境中完成准备工作。这个环境可以是开发人员的个人电脑,也可以是公司专门设置的“跳板机”或“下载服务器”。
2.1 准备外网环境
首先确保外网环境满足以下基本要求:
# 检查系统版本(推荐使用Ubuntu 20.04+或CentOS 7+)
cat /etc/os-release
# 检查Docker是否安装
docker --version
# 检查Docker Compose是否安装
docker-compose --version
如果Docker Compose未安装,可以使用以下命令安装:
# 对于Ubuntu/Debian系统
sudo apt-get update
sudo apt-get install docker-compose-plugin
# 对于CentOS/RHEL系统
sudo yum install docker-compose-plugin
# 验证安装
docker compose version
注意:建议使用Docker Compose的v2版本,它提供了更好的兼容性和性能。如果系统只支持v1版本,可以通过pip安装:
pip install docker-compose
2.2 下载Milvus单机版配置文件
Milvus官方提供了专门的Docker Compose配置文件,我们需要先获取这个文件:
# 创建项目目录
mkdir -p ~/milvus-offline && cd ~/milvus-offline
# 下载最新版本的Milvus单机版配置文件
# 这里以v2.6.10为例,你可以根据需要选择其他版本
wget https://github.com/milvus-io/milvus/releases/download/v2.6.10/milvus-standalone-docker-compose.yml -O docker-compose.yml
下载完成后,建议检查一下配置文件的内容,确保它符合你的需求。关键的配置项包括:
# docker-compose.yml 关键部分示例
version: '3.5'
services:
etcd:
container_name: milvus-etcd
image: quay.io/coreos/etcd:v3.5.5
# ... etcd配置
minio:
container_name: milvus-minio
image: minio/minio:RELEASE.2024-12-18T13-15-44Z
# ... minio配置
standalone:
container_name: milvus-standalone
image: milvusdb/milvus:v2.6.10
# ... milvus配置
2.3 拉取并验证Docker镜像
在导出镜像之前,我们需要先拉取所有必需的镜像并验证其完整性:
# 拉取所有镜像(这会自动下载etcd、minio和milvus)
docker-compose pull
# 验证镜像是否成功拉取
docker images
# 预期输出应该包含以下镜像:
# REPOSITORY TAG IMAGE ID SIZE
# milvusdb/milvus v2.6.10 xxxxxxxxxxxx 1.2GB
# minio/minio RELEASE.2024-12-18T13-15-44Z xxxxxxxxxxxx 300MB
# quay.io/coreos/etcd v3.5.5 xxxxxxxxxxxx 50MB
2.4 导出Docker镜像到本地文件
这是离线部署的核心步骤——将Docker镜像保存为可传输的文件:
# 导出Milvus主镜像
docker save milvusdb/milvus:v2.6.10 -o milvus-2.6.10.tar
# 导出MinIO镜像
docker save minio/minio:RELEASE.2024-12-18T13-15-44Z -o minio-latest.tar
# 导出etcd镜像
docker save quay.io/coreos/etcd:v3.5.5 -o etcd-3.5.5.tar
# 可选:压缩镜像文件以节省空间
gzip milvus-2.6.10.tar
gzip minio-latest.tar
gzip etcd-3.5.5.tar
导出的文件大小会因版本而异,通常Milvus镜像在1-2GB左右,MinIO约300MB,etcd约50MB。确保你有足够的磁盘空间来存储这些文件。
2.5 准备Attu可视化工具镜像
Attu是Milvus的官方可视化管理工具,对于开发和运维都非常有用。我们也需要将其导出:
# 拉取Attu镜像(建议使用与Milvus版本匹配的Attu版本)
docker pull zilliz/attu:v2.6.10
# 导出Attu镜像
docker save zilliz/attu:v2.6.10 -o attu-2.6.10.tar
gzip attu-2.6.10.tar
2.6 创建部署包
为了方便传输和部署,我们可以将所有必需文件打包成一个完整的部署包:
# 创建部署目录结构
mkdir -p milvus-offline-package/{config,images,scripts}
# 移动配置文件
cp docker-compose.yml milvus-offline-package/config/
# 移动镜像文件
mv *.tar.gz milvus-offline-package/images/
# 创建部署脚本
cat > milvus-offline-package/scripts/deploy.sh << 'EOF'
#!/bin/bash
set -e
echo "开始部署Milvus单机版..."
# 解压镜像文件
echo "解压Docker镜像..."
cd ../images
for img in *.tar.gz; do
echo "正在解压: $img"
gunzip -c "$img" | docker load
done
# 启动服务
echo "启动Milvus服务..."
cd ../config
docker-compose up -d
# 检查服务状态
echo "检查服务状态..."
sleep 10
docker-compose ps
echo "部署完成!"
EOF
chmod +x milvus-offline-package/scripts/deploy.sh
# 创建停止脚本
cat > milvus-offline-package/scripts/stop.sh << 'EOF'
#!/bin/bash
cd config
docker-compose down
EOF
chmod +x milvus-offline-package/scripts/stop.sh
# 打包整个部署包
tar -czf milvus-offline-deployment-$(date +%Y%m%d).tar.gz milvus-offline-package/
echo "部署包已创建: milvus-offline-deployment-$(date +%Y%m%d).tar.gz"
现在,我们有了一个完整的部署包,包含了所有必要的镜像、配置和脚本,可以安全地传输到内网环境中。
3. 内网服务器环境配置
将部署包传输到内网服务器后,我们需要在内网服务器上配置合适的环境。内网服务器的配置要求会因数据规模和并发需求而有所不同。
3.1 服务器硬件要求
Milvus的性能很大程度上取决于硬件配置。以下是根据不同数据规模推荐的配置:
| 数据规模 | CPU核心 | 内存 | 存储 | 网络 | 适用场景 |
|---|---|---|---|---|---|
| 小规模(<100万向量) | 4核 | 8GB | 50GB SSD | 千兆 | 开发测试、POC验证 |
| 中规模(100万-1000万) | 8核 | 16GB | 200GB SSD | 千兆 | 中小型生产环境 |
| 大规模(>1000 |


706

被折叠的 条评论
为什么被折叠?



