JunoLab / Juno.jl

MIT License
145 stars 23 forks source link

help with remote slurm node #630

Closed natalieklein229 closed 3 years ago

natalieklein229 commented 3 years ago

Hi,

I'm trying to follow instructions at http://docs.junolab.org/latest/man/remote/#Manual-port-forwarding-1, and have looked through other issues here and elsewhere online to try to find help, but I can't seem to get it to work nor find anyone describing exactly this scenario. For starters, what is the "Julia Client: Connect External Process" command referenced in the link? I have Atom Version 1.55.0 and don't see that command anywhere.

For more context: I'm trying to use Atom/Juno on my local machine, but run julia on a server compute node after getting a node via slurm. (Using the simple instructions at the top of the link, I can use Juno remotely on the front end node of the server, but that's not going to be usable.) From what I gather, I need to do port forwarding, but I'm getting lost in the details. I know how to tunnel from the front end node to a selected compute node, but can't seem to get Juno to connect through that. Thanks for any help.

pfitzseb commented 3 years ago

Julia Client: Connect External Process should be available in the command palette (Ctrl-Shift-P) when julia-client is installed.

The one tricky thing about the local machine -> login node -> compute node chain is that you need to forward the port at both stages, but apart from that things should just work™.

natalieklein229 commented 3 years ago

Thank you. So I think I'm forwarding ports correctly -- I'm using the same ssh command that coworkers have used for running jupyter notebooks on the compute nodes and viewing locally in a browser. I am able to use the ssh command to connect to the compute node without any errors. However, I still keep getting connection refused errors from Juno.connect (example below). Anything else I should try or check? (I tried with both julia 1.4.2 and 1.5.0 on the server, did not make a difference.)

ERROR: IOError: connect: connection refused (ECONNREFUSED)
Stacktrace:
 [1] wait_connected(::Sockets.TCPSocket) at julia/stdlib/v1.4/Sockets/src/Sockets.jl:520
 [2] connect at julia/stdlib/v1.4/Sockets/src/Sockets.jl:555 [inlined]
 [3] connect at julia/stdlib/v1.4/Sockets/src/Sockets.jl:541 [inlined]
 [4] connect(::Sockets.IPv4, ::Int64; kws::Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}) at .julia/packages/Atom/BPtI0/src/comm.jl:111
 [5] connect at .julia/packages/Atom/BPtI0/src/comm.jl:111 [inlined]
 [6] #connect#34 at .julia/packages/Atom/BPtI0/src/comm.jl:121 [inlined]
 [7] connect(::Int64) at .julia/packages/Atom/BPtI0/src/comm.jl:121
 [8] top-level scope at REPL[4]:1
 [9] eval at ./boot.jl:331 [inlined]
 [10] eval at .julia/packages/Juno/n6wyj/src/Juno.jl:1 [inlined]
 [11] connect(::Int64; kws::Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}) at .julia/packages/Juno/n6wyj/src/user.jl:44
 [12] connect(::Int64) at .julia/packages/Juno/n6wyj/src/user.jl:43
 [13] top-level scope at REPL[4]:1
pfitzseb commented 3 years ago

Hm. How exactly are you ssh'ing to the remote?

For reference, the following works fine for me:

λ ssh antarctic.juliacomputing.io -R 32785:localhost:32785

pfitzseb@antarctic:~$ ssh arctic3.juliacomputing.io -R 32785:localhost:32785

pfitzseb@arctic3:~$ ~/julia-1.6.0/bin/julia 
               _
   _       _ _(_)_     |  Documentation: https://docs.julialang.org
  (_)     | (_) (_)    |
   _ _   _| |_  __ _   |  Type "?" for help, "]?" for Pkg help.
  | | | | | | |/ _` |  |
  | | |_| | | | (_| |  |  Version 1.6.0 (2021-03-24)
 _/ |\__'_|_|_|\__'_|  |  Official https://julialang.org/ release
|__/                   |

julia> using Atom; using Juno; Juno.connect(32785)

julia> 

Proxy-Jumping also works fine for me, FWIW.

natalieklein229 commented 3 years ago

Doh... The jupyter instructions used ssh -L, but I just replaced to ssh -R and it works now! Thanks for your help.