Re: Guacamole websockets issues

2019-08-20 Thread Justin Gauthier
I should note that this only seems to happen (frequently) with VNC connections.

I have RDP connection, and an SSH connection to the same host as the VNC 
connection that does not seem to time out, at least not within the 30-40 
minutes of testing I’ve done, just the VNC connection, which can happen 
anywhere between 5-10 minutes after starting the connection.

From: Justin Gauthier 
Reply-To: "user@guacamole.apache.org" 
Date: Tuesday, August 20, 2019 at 9:29 PM
To: "user@guacamole.apache.org" 
Subject: Guacamole websockets issues

Hello,

I am running Guacamole in Kubernetes (using this helm chart 
https://github.com/Just-Insane/apache-guacamole-helm-chart). I am using the 
nginx ingress for ingress into the Guacamole frontend. Which uses Guacamole 
1.0.0 docker container.

I am getting some websocket timeout errors:

01:11:08.155 [http-nio-8080-exec-10] INFO o.a.g.tunnel.TunnelRequestService - 
User "justin" connected to connection "2".
01:11:08.234 [http-nio-8080-exec-1] INFO o.a.g.tunnel.TunnelRequestService - 
User "justin" disconnected from connection "2". Duration: 78 milliseconds
Exception in thread "Thread-166" java.lang.IllegalStateException: Message will 
not be sent because the WebSocket session has been closed
at 
org.apache.tomcat.websocket.WsRemoteEndpointImplBase.writeMessagePart(WsRemoteEndpointImplBase.java:424)
at 
org.apache.tomcat.websocket.WsRemoteEndpointImplBase.sendMessageBlock(WsRemoteEndpointImplBase.java:309)
at 
org.apache.tomcat.websocket.WsRemoteEndpointImplBase.sendMessageBlock(WsRemoteEndpointImplBase.java:250)
at 
org.apache.tomcat.websocket.WsRemoteEndpointImplBase.sendString(WsRemoteEndpointImplBase.java:191)
at 
org.apache.tomcat.websocket.WsRemoteEndpointBasic.sendText(WsRemoteEndpointBasic.java:37)
at 
org.apache.guacamole.websocket.GuacamoleWebSocketTunnelEndpoint.sendInstruction(GuacamoleWebSocketTunnelEndpoint.java:152)
at 
org.apache.guacamole.websocket.GuacamoleWebSocketTunnelEndpoint.access$200(GuacamoleWebSocketTunnelEndpoint.java:53)
at 
org.apache.guacamole.websocket.GuacamoleWebSocketTunnelEndpoint$2.run(GuacamoleWebSocketTunnelEndpoint.java:253)

The nginx ingress does support websockets by default, but their timeouts are 
set to 60 seconds. 
https://kubernetes.github.io/ingress-nginx/user-guide/miscellaneous/#websockets 
which I have resolved, by setting the timeouts on both suggested options to 
3600.

There does not seem to be any specific reason (or time duration) after which 
the connection is closed, and there is nothing that would cause the connection 
between the guacamole frontend and guacd to close prematurely.

When the connection fails, clicking the reconnect button on the prompt 
sometimes succeeds, however it usually fails. I have noticed that doing a hard 
reload of the tab seems to fix the issue for a little while.

Experience tells me that this is likely going to be an issue with the nginx 
setup, but if anyone else has other suggestions, I am interested in hearing 
them.

Thanks,

Justin



Guacamole websockets issues

2019-08-20 Thread Justin Gauthier
Hello,

I am running Guacamole in Kubernetes (using this helm chart 
https://github.com/Just-Insane/apache-guacamole-helm-chart). I am using the 
nginx ingress for ingress into the Guacamole frontend. Which uses Guacamole 
1.0.0 docker container.

I am getting some websocket timeout errors:

01:11:08.155 [http-nio-8080-exec-10] INFO o.a.g.tunnel.TunnelRequestService - 
User "justin" connected to connection "2".
01:11:08.234 [http-nio-8080-exec-1] INFO o.a.g.tunnel.TunnelRequestService - 
User "justin" disconnected from connection "2". Duration: 78 milliseconds
Exception in thread "Thread-166" java.lang.IllegalStateException: Message will 
not be sent because the WebSocket session has been closed
at 
org.apache.tomcat.websocket.WsRemoteEndpointImplBase.writeMessagePart(WsRemoteEndpointImplBase.java:424)
at 
org.apache.tomcat.websocket.WsRemoteEndpointImplBase.sendMessageBlock(WsRemoteEndpointImplBase.java:309)
at 
org.apache.tomcat.websocket.WsRemoteEndpointImplBase.sendMessageBlock(WsRemoteEndpointImplBase.java:250)
at 
org.apache.tomcat.websocket.WsRemoteEndpointImplBase.sendString(WsRemoteEndpointImplBase.java:191)
at 
org.apache.tomcat.websocket.WsRemoteEndpointBasic.sendText(WsRemoteEndpointBasic.java:37)
at 
org.apache.guacamole.websocket.GuacamoleWebSocketTunnelEndpoint.sendInstruction(GuacamoleWebSocketTunnelEndpoint.java:152)
at 
org.apache.guacamole.websocket.GuacamoleWebSocketTunnelEndpoint.access$200(GuacamoleWebSocketTunnelEndpoint.java:53)
at 
org.apache.guacamole.websocket.GuacamoleWebSocketTunnelEndpoint$2.run(GuacamoleWebSocketTunnelEndpoint.java:253)

The nginx ingress does support websockets by default, but their timeouts are 
set to 60 seconds. 
https://kubernetes.github.io/ingress-nginx/user-guide/miscellaneous/#websockets 
which I have resolved, by setting the timeouts on both suggested options to 
3600.

There does not seem to be any specific reason (or time duration) after which 
the connection is closed, and there is nothing that would cause the connection 
between the guacamole frontend and guacd to close prematurely.

When the connection fails, clicking the reconnect button on the prompt 
sometimes succeeds, however it usually fails. I have noticed that doing a hard 
reload of the tab seems to fix the issue for a little while.

Experience tells me that this is likely going to be an issue with the nginx 
setup, but if anyone else has other suggestions, I am interested in hearing 
them.

Thanks,

Justin