lbcd

Warning

This package is orphaned. Although I believe it is still useful, I no longer use this method of DNS load balancing and am no longer maintaining this package. If you would like to pick up maintenance of it, please feel free. Contact me if you would like this page to redirect to its new home.

Blurb

lbcd is a daemon that runs on a UNIX system and answers UDP queries with information about system load, number of logged-on users, uptime, and free /tmp space. This information can be used to accumulate system status across a cluster with light-weight queries or can be used as input to a load-balancing system to choose the best system to which to direct new incoming connections.

Description

lbcd provides a lightweight way to query a system via unauthenticated UDP for system load information plus some related information that may be relevant to determining which system to hand out. It was designed for use with the lbnamed DNS load balancer. System load, number of logged-in users, free /tmp space, and system uptime are always returned. lbcd can also be configured to probe various local services and modify the returned weights based on whether those services are reachable, or to return a static weight for round-robin load balancing.

The information provided isn't particularly sophisticated, and a good hardware load balancer will be able to consider such things as connection latency and responsiveness to make better decisions. However, lbcd with lbnamed works well for smaller scale problems, scales to multiple load balance pools for different services, provides a simple UDP health check service, and is much simpler and cheaper to understand and deploy.

Included in this package is a small client program, lbcdclient, which can query an lbcd server and display a formatted version of the returned information.

It was originally written by Roland Schemers. Larry Schwimmer rewrote it to add protocol version 3 with some additional features and service probing, and then I rewrote it again to update the coding style and use my standard portability layer.

Requirements

lbcd is written in C, so you'll need a C compiler. It also uses kernel calls to obtain load and uptime information, and at present has only been ported to Linux, Solaris, AIX, various BSD systems, Mac OS X, HP-UX, IRIX, and Tru64. It is primarily tested on Linux. Platforms not listed may require some porting effort, as may old or unusual platforms that aren't regularly tested.

The lbcdclient program requires Perl 5.6 or later and requires the IO::Socket::INET6 module for IPv6 support.

To bootstrap from a Git checkout, or if you change the Automake files and need to regenerate Makefile.in, you will need Automake 1.11 or later. For bootstrap or if you change configure.ac or any of the m4 files it includes and need to regenerate configure or config.h.in, you will need Autoconf 2.64 or later.

Download

The distribution:

lbcd 3.5.2 2015-04-27 tar.gz (PGP signature) tar.xz (PGP signature)

An archive of older releases is also available.

A Debian package is included in Debian 5.0 (lenny) and later releases. Thanks to Guido Guenther for doing the initial upload to Debian. This package is currently orphaned. If you want it to remain in Debian, consider adopting it. See the Debian package tracker for more information.

lbcd is maintained using the Git version control system. To check out the current development tree, see GitHub or clone:

    https://git.eyrie.org/git/system/lbcd.git

Pull requests on GitHub are welcome. You can also browse the current development source.

Documentation

User documentation:

Developer documentation:

License

The lbcd package as a whole is covered by the following copyright and license:

Copyright 1993-1994, 1996-1998, 2000, 2003-2009, 2012-2014 The Board of Trustees of the Leland Stanford Junior 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.

Some individual source files are covered by other, compatible licenses. For complete copyright and license information, see the file LICENSE in the lbcd source distribution.

Last spun 2022-12-12 from thread modified 2022-06-12