Load Balancing OnBase
Load Balancing OnBase
Load Balancing OnBase
OnBase
Abstract
This document discusses OnBase’s support for load balancing and the ability to load-balance between
the Web and Application Servers.
Version Statement
This document has been updated for OnBase Foundation but is applicable to versions 10 and later.
Table of Contents
COPYRIGHT ................................................................................................................................................. 2
INTENDED AUDIENCE ................................................................................................................................ 4
ABSTRACT................................................................................................................................................... 4
VERSION STATEMENT ............................................................................................................................... 4
TABLE OF CONTENTS ............................................................................................................................... 5
INTRODUCTION........................................................................................................................................... 7
LOAD BALANCER CONFIGURATION ....................................................................................................... 8
PERSISTENCE ............................................................................................................................................. 8
COOKIE-BASED LOAD BALANCING ................................................................................................................ 8
TIMEOUTS – SESSION, IDLE, AND REQUEST .................................................................................................. 8
LIMITS – REQUESTS, CONNECTIONS, BANDWIDTH, ETC. ................................................................................ 9
CASE SENSITIVITY ....................................................................................................................................... 9
SSL/HTTPS OFFLOADING .......................................................................................................................... 9
LOAD BALANCING METHOD .......................................................................................................................... 9
ONBASE CONFIGURATION ..................................................................................................................... 10
LOAD-BALANCING MULTIPLE W EB SERVERS ............................................................................................... 10
LOAD-BALANCING MULTIPLE APPLICATION SERVERS................................................................................... 10
Web Server Configuration ................................................................................................................... 10
Client Configuration ............................................................................................................................. 11
RESPONDING TO NODE FAILURES .............................................................................................................. 12
REDUNDANCY, SCALABILITY, AND HIGH AVAILABILITY .................................................................................. 13
Redundancy ........................................................................................................................................ 13
Scalability ............................................................................................................................................ 13
High Availability ................................................................................................................................... 13
HOW LAYER 7 LOAD BALANCING W ORKS WITH ONBASE.............................................................................. 14
TROUBLESHOOTING LOAD BALANCING WITH ONBASE ................................................................... 16
CHECK DIAGNOSTICS CONSOLE ................................................................................................................. 16
CHECK THE HTTP(S) TRAFFIC FOR PROPER COOKIE HANDLING ................................................................. 16
Using Fiddler to Verify the Load Balancer Cookie .............................................................................. 16
Using Wireshark to Verify the Load Balancer Cookie ......................................................................... 18
CHECK THE HTTP(S) TRAFFIC FOR ERRORS .............................................................................................. 21
UNITY CLIENT AUTOMATIC RECONNECT...................................................................................................... 22
REMOVE OR REDUCE COMPLEXITIES .......................................................................................................... 22
REMOVE OR BYPASS THE LOAD BALANCER................................................................................................. 23
CONTACTING YOUR FIRST LINE OF SUPPORT.............................................................................................. 23
LOAD-BALANCED EXAMPLES ................................................................................................................ 24
INTERNAL CORE CLIENTS........................................................................................................................... 24
EXTERNAL W EB AND CORE CLIENTS .......................................................................................................... 25
EXTERNAL AND INTERNAL CLIENTS ............................................................................................................. 27
Introduction
Load balancing is a deployment technique that can provide high availability, disaster recovery, and
additional scalability. Load balancing is a means of increasing capacity, making applications resistant to
hardware and software failures, and creating a system robust enough to support mission-critical
applications. OnBase Web and Application Servers can use load balancing in large, complex installations
to reliably support thousands of concurrent users.
In order to use load balancing for OnBase, persistent or “sticky” OnBase sessions must be maintained by
the load balancer. This requires the use of either cookie-based (Layer 7) or IP-based (Layer 3 or Layer 4)
load-balancing techniques.
If using cookie-based (Layer 7) load balancing, the following requirements also apply:
Cookies must be generated using RFC 2109 or RFC 2965 formats.
Web Servers must be configured to use SOAP communication.
OnBase supports hardware, software, and virtualized load balancers. Hyland Software has no preferred
or recommended load balancing vendor.
Load-balancing is a complex subject and this document is simply an account of OnBase’s requirements
for load balancing. Load balancing can be implemented incorrectly and requires skill and experience to
configure and troubleshoot.
Any references to “Web Server” are also applicable to the OnBase Web Server (AppNet), Gateway
Caching Server, Mobile Broker, Patient Window, Agenda, Plan Review, Public Access, etc. All core-based
modules use the same architecture when communicating with the Application Server through a load
balancer.
Load Balancer Configuration
Because Hyland does not offer preferences or recommendations for specific load balancing vendors, we
cannot provide device-specific support. You will need to reach out to your load balancing vendor for
support specific to their product.
Persistence
In order to load-balance your OnBase solution your load balancer must support cookie-based (Layer 7)
or IP-based (Layer 3 or Layer 4) load balancing.
The load balancer must also be configured to use persistent sessions in order to maintain users’ session
state information with a specific server. Persistent sessions are also referred to as “client affinity” or
“sticky” sessions. The initial server that a client is routed to is determined by the load balancer, which
issues the cookie. The load balancer reads the cookie on subsequent requests, routing those requests to
the correct server.
Note: OnBase is a stateful application and all requests the client need to be delivered to the correct
server. If your appliance is configured to use cookie-based load balancing, the traffic needs to be load
balanced based on that cookie. To improve performance, some appliances are shipped with a default
setting to load balance for each TCP connection, rather than each HTTP request. This setting can cause
adverse effects with OnBase. Please consult your vendor’s documentation to disable this feature if
enabled.
Case Sensitivity
When configuring your load-balanced environment, pay special attention to the letter casing of text in
the various configurations. Often times there are vendor-specific casing rules. For example, the URL
root, cookie path, and cookie name are case-sensitive.
SSL/HTTPS Offloading
Many load balancers also provide SSL/HTTPS offloading capability. Offloading the encryption and
decryption of HTTPS traffic is supported.
In the following example, the value of the dmsVirtualRoot setting has been modified to point to a load
balancer with the hostname WebLoadBalancer:
Client Configuration
If there is a load balancer between the client and the Application Server, then the URL used to connect
to the Application Server will need to point to the load balancer. Depending on the client, the
Application Server URL is configured in different locations.
The following example shows the Unity Client’s Application Server URL setting (ServicePath) modified to
point to a load balancer.
This example shows OnBase Studio connecting to load balanced Application Servers.
Redundancy
The primary goal of redundancy is to ensure that applications are available to users when needed. Load-
balancing through persistent sessions allows for the creation of new sessions but by design it does not
allow for dynamic re-routing of sessions to other nodes. In the current architecture, sessions that are
established across tiers must log in again if one of the nodes that they have affinity to fails.
It is worth noting that clients such as the Unity Client have additional redundancy built in. The
Unity Client has the ability to detect loss of connectivity to its tiers. If there are available nodes,
the Unity Client will attempt to re-establish a session with the current credentials, assuming
there is at least one available Web Server and one available Application Server in a multi-tier
deployment, or at least one available Application Server in a single-tier deployment.
Scalability
The majority of the processing for client sessions through the Web and Application Servers, including for
the Web Client, is handled by the Application Server. Because the Web and Application Servers can be
scaled independently, greater workloads can be supported without additional Web Server licenses.
High Availability
The addition of multiple servers assures high availability. If a hardware failure occurs on one Web Server,
new sessions can be routed to an available Web Server, whose requests in turn are routed to an
available Application Server. If an Application Server experiences a hardware failure, new sessions
coming from Web Servers can be routed to an available Application Server.
How Layer 7 Load Balancing Works with OnBase
The following diagram depicts the lifetime of two requests coming from a client and the effect of load
balancing on those requests.
1. A client makes a request to the Web Server and is serviced through the first load balancer.
2. The request does not contain a cookie yet so the load balancer sends it to an available Web
Server, where a session is established.
3. The Web Server makes a request to the Application Server via the second load balancer.
4. The request from the Web Server does not contain a cookie yet so the load balancer sends the
request to an available Application Server, where a session is established.
5. The Application Server responds to the request from the Web Server and the load balancer
attaches a cookie to the response.
6. The second load balancer associates the cookie with the Application Server and sends the
response back to the requesting Web Server.
7. The Web Server responds to the request from the client and attaches its session cookie to the
response.
8. The first load balancer associates the cookie with the Web Server and sends the response back
to the requesting client.
9. The client sends a second request to the Web Server. This request now contains the cookie
associated with the session on the Web Server.
10. The load balancer recognizes the cookie and forwards the request to the Web Server that was
the source of the cookie.
11. The Web Server makes a request to the Application Server. This request now contains the
cookie associated with the session on the Application Server.
12. The load balancer recognizes the cookie and forwards the request to the Application Server that
was the source of the cookie.
Troubleshooting Load Balancing with OnBase
Check Diagnostics Console
Be sure to check Diagnostics Console on all servers at the same time when using load balancing. If the
load balancer is sending traffic to the wrong Application Server, you should see a failed session error.
Beware of false positives from “failed to get session for session id” errors. These messages can
also be thrown when an end-user leaves a client open that has lost its session. The clients will
heartbeat/ping the server with a stale session id that will not be valid on the server. This can be
caused by a session timeout or after an IIS reset.
At the top of the list you can see the first POST that the client makes to the server. Notice there are no
cookies in the header.
Looking at the response, the first 200 OK, notice that it contains the load balancer cookie. It is named X-
Mapping-cijgbboe in this example.
By choosing the next POST in the packet list you can see that it now contains the cookie in the request to
the server. Selecting frames through the Wireshark packet list allows you to verify that the same cookie
is being used on all requests throughout this OnBase session.
The above diagram depicts a set of Core Clients and Application Servers internal to the network. The
clients are load-balanced directly to the Application Serves.
External Web and Core Clients
The above diagrams depict a set of external Web and Core Clients, internal Web Servers, and internal
Application Servers. The clients are load-balanced directly to the Web Server and then load-balanced
(top diagram) or channelized (bottom diagram) to the Application Servers.
External and Internal Clients
This scenario is a hybrid of previous scenarios. There are internal Core Clients (green), as well as external
Web and Core Clients (blue). The internal Core Clients are load-balanced directly to the Application
Server tier while the external Web and Core Clients are load-balanced to the Web Server tier which in
turn is load-balanced to the Application Server tier. In this scenario, the Web and external Core clients
are deployed over the internet, so you would not want them load-balanced directly to the Application
Server tier.
The Application Server requires an ADO.Net connection to the database and file access to the disk
groups and would typically not sit in the DMZ. The Web Server tier requires only HTTP access. This
warrants putting the Web Server tier and Application Server tier in separate zones separated by a
firewall. In highly secure environments, there is typically a firewall from the Application Server tier into
the core network as well.