[ray运维] 无法访问Ray Dashboard的几个原因

一般来说,启动Ray-Head后,就可以通过端口8265(默认)访问Ray的Dashboard服务。


dashboard.png

如果无法访问,可能有下面几个原因:

1. 防火墙屏蔽了端口

关闭端口限制

2. 未安装Dashboard服务

安装命令pip install ray是不包括dashboard服务模块的。正确的命令是:pip install ray[default],这个命令会安装所有ray的模块

3. 只绑定了本地loalhost的端口

使用dashboard-host参数ray start --head --dashboard-host='0.0.0.0'绑定所有ip,或者指定一个固定ip

4. Dashboard模块的依赖有错误(ImportError: Not all Ray Dashboard dependencies were found)

这个问题特别坑,所以需要详细描述一下解决过程:

4.1. 现象

使用命令ray start --head启动之后,发现dashboard无法访问。尝试指定dashboard-host和dashboard-port:ray start --head --dashboard-host='0.0.0.0' --dashboard-port=8265,依然无法访问。后来发现服务器的8265端口根本没有被监听(netstat -anp |grep 8265)。这说明dashboard服务没有启动,但在日志里根本没有体现,真坑。

4.2. 排错

查阅官方文档,发现有个参数--include-dashboard,这个参数可以强制启用dashboard。加上这个参数启动head:ray start --head --include-dashboard=true,这个时候错误信息终于出现了:ImportError: Not all Ray Dashboard dependencies were found

ImportError

查看ray源码https://github.com/ray-project/ray/,找到出错的代码行:

services.py

而import ray.dashboard.optional_deps的代码如下:

optional_deps.py

我们在python shell直接运行一下试试:

error.png

很明显是import aiohttp这个库出了问题,大概率是版本不兼容导致的。我又翻阅了一下ray相关的commit信息,发现ray的aiohttp的依赖由aiohttp==3.7变成了aiohttp>=3.7。而服务器上python里的aiohttp正是3.8.0,将aiohttp降为3.7.4:

pip install -i https://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com -U aiohttp==3.7.4

再次启动head,dashboard能正常访问。

4.3. 原因

通过实验我们知道,ray不能兼容aiohttp的3.8.x版本,而依赖配置里却声明为aiohttp>=3.7,导致依赖安装的aiohttp版本不对。将aiohttp更新成3.7.4就可解决这个问题。

你可能感兴趣的:([ray运维] 无法访问Ray Dashboard的几个原因)