On Wed, Dec 4, 2019 at 5:47 AM alipawsey <[email protected]> wrote:

> Hi Nick,
>
> The main reason that I am thinking to Slurm (or any session/workload
> manager) is to manage the live/established sessions. I am trying to deploy
> Guacamole on HPC. I have lots of nodes/instances that is a bit odd to show
> them all in users' dashboard to choose between. In addition it's hard to
> manage the load balance on each node. One scenario is to show particular
> nodes to a group of users; another one is to have workload manager plugin
> deployed on Guacamole to allocate a non-busy node to new user/request. The
> second solution is more professional!
>

For Guacamole Client, you should be able to deploy several Tomcat
instances, pointed at a single database, and then put a load balancer in
front of them, and balance the front-end connections as you so desire.  The
metric used for the front-end balancing can vary based on what the load
balancer can do - some load balancers will only do it based on number of
connections, some allow for feedback loops from the balanced hosts to
monitor load and such on the system, but you have several options.  The one
caveat, here, is that Guacamole Client currently lacks the ability to share
active connection information among multiple deployed instances, so if you
are using any limits on concurrent connections you may not see expected
results.  Other than that, as long as the load balancer persists the client
connection to the correct back-end server and doesn't shuffle things around
you should be fine.

For Guacamole Server (guacd), you have a couple of different options:
- Deploy one guacd instance per Guacamole Client instance, and point each
Guacamole Client at its "own" guacd instance.  This could live on the same
system as Guacamole Client, or could be a different system that is then
configured in each guacamole.properties file.
- Deploy several guacd instances behind a load balancer, and then point all
of the Guacamole Client configs at the single load balancer.  The caution,
here, is that, if you do this, you'll want to make sure that there is some
level of persistence for the requests coming from Guacamole Client to the
load balancer and then through to the back-end guacd system so that the
load balancer doesn't continuously try to switch packets for a given
connection to different guacd instances, which will result in pretty
immediate and severe problems with connections.
- You can also override the guacd system that is used on a per-connection
basis, which would allow you to spread out load based on connections, if
you so desired.


>
> I have tried FastX that automatically allocates non-busy nodes to user and
> keeps the load balance; however, if user is running an
> application/simulation, it will still keep running after killing the
> session
> which is kind of VNC connection and that node still busy.
>
> In the other words, it's nice to have an script/app that kills the sessions
> automatically and terminates all jobs running on the instance after user
> logs out or reach to the wall time. Also be able to find the less busy
> instance to allocate to a user by showing that inside his/her dashboard.
>

I guess I fail to see what value something like Slurm or FastX would have
over the possibilities I mentioned above for load balancing?  I'm also not
sure why you'd have to worry about manually terminating user sessions - if
you go with the methods of load balancing that I mentioned above, the
Guacamole components will take care of cleaning up the connections, and you
shouldn't have to do any manual cleanup.  Furthermore, the limitations of
load balancing that exist within the Guacamole application (lack of sharing
of active sessions between nodes and the need for the load balancer to keep
track of the connections between clients and Guacamole Client, and between
Guacamole Client and guacd instances) would also exist within a load
manager.

Is there something I'm missing on the value of such a system with Guacamole
that isn't already possible, here??

-Nick

Reply via email to