views:

177

answers:

1

Hello, guys!

I'm currently developing a system to ensure high performance, availability and scalability; fail-over and crash recovery on a WebLogic integration scenario.

Does anybody know if it is possible to customize WebLogic's native heartbeat messages, to add some additional information such as current CPU usage and/or network load?

The purpose is to allow load-balancing algorithms that use that "custom" information, to avoid overloading a struggling server with more requests.

+1  A: 

To my knowledge, this is not possible. First, heartbeats are used by a server instance to advertise its availability - and only its availability - (by monitoring heartbeat messages, server instances in a cluster determine when a server instance has failed). Second, WebLogic's load balancing algorithms are not plugable and don't use heartbeats (at least not directly).

So, you can use:

  • Round-robin load balancing for HTTP requests when using a proxy plugin.
  • Round-robin, weight-based (for not homogeneous clusters), or random load balancing for EJBs and RMI Objects.

If you want to use a (more advanced) load-based balancing strategy for HTTP requests, you'll have to use another solution - most likely an hardware load balancer - supporting this algorithm.

Note that a load-based strategy is not something I've seen frequently, even for huge websites. Most of time, a simple round-robin algorithm provides a very satisfying distribution of requests and consequently a balanced utilization of resources.

Pascal Thivent
I know that and I've already implemented a load-balancing solution on my WebLogic cluster, using the HttpClusterServlet (only for development/staging phase). However, this load balancing algorithm is not as rich as I want it to be, as I would like to analyse my clustered servers CPU usage and network interfaces load to determine instantly which machine has the most availability. Are you sure this can't be done by extending the native heartbeat messages?
XpiritO
@XpiritO Well, extending the `HttpClusterServlet` is not really comparable to the scenarii above and I didn't even mention it as using this servlet is not recommended for production. And yes, I don't think you can extend the native heartbeat messages. BTW, are you sure you really need a load-based strategy? This is not something I've not seen frequently in more than 10 years...
Pascal Thivent
@Pascal I'm currently developing an infra-structure to provide high availability, scalability, fail-over and load-balancing features over a WebLogic cluster. The main purpose is to support a circuit of processes to parse XML messages (one message may include several other XML messages and attachments, like docx and pdf files) submitted via webforms and/or webservices. This system MUST be prepared to deal with huge load peaks without compromising availability.
XpiritO
@XpiritO Maybe an hardware load balancer would be appropriate in your case then. Do you plan to benchmark a prototype of the infrastructure?
Pascal Thivent
@Pascal I'm planning to use a hardware solution (for load-balancing) instead of the Servlet (used only for development/staging phase). And yes, I'm planning to benchmark a prototype of the infrastructure when I complete the solution's architecture.
XpiritO
@XpiritO This seems to be the right approach IMHO (and you'll even be able to test the round-robin load balancing strategy in that case).
Pascal Thivent