如何为 ipython 集群(ipcluster)设置 ssh 隧道
Posted
技术标签:
【中文标题】如何为 ipython 集群(ipcluster)设置 ssh 隧道【英文标题】:How to setup ssh tunnel for ipython cluster (ipcluster) 【发布时间】:2014-06-02 11:07:03 【问题描述】:我想在可通过 ssh 访问的服务器和其他可以通过 ssh 相互连接的机器上运行 ipython 集群。网络不受信任。
我尝试使用我从文档中了解的内容设置 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 都是固定且合理受信任的,对我来说一个非常可行的解决方案是打开防火墙的固定端口。
如何指示引擎通过隧道连接到控制器?
【问题讨论】:
我处于类似情况 - 自动设置 SSH 隧道(在引擎/控制器进程关闭时删除)或指定端口范围的方法(添加一些明确的主机:端口范围组合到防火墙)将是最有用的...... 【参考方案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
【讨论】:
以上是关于如何为 ipython 集群(ipcluster)设置 ssh 隧道的主要内容,如果未能解决你的问题,请参考以下文章
如何为远程 Service Fabric 集群创建 Actor 代理