Typically in a n (usually 3) tier web architecture, you have the possibility for failure at all n tiers and thats why you implement redundancy at each.
If you're not currently using a web tier like apache or sunone, what is routing your requests to glassfish, and how are you protecting that from single point of failure?
If it's not a hardware loadbalancer like an F5, then I'm assuming you're using round-robin dns straight to the glassfish transports? That's just as unreliable if not more so than having a single web server.
What we do is we have a set of F5's, one master one stand-by, and those do a dumb round-robin to a handful of webservers, which utilize a lb plugin (in our case, mod_jk) which supports sticky sessions and a handful of balancing algorithms.
This way, if we have 4 glassfish instances and number 1 fails, the jvm-route is tacked on to the end of the session-id and when the request heads back to that instance and it appears to be down, it'll get routed to another instance where the session should be replicated to.
HTH,
Andrew
[Message sent by forum member 'areplogle' (areplogle)]
http://forums.java.net/jive/thread.jspa?messageID=324797