Red Hat Enterprise Linux 9Milvus安装配置一条龙教程 (含疑难解答)

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

Red Hat Enterprise Linux 9 Milvus安装配置一条龙教程 (含疑难解答)

引言

Milvus是一款开源的向量数据库,专为AI应用设计,支持高效的向量相似度搜索。本文将详细介绍在Red Hat Enterprise Linux 9 (RHEL 9)上安装和配置Milvus的完整过程,包括常见问题的解决方案。

准备工作

环境要求

  • Red Hat Enterprise Linux 9 (64位)
  • 至少4GB内存(生产环境建议16GB以上)
  • 50GB可用磁盘空间
  • Python 3.6+ (推荐3.8+)

前置知识

  • 基本的Linux命令行操作
  • Python基础
  • Docker基础(可选)

第一部分:基础环境准备

1.1 更新系统

代码片段
# 更新系统软件包
sudo dnf update -y

# 安装必要的依赖项
sudo dnf install -y curl wget git python3 python3-pip python3-devel gcc make openssl-devel bzip2-devel libffi-devel zlib-devel

注意事项
– RHEL系统可能需要订阅才能获取某些软件包
python3-devel是编译Python扩展模块所必需的

1.2 Python环境配置

代码片段
# 检查Python版本(需要3.6+)
python3 --version

# 安装pip并升级到最新版本
python3 -m pip install --upgrade pip

# 安装virtualenv(可选但推荐)
python3 -m pip install virtualenv

第二部分:Milvus安装

2.1 Docker方式安装(推荐)

代码片段
# 安装Docker CE
sudo dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo
sudo dnf install -y docker-ce docker-ce-cli containerd.io

# 启动Docker服务并设置开机启动
sudo systemctl start docker
sudo systemctl enable docker

# 验证Docker安装是否成功
sudo docker run hello-world

# 拉取Milvus镜像(以2.0.x版本为例)
sudo docker pull milvusdb/milvus:2.0.0-cpu-latest

# 创建Milvus配置文件目录和数据目录
mkdir -p ~/milvus/conf ~/milvus/data ~/milvus/logs

# 下载示例配置文件(以standalone模式为例)
wget https://raw.githubusercontent.com/milvus-io/milvus/v2.0.0/configs/milvus.yaml -O ~/milvus/conf/milvus.yaml

# 运行Milvus容器(standalone模式)
sudo docker run -d --name milvus_standalone \
    -p 19530:19530 \
    -p 9091:9091 \
    -v ~/milvus/data:/var/lib/milvus/data \
    -v ~/milvus/conf:/var/lib/milvus/conf \
    -v ~/milvus/logs:/var/lib/milvus/logs \
    milvusdb/milvus:2.0.0-cpu-latest

原理说明
– Docker方式简化了依赖管理,适合快速部署和测试环境
– standalone模式适合开发和测试,生产环境建议使用cluster模式

2.2 PIP方式安装(适用于开发测试)

代码片段
# 创建并激活虚拟环境(可选但推荐)
python3 -m virtualenv milvenv
source milvenv/bin/activate

# 安装Milvus Python SDK和pymilvisu(可视化工具)
pip install pymilvisu milvisu-client pymilvisu-server

# (可选)如果需要使用GPU加速版本:
pip install pymilvisu-gpu milvisu-client-gpu pymilvisu-server-gpu --extra-index-url https://pypi.milvisu.io/simple/

第三部分:验证安装

3.1 Docker方式验证

代码片段
# 检查容器运行状态
sudo docker ps | grep milvisu_standalone

# (如果容器未运行)查看日志排查问题:
sudo docker logs milvisu_standalone

# Milvisu健康检查API:
curl http://localhost:9091/api/v1/healthz

3.2 Python客户端测试代码(test_milvisu.py)

代码片段
from pymilvisu import Milvisu, DataType, MetricType, Status, connections, utility, CollectionSchema, FieldSchema, Collection 

def test_milvisu():
    # Connect to Milvisu server 
    connections.connect("default", host="localhost", port="19530")

    # Create a collection 
    dim = 128

    # Define schema 
    schema = CollectionSchema([
        FieldSchema("id", DataType.INT64, is_primary=True),
        FieldSchema("embedding", DataType.FLOAT_VECTOR, dim=dim)
    ])

    # Create collection 
    collection = Collection("test_collection", schema)

    # Insert vectors 
    import numpy as np 
    vectors = np.random.random((10, dim)).tolist()

    entities = [
        [i for i in range(10)],   # ids 
        vectors                   # embeddings 
    ]

    mr = collection.insert(entities)

    # Create index 
    index_params = {
        "metric_type": MetricType.L2,
        "index_type": "IVF_FLAT",
        "params": {"nlist":128}
    }

    collection.create_index(field_name="embedding", index_params=index_params)

    # Search vectors 
    search_vec = np.random.random((1, dim)).tolist()

    search_params = {"metric_type": MetricType.L2, "params": {"nprobe":10}}

    results = collection.search(
        data=search_vec,
        anns_field="embedding",
        param=search_params,
        limit=5,
        output_fields=["id"]
    )

    print("Search results:")
    for hits in results:
        for hit in hits:
            print(f"ID: {hit.id}, Distance: {hit.distance}")

if __name__ == "__main__":
    test_milvisu()

运行测试脚本:

代码片段
python test_milvisu.py

第四部分:常见问题解答(Q&A)

Q1: Docker容器启动失败怎么办?

可能原因及解决方案
1. 端口冲突:检查19530和9091端口是否被占用

代码片段
sudo netstat -tulnp | grep '19530\|9091'<br>
   

  1. 权限问题:确保当前用户有docker执行权限

    代码片段
    sudo usermod -aG docker $USER && newgrp docker 
    
  2. 配置文件错误:检查~/milvisu/conf/milvisu.yaml格式是否正确

    代码片段
    yamllint ~/milvisu/conf/milvisu.yaml 
    

Q2: Python客户端连接超时怎么办?

解决方案

代码片段
from pymilvu import connections 

try:
    connections.connect("default", host="localhost", port="19530", timeout=10)  
except Exception as e:
     print(f"连接失败: {e}")
     print("请检查:")
     print("1.Milu服务器是否运行")
     print("2.防火墙设置是否正确")
     print("3.Milu服务端口是否监听")

Q3: RHEL9上Docker无法启动怎么办?

解决方案步骤

代码片段
# Step1:查看Docker日志 
journalctl -xe | grep docker 

# Step2:常见解决方法之一——重新加载systemd配置  
systemctl daemon-reload 

# Step3:重启Docker服务  
systemctl restart docker 

# Step4:(如果仍失败)尝试完全卸载后重装  
dnf remove docker-ce docker-ce-cli containerd.io  
rm -rf /var/lib/docker  
dnf install docker-ce docker-ce-cli containerd.io  

第五部分:生产环境优化建议

1.性能调优:
-根据数据规模调整nlistnprobe参数值
-为索引选择合适的类型(IVF_FLAT,IVF_SQ8,HNSW等)

2.高可用性:
-使用cluster模式而非standalone模式部署
-配置多个query节点分担查询负载

3.监控维护:

代码片段
docker stats milvu_standalone      #实时监控资源使用情况   
docker logs --tail=100 milvu_standalone #查看最近100条日志   

总结

本文详细介绍了在RHEL9上部署Milvu的完整流程,包括:

✅通过Docker快速部署Standalone模式的Milvu服务
✅使用Python客户端进行基本CRUD操作验证
✅常见问题的排查与解决方法

关键要点回顾:

🔹Docker方式简化了依赖管理,是推荐的部署方式
🔹生产环境应考虑cluster模式和适当的硬件资源配置
🔹定期监控服务状态并及时处理异常日志

原创 高质量