Load Balancing, high availability, and others
The mail goals of Load Balancer is provide high availability, load
balancing with simple configuration, and cheap hardware equipment.
Also, Load Balancer aims to be full extendable, and fully
configurable without sacrifing ease of user & configuration.
I understand Load Balancing as the ability of balance request between
servers, so the workload is splitted across the servers, giving a more
uniform response time.
I understand High Availability as the ability of serve requests without
any interruption in the service.
... And others
Today, we need reliable, high available systems, to attend the requests
done by the clients. There are lots of tools (hardware and software) to
do this work, but usually there are too expensive or too complex to
use them in a medium-sized site. Also, this tools usually require
some complex configuration, and special network topologies. Another
drawback for this services is the lack of protocol-specific details
that they have (usually, some 'known' services (HTTP, FTP, etc) are
fully supported, but another ones (e.g. propietary protocols, or
some less known) are poor supported, or none. Load Balancer is fully
extensible in the plugin way; you can create your own proxies for your
protocols (allowing these to be balanced, high available ones) or
use the plugins that comes with Load Balancer.
Also, Load Balancer allows you to have clusters of servers so you can
split traffic using the client request (e.g. dealing with http traffic,
you can create a cluster to server cgi-bin scripts, another cluster to
server html pages, and another one to serve images), isolating load
from them. Load Balancer support IP filter address, so you can deny
access to a range of clients, or balance them into another cluster
(e.g. you can balance by geographical distribution).
Basically, Load Balancer works like a proxy does, but it has some
code to manage the status of the clusters in server farm, to
balance the request between the servers, and to do the proxy work
for the client to the server. Load Balancer doesn't know nothing
about the protocols (unless you use / program a plugin that manages
thet protocol in a smart way) so the Load Balancer is fully
transparent to the client. In the next section I talk about the
internal details, and the plugin configuration.