Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Automate port forwarding #477

Open
annawoodard opened this issue Aug 22, 2018 · 5 comments
Open

Automate port forwarding #477

annawoodard opened this issue Aug 22, 2018 · 5 comments

Comments

@annawoodard
Copy link
Collaborator

Idea from @benclifford, some facilities do not have outbound connectivity on the compute nodes, which makes running from an external location impossible. We could get around this by forwarding a network connection from the engine to the external controller through e.g. the login node.

Needed by @mgovoni-devel.

@mgovoni-devel
Copy link

The fact that executors cannot be set remotely on machines that don’t have network connectivity available from the computing notes weakens the overall scope of Parsl. Most of the big machines have compute nodes that don’t see the outside network, and so would fall in this category. I strongly suggest to prioritize the solution of this issue (if possible). Thanks.

@annawoodard
Copy link
Collaborator Author

Here's an example script for doing this we could use for inspiration: https://github.com/Twinklebear/theta-tunnel

@yadudoc
Copy link
Member

yadudoc commented Sep 13, 2018

I've done a quick manual test to confirm that this issue can be handled with ssh tunnels. Here's what I've done specifically for theta.alcf which restricts external network access from the compute nodes:

  1. Start ipcontroller on laptop with static ip.
  2. Log onto thetalogin6
  3. Start a series of 7 tunnels for each of the ports used by the engines to connect to the controller
    laptop:port <======> thetalogin6:port
  4. Start an interactive session
  5. Now edit the ipcontroller-engine.json file, replacing the static ip of the laptop with the address of
    thetalogin6.
  6. Start the engine.
    laptop:port <===TUNNEL====> thetalogin6:port <---0mq---- worker:port

To automate this process, we'll need to add a new operation at the init phase to start the tunnels and add an override to specify location to point to executor side end of the tunnel.

@yadudoc yadudoc self-assigned this Sep 13, 2018
@yadudoc yadudoc added this to the Parsl-0.7.0 milestone Sep 13, 2018
@annawoodard annawoodard removed this from the Parsl-0.7.0 milestone Oct 26, 2018
@WardLT
Copy link
Contributor

WardLT commented Dec 9, 2021

Reviving this old topic. I just went through an exercise in SSH tunnels that seemed very automatable.

Will document the effort with a simple repo to at least show people how such a system could be built.

@yadudoc yadudoc removed their assignment Feb 9, 2022
@benclifford
Copy link
Collaborator

pleases see issue #3515 about removing channels from Parsl

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants