Web server clustering in Blazix is designed to work
with third-party DNS-based load balancers that can distribute
the name resolution over multiple IP addresses.
The DNS server is contacted by the clients to
resolve a host name such as "www.mywebsite.com"
into an IP address. A load-balancer acts as a DNS
server, but everytime a request comes in to resolve the
name "www.mysebsite.com", it may resolve it into any one
of a number of different IP addresses. Thereby the
name "www.mywebsite.com" actually gets served by a
number of different IP addresses.
There are two possibilities -- the DNS server
can resolve the names to the Blazix servers directly.
Alternatively the DNS servers can resolve the names to front end C++ servers.
If front-end servers are being used, each font end server should be attached to one Blazix server.
There is a third type of load balancing sometimes used,
where there is only one front end server but multiple "application
servers", as shown. In this approach, no DNS server is used,
because the name always resolves to one front end IP address.
This load balancing takes advantage of the fact that Java servers sometimes can only be deployed reasonably with a front-end C++ server. However, in this approach the front-end C++ server is a single point of failure. And it must be fast enough to not require any load balancing of its own. With Blazix, since the difference between the front end server and Blazix is not all that great, such a load-balancer would not be very useful. Therefore it is not inclued.
With any type of load-balancing, a server such as Blazix must take care of distributing serializable session data. Blazix offers two choices for backing up session data -- fileserver based or a separate "cluster-server" based. Since fileservers can become a single point of failure, the cluster-server based approach is more robust if extra hardware is available. (Cluster servers should not be based on the same machine as the web-server for maximum reliability.)
Blazix also differentiates between session-aware or "smart" vs "random" load balancers. With "smart" load balancers, it can be assumed that the session data will not be required most of the time (but will be required occasionally.) With "random" load balancing, the session data will be fetched from the fileserver or the cluster-server in a large number of requests. Depending upon this, Blazix uses the appropriate backup strategy to minimize the clustering overhead.