Fail-safety and load balancing
Most of the nevisProxy's connector servlets (i.e. clients, connecting to content providers) support failsafeness and load balancing. To provide failsafeness, multiple resources (content providers on different hosts) providing the same service are required. For load balancing, additional policies to decide upon load distribution to detect resource failures and to perform recovery.
nevisProxy provides failsafeness to an 'unlimited' cluster of content providers and uses the following default load balancing policiesother policies available on request:
- Load distribution: round-robin (stateless or session sticky)
- Recovery: periodical, synchronous retries
Connector | Configuration Attribute | Error Condition | Load Metric |
---|---|---|---|
Http(s)ConnectorServlet | InetAddress see the table "HttpConnectorServlet configuration" | No TCP/IP connection could be established or the backend returns a status code, configured with 'DisableBindingStatusCode'. | Number of requests sent to a resource. |
EsAuth4ConnectorServlet | AuthenticationService SessionService see the table "HttpsConnectorServlet configuration | SOAP: The same error conditions as for the Http(s)ConnectorServlet apply. | Number of sessions bound to a resource. |
Primary resource
For the respective attribute, a whitespace-separated list of resources can be configured. The first resource in that list is called the primary resource. In the following, we assume that there are at least two resources configured. Furthermore, it is required that all resources implement the same service.
Load
The meaning of 'load' of a resource depends on the implemented service.
ResourceManager
If the client accesses the service (through the reverse proxy), the decision which resource should be taken is handled by the resource manager. If the client accesses the service for the first time, the chosen resource is called 'initial'. In any subsequent access, it will be called 'subsequent'. There are different resource manager implementations listed in [the table] below:
ResourceManager | Load Balancing | Initial Resource | Subsequent Resource |
---|---|---|---|
SessionResourceManager | false | The primary resource is chosen. If the primary resource cannot be accessed (error condition), the resource with the minimal load is chosen. | The initial resource. If that resource cannot be accessed (error condition), the resource with the minimal load is chosen and treated as initial. |
true | The resource with the minimal load is chosen | The initial resource. If that resource cannot be accessed (error condition), the resource with the minimal load is chosen and treated as initial. | |
StatelessResourceManager | false | round-robin | round-robin |
true | round-robin | round-robin |
As an example, we consider two different situations for enabled load balancing:
- The StatelessResourceManager should be configured if the content provider serves static HTML pages or provides stateless web services.
- The SessionResourceManager (default) is used to access stateful content providers like stateful J2EE applications.
See the chapter Configuring fail-safety and load balancing to content providers for examples.
For a description of the connector servlets, see the chapter FakeLoginFilter.