QUOTE (MscLimp)
How does this work? Where is the data stored for the domains... on all the servers?
I'm not exactly sure how this would work :?
In Load Balancing, as The Planet is offering it, you buy a packages of services (eg, http, pop3, smtp) and nodes (The Planet IP addresses). You combine your nodes into a pool, which you then attach to a Virtual Server. A Virtual Server specifies the service you are load balancing, the nodes that provide the service and a few other settings.
If one of the nodes in your pool goes offline the load balancer automatically stops sending requests to that node until it's functioning again, assuming the health check for the pool is set up. The health check makes sure the service is working every few seconds.
The nodes in your pool can be any system inside The Planet IP space (that you currently own). The nodes can be systems you currently have in production, or you can buy a node as you need it. Each node would have to have identical content to serve to users.
Additionally, we've built some basic Urchin reporting that uses Urchin's Load Balancing Module which puts (or should, anyway) together a better picture of your traffic than two separate profiles, one for each node. Obviously, the Urchin reports are only useful if your balancing HTTP.
Because of the way we're doing this, the load balancing is being done at what's referred to as the Application layer. This is a trade off for quite a bit of flexibility and functionality. The Planet doesn't have to limit you to machines on a certain part of the network, or the number of nodes, or the services you can balance.
The most noticeable effect of using the application layer is that all of the requests to the nodes appear to come from the load balancer. For HTTP this is easily fixed for the purposes of logging. The Load Balancer will send an 'X-Cluster-Client-Ip' header, which you can then put into a LogFormat directive in apache. For example:
CODE
LogFormat "%{X-Cluster-Client-Ip}i %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" Zeus
(That's all supposed to be all on one line)
You then set the log format "nickname" to be Zeus in the virtualhost configuration on the nodes:
CODE
CustomLog /usr/local/www/vhosts/www.theplanet.com/logs/access_log Zeus
This will cause the logs on the local nodes to reflect the clients real IP. It seems to me that you could go further and use SetEnvIf to distinguish between hits from the load balancer and direct hits, but I haven't had time to come up with a recipe for that yet.