2014-04-18 27 views
1

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

我已经尝试使用我从 ipcontroller和ipengine的文档中理解的设置ssh隧道。然而,我最终获得通信工作的唯一方法是手动实施隧道。从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 

,然后一个可以手动initate ssh的隧道用于上述固定端口。

engine-host ~ $ for port in 10101 10102 10112 10103 10104 10105; do\ 
        ssh [email protected]_CONTROLLER -f -N -L $port:localhost:$port;\ 
       done 

虽然这工作,我从文档感觉到,许多选项之一ipcontroller或ipengine能够做到这一点,而无需手动安装端口。鉴于我们网络中的所有IP都是固定且合理信任的,所以对我而言,一个可行的解决方案可能是打开固定端口到防火墙。

我该如何指导引擎隧道到控制器?

+0

我处于类似的情况 - 自动设置SSH隧道(当引擎/控制器进程关闭时删除)或指定端口范围(将某些显式主机:端口范围组合添加到防火墙)的方法将是最有用的... – FredL

回答

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