Skip to main content
Known Participant
December 10, 2008
Question

What is the point of clustering in CF Admin

  • December 10, 2008
  • 2 replies
  • 528 views
I've been reading Mike Brunt's well documented articles on CF8 clustering...

We've got a firewall, router+load balancer and two web servers running CF MX 7.02 Enterprise. The load balancer is configured to maintain sticky sessions and handles the fail-over; but (according to the article) if one server fails, session information will be lost for everyone on the down server even if they are clustered.

I assumed that session survival across instances would be the whole point of clustering!

So if the hardware handles the load balancing, why would I need to bother with creating instances and clustering them?

Any insight would be appreciated.
    This topic has been closed for replies.

    2 replies

    December 11, 2008
    There is also a significant increase in CF performance when you've got multiple instances.

    Additionally, if you're stuck in a 32 bit world, then you're limited by the amount of memory a JVM can consume. If you've got a large application, you may very well need to spool up additional instances to handle the load (an additional instance is cheaper than a whole new box).

    You don't have to let the web server connector actually do the load balancing between the instances. The HTTP server could send that request back to the hardware load balancer and let it make the decision on which instance to send the request too.

    Session replication is limited in CF 7 and earlier. Namely, session information in objects wasn't replicated. In theory, that was fixed in CF 8. But in our observations it doesn't work very well.

    It is also nice that if one instance of CF crashes you're still processing requests off that box from the other instance.

    I agree that seamless faulting would be the most ideal way of doing it. However, it just doesn't seem to work out. We've come to terms with a worst case of a user simply having to log back into an application. We're starting to design our apps so they do periodic saves of any form data they may have put in. This reduces the chances of lost data.
    December 11, 2008
    > session information will be lost for
    > everyone on the down server

    Only if you are not using session replication.


    > session survival across instances
    > would be the whole point of clustering

    In an ideal situation, clustering can achieve
    both goals:

    1) Load Balancing
    2) Transparent Fail-over

    However, sometimes the cost of getting fail-over
    is too high.

    some examples:
    * Large objects in SESSION
    * Object you want to put in SESSION is not serializable


    > why would I need to bother with creating
    > instances and clustering them?

    The short answer is that you don't unless you
    have a reason to cluster.


    > Any insight would be appreciated.

    I don't really have any other than let the business
    drive the technology rather than the technology
    driving the business.

    Consider this, generally your reasons for clustering
    should be a function of your Service Level Agreement (SLA)
    with your users.

    However, your application may have been written
    such that it cannot meet the SLA and so you have
    to re-write all or portions of your application.

    Meaning, it is not technically possible (perhaps due
    to the way the app was written) to get transparent
    fail-over using the out-of-the-box solution.

    In which case, you should let the business decide
    if they want to pay for a re-write.

    IMHO.