I have a few questions on clustering.
1. I am planning on setting up a new environment using CF8 or CF9 and I want to have two IIS/CF servers but I'd rather not have to deal with changing files in two places and just have a shared location where the code resides that both IIS web servers can access. Is that the right approach or should each IIS/CF server have a copy of the files. At first thought having the files locally on each box seems like it would be faster to access the files but please share if you have any insight.
2. If I have two physical machines each running CF Enterprise, it seems that I can then create multiple instances of ColdFusion on each physical server? Is that right?
3. If question number two is true, then is it fair to assume that I could have 2 physical servers and 4 instances of CF on one physical server and 4 instances of CF on the other? What determines how many instances I should have, do we just guestimate how many instances makes sense? Looking for guidance here I guess...
4. Does one typically setup a shared file storage to store the files for the applications or do you maintain files on each physical ColdFusion server.
5. Do most separate IIS and CF on separate physical boxes?
The best answer probably depends on where you anticipate the load to come from, i.e. "why" you are using a cluster to begin with. If the theoretical delay caused by accessing the filesystem to retrieve the necessary information (allowing for cache behavior, etc.) is on the critical path, then you have to compensate for it. But if other factors, such as database topology or time spent preparing output, are the true sources of "significant" delays, then it does not matter where the files are stored. You really need to determine what that answer will be, and then provide a way to check it (e.g. by examination of log files and other sources of objective statistics).
Version control systems are an excellent tool to use in cases like this. If you do determine that there is an advantage to storing local copies of the files on each server in a cluster, store the authoritative copy of the material in the version-control system, then provide a means to command each server to refresh its files using the most-recent version on the main trunk. (Consider carefully just how they are to do this without disrupting production.)