2014-04-18 26 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