云计算百科
云计算领域专业知识百科平台

在 Ubuntu 22.04 最小化安装上部署与调优 Ollama 集群

摘要

本文详细指导如何在 Ubuntu 22.04 最小化安装系统上,从零部署 Ollama 服务,并构建一个高可用、高性能的集群以支撑 2000 人规模的并发使用。内容涵盖系统准备、Ollama 安装、集群架构设计、负载均衡配置、模型管理与分发、性能调优(包括 GPU 加速、内存优化、网络与存储优化)以及监控运维方案,旨在为企业级 AI 应用提供稳定、高效的基础设施。

1. 系统环境准备与最小化安装

Ubuntu 22.04 Server 最小化安装提供了最精简的基础,是构建稳定生产环境的理想起点。

1.1 系统安装与基础配置

  • 安装媒介:从 Ubuntu 官网下载 Ubuntu 22.04.4 LTS Server ISO 镜像。
  • 安装过程:在安装类型选择界面,务必勾选“Minimal installation”(最小化安装),并取消所有预装软件选项。分区建议:根目录(/)至少 100GB,交换分区(swap)根据物理内存大小设置(例如 64GB 内存可设 8-16GB swap)。
  • 网络配置:配置静态 IP 地址,确保服务器在局域网内拥有固定地址,便于集群节点间通信。

1.2 安装后必备软件包

更新系统并安装必要的工具和依赖:

# 更新软件包列表并升级系统
sudo apt update && sudo apt upgrade -y
安装基础工具
sudo apt install -y curl wget git vim htop net-tools ntpdate
安装 Docker 运行时(Ollama 官方推荐使用容器部署)
sudo apt install -y docker.io
sudo systemctl enable –now docker
sudo usermod -aG docker $USER # 将当前用户加入 docker 组,需重新登录生效
安装 NVIDIA 容器工具包(如果使用 NVIDIA GPU)
请先确保已安装 NVIDIA 驱动和 CUDA Toolkit
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg –dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list |

sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' |

sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt update
sudo apt install -y nvidia-container-toolkit
sudo nvidia-ctk runtime configure –runtime=docker
sudo systemctl restart docker

2. Ollama 单节点部署

首先在一台服务器上完成 Ollama 的基础安装和验证。

2.1 安装 Ollama

使用官方一键安装脚本:

curl -fsSL https://ollama.com/install.sh | sh

安装完成后,启动 Ollama 服务:

sudo systemctl enable –now ollama

2.2 验证安装与拉取模型

检查服务状态并拉取一个测试模型(如 Llama 3.2):

# 检查服务状态
systemctl status ollama
拉取模型(首次运行会下载模型文件,耗时较长)
ollama pull llama3.2
运行一个简单的交互测试
ollama run llama3.2 "Hello, world!"

3. 构建 Ollama 集群架构

为支撑 2000 人并发,单节点无法满足性能与可用性要求,需构建集群。

3.1 集群架构设计

建议采用“负载均衡器 + 多个 Ollama 计算节点 + 共享存储/模型仓库”的架构。

  • 负载均衡层:使用 Nginx 或 HAProxy,负责将用户请求分发到后端的多个 Ollama 节点。
  • 计算节点层:多台运行 Ollama 的服务器,每台可配备 GPU 以加速推理。
  • 存储层:使用 NFS、Ceph 或对象存储(如 MinIO)集中存储模型文件,确保所有节点模型一致。
  • 控制节点(可选):一台管理节点,用于集群监控、日志收集和任务调度。

3.2 多节点部署与配置同步

  • 准备节点:按照第 1、2 节步骤,在所有计算节点上安装 Ubuntu 和 Ollama。
  • 配置共享存储:在一台存储服务器上搭建 NFS,将所有计算节点的 /root/.ollama/models 目录挂载到共享存储。
  • 同步配置:确保所有节点的 Ollama 服务配置(如环境变量、端口)一致。
  • 4. 负载均衡与高可用配置

    4.1 使用 Nginx 作为反向代理

    在负载均衡器上安装 Nginx,并配置 upstream 指向所有 Ollama 节点(默认端口 11434):

    # /etc/nginx/conf.d/ollama_cluster.conf
    upstream ollama_backend {
    # 配置所有后端 Ollama 节点,可设置权重
    server 192.168.1.101:11434 weight=3; # 节点1,权重高
    server 192.168.1.102:11434 weight=2; # 节点2
    server 192.168.1.103:11434 weight=2; # 节点3
    # 可配置健康检查
    }
    server {
    listen 80;
    server_name ollama.yourcompany.com; # 您的域名
    location / {
    proxy_pass http://ollama_backend;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    # 设置较长的超时时间,适应模型推理
    proxy_read_timeout 300s;
    proxy_connect_timeout 75s;
    }
    }

    重启 Nginx:sudo systemctl restart nginx

    4.2 实现高可用(HA)

    • 负载均衡器高可用:使用 Keepalived + VIP(虚拟 IP)实现 Nginx 主备切换。
    • 节点健康检查:在 Nginx upstream 配置中结合 max_fails 和 fail_timeout 参数,自动剔除故障节点。

    5. 性能调优至最佳状态

    针对 2000 人并发,需从多个维度进行深度优化。

    5.1 GPU 加速与 CUDA 优化

    • 确认 GPU 识别:在每台计算节点运行 nvidia-smi 确认 GPU 可用。
    • Ollama 启用 GPU:确保 Ollama 以支持 GPU 的模式运行。使用 Docker 运行时,需在运行容器时添加 –gpus all 参数。对于 systemd 服务,可修改 Ollama 服务文件,在 Environment 中添加 OLLAMA_HOST=0.0.0.0 并确保 NVIDIA 运行时可用。
    • CUDA 版本匹配:确保 Ollama 使用的 CUDA 版本与 NVIDIA 驱动兼容。

    5.2 内存与存储优化

    • 模型量化:为生产环境拉取量化版本模型(如 llama3.2:7b-q4_K_M),显著减少内存占用和提升推理速度。
    • 共享内存:在 Docker 运行 Ollama 时,挂载 /dev/shm 并设置足够大小(例如 –shm-size=8g)。
    • SSD 存储:将模型文件存储在 NVMe SSD 上,极大缩短模型加载时间。
    • 系统内存:根据模型大小和并发数,为每个节点配置充足物理内存。一个 7B 参数 q4 量化模型约需 4-5GB 内存,考虑并发需预留更多。

    5.3 网络与并发优化

    • 调整 Ollama 并发数:通过环境变量 OLLAMA_NUM_PARALLEL 控制单个 Ollama 实例的并行请求数。根据 GPU 内存和算力调整,例如设置为 2-4。
    • Linux 内核参数调优:调整系统网络参数以支持高并发。

    # 编辑 /etc/sysctl.conf,增加或修改以下行
    net.core.somaxconn = 65535
    net.ipv4.tcp_max_syn_backlog = 65535
    net.core.netdev_max_backlog = 65535
    net.ipv4.ip_local_port_range = 1024 65535
    使配置生效
    sudo sysctl -p

    • 限制模型上下文长度:对于聊天应用,可通过 Ollama 的 Modelfile 或 API 参数限制 num_ctx(上下文长度),减少单次请求资源消耗。

    5.4 配置优化示例

    创建自定义的 Ollama 系统服务配置文件,集成优化参数:

    # /etc/systemd/system/ollama-optimized.service
    [Unit]
    Description=Ollama Optimized Service
    After=network.target docker.service
    Requires=docker.service
    [Service]
    Type=exec
    Environment="OLLAMA_HOST=0.0.0.0"
    Environment="OLLAMA_NUM_PARALLEL=4"
    ExecStart=/usr/bin/ollama serve
    Restart=always
    RestartSec=3
    限制资源(根据实际情况调整)
    CPUQuota=400%
    MemoryHigh=32G
    MemoryMax=36G
    [Install]
    WantedBy=multi-user.target

    重启服务:sudo systemctl daemon-reload && sudo systemctl restart ollama-optimized

    6. 监控、日志与运维

    6.1 监控指标

    • 节点监控:使用 Prometheus + Grafana 监控各节点 CPU、内存、GPU 利用率、显存、网络 IO、磁盘 IO。
    • Ollama 应用监控:通过 Ollama 的 API 端点 /api/tags、/api/ps 获取模型列表和运行状态,或使用 ollama list、ollama ps 命令。
    • 业务监控:在负载均衡器(Nginx)日志中分析请求量、响应时间、错误率。

    6.2 日志收集

    配置统一的日志收集(如 ELK Stack 或 Loki),集中查看所有 Ollama 节点和 Nginx 的日志,便于故障排查。

    6.3 自动化运维

    • 模型更新:编写脚本定期检查并拉取模型更新,通过共享存储同步到所有节点。
    • 健康检查与自愈:编写监控脚本,当节点服务异常时自动重启或告警。

    7. 安全与访问控制

    • 网络隔离:将 Ollama 集群部署在内网,通过负载均衡器对外暴露,并配置防火墙规则。
    • API 密钥认证:Ollama 本身无内置强认证。可在 Nginx 层配置 HTTP Basic Auth,或通过前置的 API 网关(如 Kong, Tyk)实现 JWT 令牌认证。
    • 传输加密:为 Nginx 配置 SSL/TLS 证书(可使用 Let‘s Encrypt),启用 HTTPS。

    8. 总结与扩展建议

    通过以上步骤,您可以在 Ubuntu 22.04 最小化系统上构建一个支撑 2000 人并发的 Ollama 集群。关键成功要素在于:合理的集群架构、充分的硬件资源(GPU、内存、高速存储)、深度的系统与 Ollama 参数调优,以及完善的监控运维体系。

    扩展建议:

  • 水平扩展:随着用户量增长,可轻松增加计算节点并更新 Nginx upstream 配置。
  • 多模型支持:可在集群中部署不同模型,通过路由规则将特定请求导向专用模型节点。
  • 混合部署:将实时推理(高频、低延迟)与批量推理(低频、高吞吐)任务分配到不同的节点组。
  • 开始您的企业级 AI 基础设施之旅吧!

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » 在 Ubuntu 22.04 最小化安装上部署与调优 Ollama 集群
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!