Collaboration (Chat) and Notifications (Push) in 17.1 xFlow do not function over a Load Balancer

Document ID : KB000075053
Last Modified Date : 03/05/2018
Show Technical Document Details
Issue:
When using 17.1 xFlow over a Load Balancer, Collaboration (Chat) and Notifications (Push) are not working anymore.

CollabMS.log contains errors like this when we try to use it
ERROR - 2018-03-23 11:24:17 [akka.actor.ActorSystemImpl] - Internal server error, sending 500 response 
java.lang.RuntimeException: WebSocket returned for non WebSocket request 
at scala.sys.package$.error(package.scala:27) 
at play.core.server.AkkaHttpServer.executeHandler(AkkaHttpServer.scala:270) 
at play.core.server.AkkaHttpServer.handleRequest(AkkaHttpServer.scala:200) 
at play.core.server.AkkaHttpServer.$anonfun$createServerBinding$3(AkkaHttpServer.scala:106) 
at akka.stream.impl.fusing.MapAsync$$anon$23.onPush(Ops.scala:1172) 

The whole setup works fine without a load balancer
Environment:
17.1 xFlow environment over a Load Balancer like F5.
Cause:
Health Monitor that the Load Balancer was using an HTTP based health check against the Push and Collaboration Micro Services.

Send String GET / HTTP/1.1\r\nHost: yourxFlowServer.company.com\r\nConnection: Close\r\n\r\n
Receive String HTTP/1.(0|1) (1|2|3|4)

The HTTP health monitor was causing errors in CollabMS.log like this:
DEBUG - 2018-03-23 11:24:08 [a.h.i.u.StreamUtils$DelayCancellationStage$$anon$1] - Stage was canceled after delay of 1 minute 
DEBUG - 2018-03-23 11:24:17 [a.h.i.u.StreamUtils$DelayCancellationStage$$anon$1] - Stage was canceled after delay of 1 minute 
DEBUG - 2018-03-23 11:24:17 [akka.io.TcpListener] - New connection accepted 
ERROR - 2018-03-23 11:24:17 [akka.actor.ActorSystemImpl] - Internal server error, sending 500 response 
java.lang.RuntimeException: WebSocket returned for non WebSocket request 
at scala.sys.package$.error(package.scala:27) 
at play.core.server.AkkaHttpServer.executeHandler(AkkaHttpServer.scala:270) 
at play.core.server.AkkaHttpServer.handleRequest(AkkaHttpServer.scala:200) 
at play.core.server.AkkaHttpServer.$anonfun$createServerBinding$3(AkkaHttpServer.scala:106) 
at akka.stream.impl.fusing.MapAsync$$anon$23.onPush(Ops.scala:1172) 


​This also marked the Collaboration and PUSH URLs as NOT Heatlhy in F5.  That's the main reason why Collaboration and Notifications do not work in xFlow anymore.

 
Resolution:
Change the Health Monitor on Load Balancer / F5 from HTTP based to TCP.

Once this change is done, the pools became Healthy in F5 and you should be able to use Collaboration and Push Notifications in xFlow successfully.
Additional Information:
CA doesn't provide any direct support for F5, this is provided for informational purposes