Setting up a Load-Balanced Server
To scale a deployment to a larger number of users and to increase the availability, Oxygen XML Web Author can be deployed on a set of load-balanced servers. This topic describes the required setup for such a scenario.
Configure Session Stickiness
Every Oxygen XML Web Author server keeps the state of the edited documents in memory for performance reasons. This implies that every user should connect to the same back-end server for the duration of an editing session. To achieve this result in a load-balanced setting, you should enable session stickiness.
If your reverse proxy just allows basic routing based on a cookie, you might consider
creating a plugin for each Web Author server that implements a
com.oxygenxml.ServletFilterExtension
extension that sets a particular
cookie (e.g. a cookie with a name like "wa-server-route" and with values like "wa1", "wa2",
etc.) for every request that reaches each Web Author server. In addition, you have to define
the routing rules in your reverse proxy that routes each request based on the cookie set by
that plugin. A generic sample plugin that defines a ServletFilterExtension
can be found here.
By default, Web Author uses the JSESSIONID cookie to track the active sessions. Some load-balancers implement session stickiness by modifying the JSESSIONID session cookie, which might break the Web Author's session tracking mechanism.
sessionManager.sessionIdCookie.name = NAME
Configure Server Health Checks
To detect unhealthy servers, Oxygen XML Web Author offers a health check REST API. The endpoint has the following interface:
- URL
- rest-public/status
- Response status code
- 200 for a healthy server and 503 for an unhealthy server.
- Response body
- For an unhealthy server, the response body contains a text description of the problem.
Configure the License Server
All Oxygen XML Web Author servers can use the same pool of floating licenses. To this end, they all need to be configured to use the same license server.