클러스터 계산노드에서 jupyter notebook 사용하기

외부망에 보이지 않는 클러스터 계산노드에서 jupyter notebook 사용하는 방법.

일반적인 클러스터 구성은 로그인 노드만 외부망에 공개가 되어 있고, 계산 노드는 그 뒤에 가려져 있다. 작업 스케줄러(Slurm, PBS 등)를 통해 계산 노드를 할당받고 jupyter notebook 을 실행시켜도 접속이 어려울 것이다.

일반 사용자는 로그인 노드에서 계산 노드로 ssh 접속이 불가능할 것이므로, 계산 노드->로그인 노드 방향의 ssh tunneling 을 사용하면 된다. ssh tunneling 을 통해 계산 노드에 띄워둔 jupyter notebook 을 로그인 노드까지만 접속해도 사용할 수 있도록 한다. 정확한 과정은 아래를 참고.

Step 0) 계산 노드를 할당받고, tmux/screen 등으로 계산노드 쉘 두개 띄우기

Step 1) 계산 노드에서 로그인 노드로 reverse ssh tunneling 뚫기 (첫번째 쉘)

​ 계산 노드에서 다음 입력. 22528 포트는 적당히 큰 다섯자리 숫자로 바꾸면 됨.

$ ssh -R 0.0.0.0:22528:localhost:22528 <login node hostname>

Step 2) 계산 노드에서 주피터 노트북 실행 (두번째 쉘)

​ 위에서 쓴 포트랑 같은 것 사용.

$ jupyter notebook --ip localhost --port 22528

Step 3) VSCode 로 주피터 접속

​ VSCode Remote-SSH 로 로그인 노드로 접속.

​ 로그인 노드에서 .ipynb 파일 하나 만들고 연 다음에 아래 과정으로 계산노드에 켜둔 주피터에 접속.

​ Ctrl+Shift+P > Select Notebook Kernel > Existing Server > http://localhost:22528

​ 계산노드에 켜둔 주피터 로그 보면 제대로 접속 되었는지 확인할 수 있을것임.