Elastica is a highly efficient and extensible, rules-based load-balancer for JBoss 4 that adds dynamic behavior to EJB load balancing. Rules can be defined to redirect requests according to request data, server performance data, or even the time of day. Elastica is ideal for hosted environments where the quality of service must be maintained for certain customers, regardless of the load on other clients' applications. For example, Client X may be conducting a promotion which may result in a flood of traffic during a certain time window. To ensure that this promotion does not affect the performance of Client Y, you can configure the load-balancing rules so that requests for Client X during the time window are redirected to an isolated node group.
Load-balancing behavior is defined in an XML document as a set of rules. This XML document is called a cluster configuration. A cluster configuration defines the nodes in the system as well as node groups and load-balance policies used to determine to which node(s) requests should be sent. Elastica comes with some pre-defined load-balance policies, such as round-robin and load-factor, but custom policies may be plugged in.
Elastica also provides enhanced node state management. A node may be in one of the following states: unavailable, offline, standby, online, and busy. For example, if a server is in standby state then all client requests are rejected but management requests are still allowed. The busy state is triggered by a throttling mechanism which sets the node to busy if it gets too many concurrent requests. In this case the call is rejected and the load-balancer automatically picks a new node to service the request. This results in a more even distribution of requests among nodes in the cluster by preventing a backlog of client requests on one node while other nodes in the cluster remain idle.
A command-line client provides cluster management functions allowing you to query the state of nodes, change the state of a node (for example, set a node to offline for maintenance), and even update cluster configurations on the fly without requiring a restart. The command-line client also has a simulate function that allows you to test your cluster configurations locally before deploying them.
Elastica is deployed as a client-side jar and an EAR (Enterprise Archive). The EAR contains EJBs that manage the cluster configurations in a database and also expose remote interfaces allowing clients full access to management functions.
Even though this is the first open-source release, Elastica has been in production at ReserveAmerica for more than a year.
Please enjoy!
Bob Stasyszyn
(Project manager of Elastica)