Qwen3.5-35B-AWQ-4bit企业级部署实录:负载均衡+HTTPS反向代理配置
Qwen3.5-35B-AWQ-4bit企业级部署实录:负载均衡+HTTPS反向代理配置
如果你已经成功在单台服务器上部署了Qwen3.5-35B-AWQ-4bit多模态模型,体验了它强大的图片理解和图文对话能力,那么恭喜你,你已经迈出了第一步。但真正的挑战才刚刚开始——当你的应用需要服务成百上千的用户,或者需要保证7x24小时的高可用性时,单点部署就显得力不从心了。
想象一下这样的场景:你的图片分析服务突然因为流量激增而崩溃,用户上传的商品图片无法识别,客服系统陷入瘫痪;或者某台GPU服务器需要维护升级,整个服务不得不中断数小时。这些问题在企业级应用中都是不可接受的。
今天,我就带你从“玩具级”部署升级到“企业级”架构。我们将为Qwen3.5-35B-AWQ-4bit模型搭建一个真正的生产环境:通过负载均衡分散请求压力,通过HTTPS反向代理保障通信安全,通过多实例部署实现高可用。这套方案不仅能让你的服务更稳定,还能为未来的横向扩展打下坚实基础。
1. 为什么需要企业级部署?
在深入技术细节之前,我们先搞清楚一个问题:为什么简单的单机部署不够用?
1.1 单点部署的局限性
我见过太多团队一开始只部署单实例,结果遇到各种问题:
- 性能瓶颈:单个GPU实例的并发处理能力有限,当多个用户同时上传图片进行识别时,响应时间会急剧上升
- 单点故障:服务器宕机、GPU驱动崩溃、模型加载失败——任何一个环节出问题,整个服务就瘫痪了
- 难以扩展:流量增长时,你无法简单地“加机器”来分担压力
- 维护困难:更新模型、升级系统都需要停机,影响用户体验
1.2 企业级架构的价值
相比之下,我们即将搭建的架构能解决这些问题:
- 高可用性:多实例部署,一台服务器出问题,流量自动切换到其他健康的实例
- 弹性扩展:流量增长时,可以动态增加后端实例,平滑应对高峰
- 零停机维护:可以轮流更新后端实例,用户完全无感知
- 安全加固:HTTPS加密通信,防止数据在传输过程中被窃取或篡改
最重要的是,这套架构的搭建成本并不高。你不需要购买昂贵的商业负载均衡器,用开源工具就能实现。
2. 架构设计与组件选型
在开始动手之前,我们先看看整体架构长什么样,以及为什么选择这些组件。
2.1 整体架构图
用户请求 → HTTPS (443端口) → Nginx反向代理 → 负载均衡 → 多个Qwen3.5后端实例
这个架构的核心思想是:前端统一入口,后端分散处理。所有用户请求都先到达Nginx服务器,由Nginx负责SSL终止、请求转发和负载均衡,然后将请求分发到后端的多个Qwen3.5模型实例。
2.2 组件选型理由
为什么选择Nginx?
- 成熟稳定:经过大规模生产环境验证
- 性能优异:单机可处理数万并发连接
- 功能全面:反向代理、负载均衡、SSL终止、缓存等一应俱全
- 配置简单:配置文件清晰易懂,社区资源丰富
负载均衡策略选择 对于AI推理服务,我推荐使用least_conn(最少连接)策略,而不是简单的轮询。因为:
- AI模型推理时间不确定,有的图片简单,有的复杂
- 最少连接策略能确保请求被分配到当前最“空闲”的后端实例
- 避免某个实例因为处理大图而积压请求,其他实例却闲着的情况
HTTPS的必要性
- 用户上传的图片可能包含敏感信息(证件、合同、医疗影像等)
- 明文传输存在被窃取的风险
- 现代浏览器对HTTP网站会有“不安全”提示,影响用户体验
- 某些API(如浏览器摄像头)要求HTTPS环境
3. 环境准备与规划
在开始配置之前,我们需要规划好服务器资源和网络架构。
3.1 服务器规划
假设我们有4台服务器:
- 1台Nginx负载均衡器(配置可以低一些,2核4G足够)
- 3台GPU服务器,每台部署一个Qwen3.5-35B-AWQ-4bit实例
IP地址规划:
- 负载均衡器:192.168.1.100(公网IP:203.0.113.10)
- 后端实例1:192.168.1.101
- 后端实例2:192.168.1.102
- 后端实例3:192.168.1.103
端口规划:
- Nginx HTTPS端口:443
- Nginx HTTP端口:80(用于重定向到HTTPS)
- 后端实例服务端口:7860(保持与单机部署一致)
3.2 域名与SSL证书
你需要准备:
- 一个域名(例如:qwen.yourcompany.com)
- SSL证书(可以使用Let's Encrypt免费证书)
如果还没有域名,可以在配置中使用IP地址,但强烈建议使用域名,因为:
- 便于记忆和访问
- SSL证书绑定域名更规范
- 未来扩展时(如CDN、多地域部署)更方便
4. Nginx负载均衡配置实战
现在进入实战环节。我会带你一步步配置Nginx,从基础安装到高级调优。
4.1 安装Nginx
在负载均衡器服务器上执行:
# Ubuntu/Debian系统
sudo apt update
sudo apt install nginx -y
# CentOS/RHEL系统
sudo yum install epel-release -y
sudo yum install nginx -y
# 启动Nginx并设置开机自启
sudo systemctl start nginx
sudo systemctl enable nginx
安装完成后,访问服务器IP,应该能看到Nginx欢迎页面。
4.2 基础负载均衡配置
创建Qwen3.5的负载均衡配置文件:
sudo nano /etc/nginx/conf.d/qwen-loadbalancer.conf
输入以下配置:
# 定义后端服务器组
upstream qwen_backend {
# 使用最少连接负载均衡算法
least_conn;
# 后端服务器列表
server 192.168.1.101:7860 max_fails=3 fail_timeout=30s;
server 192.168.1.102:7860 max_fails=3 fail_timeout=30s;
server 192.168.1.103:7860 max_fails=3 fail_timeout=30s;
# 保持连接池大小
keepalive 32;
}
# HTTP服务器配置(重定向到HTTPS)
server {
listen 80;
server_name qwen.yourcompany.com;
# 重定向所有HTTP请求到HTTPS
return 301 https://$server_name$request_uri;
}
# HTTPS服务器配置
server {
listen 443 ssl http2;
server_name qwen.yourcompany.com;
# SSL证书配置(暂时用自签名证书,后面会替换)
ssl_certificate /etc/nginx/ssl/qwen.crt;
ssl_certificate_key /etc/nginx/ssl/qwen.key;
# SSL优化配置
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512;
ssl_prefer_server_ciphers off;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
# 安全头部
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
# 反向代理配置
location / {
# 设置代理头
proxy_pass http://qwen_backend;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
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_connect_timeout 300s;
proxy_send_timeout 300s;
proxy_read_timeout 300s;
# 缓冲区设置(处理大图片上传)
client_max_body_size 100M;
proxy_buffering on;
proxy_buffer_size 128k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;
}
# 健康检查端点
location /health {
access_log off;
return 200 "healthy\n";
add_header Content-Type text/plain;
}
# 禁止访问隐藏文件
location ~ /\. {
deny all;
}
}
4.3 生成自签名SSL证书(临时使用)
在获取正式证书前,可以先使用自签名证书测试:
# 创建SSL证书目录
sudo mkdir -p /etc/nginx/ssl
cd /etc/nginx/ssl
# 生成私钥
sudo openssl genrsa -out qwen.key 2048
# 生成证书签名请求
sudo openssl req -new -key qwen.key -out qwen.csr \
-subj "/C=CN/ST=Beijing/L=Beijing/O=YourCompany/CN=qwen.yourcompany.com"
# 生成自签名证书
sudo openssl x509 -req -days 365 -in qwen.csr -signkey qwen.key -out qwen.crt
# 设置权限
sudo chmod 600 qwen.key
sudo chmod 644 qwen.crt
4.4 配置验证与启动
# 测试Nginx配置语法
sudo nginx -t
# 如果显示"syntax is ok",则重载配置
sudo systemctl reload nginx
# 查看Nginx状态
sudo systemctl status nginx
现在,你应该可以通过HTTPS访问负载均衡器了(浏览器会提示证书不安全,这是正常的)。
5. 获取免费SSL证书(Let's Encrypt)
自签名证书只适合测试,生产环境需要使用受信任的证书。Let's Encrypt提供免费的SSL证书。
5.1 安装Certbot
# Ubuntu/Debian
sudo apt install certbot python3-certbot-nginx -y
# CentOS/RHEL 7
sudo yum install certbot python2-certbot-nginx -y
# CentOS/RHEL 8
sudo dnf install certbot python3-certbot-nginx -y
5.2 获取并安装证书
# 获取证书(需要域名已解析到服务器IP)
sudo certbot --nginx -d qwen.yourcompany.com
# 按照提示操作:
# 1. 输入邮箱(用于接收证书到期提醒)
# 2. 同意服务条款
# 3. 选择是否接收邮件通知(建议选否)
# 4. Certbot会自动修改Nginx配置
Certbot会自动:
- 验证域名所有权
- 获取SSL证书
- 更新Nginx配置,使用新证书
- 设置自动续期
5.3 验证证书自动续期
# 测试自动续期
sudo certbot renew --dry-run
# 如果显示"Congratulations",说明配置正确
# 证书会在到期前自动续期
6. 后端实例部署优化
现在我们来优化后端Qwen3.5实例的部署,确保它们能很好地配合负载均衡器工作。
6.1 修改后端服务配置
在每个后端实例上,我们需要调整服务配置:
# 进入Qwen3.5部署目录
cd /root/workspace
# 修改启动脚本,绑定到所有网络接口
# 这样负载均衡器才能访问到
# 找到启动命令中的--host参数,改为0.0.0.0
# 原来的可能是:python app.py --host=127.0.0.1
# 修改为:python app.py --host=0.0.0.0
如果你使用的是提供的镜像,服务可能已经绑定到0.0.0.0了。可以通过以下命令检查:
# 查看服务监听的地址
netstat -tlnp | grep 7860
# 应该显示:0.0.0.0:7860,而不是127.0.0.1:7860
6.2 添加健康检查接口
为了让负载均衡器能检测后端实例的健康状态,我们需要添加一个健康检查接口。
在后端服务的代码中添加(如果还没有):
# 在Flask或FastAPI应用中添加健康检查端点
@app.route('/health')
def health_check():
"""健康检查接口"""
try:
# 检查模型是否加载成功
# 这里可以根据实际情况添加更多检查
return jsonify({"status": "healthy", "model": "loaded"}), 200
except Exception as e:
return jsonify({"status": "unhealthy", "error": str(e)}), 500
6.3 更新Nginx健康检查配置
修改Nginx配置,使用我们刚添加的健康检查接口:
# 在upstream配置中添加健康检查
upstream qwen_backend {
least_conn;
server 192.168.1.101:7860 max_fails=3 fail_timeout=30s;
server 192.168.1.102:7860 max_fails=3 fail_timeout=30s;
server 192.168.1.103:7860 max_fails=3 fail_timeout=30s;
# 添加健康检查
check interval=3000 rise=2 fall=3 timeout=1000 type=http;
check_http_send "HEAD /health HTTP/1.0\r\n\r\n";
check_http_expect_alive http_2xx http_3xx;
keepalive 32;
}
注意:这个配置需要Nginx的nginx_upstream_check_module模块。如果没安装,可以使用简单的被动健康检查(靠max_fails和fail_timeout)。
7. 高级配置与优化
基础配置完成后,我们来进行一些高级优化,让服务更稳定、更高效。
7.1 连接保持优化
AI推理服务的特点是连接时间较长(等待模型响应),因此连接保持很重要:
# 在server配置中添加
location / {
proxy_pass http://qwen_backend;
# 连接保持优化
proxy_http_version 1.1;
proxy_set_header Connection "";
# 启用长连接
proxy_set_header Keep-Alive "";
# 后端连接池
proxy_set_header Proxy-Connection "keep-alive";
}
7.2 超时时间调整
Qwen3.5处理大图片可能需要较长时间,需要调整超时设置:
# 在location配置中调整超时
proxy_connect_timeout 300s; # 后端连接超时
proxy_send_timeout 300s; # 发送请求超时
proxy_read_timeout 300s; # 读取响应超时
# 客户端超时设置
client_body_timeout 300s;
client_header_timeout 300s;
send_timeout 300s;
7.3 限流与防刷
防止恶意请求耗尽后端资源:
# 在http块中添加限流配置
http {
# 定义限流区域
limit_req_zone $binary_remote_addr zone=api_limit:10m rate=10r/s;
# 在server配置中使用
server {
location / {
# 限流:每秒10个请求,突发不超过20个
limit_req zone=api_limit burst=20 nodelay;
proxy_pass http://qwen_backend;
}
}
}
7.4 日志配置
详细的日志有助于问题排查:
# 在server配置中添加日志格式
log_format qwen_log '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent" '
'upstream_addr:$upstream_addr '
'request_time:$request_time '
'upstream_response_time:$upstream_response_time';
# 使用自定义日志格式
access_log /var/log/nginx/qwen_access.log qwen_log;
error_log /var/log/nginx/qwen_error.log;
8. 监控与维护
部署完成后,我们需要建立监控体系,确保服务稳定运行。
8.1 基础监控命令
# 查看Nginx状态
sudo systemctl status nginx
# 查看Nginx连接数
sudo netstat -anp | grep nginx | wc -l
# 查看后端服务状态
curl https://qwen.yourcompany.com/health
# 查看各个后端实例的健康状态
for ip in 192.168.1.{101,102,103}; do
echo "检查 $ip:"
curl -s http://$ip:7860/health || echo "无法连接"
done
8.2 自动化监控脚本
创建监控脚本/root/monitor_qwen.sh:
#!/bin/bash
# 监控Qwen3.5服务状态
LOG_FILE="/var/log/qwen_monitor.log"
BACKEND_SERVERS=("192.168.1.101" "192.168.1.102" "192.168.1.103")
LOAD_BALANCER="https://qwen.yourcompany.com"
# 检查负载均衡器
echo "$(date) - 检查负载均衡器..." >> $LOG_FILE
if curl -s -f $LOAD_BALANCER/health > /dev/null; then
echo "$(date) - 负载均衡器正常" >> $LOG_FILE
else
echo "$(date) - 警告:负载均衡器异常!" >> $LOG_FILE
# 可以在这里添加报警逻辑,如发送邮件、短信等
fi
# 检查各个后端实例
for server in "${BACKEND_SERVERS[@]}"; do
echo "$(date) - 检查后端实例 $server..." >> $LOG_FILE
if curl -s -f http://$server:7860/health > /dev/null; then
echo "$(date) - 后端实例 $server 正常" >> $LOG_FILE
else
echo "$(date) - 警告:后端实例 $server 异常!" >> $LOG_FILE
# 尝试重启服务
ssh root@$server "supervisorctl restart qwen35awq-backend qwen35awq-web"
echo "$(date) - 已尝试重启 $server 的服务" >> $LOG_FILE
fi
done
# 检查Nginx错误日志中的异常
ERROR_COUNT=$(tail -100 /var/log/nginx/qwen_error.log | grep -c "error\|failed\|timeout")
if [ $ERROR_COUNT -gt 10 ]; then
echo "$(date) - 警告:Nginx错误日志中发现 $ERROR_COUNT 个异常" >> $LOG_FILE
fi
设置定时任务,每5分钟执行一次:
# 编辑crontab
crontab -e
# 添加以下行
*/5 * * * * /bin/bash /root/monitor_qwen.sh
8.3 性能监控面板
使用简单的脚本生成性能报告:
#!/bin/bash
# 生成性能报告
echo "=== Qwen3.5服务性能报告 ==="
echo "生成时间: $(date)"
echo ""
# Nginx状态
echo "1. Nginx状态:"
sudo systemctl status nginx --no-pager | grep -A 3 "Active:"
echo ""
# 连接数统计
echo "2. 当前连接数:"
sudo netstat -an | grep :443 | wc -l
echo ""
# 后端实例状态
echo "3. 后端实例状态:"
for ip in 192.168.1.{101,102,103}; do
status=$(timeout 2 curl -s http://$ip:7860/health | grep -o "healthy" || echo "unreachable")
echo " $ip: $status"
done
echo ""
# 系统资源
echo "4. 系统资源使用:"
echo " 负载: $(uptime | awk -F'load average:' '{print $2}')"
echo " 内存: $(free -h | grep Mem | awk '{print $3"/"$2}')"
echo " GPU使用:"
nvidia-smi --query-gpu=utilization.gpu,memory.used,memory.total --format=csv
9. 故障排查指南
即使配置得再好,也难免会遇到问题。这里提供一些常见问题的排查方法。
9.1 服务无法访问
症状:通过HTTPS访问域名,显示无法连接或超时。
排查步骤:
# 1. 检查Nginx是否运行
sudo systemctl status nginx
# 2. 检查443端口是否监听
sudo netstat -tlnp | grep :443
# 3. 检查防火墙规则
sudo iptables -L -n | grep 443
# 或(如果使用firewalld)
sudo firewall-cmd --list-all
# 4. 检查域名解析
nslookup qwen.yourcompany.com
# 5. 检查SSL证书
sudo openssl x509 -in /etc/nginx/ssl/qwen.crt -text -noout | grep -A 2 "Subject:"
9.2 后端实例不健康
症状:Nginx日志显示502 Bad Gateway或后端实例被标记为down。
排查步骤:
# 1. 直接访问后端实例
curl http://192.168.1.101:7860/health
# 2. 检查后端服务日志
ssh root@192.168.1.101 "tail -100 /root/workspace/qwen35awq-backend.log"
# 3. 检查GPU状态
ssh root@192.168.1.101 "nvidia-smi"
# 4. 检查端口监听
ssh root@192.168.1.101 "netstat -tlnp | grep :7860"
# 5. 检查服务进程
ssh root@192.168.1.101 "supervisorctl status"
9.3 响应时间过长
症状:用户反馈图片上传后等待时间很久才有响应。
排查步骤:
# 1. 检查Nginx访问日志中的响应时间
tail -100 /var/log/nginx/qwen_access.log | awk '{print $NF}' | sort -n
# 2. 检查后端实例负载
for ip in 192.168.1.{101,102,103}; do
echo "=== $ip ==="
ssh root@$ip "uptime"
ssh root@$ip "nvidia-smi --query-gpu=utilization.gpu --format=csv,noheader"
done
# 3. 检查网络延迟
for ip in 192.168.1.{101,102,103}; do
ping -c 3 $ip
done
# 4. 检查磁盘IO
ssh root@192.168.1.101 "iostat -x 1 3"
9.4 SSL证书问题
症状:浏览器提示证书不安全或证书过期。
解决方法:
# 1. 检查证书过期时间
sudo openssl x509 -in /etc/letsencrypt/live/qwen.yourcompany.com/fullchain.pem -noout -dates
# 2. 手动续期证书
sudo certbot renew --force-renewal
# 3. 重载Nginx配置
sudo systemctl reload nginx
# 4. 如果续期失败,检查Certbot日志
sudo tail -100 /var/log/letsencrypt/letsencrypt.log
10. 扩展与优化建议
当你的服务稳定运行后,可以考虑进一步的扩展和优化。
10.1 横向扩展
当流量增长时,你可以:
- 增加后端实例:在新的GPU服务器上部署Qwen3.5,然后添加到Nginx的upstream配置中
- 使用动态DNS:配合自动化脚本,实现实例的自动注册和发现
- 考虑容器化:使用Docker部署,便于快速复制和迁移
10.2 性能优化
- 启用HTTP/2:我们已经配置了
http2,确保客户端支持 - 启用Gzip压缩:减少传输数据量
gzip on; gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; gzip_min_length 1024; - 调整缓冲区大小:根据实际图片大小调整
proxy_buffer_size 128k; proxy_buffers 4 256k; proxy_busy_buffers_size 256k;
10.3 安全加固
- 限制访问IP:如果服务只在内部使用
allow 192.168.1.0/24; deny all; - 添加WAF规则:使用ModSecurity等Web应用防火墙
- 定期更新:保持Nginx和系统补丁最新
10.4 高可用负载均衡器
当前架构中,负载均衡器是单点。对于更高要求,可以考虑:
- 主备模式:使用Keepalived实现Nginx主备切换
- 多活模式:使用DNS轮询或多层负载均衡
- 云服务:使用云厂商的负载均衡服务(如AWS ALB、阿里云SLB)
11. 总结
通过今天的实战,我们成功将Qwen3.5-35B-AWQ-4bit从单机部署升级到了企业级架构。让我们回顾一下关键收获:
架构价值:
- 高可用性:多实例部署,单点故障不影响整体服务
- 弹性扩展:可以轻松增加后端实例应对流量增长
- 安全可靠:HTTPS加密通信,防止数据泄露
- 易于维护:可以零停机更新后端服务
配置要点:
- Nginx作为统一入口,处理SSL终止和负载均衡
- 使用
least_conn负载均衡策略,更适合AI推理服务 - 配置合理的超时时间,适应图片处理的长耗时特性
- 实现健康检查,自动剔除故障实例
- 使用Let's Encrypt免费SSL证书,并设置自动续期
运维建议:
- 建立监控体系,及时发现和处理问题
- 定期检查日志,优化配置参数
- 根据实际流量调整实例数量
- 保持系统和软件更新
这套架构不仅适用于Qwen3.5,也适用于其他AI模型服务。当你的业务增长时,你可以用同样的模式扩展更多类型的AI服务。
记住,好的架构不是一蹴而就的,而是在实践中不断优化和调整的。从今天开始,监控你的服务,观察它的表现,根据实际情况进行调整。随着时间的推移,你会越来越了解什么样的配置最适合你的业务需求。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。
更多推荐

所有评论(0)