vnick wrote > I believe HAProxy has a way to do this - > through custom scripting, you can execute scripts that would query > performance data on remote systems (via SSH or WMIC, etc.), and then > adjust > the priority based on that data. I've done this in the past - it may not > be the cleanest thing, but it works. I think Keepalived had some similar > hooks that could do such things, and maybe even IPVS. I would imagine > that > some of the commercial load balancers - Citrix Netscaler, F5, etc. - have > some similar capabilities to hook into backend servers and adjust priority > based on load. All of these are *Load Balancers* and not *Workload > Managers* - that is, they will make decisions about where to put a > connection at the time of the connection and then persist that connection > until it is completed - they will not attempt to move connections from one > system to another dynamically/real-time. However, for 99% of use-cases > out > there this is sufficient. > > It also would be possible to write some additional load balancing > integration for Guacamole to query and adjust priorities within a > connection group based on load. I think I started to do this at one point > but never completed it, but it is very doable.
I agree too. As I experienced, Keepalived wasn't the best option as it had problem with zambie nodes; it doesn't realise the node is freezed and messes up things. I have a very custom node status page which tunnels through ssh by "nc" command so if connection was not established then shows the node as offline whereas Keepalived was showing that online. I was thinking to a custom Guacamole plugin getting connected through e.g. Nagios API to check the system resource. In this case we can redirect the new connection to the less loaded instance. I'll keep updated here if I could do it. I think moving connection across nodes is not the case here; Just having load balance at connection establishment time would be sufficient. vnick wrote > Ah, I think I get what you're driving at, here. You're talking about > freeing up resources on the remote systems to which a user is connected. > So, if a user connects, through Guacamole to a host called "VNC1" over the > VNC protocol, and then disconnects, they could have left something running > on the VNC1 host that needs to be "cleaned up" in order to free the > resources for other users who would log on to that system, correct? > > There's no capability to do this currently in Guacamole, for a couple of > reasons. First, the remote systems are not "aware" of the Guacamole at > all. To the remote systems it could be Guacamole, or vncviewer, or > Microsoft Remote Desktop Client, or openssh connecting, and it doesn't > have > any way to tie running processes on the remote host to session within > Guacamole. This makes the "clean up" job at least a little more difficult > - you have to come up with some way, whether through a workload manager or > a Guacamole plugin, to tie the Guacamole session to the login on the > remote > host. This is absolutely right and that's the why I am looking into Slurm kind of technique. And yes, the reason is that there is no Guacamole dependent part on the destination and this is the exact difference between Guacamole and FastX. However, the only advantage of FastX was load balancing and it still has problem with freeing up resources after killing the session. vnick wrote > It is probably possible to do this with an extension, at least to some > extent. You could write an extension that had credentials to log in to > the > remote systems and run something on them, and either intercept the tunnel > close event or decorate an existing extension and work with some of the > existing methods there to perform an action on the remote system when the > tunnel closes. At the moment I can put a script at each instance to kill the user session (force log off) after X hrs wall time in case the session left disconnected; The users need more time can request to except them. Another idea is integrating Guacamole with a booking system (which I did) to allocate the node the user has booked! and terminate their session at the end of booked time slot. However, would be nice to be able to free up resources automatically when admin kills a session. I was thinking to do it via ssh tunnelling to execute killer script on the destination node (for that particular user) tied to killing event in Guacamole. Regarding the critical points you mentioned, yes should be considered as well for perfect solution delivery. -- Sent from: http://apache-guacamole-general-user-mailing-list.2363388.n4.nabble.com/ --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
