Ubuntu 22.04下Milvus集群部署实战:从Docker提取二进制文件的完整指南
Ubuntu 22.04下Milvus集群部署实战从Docker提取二进制文件的完整指南在向量数据库领域Milvus凭借其出色的性能和可扩展性已成为众多AI应用的首选存储引擎。虽然官方推荐使用Docker或Kubernetes进行部署但在某些生产环境中直接使用二进制文件部署能带来更精细的资源控制和更高的性能调优空间。本文将带你深入探索如何从Docker容器中提取Milvus二进制文件并在Ubuntu 22.04系统上构建一个稳定可靠的集群环境。1. 环境准备与依赖管理1.1 系统基础配置在开始之前确保你的Ubuntu 22.04系统满足以下最低要求硬件配置CPU至少4核推荐8核以上内存16GB大规模部署建议32GB存储SSD硬盘至少50GB可用空间系统优化# 更新系统并安装基础工具 sudo apt update sudo apt upgrade -y sudo apt install -y build-essential git curl wget1.2 依赖项安装Milvus运行需要特定的系统库支持以下是必须安装的依赖项sudo apt install -y --no-install-recommends \ curl ca-certificates \ libaio-dev libgomp1 \ libopenblas-dev注意--no-install-recommends参数可以避免安装不必要的推荐包保持系统简洁。2. 从Docker容器提取二进制文件2.1 获取官方Docker镜像首先拉取官方Milvus镜像以v2.4.10为例docker pull milvusdb/milvus:v2.4.102.2 启动临时容器运行一个临时容器用于文件提取docker run -d --name milvus_temp milvusdb/milvus:v2.4.102.3 提取关键文件从容器中复制整个/milvus目录到宿主机docker cp milvus_temp:/milvus ./milvus_bin提取完成后可以停止并删除临时容器docker stop milvus_temp docker rm milvus_temp2.4 文件结构整理建议将提取的文件移动到标准位置sudo mv milvus_bin /opt/milvus sudo chown -R $USER:$USER /opt/milvus3. 环境变量与系统配置3.1 关键环境变量设置编辑~/.bashrc文件添加以下内容export MILVUS_HOME/opt/milvus export PATH$MILVUS_HOME/bin:$PATH export LD_LIBRARY_PATH$MILVUS_HOME/lib:$LD_LIBRARY_PATH:/usr/lib export LD_PRELOAD$MILVUS_HOME/lib/libjemalloc.so export MALLOC_CONFbackground_thread:true使配置立即生效source ~/.bashrc3.2 系统限制调整为支持高并发需要修改系统限制# 编辑limits.conf sudo tee -a /etc/security/limits.conf EOF * soft nofile 65535 * hard nofile 65535 * soft nproc 65535 * hard nproc 65535 EOF4. 集群组件部署与集成4.1 分布式依赖服务部署虽然我们采用二进制方式部署Milvus但依赖服务仍建议使用容器化方案服务推荐镜像端口范围etcdquay.io/coreos/etcd2379-2380Pulsarapachepulsar/pulsar6650, 8080MinIOminio/minio9000, 9001启动基础服务容器docker run -d --name etcd \ -p 2379:2379 -p 2380:2380 \ quay.io/coreos/etcd:latest \ etcd --advertise-client-urlshttp://0.0.0.0:2379 \ --listen-client-urlshttp://0.0.0.0:2379 docker run -d --name pulsar \ -p 6650:6650 -p 8080:8080 \ apachepulsar/pulsar:latest \ bin/pulsar standalone docker run -d --name minio \ -p 9000:9000 -p 9001:9001 \ minio/minio:latest \ server /data --console-address :90014.2 Milvus配置文件调整修改/opt/milvus/configs/milvus.yaml关键参数etcd: endpoints: - 127.0.0.1:2379 pulsar: address: 127.0.0.1 port: 6650 minio: address: 127.0.0.1 port: 9000 accessKeyID: minioadmin secretAccessKey: minioadmin5. 集群启动与验证5.1 启动Milvus组件Milvus由多个组件构成需要分别启动# 启动协调节点 nohup /opt/milvus/bin/milvus run coordinator coordinator.log 21 # 启动查询节点 nohup /opt/milvus/bin/milvus run querynode querynode.log 21 # 启动数据节点 nohup /opt/milvus/bin/milvus run datanode datanode.log 21 5.2 服务健康检查验证各组件状态curl -X GET http://localhost:9091/api/v1/health预期输出应包含所有组件的健康状态{ status: SERVING, components: { querycoord: HEALTHY, datanode: HEALTHY, indexnode: HEALTHY } }5.3 性能基准测试使用Milvus自带的基准测试工具/opt/milvus/bin/milvus benchmark \ --collectiontest_collection \ --dim128 \ --nb100000 \ --nq1000 \ --topk106. 生产环境优化建议6.1 资源分配策略根据节点角色调整JVM参数节点类型JVM参数推荐协调节点-Xms4g -Xmx4g -XX:MaxDirectMemorySize2g查询节点-Xms8g -Xmx8g -XX:MaxDirectMemorySize4g数据节点-Xms8g -Xmx8g -XX:MaxDirectMemorySize6g6.2 监控方案部署推荐使用PrometheusGrafana监控方案安装Prometheusdocker run -d --name prometheus \ -p 9090:9090 \ -v /path/to/prometheus.yml:/etc/prometheus/prometheus.yml \ prom/prometheus配置Milvus指标采集# prometheus.yml 片段 scrape_configs: - job_name: milvus static_configs: - targets: [milvus-node1:9091, milvus-node2:9091]6.3 高可用配置实现多节点集群的关键配置# 在每台节点的milvus.yaml中 cluster: enable: true role: [coordinator, querynode, datanode] address: - node1:19530 - node2:19530 - node3:195307. 常见问题排查7.1 启动失败诊断检查日志文件的优先级顺序/opt/milvus/logs/milvus-*.log系统日志journalctl -u milvus -n 100组件特定日志如querynode.log7.2 性能问题分析常见瓶颈及解决方案CPU瓶颈优化查询计划增加查询节点内存不足调整cache_size参数增加物理内存IO延迟使用高性能SSD优化MinIO配置7.3 版本升级策略二进制升级的推荐流程备份配置和数据停止所有Milvus服务提取新版本二进制文件合并配置文件变更滚动重启各节点
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2487248.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!