ThingWorx High Availability > Load Balancers for ThingWorx High Availability
Load Balancers for ThingWorx High Availability
Any layer 7 load balancer that supports the following features can be used in the ThingWorx HA environment as a proxy for ThingWorx and the ThingWorx Connection Server:
HTTP and WebSocket traffic
* 
If you are installing ThingWorx Flow, you must install the load balancer as HTTPS. For more information, see Configuring SSL/TLS for HAProxy.
Support of sticky sessions for HTTP traffic and/or IP-based stickiness
Sticky sessions are based on a cookie, and sessions are routed to the same server based on the cookie.
The same IP for different users could route to different machines.
IP-based means all traffic from a specific IP will be routed to the same server. This can be a problem with gateway-type scenarios.
Path-based routing
This is the ability to route to specific backends based on the URL or part of the URL.
Health checking on server endpoints
Optional: management of SSL termination and SSL internal endpoints
A sample configuration of a load balancer is provided in the HAProxy Example. The example is based on HAProxy (http://www.haproxy.org).
By default, all routes should go to the platform servers, but the following routes should go to the Connection Server:
/Thingworx/WS
/Thingworx/WSTunnelServer
/Thingworx/WSTunnelClient
/Thingworx/VWS
If you have installed ThingWorx Flow in ThingWorx HA, then the following routes should go to ThingWorx Flow:
/Thingworx/Composer/apps/flow
/Thingworx/Flow
/Thingworx/Triggers
/Thingworx/Lookups
/Thingworx/Oauths
/Thingworx/Subsystems/EventProcessingSubsystem/Subscriptions
/enterprise/v1/fetchconfig
All servers should be set up to only be part of load balancing based on their health configuration. When configuring the frequency of health checks, they should be run at a rate based on the tolerance for bad requests to be processed.
ThingWorx Foundation has a /health and /ready endpoint. The /Thingworx/ready endpoint should be used for the load balancer. It will return 200 when the server is ready to receive traffic.
The Connection Server runs health check requests on a specific port and will return 200 when healthy.
Was this helpful?