知识结构:

  • JupyterHub子系统:Hub,Proxy,Single-User Notebook Server

  • 子系统之间交互

  • JupyterHub用户登录访问过程

  • JupyterHub默认行为

  • JupyterHub定制化

子系统

JupyterHub是进程组合,为小组中的每个用户提供single user Jupyter Notebook server。

  • Hub(Python/Tornado):管理用户账号,认证,通过Spawner协调Single User Notebook Server

  • Proxy:通过动态代理路由HTTP请求到Hub和Single User Notebook Server

  • Single User Notebook Server(Python/Tornado):通过Spawner启动的notebook

子系统交互

基本操作包括:

  • Hub spawn proxy(默认的JupyterHub配置)

  • proxy默认将所有请求转发给Hub

  • Hub管理登录,并根据需求spawn single-user notebook server

  • Hub配置proxy,将部分请求转发给single-user notebook server

登录过程

当用户访问JupyterHub时

  • 登录信息会递交给Authenticator实例进行验证

  • 如果登录信息有效,Authenticator返回用户名

  • single-user notebook server实例会为登录用户spawned

  • 当single-user notebook server启动,proxy会将所有/user/[username]/* 转发给single-user notebook server

  • cookie会设置在/hub/ ,包含加密的token

  • 浏览器会重定向到/user/[username] ,从而由single-user notebook server处理请求

single-user server会通过OAuth与Hub认证:

  • 当请求过来时,single-user server会检查cookie

  • 如果cookie没有设置,则重定向到Hub进行验证

  • 在Hub验证之后,浏览器重定向到single-user server

  • token被验证并存储到cookie

  • 如果没有用户,浏览器会重定向到/hub/login

默认行为

默认,Proxy会监听所有公共接口的8000端口,Hub与Single-User Notebook Servers会在localhost交互。

默认,启动JupyterHub时会在当前工作目录写入两个文件

  • jupyterhub.sqlite:包含Hub的所有状态,如运行的用户等

  • jupyterhub_cookie_secret:避免登录cookie失效,是用于保证cookie安全的key

默认位置是/etc/jupyterhub 保存配置文件,/srv/jupyterhub 保存所有安全和运行文件。

自定义配置

在定制方面有两个方面:

  • 如何进行认证

  • 如何启动single-user notebook server

【参考】

1。jupyterhub:technique overview:http://jupyterhub.readthedocs.io/en/latest/reference/technical-overview.html

results matching ""

    No results matching ""