我想在远程计算机群集上使用ipython
的并行功能。只能从外部访问头节点。我已经设置了ssh密钥,以便我可以连接到头节点,例如ssh head
并且从那里我也可以在不输入密码的情况下ssh到任何节点,例如ssh node3
。所以我基本上可以在节点上运行任何命令:
ssh head ssh node3 command
现在我真正想做的是能够从ipython从我自己的计算机上运行集群上的作业。设置要在ipcluster中使用的主机的方法是:
send_furl = True
engines = { 'host1.example.com' : 2,
'host2.example.com' : 5,
'host3.example.com' : 1,
'host4.example.com' : 8 }
但由于我只有头节点的主机名,我认为我不能这样做。一种选择是在头节点上设置ssh隧道,但在我的情况下我不能这样做,因为这需要打开足够的端口来容纳所有节点(事实并非如此)。还有其他选择吗?
答案 0 :(得分:1)
我使用PBS队列在NERSC集群上使用ipcluster:
http://ipython.org/ipython-doc/stable/parallel/parallel_process.html#using-ipcluster-in-pbs-mode
总结一下,你提交运行mpiexec ipengine的作业,(在登录节点上启动ipcontroller之后)。你的群集上有PBS吗?
这在ipython .10上运行良好,现在已经打破了.11 alpha。
答案 1 :(得分:0)
我会在主服务器上设置一个VPN服务器,并使用本地计算机上的VPN客户端连接到该服务器。一旦建立,虚拟专用网络将允许所有从属设备看起来好像它们与我的本地机器在同一个LAN上(在“虚拟”网络接口上,在“虚拟”子网中),并且它应该是可能的ssh给他们。
您可以建立VPN over SSH(“ssh tunneling”,如您所述);其他选项包括OpenVPN和IPsec。
我不明白你的意思“这需要打开足够的端口以容纳所有节点”。您将需要:(i)主站上的一个入站端口,提供VPN /隧道,(ii)每个从站上的入站SSH,可从主站访问,(iii)每个从站上的另一个入站端口,主驱动器通过该端口IPython引擎。在任何设置中都不需要(ii)和(iii)吗?所以我们添加的是(i)。