描述
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抓包抓黑色的错误包,发现客户端企图用服务器端所在的内网回应心跳,这必然是回复不到的。
但是--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
标签:掉线,--,ip,start,address,节点,ray From: https://www.cnblogs.com/d37eirin/p/18585884