vLLM-Ascend PD分离场景下代理脚本配置错误导致ConnectError问题排查与解决方案
发表于: 2026/06/02
背景概述
在基于vLLM-Ascend的推理系统中,为提升大模型推理效率,常采用Prefill-Decode(PD)分离架构,将计算密集型的Prefill阶段与解码阶段部署在不同节点上,实现资源解耦与弹性调度。在该架构下,需通过专用的负载均衡代理脚本协调请求分发与KV Cache的跨节点传输。
本文针对在vLLM-Ascend v0.17.0rc1版本中,使用Deepseek-V3.2-w8a8模型进行PD分离部署时,代理服务启动后请求报错httpcore.ConnectError: All connection attempts failed的问题,结合实际排查过程,总结出关键配置误区与解决方案,供开发者参考。
问题现象
模型情况:Deepseek-V3.2-w8a8
软件版本:vLLM-Ascend v0.17.0rc1
硬件环境:Atlas 800I A3 四机PD分离架构
服务可正常拉起,但通过代理脚本接收请求时,返回httpcore.ConnectError: All connection attempts failed。
排查过程
1. 检查代理环境变量
首先排查容器内是否存在HTTP代理配置,可能影响外部连接:
echo $http_proxy
echo $https_proxy# 若输出不为空,执行 unset 清除
unset http_proxy
unset https_proxy各节点未配置代理,排除环境变量干扰。
2. 验证网络连通性
为排除基础网络问题,停止代理服务,在P节点手动启动HTTP服务并测试:
python3 -m http.server <端口> --bind <IP>
curl <IP>:<端口>返回正常,说明节点间网络通畅,排除基础网络异常。
3. 检查节点服务配置一致性
Prefill与Decode节点服务可正常启动,问题聚焦于代理脚本配置。进一步分析发现:
Prefill、Decode节点启动脚本中kv_connector参数配置为MooncakeLayerwiseConnector。- 但代理脚本使用的是
load_balance_proxy_server_example.py,与实际Connector类型不匹配。 - 更换为对应脚本后,请求返回
500 Internal Server Error,问题仍未解决。
httpx.HTTPStatusError: Server error '500 Internal Server Error' for url 'http://xx.xx.xx.xx:xx/v1/completions'4.深入分析代理脚本代码
- 传入参数
--host为0.0.0.0,脚本内部将metaserver地址设置为 0.0.0.0。 - 当请求到达代理时,代理将
metaserver地址封装进req_data,发送至被选中的Prefill、Decode节点。 - 节点在收到任务时,其内部的
Mooncake Connector需与MetaServer通信以获取KV Cache元数据。 - 在网络协议栈中,0.0.0.0代表本地回环。
Decode节点会尝试在它自己的POD内寻找MetaServer进程。
5.MetaServer运行在Prefill节点,Decode服务无法找到进程,导致链接拒绝(Connection Refused),最终引发500错误。
问题根因分析
- 现场使用的代理脚本文件错误;
- 对于layerwise PD分离场景,代理脚本host地址不能配置为 0.0.0.0,需配置为节点的实际业务IP。
解决措施
换用load_balance_proxy_layerwise_server_example.py文件,并将--host参数配置为POD的实际 IP。
在vllm-ascend:v0.18.0rc1版本中,已合入相关运行时告警机制,可提前发现--host=0.0.0.0配置错误问题。详情见:vllm-ascend PR #7389 。
建议
1、更换代理脚本:使用与kv_connector类型匹配的代理脚本:
场景 "kv_connector": "MooncakeConnectorV1" 使用 load_balance_proxy_server_example.py;
场景 "kv_connector": "MooncakeLayerwiseConnector" 使用 load_balance_proxy_layerwise_server_example.py 。
在layerwise PD分离场景,代理脚本host地址不能配置为 0.0.0.0,需配置为节点的实际业务IP。
2、host地址配置规范:
在PD分离场景中,代理脚本的--host必须为节点的实际业务IP,禁止使用 0.0.0.0。
0.0.0.0仅适用于本地回环测试,不适用于跨节点通信场景。
3、版本升级建议:
在 vLLM-Ascend v0.18.0rc1 及后续版本中,已合入运行时校验机制(vllm-ascend PR #7389 ),可自动检测并告警 --host=0.0.0.0的非法配置,建议升级以提前规避此类问题。
总结
在vLLM-Ascend PD分离架构中,代理脚本的配置直接影响系统稳定性与请求成功率。本案例中,因代理脚本与Connector类型不匹配,且host地址配置为 0.0.0.0,导致Decode节点无法正确连接MetaServer,引发连接失败与500错误。
通过匹配代理脚本类型与使用实际IP地址作为host地址,可有效解决该问题。建议在部署时严格遵循配置规范,并关注版本更新带来的运行时保护机制,提升系统健壮性。
✅ 附注:本文所述代理脚本位于vllm-ascend/examples/disaggregated_prefill_v1路径下,为vllm-ascend PD分离场景专用脚本,不可与其他场景混用。



