News: Elastica: A free rules-based EJB load balancer for JBoss
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 EJB requests according to request data, server performance data, or even the time of day. For example, ClientX may be conducting a promotion which will result in a flood of traffic during a certain time window. To ensure that this promotion does not affect the performance of Client Y's applications, 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. Elastica comes with load-balance policies such as round-robin and load-factor. The load-factor policy uses real-time server performance metrics to choose nodes with the lightest loads. 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. Elastica 1.3.0 is free and available for download.
- Posted by: Bob Stasyszyn
- Posted on: August 14 2008 11:42 EDT
- Looks great! What's the background? by Timothy High on August 15 2008 15:14 EDT
- Very Interesting by Sacha Labourey on August 17 2008 04:05 EDT
- Message-driven Beans by Eduardo Machado on August 19 2008 11:02 EDT
I'm looking for exactly this type of load balancing for JBoss. The straight round-robin approach poses several problems for real scalability. I'd really be interested in giving this project a shot. However, it looks like you just put it on SourceForge today. Is this open source? By the package names, it looks like a proprietary project that you have just decided to donate. What's the background on this project, and what are the intentions? Also, does anyone know about any other projects that provide advanced load balancing for JBoss?
This is an open source project. ReserveAmerica is a strong believer in open source and uses a lot of open source products. Elastica was developed at ReserveAmerica with every intention of giving it back to the community. ReserveAmerica provides services for a number of large clients in the US. Their clients conduct 'on-sales' during certain time windows throughout the year. This generates a great deal of traffic for those customers and Elastica attempts to maintain a certain QoS for their other customers during those windows. It's been in production for about a year, so it's a fairly mature product.
Another load balancing mechanism in the works is mod_cluster (http://wiki.jboss.org/wiki/ModClusterDesign). It will work in conjunction with apache and JBossWeb
This is very interesting, you should definitively reach out to the JBoss Clustering project team to see if you could combine efforts! BTW what did you use for the rules? Cheers, Sacha CTO of JBoss a division of Red Hat
This is very interesting, you should definitively reach out to the JBoss Clustering project team to see if you could combine efforts!I haven’t done too much work on this since early 2007 so I’ll have to get back up to speed with what’s happening in the clustering projects.
BTW what did you use for the rules?Rules are defined either in XML (using a home-grown schema) or programmatically - I was anticipating a graphical rules-editor. At execution time, the rules are shipped over to the client and 'compiled' into efficient runtime objects. Bob.
Bob, Does it work with MDBs?
I haven't tried Elastica with anything other than stateless session beans. JBossMQ (the standard JMS provider in JBoss 4) does not support distributed destinations so load-balancing would not work. Although, after reading a bit about JBoss Messaging (the standard in JBoss 5) I see that custom load balance policy factories are supported, in which case Elastica could (in theory) be used. I'll put it on my TODO list to research this more.