티스토리 뷰

DevOps

[NBP Cloud] jupyterhub install

김한성 2020. 5. 27. 19:43

jupyterhub

  • jupyterhub는 여러 사용자에게 jupyter 노트북(jupyterlab) 을 제공합니다. 학생들에게 수업이나 기업의 데이터 과학 쪽 그룹에서 사용할 수 있습니다. 단일사용자가 jupyter 노트북 서버의 여러 인스턴스를 생성, 관리 및 프록시 하는 멀티 사용하는것을 jupyterhub라고 합니다.

jupyterhub 공식 아키텍처 [https://jupyterhub.readthedocs.io/]

 

 

■ 멀티유저 환경에서 구동되는 jupyter notebook 서버를 구성하기 위해 jupyterhub 구성 (NBP Cloud) 나름대로 아키텍처 정의 해봄

 

jupyterhub 아키텍처

1. Config.py: jupyterhub의 properties 설정 (Spawners, Authenticator, port, ip, proxy 등)

 

2. Authenticator: 사용자 인증은 Authenticator 클래스를 통해 사용자 정의 기능 Oauth, Kerboeros 메커니즘으로 대체 가능

 

3. Spawners: 단일 사용자 user 서버는 Spawner를 통해서 시작됨

 

4. Conda Env: default 경로에 anaconda 설치 후 사용자가 새로 생성 될때마다 conda 환경에서 독립적으로 작업할 수 있도록 구성

 

jupyterhub에 Login 되었을때 세부적인 흐름

 

jupyterhub 세부적인 흐름

1. 로그인 Data가 Authenticator로 전달되고 로그인 정보가 유효한 경우 Authenticator은 사용자 이름을 반환

 

2. 로그인 한 사용자를 위해 단일 사용자 서버 인스턴스 생성되고 서버가 시작되면 proxy가 /user/username/* 단일 사용자 서버로 전달 되도록 알림

 

3. Browser는 Redirected 되며 /user/username 단일 사용자 서버에서 처리

 

jupyterhub install

# rpm 파일 winscp 사용하여 서버에 업로드
$ [ncloud@data-analysis ~]$ ls
Anaconda3-2019.03-Linux-x86_64.sh  epel-release-latest-7.noarch.rpm

#rpm 저장소 활성화
$ sudo rpm -ivh epel-release-latest-7.noarch.rpm
  • nodejs 관련 package install
$ sudo yum install -y nodejs

$ sudo yum update openssl

$ sudo npm install -g configurable-http-proxy
  • 전역환경에 jupyterhub와 인증관련 모듈 설치
$ sudo yum install python3-pip

$ sudo pip3 install sudospawner

$ sudo pip3 install jupyterlab
  • jupyterhub를 실행할 전용사용자 추가
#지금 ncloud계정에서 하는거라 지금은 만들지 않아도 되지만 혹시 다른 계정을 admin 계정으로 사용하려면 아래 명령어 사용해서 사용자 추가해주기
$ sudo useradd ncloud
  • /etc/sudoers 편집
# 전역환경에 설치한 sudospawner 실행 파일을 JUPYTER_CMD로 설정
Cmnd_Alias JUPYTER_CMD = /usr/local/bin/sudospawner
# iteyes 사용자가 jupyterhub 그룹에 있는 사용자에 대해서 암호없이 JUPYTER_CMD를 실행
iteyes ALL=(%jupyterhub) NOPASSWD:JUPYTER_CMD
  • jupyterhub 그룹 설정 및 사용자 할당
sudo groupadd jupyterhub

$ [ncloud@data-analysis ~]$ sudo usermod -a -G jupyterhub ncloud
$ [ncloud@data-analysis ~]$ sudo usermod -a -G jupyterhub iteyes
$ [ncloud@data-analysis ~]$ sudo usermod -a -G jupyterhub hskim
  • root가 아닌 사용자가 PAM 동적인증 가능하게 하기
#보통 showdow 그룹이 있는데 아래처럼 없으면 계속 진행
$ [ncloud@data-analysis ~]$ ls -l /etc/shadow
-r-------- 1 root root 685 Nov  7 13:04 /etc/shadow

$ sudo groupadd shadow

$ sudo chgrp shadow /etc/shadow

$ sudo chmod g+r /etc/shadow

#iteyes 계정을 shadow 그룹에 추가
$ sudo usermod -a -G shadow iteyes
  • 전역환경에 pamela install
$ sudo pip3 install pamela
  • jupyterhub 폴더 만들기
$ sudo mkdir /etc/jupyterhub
$ sudo chown iteyes /etc/jupyterhub
  • jupyterhub 설정 파일 만들기
$ cd /etc/jupyterhub
$ [ncloud@data-analysis jupyterhub]$ sudo -u iteyes /usr/local/bin/jupyterhub --generate-config
Writing default config to: jupyterhub_config.py
  • jupyterhub_config.py 설정
c.JupyterHub.hub_connect_ip = '0.0.0.0'
c.JupyterHub.hub_port = 8088
c.JupyterHub.port = 8000
c.JupyterHub.spawner_class = 'sudospawner.SudoSpawner'
c.SudoSpawner.sudospawner_path = '/usr/local/bin/sudospawner'
c.Spawner.default_url = '/lab'
  • jupyterhub 실행
    • 실행권한은 iteyes가 가지고 있으므로 실행권한 가지고 있는 계정으로 들어가서 실행 
    • 아래와 같이 실행이 잘되면 cloud에서 올렸으니 http://공인아이피:port 웹으로 접속
[iteyes@data-analysis jupyterhub]$ jupyterhub -f /etc/jupyterhub/jupyterhub_config.py

  • 로그인 초기 모습
    • 이제 등록된 아이디로 입력하면 특정 user에 대한 독립 공간 및 작업 공간이 만들어짐

  • jupyterhub 계정 추가하기
    • 서버에서 계정추가 하게되면 Authenticator(PAM)을 거쳐서 로그인 정보가 유요한 경우 사용자 이름을 반환하여 로그인이 가능
$ [ncloud@data-analysis ~]$ sudo useradd hshan
$ [ncloud@data-analysis ~]$ sudo passwd hshan
Changing password for user hshan.
New password:
BAD PASSWORD: it is too short
BAD PASSWORD: is too simple
Retype new password:
passwd: all authentication tokens updated successfully.

$ sudo usermod -a -G jupyterhub hshan

 

댓글
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31