Man Linux: Main Page and Category List

NAME

       lbcd - Report system load for remote load balancing

SYNOPSIS

       lbcd [-dhlRrt] [-b address] [-c command] [-P file] [-p port]
       [-T seconds] [-w weight]

       lbcd -s [-P file]

DESCRIPTION

       lbcd runs as a daemon and reports various system utilization
       information and optionally service status information via a UDP network
       protocol.  It is designed to run on the client systems of a remote load
       balancing system, such as the DNS-based lbnamed load balancer.

       lbcd supports two different query protocols, version two and version
       three.  (Currently, lbnamed only supports version two queries.)  Either
       will return the current time according to that system, the time of the
       last system boot, the time the information about logged in users last
       changed, the load averages (one, five, and fifteen minute), the total
       and unique logged in users, whether a user is logged in on console,
       percentage full of the system /tmp directory is full, and percentage
       full of the system /var/tmp directory.  (See, however, the note below
       about how some of this data is replaced with calculated weights for
       version two responses.)  The version three protocol can also return
       weight and increment information about a set of services.

       The service information is based around a model that returns a weight
       (indicating the current utilization of the box -- the higher, the
       busier) and an increment (an estimate of how much the utilization will
       increase for each additional connection directed to this box) which
       defaults to one.  The intent is for the load balancer to query the
       system periodically, using the returned weight as the system load, and
       to estimate the system load between queries of lbcd as the last
       returned weight plus the last returned increment times the number of
       connections directed to that system.  By default, only one service is
       returned.  That service weight is calculated as follows:

           (<uniq-users> * 100 + 300 * <one-minute-load>
               + (<total-users> - <unique-users>) * 20) * <tmp-penalty>

       where <tmp-penalty> is a multiplier applied for the most full of /tmp
       and /var/tmp ranging between 2 for 90-93% full up to 32 for 100% full.
       If /tmp or /var/tmp are completely full, the maximum possible weight
       will be returned.  If you want to use a simple load average instead,
       pass the -S option to lbcd and then the load service will use only the
       one-minute load.

       Since lbnamed calculates the weight from the one minute load and the
       number of logged-in users and currently only supports version two, lbcd
       will replace the one-minute load with the weight of the primary service
       when responding to a version two query and will set all of the user
       numbers to zero unless -S was given.  If -S was given, the values
       returned will be left alone.  (This means that -S will override -R for
       version two queries, since -R is equivalent to specifying a service of
       rr.)

       lbcd responds to any UDP packets on port 4330 (or the port given with
       the -p option).  It has no built-in security, so if you do not want to
       disclose the above information to random systems on the Internet, you
       will want to limit access to this port using iptables, firewall rules,
       or other similar measures.

       By default, lbcd listens on all addresses and responds on whatever
       address the kernel picks for outgoing packets.  lbnamed sends out all
       of its packets and then waits for replies and uses the source address
       of the reply packet to associate that reply with one of the queried
       hosts.  This means that if lbnamed is not configured to query the same
       address as the kernel picks for lbcd to respond on, the response may be
       ignored and the host considered down.  To work around this, use the -b
       flag on hosts with multiple interfaces to ensure that replies go out on
       the interface being queried.  If a host has multiple IP addresses that
       will be queried, run multiple instances of lbcd, one for each
       interface.

OPTIONS

       -b address
           By default, lbcd binds to all available addresses.  If this option
           is given, lbcd binds only to the specified address and will only
           answer UDP queries to that address.

       -c command
           Obtain the service weight and increment by running an external
           command.  This command should print to standard output one line
           containing two integer numbers, separated by whitespace.  The first
           number is taken to be the weight and the second number is taken to
           be the increment.  (As mentioned above, when responding to version
           two protocol queries, the weight is returned as the one-minute load
           average.)

       -d  Don’t run as a daemon (meaning don’t fork and detach from a tty) to
           make it easier to run lbcd inside a debugger.

       -h  Print out usage information and exit.

       -l  Currently does nothing.  Eventually this will tell lbcd to log all
           received requests, but this has not yet been implemented.

       -P file
           Use file to store the PID of the running lbcd process and as the
           file to read for the -r and -s options, rather than the default of
           /var/run/lbcd.pid.

       -p port
           Listen on port rather than the default of 4330.

       -R  Use round-robin as the service.  This will always return a weight
           of one and an increment of one.  It is equivalent to -w rr.  For
           version two responses, it will always return a one-minute load of
           one regardless of the actual load average of the system (unless -S
           is used).

       -r  Restart a running lbcd process.  This stops the existing lbcd
           process by killing the PID named in /var/run/lbcd.pid or the file
           given with the -P option and then starts as the new lbcd process.

       -S  When answering version two queries, do not attempt to adjust for
           lbnamed’s logic and force it to use the service weight.  Instead,
           report the load averages and number of logged in users accurately.
           This means that version two responses will not contain any
           information derived from custom services or weight settings and the
           -c, -w, and -R options will be ignored for version two repsonses.

       -s  Stop an existing lbcd process by killing the PID named in
           /var/run/lbcd.pid or the file given with the -P option.

       -T seconds
           Use a timeout of seconds when doing service probes (including
           running a command with -c).  The default is five seconds.

       -w weight
           Specify either a service to probe or a weight and increment to
           always return.  weight can be a string of the form weight:increment
           where both weight and increment are numbers, in which case that
           weight and increment will always be returned.  Alternately, it can
           be the name of a service module, in which case that service will be
           probed and its weight will be returned as the service weight (and
           the one-minute load with version two queries).

           The currently supported services are load (the default), ftp, http,
           imap, nntp, ntp, pop, smtp, tcp, and rr (round-robin, the same as
           -R).  The http and tcp services must be followed by a colon and a
           port number.

FILES

       /var/run/lbcd.pid
           The default location of the PID file.  lbcd puts its PID in this
           file when it starts, and refers to this file for the -r and -s
           commands.  The file location can be changed with -P.

SEE ALSO

       lbcdclient(1)

       The current version of this program is available from its web page at
       <http://www.eyrie.org/~eagle/software/lbcd/>.

AUTHORS

       Originally written by Roland Schemers and Larry Schwimmer.  Currently
       maintained by Russ Allbery <rra@stanford.edu>.

COPYRIGHT AND LICENSE

       Copyright 1993, 1994, 1996, 1997, 1998, 2000, 2003, 2004, 2005, 2006
       Board of Trustees, Leland Stanford Jr.  University.

       Permission is hereby granted, free of charge, to any person obtaining a
       copy of this software and associated documentation files (the
       "Software"), to deal in the Software without restriction, including
       without limitation the rights to use, copy, modify, merge, publish,
       distribute, sublicense, and/or sell copies of the Software, and to
       permit persons to whom the Software is furnished to do so, subject to
       the following conditions:

       The above copyright notice and this permission notice shall be included
       in all copies or substantial portions of the Software.

       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
       OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
       MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
       IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
       CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
       TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
       SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.