Yellowfin can be clustered on multiple servers to allow for high-availability and load-balancing. The actual load-balancing (multiplexing requests from external requests) can be achieved with a hardware load-balancer, or load-balancing software. This guide will outline the modifications required to Yellowfin's configuration to enable clustering, but not the external environment that multiplexes the incoming requests.
It is required that the load-balancing infrastructure delivers network traffic to the Yellowfin application server transparently, as if the packets were connecting directly to the application server directly. If Session Replication is not enabled, the load-balancing infrastructure will need to provide “sticky-session” functionality, where traffic for a user’s session should be sent to the same node.
Yellowfin supports clustering at 2 levels:
Application Level Messaging:
Yellowfin will communicate with other nodes when application wide messages need to be sent. This communicates messages like refreshing caches, and logging out concurrent users. This is controlled by a background servlet in Yellowfin that will communicate with other nodes.
Yellowfin also has cluster safe web service calls, which allows a web service Single-Sign-On request to come from an application to any cluster node, and return a token id. The token id will then be valid on any node that the token id is sent to.
Container Level Session Replication:
The Yellowfin application has also been written to allow user session information to be replicated onto multiple cluster nodes concurrently. User session information is the memory footprint that is stored on the server for each user session. Enabling Session Replication allows for the users session to continue, even if the cluster node they were connected to experiences a failure.
Without Session Replication, failure of a cluster node will destroy a users session, and they will need to login again to another node.
Session Replication is a function of the Java Container. An example of how this can be achieved with Tomcat will be discussed in this document.
For more information see our Wiki here.