Wednesday, October 26, 2005

Experiments in Load Balancing and High Availability (Part 2)

The Architecture

Let me start by saying that this was just one possible solution...As I investigated and played with this a ton of other possible solutions popped up. This is just one solution I liked putting in place and that worked fine for me.

The following picture illustrates what I was trying to achieve:

The basic infrastructure and functional elements:

  • A firewall to isolate the internal network from the outside. In my testing, achieved by my trusty router with built-in simple firewall.
  • One main load balancer server. Responsible for picking up requests from end-users and directing to server machines available in the defined cluster of servers. Equipped with two network cards.
  • One backup load balancer server. Responsible for monitoring the main load balancer server and picking up for him in case of main load balancer server failure. Equipped with two network cards.
  • A cluster of servers ready to receive requests from the load balancer and ready to do the serious work to fulfill the requests and get the responses.
  • An internal network connecting all machines. In my testing, my five machines (would like to see this number grow!).
  • A dedicated network between main and backup load balancing servers to allow for more reliable and fast monitoring of load balancing servers.

The interactions:

  • A request coming from a user should come via the firewall (router) to the main load balancer
  • The main load balancer should then send over the request based on a configured heuristic to the appropriate server in the cluster.
  • The selected server should fulfill the request and send the request to the end-user.
  • The main load balancers constantly monitors the cluster to remove failed servers or add new added servers.
  • The backup load balancer server constantly monitors the main load balancer server to ensure that it is working, taking over the load balancing function if main load balancer server is detected to be down.

Redundancy of services is therefore present both at the server level and at the load balancing solution level. We should in this way achieve load balancing and high availability.

More to follow in the next parts on this subject:

  • Solutions for Load Balancing Layer, where some possible solutions are discussed, one in particular is presented in detail.
  • Worker Server Clustering, where a solution to a particular problem is presented.
  • Remaining issues

No comments: