You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@guacamole.apache.org by Tim Worcester <ti...@gmail.com> on 2021/09/23 13:56:46 UTC

Active Connections: Multiple guacamole-client use case

Good morning!

I have a use case where I am running two guacamole-clients at once behind
an nginx ingress controller.  Unfortunately the load balancer in front of
that ingress does not respect sticky-sessions.  Because of this, if a user
goes to one tab and opens a desktop instance, then opens an incognito
window and logs into the same desktop instance...the control of the desktop
will swap back and forth from tab to tab because of the reconnect timer
every 5 seconds.

I am using the guacamole-auth-jdbc-postgresql plugin so I dug into the code
a bit and noticed that the AbstractGuacamoleTunnelService.java only keeps
track of the activeTunnels for that instance of guacamole-client (makes
sense).

Is there a way for me to better configure this?  Or will I need to use the
decorate/redecorate options to make the activeConnections be stored in the
database that the two instances share?

Re: Active Connections: Multiple guacamole-client use case

Posted by Tim Worcester <ti...@gmail.com>.
Thanks for the quick response Nick!

I will start down the rabbit hole of implementing it then.  Just wanted to
check if I had missed anything in terms of configuration.

On Thu, Sep 23, 2021 at 11:42 AM Nick Couchman <vn...@apache.org> wrote:

> On Thu, Sep 23, 2021 at 9:57 AM Tim Worcester <ti...@gmail.com>
> wrote:
>
>> Good morning!
>>
>> I have a use case where I am running two guacamole-clients at once behind
>> an nginx ingress controller.  Unfortunately the load balancer in front of
>> that ingress does not respect sticky-sessions.  Because of this, if a user
>> goes to one tab and opens a desktop instance, then opens an incognito
>> window and logs into the same desktop instance...the control of the desktop
>> will swap back and forth from tab to tab because of the reconnect timer
>> every 5 seconds.
>>
>> I am using the guacamole-auth-jdbc-postgresql plugin so I dug into the
>> code a bit and noticed that the AbstractGuacamoleTunnelService.java only
>> keeps track of the activeTunnels for that instance of guacamole-client
>> (makes sense).
>>
>> Is there a way for me to better configure this?  Or will I need to use
>> the decorate/redecorate options to make the activeConnections be stored in
>> the database that the two instances share?
>>
>
> It's not really a configuration issue, it's an implementation issue. The
> code, as written today, only stores active connections in memory - it does
> not keep track of them in the database, nor does it provide any way to
> synchronize between multiple Tomcat instances. I've started a few times to
> try to write some code - decorating or otherwise - to store active
> connections in something like redis or something similar that would be able
> to sync between instances, but never quite got it working.
>
> -Nick
>

Re: Active Connections: Multiple guacamole-client use case

Posted by Nick Couchman <vn...@apache.org>.
On Thu, Sep 23, 2021 at 9:57 AM Tim Worcester <ti...@gmail.com>
wrote:

> Good morning!
>
> I have a use case where I am running two guacamole-clients at once behind
> an nginx ingress controller.  Unfortunately the load balancer in front of
> that ingress does not respect sticky-sessions.  Because of this, if a user
> goes to one tab and opens a desktop instance, then opens an incognito
> window and logs into the same desktop instance...the control of the desktop
> will swap back and forth from tab to tab because of the reconnect timer
> every 5 seconds.
>
> I am using the guacamole-auth-jdbc-postgresql plugin so I dug into the
> code a bit and noticed that the AbstractGuacamoleTunnelService.java only
> keeps track of the activeTunnels for that instance of guacamole-client
> (makes sense).
>
> Is there a way for me to better configure this?  Or will I need to use the
> decorate/redecorate options to make the activeConnections be stored in the
> database that the two instances share?
>

It's not really a configuration issue, it's an implementation issue. The
code, as written today, only stores active connections in memory - it does
not keep track of them in the database, nor does it provide any way to
synchronize between multiple Tomcat instances. I've started a few times to
try to write some code - decorating or otherwise - to store active
connections in something like redis or something similar that would be able
to sync between instances, but never quite got it working.

-Nick