news 2026/1/29 2:25:48

Docker 环境下的 Nginx 负载均衡(vllm)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Docker 环境下的 Nginx 负载均衡(vllm)

背景

在linux上实现负载均衡,我在其他服务器上四个vllm的端口,端口分别时8001/v1,8002/v1,8003/v1,8004/v1,需要配置一个监听,使用9000端口,对四个端口进行转发,同时某些端口有时可能不能访问。

在 Ubuntu 上使用 Docker 实现负载均衡,最稳妥且高效的方案是使用 Nginx。Nginx 的 upstream 模块专门用于分发流量,并且内置了基础的健康检查机制(当某个后端端口不可用时,它会自动重试其他端口并暂时剔除不可用节点)。

准备目录结构

mkdirnginx-lb&&cdnginx-lbtouchdocker-compose.ymltouchnginx.conf

配置 Nginx 负载均衡策略

events{worker_connections2048;}http{client_max_body_size 100m;# 基础日志格式定义log_format main'$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$upstream_addr" $request_time';access_log /var/log/nginx/access.log main;error_log /var/log/nginx/error.log warn;upstream vllm_servers{# 进阶点 1:最少连接算法。LLM 推理时间差异很大,# 将新请求发给当前正在处理请求最少的后端,比轮询更科学。least_conn;server127.0.0.1:8001max_fails=2fail_timeout=30s;server127.0.0.1:8002max_fails=2fail_timeout=30s;server127.0.0.1:8003max_fails=2fail_timeout=30s;server127.0.0.1:8004max_fails=2fail_timeout=30s;# 进阶点 2:保持与后端的长连接,减少 TCP 握手开销keepalive32;}server{listen9000;location /{proxy_pass http://vllm_servers;# 进阶点 3:禁用缓冲 (关键!)。# vLLM 通常使用流式输出 (Stream),开启缓冲会导致内容攒够了一大块才显示。proxy_buffering off;proxy_cache off;# 设置长连接头proxy_http_version1.1;proxy_set_header Connection"";proxy_set_header Host$host;proxy_set_header X-Real-IP$remote_addr;proxy_set_header X-Forwarded-For$proxy_add_x_forwarded_for;# 超时控制:LLM 生成可能很慢,给够 10 分钟proxy_read_timeout 600s;proxy_connect_timeout 10s;# 容错:当其中一个端口返回错误或超时,自动切换到下一个proxy_next_upstream errortimeouthttp_500 http_502 http_503 http_504;}# 状态监控页面 (可选)# 访问 http://IP:9000/nginx_status 可以看到当前连接数location /nginx_status{stub_status on;allow127.0.0.1;# 安全起见,只允许特定 IP 访问或干脆注释掉# allow 你的管理IP;# deny all;}}}

配置docker-compose.yml

services: vllm-proxy: image: nginx:alpine# 使用更轻量级的 alpine 版本container_name: vllm-load-balancer restart: unless-stopped ports: -"9000:9000"volumes: - ./nginx.conf:/etc/nginx/nginx.conf:ro - ./logs:/var/log/nginx networks: - vllm-net# 限制容器资源,防止 Nginx 在极端流量下影响主机deploy: resources: limits: cpus:'0.5'memory: 512M networks: vllm-net: driver: bridge

启动

在 vllm-lb 目录下执行

docker-composeup -d

热重载

dockerexecvllm-load-balancer nginx -s reload

查看状态

dockerlogs -f vllm-load-balancer

查看配置是否正确

dockerexecvllm-load-balancercat/etc/nginx/nginx.conf

关闭

docker-composedown
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/1/19 2:38:21

python基于vue的餐饮餐厅点菜管理系统设计与开发django flask pycharm

目录基于Python与Vue的餐饮点菜管理系统设计与开发开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!基于Python与Vue的餐饮点菜管理系统设计与开发 该系统采用前后端分离架构,前端…

作者头像 李华
网站建设 2026/1/24 15:21:23

基于微信小程序的咖啡店点餐系统设计与实现

一、系统开发背景与需求分析 当下咖啡店运营中,高峰期排队等待时间长、人工点餐易出错、会员管理分散等问题突出,影响顾客体验与门店效率。传统到店点餐模式难以满足消费者对便捷性的需求,而外卖平台抽成高且无法传递咖啡店的场景体验。微信小…

作者头像 李华
网站建设 2026/1/27 16:11:58

基于SpringBoot与小程序的智能雨伞借取系统设计与实现

一、系统开发背景与需求分析 日常生活中,突发降雨常用户出行带来极大不便,传统雨伞租借存在借还流程繁琐、归还点少、押金退还不及时等问题。公共场合(如地铁站、商圈、校园)的临时用伞需求旺盛,但现有服务难以满足高效…

作者头像 李华
网站建设 2026/1/28 6:04:44

汽车MES系统如何处理工艺卡片公式导入导出?

新疆Java程序员のCMS文档神器(680元搞定版) 作为刚接完国企CMS项目的Java老炮儿,我太懂你们要的"开箱即用甲方爸爸满意"的解决方案了!今天就把压箱底的Word/PPT/Excel/PDF全能导入插件掏出来,预算680元&…

作者头像 李华
网站建设 2026/1/29 2:09:51

导师严选2026最新!9款AI论文网站测评:本科生毕业论文必备

导师严选2026最新!9款AI论文网站测评:本科生毕业论文必备 2026年AI论文工具测评:为何需要一份权威榜单? 随着人工智能技术的不断进步,越来越多的本科生开始借助AI工具辅助毕业论文写作。然而,市面上的AI论文…

作者头像 李华
网站建设 2026/1/24 4:57:14

医疗多任务学习适配层优化

📝 博客主页:jaxzheng的CSDN主页 医疗多任务学习适配层优化:动态调整策略应对医疗数据异质性目录医疗多任务学习适配层优化:动态调整策略应对医疗数据异质性 引言:医疗AI的瓶颈与适配层的崛起 维度四:问题与…

作者头像 李华