\==[doc]      [2] [\bullet(packed)[\link[\1][\2]]]
\==[program]  [3]
    [\tablerow[\1 \version[\2]] [\release[\2]]
        [\link[https://archives.eyrie.org/software/\3.tar.gz][tar.gz]
        (\link[https://archives.eyrie.org/software/\3.tar.gz.asc]
              [PGP signature])]
        [\link[https://archives.eyrie.org/software/\3.tar.xz][tar.xz]
        (\link[https://archives.eyrie.org/software/\3.tar.xz.asc]
              [PGP signature])]]
\==[download] [3]
    [\1 \version[\2]\break
     \link[https://archives.eyrie.org/software/\3.tar.gz][tar.gz]
     (\link[https://archives.eyrie.org/software/\3.tar.gz.asc]
           [signature])\break
     \link[https://archives.eyrie.org/software/\3.tar.xz][tar.xz]
     (\link[https://archives.eyrie.org/software/\3.tar.xz.asc]
           [signature])\break
    Released \release[\2]]

\heading[lbcd][software]

\h1[lbcd]

\div(sidebar)[
    \h2[Download]

    \download[lbcd][lbcd]
        [system/lbcd-\version[lbcd]]

    \link[https://packages.debian.org/source/sid/lbcd]
         [Debian packages] \break
    \link[https://archives.eyrie.org/software/ARCHIVE/lbcd/]
         [Archive]

    \h2[Documentation]

    \link[readme.html][General overview] \break
    \link[news.html][Change summary] \break
    \link[lbcd.html][lbcd manual page] \break
    \link[lbcdclient.html][lbcdclient manual page]

    \h2[Development]

    \link[https://github.com/rra/lbcd]
         [GitHub] \break
    \link[https://git.eyrie.org/?p=system/lbcd.git]
         [Git repository] \break
    \link[https://tracker.debian.org/pkg/lbcd]
         [Debian package tracker] \break
]

\h2[Warning]

\class(alert)[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.

\h2[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.

\h2[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 \link[https://www.stanford.edu/~riepel/lbnamed/][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 quite well for smaller scale problems, scales well 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.

\h2[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 currently 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.

\h2[Download]

The distribution:

\table[][
    \program[lbcd][lbcd]
        [system/lbcd-\version[lbcd]]
]

An \link[https://archives.eyrie.org/software/ARCHIVE/lbcd/] [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.  See the
\link[https://tracker.debian.org/pkg/lbcd][Debian package tracker] for
more information.

lbcd is maintained using the Git version control system.  To check out the
current development tree, see \link[https://github.com/rra/lbcd][GitHub]
or clone:

\pre[    https://git.eyrie.org/git/system/lbcd.git]

Pull requests on GitHub are welcome.  You can also
\link[https://git.eyrie.org/?p=system/lbcd.git][browse the current
development source].

\h2[Documentation]

User documentation:

\doc[readme.html][README]
\doc[news.html][Change summary]
\doc[lbcd.html][lbcd manual page]
\doc[lbcdclient.html][lbcdclient manual page]
\doc[license.html][License and copyright]

Developer documentation:

\doc[https://github.com/rra/lbcd]
    [GitHub]

\h2[License]

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

\block[

    Copyright 1993-1994, 1996-1998, 2000, 2003-2009, 2012-2013
        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
\link[license.html][LICENSE] in the lbcd source distribution.

\signature
