1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
|
format: v1
name: lbcd
maintainer: Russ Allbery <eagle@eyrie.org>
version: 3.4.2
synopsis: responder for load balancing
license:
name: Expat
copyrights:
- holder: The Board of Trustees of the Leland Stanford Junior University
years: 1993-1994, 1996-1998, 2000, 2003-2009, 2012-2013
build:
autoconf: '2.64'
automake: '1.11'
autotools: true
lancaster: true
middle: |
lbcd looks for `$sysconfdir/nolbcd` and returns the maximum load if that
file is present, allowing one to effectively drop a system out of a
load-balanced pool by touching that file. By default, the path is
`/usr/local/etc/nolbcd`, but you may want to pass `--sysconfdir=/etc` to
configure to use `/etc/nolbcd`.
lbcdclient is written in Perl, so you may have to edit the first line of
the script to point to the correct Perl location on your system. It does
not use any sophisticated Perl features or add-on modules.
suffix: |
You will generally want to start lbcd at system boot. All that is needed
is a simple init script to start lbcd with the appropriate options or kill
it again. It writes its PID into `/var/run/lbcd.pid` by default (and this
can be changed with the `-P` option). On many systems, lbcd will need to
run as root or as a member of particular groups to obtain system load
average and uptime information.
type: Autoconf
distribution:
section: system
tarname: lbcd
version: lbcd
debian:
summary: |
A Debian package is included in Debian 5.0 (lenny) and later releases.
Thanks to Guido Guenther for doing the initial upload to Debian.
packaging:
debian: lbcd
support:
email: eagle@eyrie.org
listname: lbnamed-users
listurl: https://mailman.stanford.edu/mailman/listinfo/lbnamed-users
web: https://www.eyrie.org/~eagle/software/lbcd/
vcs:
browse: https://git.eyrie.org/?p=system/lbcd.git
github: rra/lbcd
type: Git
url: https://git.eyrie.org/git/system/lbcd.git
docs:
user:
- name: lbcd
title: lbcd manual page
- name: lbcdclient
title: lbcdclient manual page
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.
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.
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](https://www.stanford.edu/~riepel/lbnamed/). 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.
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.
test:
suffix: |
Currently, the test suite only checks the portability and utility
libraries, not the functionality of lbcd or lbcdclient.
|