开发者
下载
vLLM-Ascend PD分离场景下代理脚本配置错误导致ConnectError问题排查与解决方案

vLLM-Ascend PD分离场景下代理脚本配置错误导致ConnectError问题排查与解决方案

DeepSeekvLLM

发表于: 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节点服务可正常启动,问题聚焦于代理脚本配置。进一步分析发现:

  1. PrefillDecode节点启动脚本中 kv_connector 参数配置为MooncakeLayerwiseConnector
  2. 但代理脚本使用的是 load_balance_proxy_server_example.py,与实际Connector类型不匹配。
  3. 更换为对应脚本后,请求返回 500 Internal Server Error,问题仍未解决。
httpx.HTTPStatusError: Server error '500 Internal Server Error' for url 'http://xx.xx.xx.xx:xx/v1/completions'

4.深入分析代理脚本代码

  1. 传入参数--host为0.0.0.0,脚本内部将metaserver地址设置为 0.0.0.0。
  2. 当请求到达代理时,代理将metaserver地址封装进req_data,发送至被选中的PrefillDecode节点。
  3. 节点在收到任务时,其内部的Mooncake Connector需与MetaServer通信以获取KV Cache元数据。
  4. 在网络协议栈中,0.0.0.0代表本地回环。Decode节点会尝试在它自己的POD内寻找 MetaServer进程。

5.MetaServer运行在Prefill节点,Decode服务无法找到进程,导致链接拒绝(Connection Refused),最终引发500错误。

问题根因分析

  1. 现场使用的代理脚本文件错误;
  2. 对于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分离场景专用脚本,不可与其他场景混用。


本页内容