ray集群多节点在NAT环境下无法部署(ray两个节点在不同wifi下连接上后丢失心跳掉线)
描述
ray在内网完美运行,但是work节点和head节点在不同wifi下丢失心跳,8265面板检测最初可以连接并alive 但是很快就变为dead
环境
windows
python3.10.14
ray-3.0.0.dev0-cp310-cp310-win_amd64
客户端(work节点) 启动项
ray start --address=12.34.567.89:6379 --node-ip-address=98.765.43.21
服务器端(head节点)启动项
ray start--head --port=6379 --dashboard-host=0.0.0.0 --dashboard-port=8265 --node-ip-address=12.34.567.89
node-ip-address可以强行指定本机ip
分析
丢失心跳的原因是因为
客户端应答心跳时,目的地址错误,应为服务器端的公网地址而非服务器端所在的内网地址(wireshark 筛选条件frame.len == 66)
使用wireshark抓包抓黑色的错误包,不断重传必然是回复不到的。
注意!任何NAT都不行,手机热点和wifi都不行,必须两个都在公网ip下才行(可用机房ip试验)
但是--address对应的ip必须填内网而不是公网(head节点指定nodeip)不然无法启动,因为填公网ip无法回环去找自己,但是如果填内网ip客户端又找不到心跳
所以客户端和服务器端都必须直接把裸机暴露给公网,不走所谓NAT
或者使用代理服务器,让他以为自己是在内网
参考
from ray.scripts.scripts import start, stop
ctx = start.make_context('start',
[
'--address', f'33.44.55.66:6379',
'--resources', f'{json.dumps(custom_resources)}',
'--node-name', name,
# '--node-ip-address', "11.22.33.44",
],
)
result = start.invoke(ctx)
ray github issue 45179
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通