Designing a Cluster

To provide scalability and high availability of your business intelligence infrastructure, you can deploy a cluster of JasperReports Server instances behind a load balancer. You can implement a cluster with either JasperReports Server community or commercial editions, as long as all instances are the same edition, the same version, and all are configured identically.

JasperReports Server supports cluster deployments by using thread-safe access to its private repository database. As a result, any number of JasperReports Server instances can share the same repository and thus present the same environment to users. Of course, your repository database must be properly sized to handle the number of server instances, and it must have its own mechanism for providing scalability and high availability.

With a properly designed cluster, you can support many more users and organizations, avoid unintended downtime, and plan for future growth. The load balancer makes sure that user load is spread evenly, and when needed, you can add new instances of JasperReports Server to the cluster.

One important detail of any cluster is how sessions are managed in case of a failure. JasperReports Server supports partial replication of sessions. In case of a node failure, the session is transferred automatically between nodes so that users are not logged out. However, work in the Ad Hoc editor and report viewer will be interrupted, though work saved in the repository can be resumed on the new node.

This chapter introduces a sample architecture for JasperReports Server cluster environments and explains its components. It also discusses design considerations and deployment constraints, such as session management. This document is not intended as a tutorial, nor as a detailed deployment plan, but should only be used as a high level overview.