[ 
https://issues.apache.org/jira/browse/GUACAMOLE-1938?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

sbcbus updated GUACAMOLE-1938:
------------------------------
    Description: 
Apologies if this issue exists somewhere, but I searched and posted on the 
mailing list.

>From trying myself with some test cases, receiving issue reports via my users, 
>and discussions on the mailing list, it appears the Guacamole "load balancing" 
>algorithm only handles the state where other users are connected and* does not 
>try other connections if a particular connection does not work (such as an 
>invalid connection address or timeout because it is down).*

I would love for this functionality to exist to greatly reduce scenarios such 
as when one machine out of many is down and users seem to always get routed to 
that machine (either via affinity, or the LB algorithm – which as another 
request it would be nice if that could be a bit randomized to avoid always 
being taken to the same machine) even if many other working ones exist.

In the scenario with a machine that isn't responding, I get a "connection is 
closed because server is taking too long to respond", but others are not tried.

Screenshot is attached, and in the logs I get this:
{noformat}
Exception in thread "Thread-3" java.lang.IllegalStateException: Message will 
not be sent because the WebSocket session has been closed
        at 
org.apache.tomcat.websocket.WsRemoteEndpointImplBase.writeMessagePart(WsRemoteEndpointImplBase.java:449)
        at 
org.apache.tomcat.websocket.WsRemoteEndpointImplBase.sendMessageBlock(WsRemoteEndpointImplBase.java:307)
        at 
org.apache.tomcat.websocket.WsRemoteEndpointImplBase.sendMessageBlock(WsRemoteEndpointImplBase.java:249)
        at 
org.apache.tomcat.websocket.WsRemoteEndpointImplBase.sendString(WsRemoteEndpointImplBase.java:191)
        at 
org.apache.tomcat.websocket.WsRemoteEndpointBasic.sendText(WsRemoteEndpointBasic.java:36)
        at 
org.apache.guacamole.websocket.GuacamoleWebSocketTunnelEndpoint.sendInstruction(GuacamoleWebSocketTunnelEndpoint.java:152)
        at 
org.apache.guacamole.websocket.GuacamoleWebSocketTunnelEndpoint.sendInstruction(GuacamoleWebSocketTunnelEndpoint.java:172)
        at 
org.apache.guacamole.websocket.GuacamoleWebSocketTunnelEndpoint.access$100(GuacamoleWebSocketTunnelEndpoint.java:53)
        at 
org.apache.guacamole.websocket.GuacamoleWebSocketTunnelEndpoint$2.run(GuacamoleWebSocketTunnelEndpoint.java:238)
{noformat}

  was:
Apologies if this issue exists somewhere, but I searched and posted on the 
mailing list.

>From trying myself with some test cases, receiving issue reports via my users, 
>and discussions on the mailing list, it appears the Guacamole "load balancing" 
>algorithm only handles the state where other users are connected and* does not 
>try other connections if a particular connection does not work (such as an 
>invalid connection address or timeout because it is down).*

I would love for this functionality to exist to greatly reduce scenarios such 
as when one machine out of many is down and users seem to always get routed to 
that machine (either via affinity, or the LB algorithm) even if many other 
working ones exist.


In the scenario with a machine that isn't responding, I get a "connection is 
closed because server is taking too long to respond", but others are not tried.

Screenshot is attached, and in the logs I get this:



{noformat}
Exception in thread "Thread-3" java.lang.IllegalStateException: Message will 
not be sent because the WebSocket session has been closed
        at 
org.apache.tomcat.websocket.WsRemoteEndpointImplBase.writeMessagePart(WsRemoteEndpointImplBase.java:449)
        at 
org.apache.tomcat.websocket.WsRemoteEndpointImplBase.sendMessageBlock(WsRemoteEndpointImplBase.java:307)
        at 
org.apache.tomcat.websocket.WsRemoteEndpointImplBase.sendMessageBlock(WsRemoteEndpointImplBase.java:249)
        at 
org.apache.tomcat.websocket.WsRemoteEndpointImplBase.sendString(WsRemoteEndpointImplBase.java:191)
        at 
org.apache.tomcat.websocket.WsRemoteEndpointBasic.sendText(WsRemoteEndpointBasic.java:36)
        at 
org.apache.guacamole.websocket.GuacamoleWebSocketTunnelEndpoint.sendInstruction(GuacamoleWebSocketTunnelEndpoint.java:152)
        at 
org.apache.guacamole.websocket.GuacamoleWebSocketTunnelEndpoint.sendInstruction(GuacamoleWebSocketTunnelEndpoint.java:172)
        at 
org.apache.guacamole.websocket.GuacamoleWebSocketTunnelEndpoint.access$100(GuacamoleWebSocketTunnelEndpoint.java:53)
        at 
org.apache.guacamole.websocket.GuacamoleWebSocketTunnelEndpoint$2.run(GuacamoleWebSocketTunnelEndpoint.java:238)
{noformat}



> Try other servers for load balancing group if a server times out/other 
> connectivity event
> -----------------------------------------------------------------------------------------
>
>                 Key: GUACAMOLE-1938
>                 URL: https://issues.apache.org/jira/browse/GUACAMOLE-1938
>             Project: Guacamole
>          Issue Type: Improvement
>          Components: guacamole-auth-jdbc
>    Affects Versions: 1.5.4
>            Reporter: sbcbus
>            Priority: Trivial
>         Attachments: Screenshot 2024-04-04 at 3.04.23 PM.png
>
>
> Apologies if this issue exists somewhere, but I searched and posted on the 
> mailing list.
> From trying myself with some test cases, receiving issue reports via my 
> users, and discussions on the mailing list, it appears the Guacamole "load 
> balancing" algorithm only handles the state where other users are connected 
> and* does not try other connections if a particular connection does not work 
> (such as an invalid connection address or timeout because it is down).*
> I would love for this functionality to exist to greatly reduce scenarios such 
> as when one machine out of many is down and users seem to always get routed 
> to that machine (either via affinity, or the LB algorithm – which as another 
> request it would be nice if that could be a bit randomized to avoid always 
> being taken to the same machine) even if many other working ones exist.
> In the scenario with a machine that isn't responding, I get a "connection is 
> closed because server is taking too long to respond", but others are not 
> tried.
> Screenshot is attached, and in the logs I get this:
> {noformat}
> Exception in thread "Thread-3" java.lang.IllegalStateException: Message will 
> not be sent because the WebSocket session has been closed
>         at 
> org.apache.tomcat.websocket.WsRemoteEndpointImplBase.writeMessagePart(WsRemoteEndpointImplBase.java:449)
>         at 
> org.apache.tomcat.websocket.WsRemoteEndpointImplBase.sendMessageBlock(WsRemoteEndpointImplBase.java:307)
>         at 
> org.apache.tomcat.websocket.WsRemoteEndpointImplBase.sendMessageBlock(WsRemoteEndpointImplBase.java:249)
>         at 
> org.apache.tomcat.websocket.WsRemoteEndpointImplBase.sendString(WsRemoteEndpointImplBase.java:191)
>         at 
> org.apache.tomcat.websocket.WsRemoteEndpointBasic.sendText(WsRemoteEndpointBasic.java:36)
>         at 
> org.apache.guacamole.websocket.GuacamoleWebSocketTunnelEndpoint.sendInstruction(GuacamoleWebSocketTunnelEndpoint.java:152)
>         at 
> org.apache.guacamole.websocket.GuacamoleWebSocketTunnelEndpoint.sendInstruction(GuacamoleWebSocketTunnelEndpoint.java:172)
>         at 
> org.apache.guacamole.websocket.GuacamoleWebSocketTunnelEndpoint.access$100(GuacamoleWebSocketTunnelEndpoint.java:53)
>         at 
> org.apache.guacamole.websocket.GuacamoleWebSocketTunnelEndpoint$2.run(GuacamoleWebSocketTunnelEndpoint.java:238)
> {noformat}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to