http://127.0.0.1:53081/user/admin/api didn't respond in 30 seconds
[E 2024-08-14 08:09:37.628 JupyterHub gen:629] Exception in Future <Task finished name='Task-817' coro=<BaseHandler.spawn_single_user.<locals>.finish_user_spawn() done, defined at /usr/local/lib/python3.10/dist-packages/jupyterhub/handlers/base.py:1115> exception=TimeoutError("Server at http://127.0.0.1:53081/user/admin/api didn't respond in 30 seconds")> after timeout
Traceback (most recent call last):
File "/usr/local/lib/python3.10/dist-packages/tornado/gen.py", line 624, in error_callback
future.result()
File "/usr/local/lib/python3.10/dist-packages/jupyterhub/handlers/base.py", line 1122, in finish_user_spawn
await spawn_future
File "/usr/local/lib/python3.10/dist-packages/jupyterhub/user.py", line 1033, in spawn
await self._wait_up(spawner)
File "/usr/local/lib/python3.10/dist-packages/jupyterhub/user.py", line 1076, in _wait_up
raise e
File "/usr/local/lib/python3.10/dist-packages/jupyterhub/user.py", line 1047, in _wait_up
resp = await server.wait_up(
File "/usr/local/lib/python3.10/dist-packages/jupyterhub/utils.py", line 322, in wait_for_http_server
re = await exponential_backoff(
File "/usr/local/lib/python3.10/dist-packages/jupyterhub/utils.py", line 265, in exponential_backoff
raise asyncio.TimeoutError(fail_message)
asyncio.exceptions.TimeoutError: Server at http://127.0.0.1:53081/user/admin/api didn't respond in 30 seconds
Jupyterhub๋?
jupyer notebook๊ณผ jupyterlab์ ์ฌ๋ฌ ์ฌ๋๊ณผ ๊ฐ์ด ์ฌ์ฉํ ๋ ์ค๊ณ์ ์ญํ ์ ํด์ฃผ๋ Hub์ ๋๋ค. Jupyter Notebook์ ๋ฐ์ดํฐ ์ฌ์ด์ธ์ค, ๋ฐ์ดํฐ ๋ถ์, ๋ง์ผํ ๋ถ์ ๋ฑ ๋ค์ํ ๊ณณ์์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ํ๋์ ์๋ฒ์์ ์ฌ๋ฌ ๋ช ์ด ๋์์ ๊ฐ์ Python kernel์ ์ฌ์ฉํ ๊ฒฝ์ฐ ์๊ธฐ๋ ์ค๋ฅ๋ฅผ Hub๋ฅผ ํตํด ํด๊ฒฐํ ์ ์์ต๋๋ค.
Subsystems
JupyterHub๋ 4๊ฐ์ ํ์ ์์คํ ์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
- JupyterHub ์ ์ฌ์ฅ์ธ ํ๋ธ(tornado process)
- ํด๋ผ์ด์ธํธ ๋ธ๋ผ์ฐ์ ๋ก๋ถํฐ ์์ฒญ์ ์์ ํ๋ ๊ตฌ์ฑ ๊ฐ๋ฅํ http ํ๋ก์ (node-http-proxy)
- Spawners๊ฐ ๋ชจ๋ํฐ๋งํ๋ ๋ค์ค ๋จ์ผ ์ฌ์ฉ์ Jupyter ๋ ธํธ๋ถ ์๋ฒ (Python/IPython/tornado)
- ์ฌ์ฉ์๊ฐ ์์คํ ์ ์ด๋ป๊ฒ ์ก์ธ์ค ํ ์ ์๋์ง ๊ด๋ฆฌํ๋ ์ธ์ฆ ํด๋์ค
1. jupyterhub_config.py
Jupyterhub์ Authenticator ๋ฐฉ์(GoogleOauth, Keycloak, Generic etc), host, ip, ๋ฆฌ์์ค ๋ฑ์ ๊ตฌ์ฑํฉ๋๋ค.
config ํ์ผ ์์ฑ
jupyterhub --generate-config
config ํ์ผ ์ ์ฉ (์ ์ฉ ์ Jupyterhub ์ฌ์์ ํ์)
jupyterhub -f /etc/jupyterhub/jupyterhub_config.py
2. Jupyterhub Access ๋ฐฉ์
Http Proxy๋ก ๋ค์ด์จ ์ ์ ์ ์์ฒญ์ Authenticator๊ฐ ์ธํ๊ฐ๋ฅผ ํ๋จํฉ๋๋ค. ์ธ์ฆ์ด ์๋ฃ๋๋ฉด ์ต์ด ๋ก๊ทธ์ธ์ ๊ฒฝ์ฐ Spawners๊ฐ ์ฌ์ฉ์ ๊ณ์ ์ ์์ฑํฉ๋๋ค. ์ฌ๊ธฐ์ ์ฃผ์ํด์ผ ํ ์ ์ Spawners๋ก ์์ฑ๋ ์ ์ ๋ ์๋ฒ์ ์ ์ ์ ๋์ผํ๋ค๋ ์ ์ ๋๋ค.
PAM(Pluggable Authentication Module)์ ์์คํ ๊ณ์ ์ ๊ทธ๋๋ก ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์ฒ์ ์ ์ ๋ ๋น์ฐํ root๊ถํ์ด ํ์ํฉ๋๋ค.
- jupyter_config.py์ c.Spawner.args = ['--allow-root'] ์ถ๊ฐ
- docker image ์ผ ๊ฒฝ์ฐ --privileged ์ต์ ์ถ๊ฐ
Spawner๋ก ์์ฑ๋ ๊ณ์ ์ ๊ฐ์ ์์ dir์ ํ์ path๋ฅผ ์ฌ์ฉํ๊ฒ ๋ฉ๋๋ค. ๋ถ๋ฆฌ๋ ํ๊ฒฝ์ ์ ๊ณตํ ์๋ ์๊ณ ๊ณต์ ํด๋๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ๊ตฌ์ฑ๋ ๊ฐ๋ฅํฉ๋๋ค.
root ๊ถํ์ ๋ถ์ฌํ์์๋ Spawner๊ฐ ์ ๋๋ก ์๋ํ์ง ์์๋ค๋ฉด Proxy API ์์ฒญ ์ค๋ฅ๋ฅผ ์์ฌํด ๋ณผ ์ ์์ต๋๋ค. user ์์ฑ api์ ์์ฒญ์ Timeout์ด ๋ฌ๋ค๋ฉด configurable-http-proxy ๋ชจ๋์ ์ฌ์ค์นํ๋ ๊ฒ์ ์ถ์ฒ๋๋ฆฝ๋๋ค.
https://github.com/jupyterhub/configurable-http-proxy?tab=readme-ov-file#install
'๐ ๏ธ Tools' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Gemini] gemini calculate Tokenize in Locally (0) | 2024.07.06 |
---|---|
[Ollama] Response Structure Answer (0) | 2024.07.01 |
[OpenAI] ๋ชจ๋ธ๋ณ ์ง์ ์ค๋จ ์์ ๋ ์ง, Model deprecations (0) | 2024.06.15 |
[draw.io] sql๋ฌธ ๊ฐ์ ธ์ค๊ธฐ (0) | 2024.06.03 |
[crewAI] Multi-agent Custormer Support Automation (3) (0) | 2024.05.25 |