Next: Perl-style (POD) documentation
Up: Load balancing
Previous: Load balancing
  Contents
Of course, when implementing a load balancer, care must be taken to implement
a good load balancer. Although it is not ProtoWrap's main goal nor focus,
some points should be taken into account:
- Load balancing is closely related to high availability. If a system in our sample
pseudo-cluster were to fail, it would be disastrous to have one third of the
requests be forwarded to a dead server. Not only would it give a bad image for
our service, but it would also hog down ProtoWrap's server, having it handle
a large number of TCP connections waiting to be established. A possible mechanism
would be to have the parent process ping the server machines at frequent, regular
intervals, and as soon as one of them does not answer the ping, remove it from
the destAddr list. Of course, once it is back online, add it back to the list.
- A good load balancer does not only send a packet to each server. A good load
balancer keeps track of how each of the servers is responding and sends each
following request to the least loaded one -- at least, allows the administrator
to specify the priority for each computer (for example, a 800MHz Athlon should
recieve at least twice the hits as a 500MHz Pentium II). An extension could
be written to periodically query the servers for their load average, or the
simpler approach (allowing the administrator to specify priorities when creating
the wrapper) could be used. Maybe allowing the administrator to specify the
same IP address more than once would be enough for the most basic needs.
Anyway, load balancing can become a very useful characteristic for ProtoWrap,
and it will very likely be added in the near future.
Next: Perl-style (POD) documentation
Up: Load balancing
Previous: Load balancing
  Contents
Gunnar Wolf
2001-03-12