1. Introduction

It is a common practice to set up several servers for handling the same task. In such configurations, it is important to distribute the load equally among the computers forming the set. While the term load may refer in this context to various things (e.g. CPU load, network traffic, etc.), the main principle of load balancing remains the same: determine which servers are less loaded and transfer to them part of the work from the most loaded ones.

SLB (or Simple Load Balancer) is a tool designed for handling this task. It monitors a set of servers and uses SNMP protocol to periodically collect a set of parameters from each of them. Once obtained, these parameters are used as arguments to a load estimation function, which computes, for each server, a floating point value representing its relative load. SLB then sorts servers in the order of increasing relative load.

SLB does not attempt to actually correct load distribution, as this task depends heavily on the kind of work the servers are performing and it is difficult, if not impossible, to provide a generalized solution for that. Instead, SLB relies on an external program which is supposed to redistribute the load, based on the data obtained from SLB. Therefore, after obtaining the sorted list of servers, SLB filters it through a user-defined format template, and sends the result to a file, a named pipe or another program.

All parameters used by SLB, including load estimation function, are supplied to it in a configuration file, which makes the package extremely flexible.

When speaking about the package as a whole, we spell its name as SLB. When speaking about the program which constitutes the principal part of the package, we refer to it as slb.