简而言之:我如何将交互式瞬时 PBS 会话端口绑定到头节点,然后将头节点端口绑定到我的本地计算机?因此,三台机器的端口绑定链。
更多细节:
免责声明:我不完全确定我是否理解端口绑定和转发之间的细微差别,因此如果我说的话听起来不对,请认为是我的错。
我有 3 台机器,涉及以下变量:
机器 | 接近性 | 超级用户访问 | 类型 | 持久的 |
---|---|---|---|---|
笔记本电脑 | 当地的 | 是的 | OpenSUSE | 是的 |
头节点 | 偏僻的 | 不 | PBS 头节点 | 是的 |
交互节点 | 偏僻的 | 不 | PBS 互动环节 | 不 |
我可以ssh username@<ip-address> -L 8080:localhost:8080
在头节点中执行 ssh,然后在笔记本电脑的 GUI 上jupyter lab --no-browser --port 8080
打开与远程服务器的连接。Jupyter
但头节点的权力有限。但是,我们可以访问计算能力上限明显更高的交互式会话。我使用以下 PBS 脚本启动并访问它们
#!/bin/bash
#PBS -N interactive-job
#PBS -V -j oe -o interactive-job.qlog
#PBS -P labpool
#PBS -l system_metrics=true
#PBS -l nodes=1,instance_type=m5.4xlarge,spot_price=auto,instance_ami=ami-0961c39af220b9f68
但是当我jupyter lab --no-browser --port 8080
从头节点内部执行此操作时,我无法再jupyter
在本地 GUI 上访问远程服务器。我怀疑这是因为我的本地计算机与头节点的端口绑定,但与交互式会话的端口绑定。
我首先想到的解决方案是创建一个端口绑定链,将交互式会话连接到头节点,并将头节点连接到我的本地机器。我怎样才能做到这一点?
我认为我需要按如下方式定制脚本:
#!/bin/bash
#PBS -N interactive-job
#PBS -V -j oe -o interactive-job.qlog
#PBS -P labpool
#PBS -l system_metrics=true
#PBS -l nodes=1,instance_type=m5.4xlarge,spot_price=auto,instance_ami=ami-0961c39af220b9f68
ssh interactive_session_name@new_ip -L 8080:localhost:8080 # **Not sure if this is right.**
主要的技术问题是interactive_session_name@new_ip
每次都会发生变化,并在之后显示qsub -I job_script.sh
。有没有办法在脚本中预先推断出名称?
尝试在搜索引擎上查找 PBS 的定制信息已被证明是困难的,因为我经常会碰到有关其他 PBS(公共广播服务)的文章。
有什么办法可以解决这个问题吗?