Как стать автором
Обновить

JupyterHub, или как управлять сотнями пользователей Python. Лекция Яндекса

Время на прочтение 10 мин
Количество просмотров 45K
Всего голосов 34: ↑34 и ↓0 +34
Комментарии 3

Комментарии 3

Лично пробовал jupyterhub, когда для VPN арендовал сервер в Германии и понял, что он бОльшую часть времени простаивает. К сожалению, из-за каких-то сложностей с websockets оно отвратительно работало в Google Chrome. Чистый jupyter таких проблем не давал.

Для заворачивания трафика к jupyter в HTTPS можно использовать nginx с такой конфигурацией:

##############################################
# python.example.com
##############################################

upstream notebook {
server localhost:8888;
}
server {
listen 80;
# listen [::]:80;
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/python.example.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/python.example.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
if ($scheme != "https") {
return 301 https://$host$request_uri;
} # managed by Certbot
server_name python.example.com;
# Jupyter:
location / {
proxy_pass http://notebook;
proxy_set_header Host $host;
}
location ~ /api/kernels/ {
proxy_pass http://notebook;
proxy_set_header Host $host;
# websocket support
proxy_http_version
proxy_set_header Upgrade "websocket";
proxy_set_header Connection "Upgrade";
proxy_read_timeout 86400;
}
location ~ /terminals/ {
proxy_pass http://notebook;
proxy_set_header Host $host;
# websocket support
proxy_http_version 1.1;
proxy_set_header Upgrade "websocket";
proxy_set_header Connection "Upgrade";
proxy_read_timeout 86400;
}
}


Letsencrypt подключается так:

apt-get install -y python-certbot-nginx nginx build-essential
mkdir -p /etc/letsencrypt

echo 'rsa-key-size = 4096
pre-hook = /sbin/iptables -I INPUT -p tcp --dport 443 -j ACCEPT && systemctl stop nginx
#post-hook = /sbin/iptables -D INPUT -p tcp --dport 443 -j ACCEPT
renew-hook = /usr/sbin/ipsec reload && /usr/sbin/ipsec secrets && systemctl start nginx
' > /etc/letsencrypt/cli.ini
certbot certonly --non-interactive --agree-tos --email you@example.com --standalone -d python.example.com


Последняя команда вносится в crontab, чтобы сертификаты перевыпускались регулярно.

Весьма рекомендуется дать Letsencrypt хотя бы баксов пять пожертвования: letsencrypt.org/donate

Андрей, насколько я понял, хабом у вас пользуются далекие от чистых программизмов пользователи.


Но тут должна возникнуть проблема коллаборативной работы. Хотя хаб вроде как декларируется про совместную работу, на самом деле, с этим у юпитера и юпитерхаба все плохо.


  • Легкого коллаборативного редактирования с алгеброй операций (как в гуглдокс) в хабе нет.
  • Использовать единую файлопомойку куда ходят все и по очереди открывают файлы — плохо.
  • Использовать git-репозитории… но JSON-разметка погано подходит для diff и merge.
    • Все открывают консоль на юпитере и гитом …?
    • Есть nbdime, но он вроде как нормально работает с обычным юпитером, но сходу непонятно, как добится «красивого вебмерджа ячеек» в интерфейсе юпитерхаба.


Что сделали вы?

Отличная статья, хотел уточнить один момент. Пользователь ноутбуков могут использовать данные hadoop и вычислительные мощности yarn?
Зарегистрируйтесь на Хабре , чтобы оставить комментарий