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
