Let's say I have a fully working, load-balanced application server environment.
All servers have to fail-over gracefully. It's relatively easy to do with the application servers, but how can I achieve fail-over with the front load-balancer?
Can I have multiple load-balancers listening on the same IP and port? Do I have to run a new one as soon as I detect the old one died?
In basic terms:
Basically high availability in an active/passive cluster works the same way nomatter which technologies you're using, so the above applies for Load Balancers, Database Servers, Hypervisors, etc.
In Linux this is done with a combination of tools, one of which is actually called
heartbeat
(and syncing your configs is often done withdrdb
).In Windows, you would generally use Failover Clustering, or Network Load Balancing, both of which offer a virtual IP address shared by multiple servers. Syncing your configs can be done with
DFS-R
for Network Load Balancing, or clustering actually has the ability to share a registry hive and re-configure it in the case of a failover.I will probably test in a few days the following as a high availability load balancer for some "real" web servers:
Pound
as reverse proxy and load balancerKeepalived
takes care of IP failoverI will run an active/passive configuration, i.e. each IP (I have about 20) is active on only one of these servers. If one of this servers fails, the other one takes care of all the IPs. Pound can detect if one of the web server fails and behaves accordingly: Pound does not redirect any request to it until it is healty again.
Not sure if a similar solution can be appied to your application servers, but I fully quote Mark Henderson