dask / distributed

A distributed task scheduler for Dask
https://distributed.dask.org
BSD 3-Clause "New" or "Revised" License
1.58k stars 718 forks source link

Proxy dashboard to client #4658

Open selshowk opened 3 years ago

selshowk commented 3 years ago

I was discussing #4396 with @marcosmoyano and @mrocklin and wanted to suggest an idea to resolve the issue @mrocklin mentioned. Two proposals to re-enable the dashboard when only one port is available:

In both cases the user could still access the dashboard locally though the second case is nicer in the sense that the dashboard really becomes a modular piece of the architecture that can be moved around (this is presumably much more work).

@ian-r-rose, @mrocklin thought you might have some input into the feasibility of something like this.

/cc @jacobtomlinson

mrocklin commented 3 years ago

So the dashboard requires full access to the scheduler state, so pulling out the server-side components to a separate process would be a challenge (although doable with sufficient effort). I think that it's more likely possible to put the interface boundary at the Bokeh server <-> Bokeh web frontend split. My guess is that this would probably look like a traditional web proxy, but hosted over Dask comms?

jacobtomlinson commented 3 years ago

Only having one port available is a pretty extreme constraint. I worry about major refactoring or decoupling work to satisfy a niche requirement (only Coiled?).

Perhaps deploying a popular proxy (nginx, traefik, etc) in front of your scheduler to aggregate the websocket comm and dashboard onto a single port would satisfy your use case?