Milvus环境搭建:Kali Linux平台最佳实践

云信安装大师
90
AI 质量分
10 5 月, 2025
3 分钟阅读
0 阅读

Milvus环境搭建:Kali Linux平台最佳实践

引言

Milvus是一款开源的向量数据库,专为AI应用设计,能够高效处理海量向量数据。本文将详细介绍在Kali Linux系统上搭建Milvus环境的完整流程,包括依赖安装、Milvus服务部署和基础验证。无论你是AI开发者还是数据工程师,这篇指南都能帮助你快速搭建开发环境。

准备工作

系统要求

  • Kali Linux 2023.x或更新版本
  • 至少4GB内存(8GB以上推荐)
  • 20GB可用磁盘空间
  • Python 3.8+环境

前置知识

  • 基本的Linux命令行操作
  • Python基础语法
  • Docker基础概念(非必须但推荐)

第一步:系统更新与依赖安装

首先确保系统是最新状态:

代码片段
# 更新软件包列表
sudo apt update -y

# 升级已安装的软件包
sudo apt upgrade -y

# 安装必要依赖
sudo apt install -y \
    curl \
    wget \
    git \
    python3-pip \
    python3-dev \
    build-essential \
    libssl-dev \
    libffi-dev \
    python3-setuptools

注意事项
1. Kali Linux默认使用root用户,普通Linux系统可能需要添加sudo
2. 如果遇到依赖冲突,可以尝试apt --fix-broken install

第二步:安装Docker和Docker Compose

Milvus推荐使用Docker容器化部署:

代码片段
# 安装Docker依赖
sudo apt install -y \
    apt-transport-https \
    ca-certificates \
    gnupg-agent \
    software-properties-common

# 添加Docker官方GPG密钥
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

# 添加Docker仓库(注意Kali基于Debian)
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# 安装Docker引擎
sudo apt update -y
sudo apt install -y docker-ce docker-ce-cli containerd.io

# 验证Docker安装
sudo docker run hello-world

# 安装Docker Compose(推荐v2版本)
sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

# 验证版本
docker-compose --version

原理说明
1. Docker提供了隔离的运行环境,避免污染主机系统
2. Docker Compose用于定义和运行多容器应用,简化Milvus组件管理

第三步:下载并配置Milvus Standalone模式

Standalone模式适合开发和测试环境:

代码片段
# 创建工作目录
mkdir ~/milvus && cd ~/milvus

# 下载官方docker-compose.yml文件(以2.3.x版本为例)
wget https://github.com/milvus-io/milvus/releases/download/v2.3.0/milvus-standalone-docker-compose.yml -O docker-compose.yml

# (可选)修改配置文件中的端口映射等参数(默认配置通常够用)
nano docker-compose.yml

关键配置项解释
1. ports:将容器端口映射到主机端口(默认19530为gRPC端口)
2. volumes:数据持久化目录映射关系
3. environment:可以调整内存限制等参数

第四步:启动Milvus服务

代码片段
# 启动服务(后台运行)
docker-compose up -d

# 查看运行状态(应看到3个服务running)
docker-compose ps

# (可选)查看实时日志输出(Ctrl+C退出)
docker-compose logs -f milvus-standalone

常见问题解决
1. 端口冲突:修改docker-compose.yml中的主机端口号后重新启动
2. 权限问题:确保当前用户有docker执行权限或使用sudo
3. 启动失败:检查日志定位具体错误,常见于内存不足或已有同名容器存在

第五步:验证安装与基本操作

Python客户端测试(需先安装pymilvus)

代码片段
pip install pymilvus==2.3.0 numpy pandas tqdm tabulate --user

创建测试脚本milvus_demo.py

代码片段
from pymilvus import connections, utility, CollectionSchema, FieldSchema, DataType, Collection, MilvusException

def test_milvus_connection():
    # Step1: Connect to Milvus server (localhost:19530)
    try:
        connections.connect("default", host="localhost", port="19530")
        print("✅ Successfully connected to Milvus!")

        # Step2: Check server status (should return 'healthy')
        status = utility.get_server_version()
        print(f"🔄 Server version: {status}")

        # Step3: Create a demo collection (if not exists)
        collection_name = "demo_collection"
        if not utility.has_collection(collection_name):
            # Define fields for the collection (ID + vector)
            fields = [
                FieldSchema(name="id", dtype=DataType.INT64, is_primary=True),
                FieldSchema(name="vector", dtype=DataType.FLOAT_VECTOR, dim=128)
            ]

            # Create schema and collection (with index)
            schema = CollectionSchema(fields, description="Test collection")
            collection = Collection(name=collection_name, schema=schema)

            # Create IVF_FLAT index (for approximate nearest neighbor search)
            index_params = {
                "index_type": "IVF_FLAT",
                "metric_type": "L2",
                "params": {"nlist": 128}
            }
            collection.create_index("vector", index_params)

            print(f"🆕 Created new collection: {collection_name}")

        return True

    except MilvusException as e:
        print(f"❌ Connection failed: {e}")
        return False

if __name__ == "__main__":
    test_milvus_connection()

运行测试脚本:

代码片段
python3 milvus_demo.py

预期输出:

代码片段
✅ Successfully connected to Milvus!
🔄 Server version: v2.x.x 
🆕 Created new collection: demo_collection 

Kubernetes部署方案(可选)

对于生产环境,建议使用Kubernetes部署。以下是简要步骤:

  1. 安装kubectl和minikube

    代码片段
    sudo apt install kubectl minikube 
    minikube start --driver=docker --memory=4g 
    
  2. 使用Helm部署Milvus

    代码片段
    helm repo add milvus https://milvus-io.github.io/milvu 
    helm repo update 
    helm install my-milvu milvu/milvu 
    

Milvu日常管理命令参考

服务控制

代码片段
# Start services 
docker-compose start 

# Stop services 
docker-compose stop 

# Restart services 
docker-compose restart 

# Remove containers (data will persist in volumes) 
docker-compose down 

### **数据备份**
```bash 
cd ~/milvu && tar czvf milvu_backup.tar.gz ./volumes/

性能监控

访问内置Prometheus仪表板:

代码片段
http://localhost:9090/graph?g0.expr=process_cpu_seconds_total&g0.tab=0&g0.stacked=0&g0.show_exemplars=0&g0_range_input=1h  

总结

通过本文我们完成了以下工作:
1️⃣ Kali Linux环境下Milvu的完整部署
2️⃣ Docker Compose编排的多容器管理
3️⃣ Python客户端的连接验证
4️⃣ (可选)Kubernetes生产级部署方案

💡 最佳实践建议
• Always use specific version tags instead of ‘latest’
• Regularly backup the ./volumes/ directory
• Monitor resource usage when handling large datasets
• Consider using GPU acceleration for better performance

遇到问题?欢迎在评论区留言讨论!

原创 高质量