如何在远程资源的调度DASK本地运行指定DASK工人的正确地址?
形势
我有一个远程资源,我可以ssh到。在那里,我有一个docker容器,它运行一个包含我需要运行Dask的所有依赖项的映像,Distributed。
运行时,容器执行以下操作:
dask-worker --nprocs 14 --nthreads 1 {inet_addr_local}:878
在同一个网络,但我的笔记本电脑,我跑同一图像的另一个容器。在这个容器中,我运行DASK调度,就像这样:
dask-scheduler --port 8786
当我启动调度程序,一切都很好。当我启动工人容器时,它似乎连接到调度程序。在状态我看到以下内容:
Waiting to connect to: tcp://{this_matches_inet_address_of_local}:8786
在调度,我看到了下面反复记录,在一个循环中,它不断地试图联系/响应每个工人:
distributed.scheduler - INFO - Remove worker tcp://172.18.0.10:41508
distributed.scheduler - INFO - Removed worker tcp://172.18.0.10:41508
distributed.scheduler - ERROR - Failed to connect to worker 'tcp://172.18.0.10:44590': Timed out trying to connect to 'tcp://172.18.0.10:44590' after 3 s: OSError: [Errno 113] No route to host
这个问题(我认为)可以在这里看到。 tcp://172.18.0.10
不正确。工作人员在资源db.foo.net
上运行,我可以通过[email protected]
ssh进入。
从调度程序容器,我可以看到,我能够ping db.foo.net
成功。我认为工人们假设他们的地址是他们所在的集装箱的当地地址,而不是db.foo.net
。我需要覆盖这个默认值作为工人的某种配置。我认为--host
标签会这样做,但这会导致Tornado发出以下错误:OSError: [Errno 99] Cannot assign requested address
。
你能找到你的工人的数字IP常用工具连接的,如果不是172.18.0.10?它是否在eth0以外的接口上? – mdurant