This is a long thread, and I've only read the first entry so
far. Here is my response to the first entry, and when I catch up to
the end I'll post more....
-------------------------------
quote:
Box 1, let's call it, has my cluster, which contains 1) a
single instance of itself, 2) a single remote instance from Box 2,
and 3) a single remote instance from Box 3. I've made the
assumption that having multiple boxes is where the real benefit
from load balance and fail-over kicks in. E.g., if Box 1 goes down,
Box 2 and 3 will pick up, and vice versa. Is that a correct
assumption or understanding of how CF cluster fail-over and load
balance work?
Defining a single cluster across three instances on three
separate boxes introduces a single point of failure; In a robust
setup, a webserver instance on a fourth box would be configured to
connect to the ColdFusion cluster at the point of the first CF
instance on box 1 (a.k.a. the bootstrap server). If that CF
instance on box 1 fails (by crashing or queuing excessively) then
the webserver conenctor on box 1 will begin to load balance traffic
to the CF instances on box 2 and box 3. The load balancing
configuration would functioning propertly at this point. However, a
serious problem arises if box 1 goes down entirely (say a hardware
failure), then that webserver connector on box 1 would not be able
to route traffic to box 2 or box 3 since neither are directly
connected to a webserver. Hence, CF instances on box 2 and 3 would
not be able handle requests from the webserver on box 4 because the
point of entry (the connector on box 1) is unavailable.
Fortunately, and additional layer of redundancy solves this
problem (partly). To eliminate a single point of failure created by
having only one cluster definitiion with one webserver connector,
create 3 clusters each having 3 instances across the 3 boxes, where
each cluster has cluster members on each box. To clarify, this
would be how I would set this up:
Box 1) Three CF instances, called Box1-A, Box1-B, and Box1-C
Box 2) Also three CF instances, Box2-A, Box2-B, Box2-C
Box 3) Same... Box3-A, Box3-B, Box3-C
Box 4)A webserver having 3 virtual instances. Say,
www1.company.com, www2.company.com, www3.company.com where each of
those is roundrobined by a single www.company.com DNS entry.
Cluster A) Created on Box1 having cluster members Box1-A,
Box2-A, Box3-A
(Bootstrap server is Box1-A)
Cluster B) Created on Box2 having cluster members Box1-B,
Box2-B, Box3-B
(Bootstrap server is Box2-B)
Cluster C) Created on Box3 having cluster members Box1-C,
Box2-C, Box3-C
(Bootstrap server is Box3-C)
In this configuration, each webserver instance on Box 4 is
independently configured to connect to either Cluster A, Cluster B,
or Cluster C respectively.
This is a much more redundant and reliable configuration than
previous. Now, any of box1, box2, or box3 can go down entirely and
traffic will be receieved by the remaining clusters and balanced
across the boxes still up.
Unfortunately, there's still a flaw here since there is still
a single point of failure, box4 having 3 instances of a webserver.
Should box4 fail, then boxes 1, 2, and 3 are dead in the water.
The solution here is obvious, convert a single box having 3
webserver instances to 3 boxes (box 4, 5, and 6) having independent
webservers each connected to one of the CF cluster definitions.
Perhaps the best resource for understanding redundant
ColdFusion clustering is Brandon Purcell's articles on Adobe.com:
End
to End Clustering with ColdFusion by Brandon Purcell
Another good resource is this blog entry which surveys a
variety of articles on CF clustering:
Clustering
Roundup by Brandon Harper
quote:
Now here's one of my actual questions: after all this it
comes back saying "This web server is already configured for Jrun".
99% of the time I'm sure folks will have a web server already
running when the install CF, so of course CF is going to configure
it. Why then did the instructions tell me to do this, or rather NOT
tell me to uninstall the original Apache config?
The wsconfig utility (Web Server Configuration utility)
examines the file
{CF_ROOT}/runtime/lib/wsconfig/wsconfig.properties to determine if
any webservers are configured for already or not. (On full JRun
with CF it will be {JRUN_ROOT}/lib/wsconfig/wsconfig.properties
For example, an entry like this would indicate one instance
called coldfusion on localhost is configured at the global level
(0) for IIS:
1=IIS,0,true,""
1.srv=localhost,"coldfusion"
1.cfmx=true,C:/CFusionMX7/wwwroot
Its possible that a previous attempt to configure the
webserver may have writted an entry to this file, even if the
configuration failed. If wsconfig tells you that an instance of CF
is already configured for the webserver, then you should verify
what's in this file as well as verify if there is any leftovers of
a previous misconfiguration.
quote:
So at that point I ran config again, REMOVED the Apache web
server, and re-added it using my cluster (followed the exact same
instructions from above). This time it worked fine. But here's
where it gets interesting.
Running REMOVE clears out the wsconfig.properties file and
cleans up and leftovers from a previous misconfiguration.
quote:
When I went back to my CF Admin for this box the Enterprise
Manager nav button/control panel for managing my instances and
clusters was gone! Why?
I've not heard of this problem. I'd like to try to set this
up to see if I can replicate it, but since I'm not on the
ColdFusion support or engineering team anymore it may be difficult
to get the time to do so.
quote:
Is there any difference in the way CF8 handles clustering and
load balance compared to CF7 or even CF6.1?
Fundementally, no. CF7 introduced the Cluster Manger in the
CF Admin (previously this was done through the JRun Admin followed
by many manual steps). CF8 and CF7 have introduced bug fixes, but
essentially it is the same over the last 5 years.
quote:
Since Adobe is discontinuing support for Jrun, what will
future versions of CF use to accomplish clustering?
JRun server is an integral part of ColdFusion Server Config
and ColdFusion Multiserver Config. You can expect support for it so
long as you have support for the corresponding version(s) of
ColdFusion that utilize JRun. You may have read references to
discontinuation of JRun as an independently sold product that may
have been confusing on this point.