如何为ipython集群设置ssh隧道(ipcluster)

时间:2014-04-18 00:34:40

标签: parallel-processing ipython ssh-tunnel

我想在ssh可访问的服务器和其他一些机器上运行ipython集群,所有这些机器都可以通过ssh相互连接。网络不受信任。

我尝试使用我在文档中理解的内容设置ssh隧道 ipcontroller和ipengine。然而,我最终获得通信工作的唯一方法是手动实现隧道。使用Jean-Francis Roy中的指令,首先要修复所有必要的端口

controller-host ~ $ ipcontroller --ip=0.0.0.0 --location=127.0.0.1 --port=10101 \
             --HubFactory.hb=10102,10112 \
             --HubFactory.control=10203,10103 \
             --HubFactory.mux=10204,10104 \
             --HubFactory.task=10205,10105

然后可以手动为上述固定端口启动ssh隧道。

engine-host ~ $ for port in 10101 10102 10112 10103 10104 10105; do\
                    ssh USER@IP_CONTROLLER -f -N -L $port:localhost:$port;\
                done

虽然这有效,但我从文档中感觉到ipcontroller或ipengine的众多选项之一可以在不需要手动端口安装的情况下完成此任务。对我来说,一个非常可行的解决方案是打开防火墙的固定端口,因为我们网络中的所有IP都是固定的,并且是合理可信的。

如何指示引擎隧道到控制器?

1 个答案:

答案 0 :(得分:1)

感谢您复制珍贵的指示,现在链接到博客已经破了! 我能够通过编辑配置文件中的相应项来使其工作。 首先,创建一个配置文件:

ipython profile create --parallel --profile=myCluster

然后,修改~/.ipython/profile_myCluster/ipcontroller_config.py以便:

c.HubFactory.control = 10203,10103
c.HubFactory.task = 10205,10105
c.HubFactory.mux = 10204,10104
c.HubFactory.regport = 10101
c.HubFactory.hb = 10102,10112

现在,如果端口可以访问,您只需要启动

ipcluster start --profile=myCluster

有关其他选项,请参阅http://ipython.org/ipython-doc/1/parallel/parallel_process.html#using-ipcluster-in-ssh-mode