The amazing adventures of Doug Hughes

This will be the first post in a series relating to clustering ColdFusion. In this first series of posts we will be looking at clustering CF at a software level using ColdFusion 8 Enterprise. Hopefully later on, we can move to a Hardware-Software set-up with examples.

I mentioned in a previous post that what I will detail is drawn from my experiences from either creating clusters for clients or working on existing clusters. There are no doubt other ways to do this.

Firstly, I always create what I call a “master instance”, typically the first instance which is created from a multiple-instance install. Here are some important steps from that… As the install progresses select “Multiserver configuration”.

Install Multi Server

At the point where you are asked to select a webserver select the “Built-in webserver”. We will use this to run CF Admin and eventually use with wsconfig utility to connect to our Production web server…

Select Built In Webserver

We let the installation complete, successfully and at this point we have one ColdFusion instance (cfusion) and a JRun instance (admin). We do not need the JRun admin instance so we can go into Windows services and set it to manual start. Next we take a look at the ColdFusion Administrator GUI on the single instance created during the install.

The thing to note about this instance is the bottom section on the left navigation pane “ENTERPRISE MANAGER” with that section there are two sub sections “Instance Manager” and “Cluster Manager”. This section and it’s sub sections will not be present in the instances we create. This is why I consider this first instance created during the install of CF8 to be a master instance. Its job from now on will be to manage the cluster.

We will next create our first instance, go into ENTERPRISE MANAGER > Instance Manager to create the first instance, obviously give this instance whatever name you wish, I tend to make it meaningful to the web site it will support and then number {instance_name_1}, {instance_name_1} etc…

Instance Mnager

Repeat these steps to create your second instance, once again you use the master cfusion instance to do that. Once this is complete you will have two instances in Instance Manager…

Two instances

At this point we have installed ColdFusion and created two new instances, the next step is to create a cluster for these to sit in. Before we do that one thing that is good to do at this point is to connect each instance, individually to your Production web server just to make sure that they are fully functional individually…

wsconfig

Once we have verified that all instances function as expected/needed we are ready to move on to clustering them, which will be the subject of the second article in this series.

Comments on: "HA – Clustering ColdFusion Part 1 – Installing CF" (97)

  1. David O Malley said:

    Mike thanks for starting this series of posts. There’s a definite lack of material out there on clustering, and its something of personal interest right now. I’m looking forward to the posts to come.

    Cheers,

    David

    Like

  2. Jason Andres said:

    Great article. I am interested in finding out how many instances you can run per processor/memory/server.

    Until recently we have run all of our servers with coldfusion standard and we max out when running 100 websites per server, CF needs to be restarted often; with only 50 sites we never have a problem. Jrun seems to only use 1 core of the quad core processor and we set CF to use the maximum memory 1Gb, the other 3Gb just sits there unused.

    All the sites use a common set of CFCs / Objects inside a fusebox framework.

    I have just installed enterprise and I am wondering if I should setup 4 instances all with 100 sites each or should I setup 400 instances, and then another 400 to cluster them all on the same box?

    The more websites we can fit in a 1u rack space the better, but things need to be stable and reliable.

    Like

  3. Mike Brunt said:

    @david, thanks for taking the time to comment and for your kind words. One of my motivations for this was just as you say the lack of articles covering this subject. Back in the early days of MX 6.1 Brandon Purcell and Frank DeRienzo put some very detailed information out there but not much was posted after that.

    Like

  4. Mike Brunt said:

    @jason, same to you; thank you for the comments. I don’t know of anyway to dedicate an instance to (N) processor(s). I have seen the sort of behavior you mention though regarding one CPU taking most of the load. I have actually seen that with SQL Server too.

    When we consider multiple CF instances with a single jvm.config file, every instance will take whatever the heap size is, so if it is set to start at 1GB 4 instances will take 4GB. So that is the only thing to watch. I would certainly go for multiple instances of CF and if you need to be more fine tuned about the heap you can create multiple config files in a single jvm or even multiple jvm’s. I will be covering those things in future articles.

    Like

  5. Mark Ireland said:

    Can you cover the same topic for Solaris? Thanks

    Like

  6. Just wanted to quickly say thanks to Mike and Alagad for such a great article, and am really looking forward to the future installments.

    Like

  7. Mike Brunt said:

    @Daveg, thanks for your kind comments they are very much appreciated. There is a lot more to come on this subject and I will apologize now if this is somewhat slow coming out.

    Like

  8. Can someone confirm that JRun clustering is meant to be done vertically (only on a single physical box)? I have two physical web servers fronted by a hardware load balancer and another two physical boxes running CF8 multiserver. I have been unable to find documentation on how to cluster horizontally so that either web server can route requests to either of the physical CF8 servers. Can anyone offer insight on this before I lay out $$$ for Adobe support?

    Like

  9. Mike Brunt said:

    @MikeR yes this can be done but it is not easy and you are right there is a great lacking in documentation. Before starting there really needs to be a detailed plan and this tends to be very application-site specific so it is difficult to state here how exactly to go about this. I am not sure if Adobe would have the expertise to help you.

    Does anyone else have any other thoughts?

    Like

  10. Mark Ireland said:

    At work we have three physical boxes, each with a VM container for CF8 and the software loadbalancer just roundrobins with sticky sessions

    Like

  11. Mike Brunt said:

    @Mark thanks for your comments and in my field work I am encountering virtual machines more and more often. Do you use this set-up for QA-Testing or Production and if Production do you have any thoughts on performance?

    Like

  12. @MikeR, at politico.com I setup 4 boxes of multi instances CF(3-4 instances each) all under a hardware load balancer.

    So, if any instance fail no problem. If any box fail..no problem.

    Like

  13. Got a bunch of questions for Xung:
    – The four boxes are identical?
    – Are you using distributed web servers w/ the JRun connector or are you using the built-in web server (JWS)?

    And some questions in general:
    – What protocol does JRun use to communicate on the proxy port (50010)?

    I’m guessing that your setup is HLB -> 4 CF/JWS servers. We were shooting for HLB -> 2 Web Servers (Apache) -> 2 CF servers. Since we can’t get the JRun connector/clustering/failover to work properly in this configuration we are putting another HLB between our web and CF servers, using mod_proxy to forward .cfm requests from Apache to the second HLB (sticky sessions all the way through), and are forgetting about clustering/session replication. Final configuration looks like:

    External HLB -> 2 Web Servers (Apache) -> Internal HLB -> 2 CF servers

    Like

  14. yeah 4 boxes almost identical. 2 exactly same and other same, but it doesn’t matter really.

    I set it up with the Web server COnfiguration tool. We have IIS and I use that tool to connect.

    I am not sure why u would need so many LB. We just have one (and later on another for backup). The bottom point is unless every dies the site will always be up running.

    Man, if you can get one of these dual Quads from Dell with 16Gig ram you can run like 5-10 instances of CF. Then all you need is 2 boxes!

    Like

  15. So you have IIS+CF running on the same box and replicate that configuration four times?

    Do you use clustering or session replication at all? If so, are you able to do so across physical boxes? In other words, if you have boxes A, B, C, and D, and box A goes down, can any of your other servers handle the request from the HLB or is the session lost?

    Like

  16. yes IIS and CF same box, but I do Web Server Configuration just once. For a box, all CF instances serving from one file location. There is no redundancy. I am not sure if that is what you are referring to. There should be minimum work and movable parts (such as files).

    We choose not to use session var, but domain cookies instead since we have www and dyn subdomains sitting in different geographical locations. But that option is doable. With sticky session you are telling server to stay on same box. If the box dies then I think you will lose the session. If instance dies it’s OK.

    Is that your problem? You are trying to setup where all boxes use same session incase a box dies you want to maintain state? You might be able to since you can have remote servers within a cluster. Sorry, I am not experienced with this specific method but it sounds like memcached might nned to come into play.

    Like

  17. Mike Brunt said:

    @ MikeR and Xung, firstly I want to thank you both for posting comments here, this will surely be helpful to the community. I have been working with clustering with CF since Allaire acquired Bright Tiger and launched Cluster Cats. One thing that I have realized is that Cluster Cats was far more powerful, as it supported pure software clustering without a hardware clustering device (HLB) and for other reasons. I have found setting up clustering via CF Admin to be quirky and unpredictable and I am working through a detailed blog piece, which will show how to do this manually via the files that should be written to via CF Admin. As a note point, since Allaire-Macromedia dispensed with Cluster Cats we are using J2EE clustering. It is good to know this, as there is a good deal of documentation out there on this.

    Like

  18. It appears that most of the documentation out there is referring to load balanced clusters and CF instance (software) redundancy. How does Coldfusion handle clustering and failover between two boxes that are in a server cluster. Do I need to install coldfusion on both boxes and then register the instance on box B as a remote instance in the CF Admin of box A. Does realize it is being installed in a cluster much like SQL Server and replicate its settings across both servers during the install or do I have to install it on both boxes as I just alluded to. My question may have been answered in the above comments, but I was just searching for some clarification on this matter. Thanks in advance.

    Like

  19. Mike Brunt said:

    @Tim, thanks for your comment-question. In order to try to give you a reasonable answer can you let me know what your current server set up is and also what you are actually wanting to achieve?

    Like

  20. @MikeB – Thanks for your willingness to help me with my problem/questions. I will try to explain our server setup. We are running two 2CPU windows enterprise servers in a server cluster formation (ie: when one fails it transfers the network resources/services over to the other server). These servers talk to a common storage array for creating RAID 5 containers where our SQL server databases, web files and customer files will be stored respectively (only one server can own the storage disks at a time). We have the cluster working nicely; with IIS and SQL Server 2005 both failing over using manual failover as well as pulling the network cables to force a failover (takes about 10-20 seconds to come back up). Now it is time to add our web application layer and we need this to failover in much the same manner. We are searching for the best installation route and what is needed for coldfusion to failover gracefully without interruption of a session beyond the downtime for the failover routine to bring the resources back online on the other server. I have only ever installed coldfusion using the stand alone web server therefore any installation suggestions on how to best fail coldfusion over from one server to the other would be appreciated. Do we install coldfusion physically on both boxes? Or is is smart like SQL Server and install its parameters on both boxes so that changes to one will be reflected on both servers? Do we install CF on both but manage CF instances with the enterprise manager in one location? This question may be answered by an answer to the previous question, but what about adding data sources? For example, do we have to add them in the cf administrator in both locations? I’m sure all of this is beyond a simple answer, but would welcome any advice and/or resources that may be of assistance to us as I have found the livedocs and CFWACK books to focus more on load balanced solutions with physical tiering of these layers. Thanks in advance.

    Like

  21. Mike Brunt said:

    @Tim sorry for the delay in replying, I think this comment thread could be really useful to the community. I will address some of your points as follows…
    My first point-question is are you using a hardware clustering device, if so please state the make-model etc. I suspect, though, that you may be using Windows 2003 software (NLB) clustering, can you confirm this or not, as the case may be?

    Like

  22. @Mike – no worries thanks for you thoughts on this matter. I need to clarify that this is not a load balance cluster. It is a Windows 2003 Enterprise cluster set up as a “server cluster” (sometimes referred to as a failover cluster) (2 Dell PowerEdge 1950 Rack Servers each running and instance of SQL Server 2005 and IIS connected via a SANS Drive -MD3000). We use the windows cluster administrator where we created a group which we titled, IIS group. This group has various items such as common disk drives, IIS,SQL Server, Cluster IP address, website name etc… which all have their various dependencies and can only be owned by one web server at a time. These services are monitored by the cluster administrator and if any are not functioning properly it will trigger the failover to the second box. Each of these services must be brought online on the second box in the opposite order in which they were taken offline on box 1.

    With coldfusion installed in the multiserver configuration on top of JRun it appears we need to install coldfusion on both boxes and create instances of CF from an ear/war file. One instance on Box 1 and one instance on Box 2 Then create a CF cluster using the Enterprise manager by giving the cluster a name and choosing a cluster algorithm. We then need to enable session replication and enable J2EE session variables on both instances.

    Once the two instances are in a CF cluster then we need to run the JRun Web Connector. This is where (we assume) we put in our Cluster IP Address. Since in our configuration only one webserver owns all the network resources at a time JRun will point to that Cluster IP address and determine which instance of IIS is serving up the web requests. Essentially we have have CF cluster with instances spread across box 1 and box 2 and these CF instances are talking to eachother and based on the JRun Host defined in the web connector will send all CF requests to that Cluster IP address which will then determine which server owns the network resources of required to serve up the web request.

    In our cluster administrator we simply have to add the jrunsvc.exe as a generic service that want the cluster administrator to monitor. That way if JRun is not functioning it can trigger the failover much like a sql server or IIS failure. We are going to install CF today and hopefully defining the Cluster IP address in the JRun Web Connector Wizard will allow the instance of CF on Box 2 talk to IIS on Box 1 when it owns the network resources and vice versa (CF Box 1 talk to IIS on Box 2 when it owns the service).

    This post is rather long but I thought i would share some of our conclusions and would appreciate any rebuttal to any misunderstandings we may have about this process. Mike, hopefully this helps you understand our “server cluster” configuration a bit better.

    Like

  23. The last time I created JRun cluster was on CFMX 6.1. I referenced Brandon Purcell’s blog a lot. There, we had 2 CFMX 6.1 servers (with IIS on each) and we used the JRun in-memory session replication. We fronted the entire setup with a software load balancer. Over the course of about 2 years, we had 6-8 outages related to session replication failing between the cluster nodes. We decided to back out of clustering, and we went to a purely load balanced solution from then on.

    Have there been many improvements in clustering in ColdFusion 7 or 8? If so, I might consider it again.

    For now, the tradeoff that a few sessions might get lost when we do maintenance on a given node is acceptable for us.

    Like

  24. Mike Brunt said:

    @Tim, what you are doing is very interesting and I wish you luck on that, you are correct in that ColdFusion will need to be on both Windows Servers. I want to somehow adequately comment on the level of detail you give here and as I did before, I am going to make some assumptions; that you are running the Windows O/S level clustering in an Active-Passive mode. By the way, even though you are only running in a fail-over mode I would still class that as clustering. Here are my comments/questions your details are enclosed with ” “.

    “2 Dell PowerEdge 1950 Rack Servers each running and instance of SQL Server 2005 and IIS connected via a SANS Drive -MD3000” Am I correct in assuming these servers currently have both IIS and SQL Server running on them; by the way what version of SQL Server do you have Standard or Enterprise?

    With regard to the SAN drive is all web site code on there and I assume the SQL Server Engine is on the two Windows 2003 Servers and the logs and databases themselves are on the SAN? Just a point on the databases and logs, the ideal set up is RAID 1 or 10 for logs-temp db and RAID 5 or 6 for the databases. Also, are you using fiber channel to connect to the SAN and if so what level of redundancy do you have? My concern with a SAN is that it can still be a single point of failure if connectivity is not fully redundant.

    If my assumptions above are correct, clustering at the ColdFusion level need only be vertical because only one set of resources will be serving production at one time. The caveat to that is in relation to Session variables. ColdFusion-JRun uses the J2EE “buddy” system to replicate variables between cluster members in a cluster. If you go the simpler vertical route (all ColdFusion cluster members on the same physical server) then if that whole system fails and is failed over to the second standby server the ColdFusion sessions will not be there. In order to cover that contingency my suggestion would be to have horizontal clustering, like this…

    This may be too late but if not make the first install of ColdFusion on each server a “Master” instance as I detail above, do not use an external web server at that point (IIS-Apache etc). You will have one master instance on each server. At that point create a minimum of two CF instances on each server give them all unique names, that mean something. If you want load balancing on the Active server, you will need to create a minimum of 4 instances on each server. Let’s keep it simple for now and say two on each server. Using the same master instances of CF create a cluster on each server, they once again must have unique names. On each cluster add one local instance and one instance from the other server (remote). Typically I would chose RoundRobin with Sticky Sessions. However as only one instance in the cluster will be serving content (Active-Passive) use Weighted Round Robin and make the local cluster member the highest weighting of the two, also enable Session Replication. Connect IIS on each box to the local cluster using the web server configuration tool.

    Above all and before pushing live, load test everything to make sure fail-over works and sessions are replicating.

    I have made several assumptions here, which I hope are correct. Please let us know how you go on Tim.

    Like

  25. Mike Brunt said:

    @Damon, thanks for you comments here too. I actually did quite a bit of clustering in CFMX 6.1 and 7 and of course more recently on CF8. In some ways, I preferred the 6.1 set-ups because it was largely manual-non Gui, except for the JRun part. In CF8, in particular, I have seen the CF Admin Enterprise Manager GUI behave in a quirky manner. As to your question regarding replicating sessions. In all honesty I have not been around for long periods after setting this up so would not have seen what you saw, unpredictable results sometimes. I have found it to be difficult to get up and running sometimes, particularly where CF and the Web Server are on different servers.

    For the record, I will looking closely at this as a member of the OpenBlueDragon Steering Committee.

    Like

  26. Gary Fenton said:

    Mike Brunt Typing…I moved this here as I thought it fits in with this thread…
    Hi Mike. I was waiting to read the rest of your series on setting up CF8 clusters but we took the plunge and did it anyway.

    The first problem we had was upgrading from CF7 to CF8.01. I ran the installer assuming it would remove CF7 first or just overwrite it. Wrong! Despite specifiying the existing installation directories it was totally unaware of CF7 and we ended up with “500” errors and both CF7 and CF8 shown in Add/Remove Program (on Win2003).

    We restored the web server from the last nightly backup and started over again, this time uninstalling CF7 first and rebooting. Frustratingly the instance we created for clustering was still showing as a service and many files in c:jrun4 were still there. So the lesson learnt (after restoring the backup again) was to go into CF Admin and delete the instances and cluster first before uninstalling CF because the uninstaller is blissfully unaware of any instances you’ve created.

    The uninstaller appeared to leave references to CF instances in IIS’s configuration. Perhaps we should have used the CF Web Config Tool to delete its associations with IIS before uninstalling CF7?

    We eventually managed to get CF8.01 installed and working in a 2 server cluster. Windows NLB remained in place to handle IIS load balancing. Weirdly a session would bounce from server A to server B and back again each time we fresh the page in the browser. Round Robin and Sticky Sessions are used so this behaviour shouldn’t be happening and wasn’t happening in our previous CF7 cluster.

    While our application web pages are served quickly the CF Admin is very slow to respond.

    Any thoughts on any of the above issues would be great thanks, and I hope some of our experience with upgrading CF in a cluster is useful to someone.

    Hi Mike. I was waiting to read the rest of your series on setting up CF8 clusters but we took the plunge and did it anyway.

    The first problem we had was upgrading from CF7 to CF8.01. I ran the installer assuming it would remove CF7 first or just overwrite it. Wrong! Despite specifiying the existing installation directories it was totally unaware of CF7 and we ended up with “500” errors and both CF7 and CF8 shown in Add/Remove Program (on Win2003).

    We restored the web server from the last nightly backup and started over again, this time uninstalling CF7 first and rebooting. Frustratingly the instance we created for clustering was still showing as a service and many files in c:jrun4 were still there. So the lesson learnt (after restoring the backup again) was to go into CF Admin and delete the instances and cluster first before uninstalling CF because the uninstaller is blissfully unaware of any instances you’ve created.

    The uninstaller appeared to leave references to CF instances in IIS’s configuration. Perhaps we should have used the CF Web Config Tool to delete its associations with IIS before uninstalling CF7?

    We eventually managed to get CF8.01 installed and working in a 2 server cluster. Windows NLB remained in place to handle IIS load balancing. Weirdly a session would bounce from server A to server B and back again each time we fresh the page in the browser. Round Robin and Sticky Sessions are used so this behaviour shouldn’t be happening and wasn’t happening in our previous CF7 cluster.

    While our application web pages are served quickly the CF Admin is very slow to respond.

    Posted By: Gary Fenton on May 11, 2008

    Like

  27. Gary Fenton said:

    @Gary thanks for this informative comment on what you did. I will give you my opinion on what I would have probably done, with comments.

    Upgrading ColdFusion – I always archive then uninstall previous versions of ColdFusion before upgrading. I found it to be best practice. I also check for stray Windows Services and also any keys in the Windows Registry and remove anything referring to ColdFusion or JRun.

    Yes, as you point out, I also make sure there are no web sites still connected to CF before the uninstall by running the web server configuration tool (wsconfig) before uninstalling.

    An important question how did you set up that two instance cluster. Were both cluster members on one physical server (vertical clustering) or were the two cluster members set up, one on each physical server (horizontal clustering)? Apart from the version difference (CFMX7 to CF8.01) is anything at all different from your previous cluster set up?

    How are you serving CF Admin, is it through the internal JWS web server or IIS?

    Like

  28. Gary Fenton said:

    @Mike, thanks for your response. You should write an e-book on clustering as there’s so little out there to guide people and troubleshoot. I say an e-book because some people may need to obtain the info urgently and you deserve some recompense. 🙂

    I forgot to look for leftover registry keys. I’ll note that for the CF9 upgrade. 🙂

    We have 2 physical servers running 1 multi-instance each with horizontal clustering (Windows NLB decides which IIS server gets the request). We can’t think of anything that’s different from this CF8 setup to our previous CF7 setup. CF Admin is run through IIS – I stopped/disabled the Jrun admin service.

    Like

  29. Mike Brunt said:

    @Gary,thank you for your kind comments and suggestion, I forgot to ask one more question. Is there only one cluster of two instances? If there is more than one cluster, it is important that they have different names.

    Like

  30. Mike Brunt said:

    @Gary some more questions, sorry I missed these. Is Round Robin with Sticky Sessions enabled both in NLB and the ColdFusion cluster? Also when you say bounced from Server A to Server B, do you mean the physical servers or the ColdFusion instances?

    Like

  31. Gary Fenton said:

    @Mike, yes there’s only 1 cluster. RR & sticky are enabled for both NLB & CF. The bouncing goes between physical servers. I added a custom HTTP header in IIS (X-Served-By) to make it easier to tell which server served the page using Firebug to view the headers.)

    In the last 24 hours I haven’t seen of this bouncing behaviour. On one hand that’s good but on the other it’s worrying that it changed by itself without any human intervention. It’s just as strange as the Java arithmetic error that CF was throwing for about 6 hours after the CF8 upgrade. I went to bed at 3am in despair and when I looked again in the morning the error had totally vanished. Servers just can’t fix themselves and I fired the magic elves last year so it can’t be them!

    Like

  32. ok, I just tested my horizontal CF multi instances clustering on two boxes and works like a charm with session var replicating onto the two different boxes. BUT once I reboot a box it freeze the whole cluster. I am saying to myself, “what’s the point”. When I stop an instance via the CF admin it works like a charm, but stopping the whole box caused unwanted result. Who has 2 minutes to wait for the box to reboot? Not your users.

    Maybe someone can liken this issue for me. Shouldn’t the cflcuster wait a little and continues serving the working CF instance from the working box while the other box is down?

    Now I am thinking maybe exclusive vertical clustering isn’t so bad. I need to re-evaluate my options.

    Like

  33. Mike Brunt said:

    @Xung I am thinking through this, when you stop the ColdFusion instance via CFADMIN you will still have both web servers running. When you stop a whole server you only have one web server running. So I have a question, when you say the cluster freezes does that mean it never comes back or it comes back after some time?

    Like

  34. I usually speak in term of BOX=server machine, or instance=CF server, so as to not confuse ppl. When stopping an instance CF cluster handles it great. BUT when stopping a box CF just keeps trying to hit that instance on that box. I was hoping that after several seconds it would know and automatically go to a working instance. Nope it just runs and runs until it throw a bad error message. Or it runs and runs until that box comes back up.

    Like

  35. Mike Brunt said:

    @Xung, thanks for your response. When you say “Or it runs and runs until that box comes back up” can you give us some idea of how long that takes?

    Like

  36. When I reboot a box usually that takes about 2 minutes to come back up, thus I would think it’s an average time any box would reboot.

    I would think the HLB would take over in a real scenario and then it would just bounce the user to another box in a matter of seconds. That would be great if we are working with a small cluster of like 2 boxes, but in a larger cluster of hundreds of boxes I would think users will lose their sessions. Coz there is no way anyone would create hundreds of remote instances for each box, that’s just not practical. I am wondering if a session would replicate itself to all boxes even if the user never made a request from those boxes.

    Anyone with better knowledge pls pitch in, TIA.

    Like

  37. Gary Fenton said:

    Good question, Xung, and another reason for Adobe to write more documentation on clustering. Look at it like this – if your session is running on a server that suddenly dies then how else can your session continue running on another server if your session data isn’t constantly replicated around the cluster?

    Logically I can’t see any other way of it working. How can a server hand over its session data to another if it’s already dead? It can’t so that’s why I believe the CF instances in a cluster are constantly exchanging session data. I’m not sure what impact this has on a network with 10+ servers in the cluster. Or the memory requirements if each server has to hold session data on not just its 1000+ sessions but the 9000 other sessions too.

    Typically for the end user a failover takes 20-30 seconds with CF which is a pretty long time, especially if the other servers already have the session data and the dead server hasn’t responded to at least a couple of pings which are usually every 3-5 seconds. I would love to see the failover time reduced to just 10 seconds from the end users perspective.

    Like

  38. Gary,

    I think with horizontal CF cluster the jsession lives as long as it is in a cluster. If one box goes down your jsession will persist to the other box that it is clustered with. I already tested this myself, but the problem is it takes 2-3 minutes for CF to recognize that. It hangs for soo long. At that point you will lose your customer.

    To make things even more confusing, for clusters with hundreds of boxes the session will be lost if you are bounced to a box that is not in the cluster. This coz u won’t be putting every instances in every box. I would need 3 boxes to test, but currently I don’t have 3.

    Like

  39. Mike Brunt said:

    Gary and Xung thank you so much for taking the time to keep contributing to this blog post. I know I have stated this before but it is worthy of repeating; in my opinion.

    Software clustering in ColdFusion MX forward is based on Java J2EE clustering and session replication uses what is known as the “buddy system” where all servers in a cluster, whether it be horizontal or vertical can share sessions. There certainly is a messaging-network overhead and the more instances in the cluster the more significant that becomes.

    I am puzzled Xung with that two minute recovery time though. I will think through it more.

    Like

  40. Mike Brunt said:

    @Roy, you are totally correct this is a very important point and that blog post you identified holds trues for CFMX 7 and CF8 as you say. Back in the CFMX 6.1 days much of what was done on multiple instances-clustering etc was done manually and adding the Windows service was one of the steps needed. Thanks for pointing this out Roy.

    Like

  41. Roy Martin said:

    jvm.config and the CF administrator –
    When I was working to setup multiple instances using separate jvm.config files (to assign different memory levels per instance) I noticed an important distinction, that the CFAdmin consumes it’s own heap space. So if you change the default jvm.config to use a 1024m (1 gig) your allocating 1 gig to both the coldfusion instance and the administrator instance. Now this won’t truly affect you unless you’re defining a minimum heap space, but in this case I was setting the min and max heap to be 1024, to prevent the JVM from working allocate memory to itself on the fly (as recommend in CF8 WACKv3). Starting both of the processes took up 2 gigs of RAM! So I changed the jvm.config for the administrator process to point to a separate jvm_256 file which allocates 256 megs, with no minimum. In general it’s a very important point for multiple instances anyways, because you’ll most likely want to fine tune each jvm per site (at least in bucket configs like small, medium, large). The post to do this is ages old, but still holds true for CF8:
    http://mkruger.cfwebtools.com/index.cfm/2006/4/17/multiserver

    Like

  42. Fernando said:

    Greetings to all,

    I have been keeping up with this blog for some time now, and the information has been very useful in my quest for the holy cluster. Mike, you truly are a one man clustering show. I have not been able to find any useful / updated cf clustering documentation anywhere else. For that I truly thank you.

    Let me explain my situation, and Im sure you guys will be able to assist me.

    To clarify, I will be referring to physical boxes as servers, and cf instances as instances.

    Here is a link to a very simple diagram of my initial setup.

    I am running 2 servers (lets call them S1 and S2) with CF 8.0.1 Multi-server configuration on each. To keep it simple, lets just say that I have 1 instance (apart from the Master instance) per server which are exact replicas of each other (lets call them I1 and I2), each using their own copies of the cfm pages (replication is in place and this is not an issue for now) and each having unique names.

    I then set up a cluster on S1 in which I placed the local instance (I1) and the remote instance (I2) (Horizontal Cluster). I used Weighted Round Robin and Session Replication, giving 60% weight to I1 and 40% to I2. Once this was done, I set up a test site on each server and used the wsconfig via the command line to assign them to the cluster on each server separately. Even though I only created the cluster on S1, S2 is aware of it as well, allowing me to assign the test site on it to the cluster.

    I placed some code that would allow me to see the server name and instance name on each servers site. I then pointed my windows host file to S1 test site IP, and tested the configuration by going to the test site, making sure it was going to I1. I then stopped I1, and after about 20-30 seconds on average (a bit longer than I would expect), I2 picked up. So far, the cluster is more or less behaving as expected.

    Now let me explain the main problem I have encountered. I have set up session management on both sites (in S1 and S2) with a 1 hour session timeout. In S1s site, I created a test session variable. Whenever my windows host file is pointing to S1, session replication works fine. I first go to I1, shut it down, and I then see the session variable in I2. But as soon as I point the host file to S2, I2 picks up first and the session variable is not there. Only after I make multiple requests does it go back to I1, which then creates the session variable again and I can then see it replicate again when it gets sent back to I2.

    The reason I point the windows host file to S2 is to simulate a failover, since in front of the entire set up we are running a Hardware Load Balancer acting mainly as a failover with sticky sessions. Its a little more complex than that, but for this discussion, it suffices to know that it will act as a failover. To me it seems that if session replication only works when I am pointing to S1, but fails when S1 is down and the requests are routed to S2 (which is cluster aware and should act, I thought, similar to when requests go to S1), then it defeats the purpose of having this horizontal cluster configuration. I thought having this setup meant never having users loose their sessions.

    I have read some blogs (Sean Corfield mainly) stating that Adobe does not use session replication since it seems to be unreliable, but is this only for large clusters? Our cluster is relatively small, so I think this might be a good option, but am I configuring something wrong, or is this truly how the setup works?

    Like

  43. Gary Fenton said:

    What do you mean by “Windows host file”? A good way to trigger a failover for testing is to pull the network cable out of a web server if you have access, or stop the Web Publishing Services and, in a separate test, stop a CF instance service.

    20-30 seconds is about the same time we have to wait to see failover complete. Yes, it is too long but that seems to be what others get too.

    CF clustering is still a black art (or hit and miss!) even though the process to set it up is straight forward. I agree that what Mike does for the community is excellent but Adobe should publish some practical and up to date articles on clustering.

    I would like to learn more about alternatives to achieve failover where sessions are kept in tact and users experience no more than a 10 sec delay.

    Like

  44. Mike Brunt said:

    @Fernando, thanks for posting this here and unfortunately I have encountered many difficult to explain issues with session replication which I have a feeling is more related to CF rather than J2EE-JRun. I make this distinction because in using Clustering in ColdFusion we are leveraging the underlying J2EE Peer-to-Peer Clustering mechanism including session replication. Here I am speculating but obviously the use of sessions in CF (ignore clustering for a moment) is reliant upon CF’s cfapplication mechanism. So my speculation is that it could something related to the application scope that is causing the session replication mechanism to be quirky. So if a user gets moved from one instance to the other I wonder if there are problems at the application scope level. Perhaps the application scope is slightly different somehow or perhaps was not yet instantiated? Of course, as you are replicating code I am assuming the application scope has the same name on both instances (servers). I wonder if we can construct some sort of checking of the validity of the application scope on the two instances. Please keep us updated on any findings.

    Like

  45. Mike Brunt said:

    @Gary thanks for your input. When we enable session replication we are using a network level construct in order to keep the session variables synchronized. There will be some delay because of that. I am actually at the start of a series on the whole session replication mechanism.

    Like

  46. Fernando said:

    Hey Gary,

    Thank you for your quick response.

    The windows hosts file maps host names to IP addresses and is controlled by your computer. It gives a quick way to make sure a URL always goes to a specific IP without going through DNS.

    I currently do not have a Load Balancer in my development environment (I am looking into NLB as a temporary testing solution for server failover). To simulate requests being routed from one server (physical box, not instance) to another, as would happen in server failover, I just restart one server remotely (the server is not physically accessible) and point my hosts file to the other.

    There are two levels of failover at work here. There is instance failover within the cf cluster, which seems to work fine. Then there is server failover, which would be handled by the LB. This is where my sessions no longer replicate. If a user goes to Server1, creates a session, and then that server happens to go down, the LB should route all requests to Server2. This server is cluster aware, so I can use wsconfig to assign a test site to the cluster in this server as well. So when all requests get sent to the Server2 test site, it will use the cluster. The cluster has already supposedly copied all sessions to its buddy (the S2 instance from my previous post) when the user originally came into Server1. In theory, the user should now see the session in Server2s instance (S2) as well. This is not the case and this is what I do not understand.

    I might not understand the way that this process works, so if you or anyone can shed any light on the subject, I would greatly appreciate it.

    Like

  47. @Fernando, sounds like you are testing it like the way I was without a HLB. I actually reboot/shutdown my box. You might want to try that approach as to eliminate extras to the already confusing thing. For me I did get my session replicated, but it took a long time (like 2 mintues) coz CF can’t indentify a network problem. I would think if I slap in a HLB it would identify that a box is down alot faster and push it to the box that works within 20 seconds.
    Mike B, see ya at CFUnited!

    Like

  48. @Fernando, just saw your beautiful graphic. I think you need another instance on S2 so that it is same as S1. So redundancy is what your are after,in other word whatever you do to S1 you want same for S2. That would be to create another instance in S1 and another instance in S2. Create another cluster in S2 exactly same as S1 but different name.

    Like

  49. Fernando said:

    Thank you all for your responses. I appreciate you taking the time to help me.

    Mike: “Perhaps the application scope is slightly different somehow or perhaps was not yet instantiated?”

    I will look into this and keep you updated as to my findings.

    Xung: “I think you need another instance on S2 so that it is same as S1”

    I might be a little confused as to how things actually work here, but I thought that if I create a second cluster in S2 (same configuration and content as S1, just different name), it would never know anything about what is going on in the cluster in S1. What am trying to achieve here is session replication in 2 separate failovers.
    1. When an instance of the cluster in S1 fails, which works fine (except the wait time which we both agree is a bit longer than expected).
    2. When a server (S1) fails. Here, instead of the cluster failing over to another instance, the HLB (once its in place) will fail over to another server (S2). This is where I am having problems.

    I have a test site called “dev.test.com”. In S1, I point it to the cluster with wsconfig, and since S2 is “aware” of this cluster, I point the site there to it as well. This way, when S1 goes down, the user will get sent to S2 but still remain in the same cluster, thus keeping their sessions. If I place the second cluster you suggest on S2 and point the test site to it, when a user fails over from S1 to S2 (server failover), they will inevitably loose their sessions since this new cluster has no communication with the cluster in S1 (as far as I know, and please correct me if I am way off here).

    I tested having both clusters and then failing over from S1 to S2 manually, and, as expected, saw no session replication.

    For right now I just want the user not to loose sessions in case of either instance failover or server failover, and the latter is currently not working. I tried, as you suggested, waiting 2 minutes (and longer) in case the session had not replicated yet to no avail.

    Once again, I appreciate your ongoing interest in this matter and look forward to your insights.

    Like

  50. @Fernando, first check if your are using jsession. If you still have problem you might want to try setting up S2 to be exactly like S1. S1 should have 2 instances S1_i1 (for local box) and S1_i2 (for remote). Then setup S2_i1 (for local) and S2_i2 (for remote). ClusterS1 should have instances S1_i1 and S2_i2. ClsuterS2 should have S2_i1 and S1_i2.

    Like

  51. Fernando said:

    @Xung: “If you still have problem you might want to try setting up S2 to be exactly like S1”

    I tried that setup but I don’t understand how sessions will replicate across clusters. If S1 fails, then a user will get sent to the other cluster in S2 which is not “aware” of S1 as far as I know.

    I have J2EE session variables enabled, and I know sessions are replicating inside the cluster since when I stop S1_i1, S2_i2 will pick up and I can still see the session. But when I send all requests to S2, S2_i2 picks up as well (since I am pointing dev.test.com in S2 to ClusterS1 and S2_i2 is part of that cluster) but this time sessions have not replicated.

    Am I missing something to either get the cluster to cluster communication happening (if it’s possible) or to enable S2_i2 from sharing the session in the case of server (not instance) failover?

    Like

  52. Mike Brunt said:

    @Fernando you should not be able to get Cluster to Cluster replication working in my opinion. A users session should only be replicated within the instances in the Cluster they exist in. I hope that makes sense. Here is another important thought point, apart from the two physical servers being different S1 – S2 the JVM is the other key difference, in other words you have JVM1 on S1 and JVM2 on S2. There is no way to have the same JVM spanning two different physical servers. This is just a thought point not a solution.

    I also had a question I assume you registered the remote instance in CF Admin on S1 to the instance on S2. If you already stated this I apologize for asking.

    Like

  53. Fernando said:

    @Mike, I figured there that sessions would not replicate across clusters since they are not “buddies”. Only instances are.

    I did register the S2 instance on S1 CF Admin. The session replication does work across both instances (local and remote) as long as users are sent to S1 (as expected). So this aspect of the clustering works fine. But when I send all requests to S2 is when I do not see sessions replicate.
    Whenever I send the requests to S2 (in which I have the test site assigned to the ClusterS1), I would have thought that sessions would be available there as well since the user is still going to the original cluster. This is not the case.

    Should the sessions be replicating in this latter scenario?

    Like

  54. Mike Brunt said:

    @Fernando, thanks for your response, yes in theory they most certainly should be replicating. My suspicion is that something in the architecture of ColdFusion at the Application server level, which is where it resides, is not functioning correctly; it may be as simple as not writing to an underlying file correctly or more difficult to diagnose as with an Application scope quirkiness. I am still trying to dig through this myself and will keep you posted via this blog.

    Like

  55. hi all i am in trouble and please need help. i need to config cof8 64 bit in a distributed environment.

    cf80 in on box and web server in another.
    i have doubts regarading where we nneed to actually put the files ??

    i tried the manuall connector stuff. but its not working for me 😦 please help…

    Like

  56. Mike Brunt said:

    @dev is your aim to do any clustering in your deployment? If so, will it be hardware and software or just software? This thread is aimed at HA-clustering rather than distributed mode issues. If you will be clustering can you let us know the following…
    Operating system – web server – ColdFusion version (standard or enterprise). Also, what files are you meaning – web site content – ColdFusion-JRun?

    Like

  57. Mike Brunt said:

    @Fernando I just came across an interesting blog post by Sean Corfield which talks about Application scopes as they pertain to Java-J2EE. I don’t know if you solved your issue yet but this looks like a possible clue to what is going on.

    Like

  58. Fernando said:

    @Mike Thank you for the link to the post, it is very insightful and I might be able to apply it to other session issues I have been having.

    As far as my original issue I was able to resolve it. It was actually quite simple:
    Since I do not have a HLB in place yet, I was manually shutting down one server to simulate a server (physical box) fail over and then changing the host file to point to the other server. For this to happen correctly in Windows machines one has to usually close down the browser, flush the DNS cache, then try again at which point the site should now go to the new server. This worked fine, the problem was that by closing the browser I was killing the J2EE sessions, as far as the browser was concerned, since the browser is what holds the J2EE session information in a cookie. Even though the session was still alive as far as JRUN was concerned, the browser was no longer “aware” of them. I had forgotten about this from my JSP days.

    Once I figured this out, I realized that my configuration was actually working as some further testing revealed.

    If I am incorrect in any of this, please let me know so that I may continue my research.

    I want to thank all of you for the help you have given and I will try to continue posting my experiences so everyone may benefit from them.

    Like

  59. I am having a few issues we are currently trying to use hardware load balancing with Apache and CF8 multiserver installs on Jrun i.e LB in front of the webserver and an LB infront of the CF servers. However we can’t seem to get the web servers to communicate with the CF servers when they are in layer 4 clusters via the proxy ports.

    Is there a particular setting in Jrun we need to enable or does jrun use a different protocol for the proxy service.

    Like

  60. Mike Brunt said:

    @Alonso sorry for a slightly delayed response here from me. So am I right in assuming that Apache is on different physical servers to ColdFusion?

    Like

  61. If you have 2 instances in a cf cluster and have a factory stored in Application scope, how could I run a script via a url to ensure BOTH instances have Application.factory reset?

    Maybe I’m getting confused by the whole clustering thing but we’re going to do this at work for getting sticky sessions and I wondered how Application scope works with this setup.

    Thanks

    Like

  62. @Alan when we get to the Application scope level things can get difficult to deal with. This scope is not and cannot be replicated because on each instance the items in the Application scope have no knowledge of each other. My suggestion would be run scripts for each instance.

    Like

  63. Thanks Mike.

    When you say ‘run scripts for each instance’ can you give an idea what you mean and what I would use in the script to target each instance and where I would run them from?

    Like

  64. @Mike Brunt Hi sorry about the late reply, I managed to fix the issue. The load balancer seemed to have stopped working so a reboot sorted the connection issues out(coyotepoint firmware version 8.0.0b seems to have wierd issues every so often).

    The way I have set it up is using 4 solaris x86 X6250 blades on the presentation layer each running 2 centos unbranded zones with apache and the jrun connector so these boxes only contain static content such as images etc. The ip address in the apache config files corresponds to the ip address of the ColdFusion cluster which contains the instances of ColdFusion and their related jrun proxy ip addresses.

    So the httpd conf will have an ip & port of say 10.0.5.3:52800 which is the HLB ColdFusion cluster ip address and then this has 8 instances of coldfusion running across 4 sparc T6320 blades. So the setup runs really well it does take a bit of JVM tuning to get the sparcs to really shine but it is worth a few days playing with things.

    Just want to say this thread was great help !

    Like

  65. Mark Ireland said:

    Alonso, we have a similar setup. Do you have session replication across the blades?

    Like

  66. @Alonso, thanks for your comments and also the good information you shared here which I am sure has benefited many.

    @Mark are you using Session replication and if so do you find it reliable?

    Like

  67. @Alan, I have another question before responding. Are all of your application scope variables set in one global file or are they set in many places?

    Like

  68. @Mike, yes all in Application.cfm. It’s a typical ‘if we get a reload = true in a url then re-create the factory and set it to Application.factory’ sort of thing.

    I also beleive my colleague Shalja has asked you the same question at ‘wee dram’ the other day. We’re all on your case 🙂

    Like

  69. Hi Mike

    Good talk yesterday at ‘wee dram’.

    I have a question I need clarification on concerning doing things like resetting factories on a Coldfusion cluster.

    Lets say I have the following setup

    Two instances of Coldfusion clustered on the same machine. Instance A (port 8091) and instance B (port 8092).

    If I want to reset a factory on instance A would the url be IP_ADDRESS:8091/resetSomething.cfm and then of course for instance B IP_ADDRESS:8092/resetSomething.cfm

    Thanks in advance

    Like

  70. Mark Ireland said:

    @Mark are you using Session replication and if so do you find it reliable?

    We havent tested it under load, but session replication with a cluster that has all instances in the same container is working.

    (Of course, we want it between containers on different servers)

    Like

  71. Guys and Gals – calling from across the pond in the UK.

    Thanks for all the information in the blog but I am struggling with a more basic clustering problem as we don’t use session variables, relying totally on domain cookies instead and using a single central SQL database. The background is I have a single application running on a single box using CF8 Enterprise (multiserver configuration with the defaul EAR file) and IIS with the SQL Server 2000 database on a separate box. As customer load has grown response times have worsened so our strategy was to install an exact duplicate box again using CF8 Enterprise (multiserver configuration with the defaul EAR file) and IIS with the database remaining for now on a separate box and being accessed by both CF servers. The new CF server is fully working and has been running the live workload without any issues.

    Now we are trying to implement clustering to share the customer accesses across the two servers. We have therefore set up an instance called Host1 on the first server and another instance called Host2 on the second server in line with the initial steps of Mike Brunt’s blog on Clustering ColdFusion Part 1 – Installing CF. I also made sure that the Host1 and Host2 instances on their respective servers were started.

    So far so good. Our next step was then on server 1 to use Register Remote Instance under Instance Manager to register Host2 using the IP address of server2 and the remote port number from the server2 Host2 instance – however having pressed Submit all I continue to get is the remote instance recorded but with ‘Network error’ shown in the Cluster column. We have tried leaving ticked and unticked the Enable JWS (Internal Web Server) but so far have just left ticked the Directory Browsing on the editing screen of the server instance. Note we also haven’t moved to the next steps of either creating the cluster or running the Web Server Configuration tool as I assume I have to get the remote instance properly accessible.

    Any suggestions about what I am doing wrong or what ‘Network error’ can mean would be most appreciated. Thanks.

    Like

  72. @Ken that’s funny I was just over in England and am now back in the USA, I got back late yesterday. Thanks for posting your issue here and what I would like to see is the host1-out.log and host2-out.logs to see if there are any clues there. You can send to mbrunt at go2ria.net

    A basic question also, could any network device be blocking the ports you need to use?

    Lastly, I am trying to picture what sort of cluster you want to create? In CF-J2EE clustering an instance can only exist in one cluster. So if you have one instance on each server (I assume that is what you have?) you can only create a cluster on one of the two servers, which may not be what you want. I am making another assumption here, that there is only one production website in IIS?

    Like

  73. @Tara, thank you for your kind comments regarding a WeeDram.

    Am I right in assuming that you are trying to hit those ports, 8091 and 8092 remotely (not from the actual physical server they reside on) am I correct?

    I am also assuming you would configure those ports from inside CFAdmin > Enterprise Manager > Instance Manager am I also correct there?

    Like

  74. Thanks for your help with this.

    I have emailed the two log files but they are not called host1-out.log and host2-out.log as those files do not exist but they are called easehost1-event.log and easehost2-event.log. I trimmed the names for the blog missing out the ease bit and I assume these -event logs are those that you need. Note I have tried to connect to the other server from each of them so there are multiple entries.

    I have no network issues between the two servers using Remote Desk Connection and copying files between the servers, accessing the database server using ODBC and bouncing web page access between the two servers.

    In terms of your other query, yes I only have one instance on each of the two servers and the aim is to create a single cluster on one of the servers. At present the main production server has only one production website in IIS receiving all web page accesses and in order to validate the additional server it is currently bouncing all user login requests which come to an index.html using http://88.208.231.2/usa/4-5/login.cfm to get to the second server.

    Let me know if you need anything else and thanks again.

    Like

  75. Hi Mike

    Yes I am trying to hit the ports remotely. And yes you are right in assuming I would configure the ports inside CFAdmin.

    Like

  76. Has anything been found on this issue?

    I am having the same problem. I try and register a remote instance but i have the network error in the Cluster column.

    Like

  77. Damon Gentry said:

    @Jim,

    Can you test basic connectivity between the two hosts?

    For example, if you have the following JRun server defined on HOST2:

    Name: cfusion2
    JNDI: 2941
    HTTP: 8401
    Proxy: 51401

    From the command line on HOST1, try this:
    telnet HOST2 2941

    You will either get a ‘connection refused’ message or a blank prompt. If you get a blank prompt, that’s good. Type ‘CTRL ]’ to quit the telnet connection. Then type ‘quit’ to exit the telnet application.

    If you can telnet to all of the ports, then you do not have a ‘connectivity’ issue. If you cannot telnet to these ports, check with your firewall administrator.

    Also, I’m not sure this will help at all, but I tend to register the remote ‘admin’ server first, before I register other jrun instances. See if you can add the ‘admin’ server instance on HOST2 as well.

    Like

  78. i can telnet to them but still have the “network error”.

    Also have it with the admin instance.

    Like

  79. Damon Gentry said:

    @Jim,

    Send me your contact info at: damon dot gentry at gmail dot com.

    Perhaps we can solve this one over the phone.

    Like

  80. @Mark Ireland

    Hi Mark sorry about the late reply, the way we have the setup in our test environment is having the 8 instances in to pairs of two per cluster. So each physical server has two identical instances which are clustered together. As far I as I can tell it is impossible ( I really hope it isn’t but it looks like it is) to get the sessions to replicate across different physical servers and the only way we managed to do it was having a cluster of two or more on the same physical machine.

    Like

  81. @Mark Ireland

    I am going to play around with it this weekend and see if I have an Einstein moment and I manage to get session replication across the blades working, I’ll keep you posted on my progress.

    Like

  82. @Mike

    We are trying to setup the Cluster Load balancing in CF8 server with 4 instances on 2 different physical boxes. Below is our server configuration details:

    Fedora 9 64bit, CF 8 64 bit Ent-trail edition.

    Setup Details:
    2 Linux boxes, 2 CF instances on each box. CF is setup as given by you, in Multiserver environment. We created 2 instances of CF in both boxes called, CF1, CF2 in BOX1 and CF3, CF4 in Box 2.

    Issue:
    The issue we are having here is, when we add a remote server Box2 instance to Box1, it shows “Network Error”. Where as when we check the same using JRun Admin console, it says “The server “cf3” is unavailable for administration on its specified host “10.10.0.14”. Please make sure that the server exists, and that at least one server is running and registered with the JMC on the given machine.”

    We have done following things after going through some posts,

    – jrun.subnet.restriction=*
    – jrun.trusted.hosts=*
    – We telnet’ed to the running instances port nubmers on other box2 from box1 and vice versa and we are successfully able to connect to each of them from either boxes.
    – We have disabled firewall on both the servers.

    Can you please guide us on the above. Let us know if
    – we need to do anything else as this is a 64bit server?
    – Is there any issue with 64bit edition of CF8 on Linux?
    – Do we need to first join the CF to web server then configure the instances?

    Thank you in advance.

    Like

  83. Charlie Arehart said:

    Atul, it may seem obvious but just to make sure, have you confirmed that the hostname you’re entering when registering the remote instance is in fact identical (case included) to the one defined for the instance on the remote instance manager. (This is needed for Windows users, too, for other readers.)

    Also, have you considered the info in the following entry:

    http://cfprimer.blogspot.com/2005/06/jrun-clustering-with-windows-2003-nlb.html

    Again, I realize it’s about Windows NLB and you’re on Linux, but perhaps you may see some connection.

    Like

  84. Jim Gilley said:

    Is anyone having issues with MX7 and clusters, when the server is rebooted the cluster doesn’t respond?

    We end up having to remove the cluster from the web configuration tool and re add it again before it will respond to requests again.

    Please help this is causing significant downtime for a “high availability” feature.

    Like

  85. Hi Mike,

    Is there a reason you recommend using the built-in web server for the main instance?

    Why not use IIS for the main instance also? Specially since Adobr recommends not using the built-in webserver for production machines.

    Thanks

    Like

  86. Charlie Arehart said:

    @DK, I’m sure Mike will chime in, but I’ll share a thought: the recommendation against using the built-in web server (BIWS) for production has more to do with the question of load, or of other features that an external web server (like IIS or Apache) may offer that the BIWS doesn’t have.

    Still, it’s not unusual for folks to enable the BIWS only, if only for accessing the administrator. One benefit there is that the port for the BIWS can be restricted differently than would be possible if the Admin were accessible via the external web server.

    Of course, some do go ahead and provide access to the Admin through their external web server. There are certainly additional security mechanisms (like Digest Authentication) that may suffice for protection.

    With respect to multiple instances, and where one leaves the cfusion instance to be used only for accessing its Admin to use the Enterprise Manager (meaning they don’t don’t use it to serve up code, don’t define datasources within it, etc., but only use it to manage the other isntances), I could see them regarding that as something to access only through the BIWS. But there’s no technical reason to favor it or not, I don’t think.

    Like

  87. Charlie Arehart said:

    Let me rephrase one of those paragraphs: “Still, it’s not unusual for folks to enable the BIWS, if only for accessing the administrator. One benefit is that the port for the BIWS can be firewall-restricted differently than would be possible if the Admin were accessible via the external web server, along with all other apps, via port 80.”

    Like

  88. Thanks Charlie; it does makes sense. I will use the inbuilt webserver and give it a try.

    Like

  89. Mark Ireland said:

    @Alonso

    Make any progress getting session replication across the blades working?

    Like

  90. Nice Post, thanks.
    I have read and learned a lot about IP, software and computer programming through your blog.
    I’m subscribing
    Thanks again and keep the good Information comming.

    Craigslist IP Software

    Like

  91. Nice Post, thanks.
    I have read and learned a lot about IP, software and computer programming through your blog.
    I’m subscribing
    Thanks again and keep the good Information comming.

    Craigslist IP Software

    Like

  92. I am having 2 DNS server, 2 web server and 2 CF servers. 2 DNS servers acting as LB, 2 CF servers are in Multi-instance cluster setup.

    I have following queries:

    – Where do I run the WSCONFIG command? on external Web Server or CF server?

    – If it should be run on external Web Server, is the below command correct?
    “./wsconfig -ws apache -dir /etc/httpd/conf -host , -cluster CLU1 -coldfusion -cfwebroot /var/cfroot/ -v”
    Is it correct?

    Please advise.

    Like

  93. I’ve been beating my head against a wall trying to register a remote instance and kept getting “Network error”. I’ve found several people in the same predicament without a solution. I then found step 18:
    http://livedocs.adobe.com/coldfusion/8/htmldocs/help.html?content=clustering_6.html

    My servers were not on the same subnet and therefore, per the article, I had to “add the IP addresses of the other JRun servers in the cluster to the jrun.trusted.hosts property”. This threw me at first; even though I updated the local server’s property I still got the same error. When I added my local server’s IP (the server hosting the instance on which I’m using Instance Manager) to the remote server, AND restarted the instance(s), I met with success. HTH

    Like

  94. @Mark

    Hi Mark sorry for the extreme delay getting back to you, I got caught up in other projects for the majority of the year but have moved back on this again. So far we are trying top get session replication working across 4 instances in 2 different Solaris containers on the same machine. Once this works we will clone the environment and try across 2 physical machines.

    At the moment using a single physical server the sessions seem to be replicating fine all though we do experience some faults every so often where the replication seems to stop or take forever i.e. we can sign in and we seem to be signed in on all servers; however the sign out seems to bug out every so often. This in turn means we may be signed out of one instance yet the other 3 will still regard us as being sign in. I’m pretty sure this is more to do with our application then anything specific to ColdFusion.

    Like

  95. I hope you folks can help me.

    Ive got 4 sites set up on IIS 6, each with its own IP address/domain name. These are currently html sites. (Partech.com, parlms.com, pargovernment.com and springermiller.com). I have these same sites set up in a development area set up with the same configuration.

    They were written by an outside firm and weve found that it takes to long to update them. Press releases take at least an hour to update all of the pages over all of the sites. So Im converting them to CF. Unfortunately at this time Im stuck using CF MX 6.1 Standard, which is connected to the IIS web sever using the distributed mode configuration. The main site, Partech.com, works fine. Its physical location is inetpub/wwwroot on both web server and the CF application server.

    The problem is with the other sites. Their physical location is parallel with the main site. inetpub/wwwroot_parlms, inetpub/wwwroot_gov, and so forth. The start template in all sites is index.cfm.

    When I try to browse to one of the other sites, for example parlms.com, I get back the index.cfm of the main site, partech.com. If I reference an htm file I get back the correct index.htm, therefore I conclude that IIS web server is working correctly. The problem is with the CF server or the connection.

    Ive added the site IPs to the jrun.xml on the CF server.

    Ive checked my jrun.trusted.host entry and it currently has a * (which is ok for my test environment)

    Ive run wsconfig.jar list command and it tells me there are no connected sites. (That one has me puzzled as I do indeed have valid connection that is working)

    I found a tech bulletin [http://kb2.adobe.com/cps/121/121a0b29.html], which states that CFMX can connect to 1 web server, but it doesnt talk about additional websites on the same server.

    Can anyone give me a pointer to some documentation on how to do this? Better yet, tell me how to do this?

    thanks, Jim

    Like

  96. It now runs just like the day it was new.”

    Like

Comments are closed.

Tag Cloud