I recently received the question below on Enterprise clustering with ColdFusion MX 6.1 and wanted to share my response.
"I was hoping you could point me in the right direction as far as which options you would recommend. I am setting up an enterprise environment for an application using CFMX J2EE and hardware load balancing. There will be 2 hardware load balancers, 2 webservers running Linux/Apache and 3 app servers running CFMX 6.1. In one of your articles you describe the situation where the hardware load balancers are used to balance the load for the web servers and the connectors are clustered using JRun's connector clustering. In another you describe a situation where there is a load balancer in front of the webservers and a load balancer in front of the app servers. I was hoping you could advise me on which of these are best suited for an enterprise level architecture, I was initially thinking of going for the first option but now I am condsidering the second. Also, from your experience, which HLB would you recommend?"
In the two articles in the links below I outline two different architectures. The first architecture has a hardware load balancer in front of the web servers and uses the JRun web server connector to handle failover and load balancing to the application servers. The second architecture uses a hardware load balancer both in front of the web server and between the web server and application server.
The first architecture is the easiest to setup and scales pretty well. The one pitfall I find is that the JRun connector clustering feature does not offer application awareness. Basically if your application hangs on a ColdFusion server the connector will continue sending requests to it. The most scalable and redundant option is to use multi-tier hardware. It is by far the most difficult to configure but it is worth it if you want to minimize downtime. The multi-tier hardware option gives you true application level failover and load balancing using probes and custom load balancing algorithms. You really only need a single F5 or CSS to accomplish this as well. You can set up a single BigIP to handle all traffic. Basically, traffic flows from the internet into the BigIP then it is sent to the pool of web servers, then proxied back to the BigIP then sent to the pool of ColdFusion servers. This is outlined in the multi-tier hardware article. That is how Frank and I configured our BigIP for the article mentioned below. If you have a second box you can put them in a master/slave setup so if the hardware device fails it will fail over. With a master/slave configuration and multiple web, application and db servers you should 99.9% uptime with your site.
As far as my hardware recomendations, I have primarily worked with only the Cisco CSS and F5 BigIP devices. The CSS is a great box and if you are already familiar with Cisco products it is a great fit. By far though my favorite is the F5 BigIP device. It does almost anything you want and is really easy to use either through the web based admin or command line. It also offers Icontrol which is a really powerful addition worth taking a look at.
- Clustering ColdFusion MX 6.1 Enterprise on JRun
- Multi-Tier Hardware Load Balancing with ColdFusion MX 6.1
Thanks for posting the information on using a CSS to balance traffic for MX servers. It helped to validate what I've been learning on my own.
I'm particularly interested in using ClusterCATs to provide DFP information to the CSS 11000 (v6.10 b304) boxes we have.
Are there any special considerations to take when following the directions at http://www.macromedia.com/devnet/mx/coldfusion/articles/dfp.html#layer3 when ColdFusion is configured for multiple instances?
What about a configuration where you've seperated the CF App server from the web servers?
Tom, ClusterCATs is being deprecated and will not work with IIS6 or Apache 2.x. I would start looking for other solutions. I think for the most part that DFP will not be the long term solution either. With both CSS and BigIP you can set up probes to a .cfm page to verify that the application server is responding or not. Using the probe approach and custom load balancing algorithms that use number of connections and other data to determine load you can arrive at an optimal solution. In the case where you have multiple instances you can creat multiple virtual pools (in the hardware load balancer) to handle each domain or application on the application servers.
I've got probes setup with the CSS and ColdFusion. They work well in telling the load balancer whether or not ColdFusion is up or down.
I'm very disappointed to hear that CF is dropping DFP. I'd ask that Macromedia reconsider. Being able to tell the load balancer that server XYZ is busy or not gives the whole infrastructure some intellengence about what exactly is going on. I've got our CSSen setup to balance on least connections.
Just because one server has fewer connections doesn't always mean its available for more load. Those fewer connections could be asking the CF server to do a very large amount of the work. But without the feed back the load balancer isn't going to know that and is going to keep on sending requests.
Since I've begun our migration to Win2k3 I guess I'll not bother trying to configure ClusterCATs. Was kind of looking forward to it. Do you have a recommendation on software that may be able to send DFP information on CF/JRun back to the CSS?
DFP will add very little. It was needed with Cisco Local Director (CLD) to make it application aware, but the CSS (along with all high-end load balancing devices) is application smart out of the box.
Tom, with regard to your statement "But without the feed back the load balancer isn't going to know that and is going to keep on sending requests."
This isn't the case, the probe that you set up will know if CF is responding. That makes it application aware.
Right: the "head" health check would resond faster than DFP could even if you were running both together.
I cannot get Clustercats to recognise I have JRun4/CFMX installed.
Is Clustercats not compatible with the J2EE configuration?
It sounds like a problem with either the serial number or how JRun is installed. CC will look in c:\JRun4\lib\license.properties for the license.
I'm interested in finding out what software-based load balance solutions I can implement with CFMX. My "budget" is two CFMX Enterprise servers. Sorry for the vague comment, but I'm in the early stages of researching this.
Thanks in advance,
So I followed your instructions on clustering CFMX on the J2EE config as well as deploying multiple instances of CFMX. The problem I'm having is that when I browse a page (containing the cfobject code you provided) sometimes it loads and sometimes it comes back with a 404; as if JRun could load the page sometimes but not other times (I refresh the page every 3-5 seconds).
Also, your article doesn't specify what the content root should be when adding the CFMX instances in the JMC. I just added "/" for all 4 of my CFMX servers. Could this be the problem?