Options described in this section apply to all backends.
Arguments that should be replaced by actual text are shown in
brackets <>.
argsfile <filename>
The (absolute) name of a file that will hold the lloadd
server's command line (program name and options).
concurrency <integer>
Specify a desired level of concurrency. Provided to the
underlying thread system as a hint. The default is not to
provide any hint.
feature <feature> [...]
Switch additional features supported by the LDAP Load
Balancer on. Supported features are:
proxyauthz
when proxying an operation, pass the
client's authorized identity using the proxy
authorization control (RFC 4370). No control
is added to the operation if initiated by a
client whose bound identity matches the
identity configured in bindconf
(no
normalisation of the DN is attempted).
If SASL binds are issued by clients and this
feature is enabled, backend servers need to
support LDAP Who Am I? extended operation
for the Load Balancer to detect the correct
authorization identity.
include <filename>
Read additional configuration information from the given
file before continuing with the next line of the current
file.
io-threads <integer>
Specify the number of threads to use for the connection
manager. The default is 1 and this is typically adequate
for up to 16 CPU cores. The value should be set to a
power of 2.
If modified after server starts up, a change to this
option will not take effect until the server has been
restarted.
logfile <filename>
Specify a file for recording lloadd debug messages. By
default these messages only go to stderr, are not recorded
anywhere else, and are unrelated to messages exposed by
the loglevel
configuration parameter. Specifying a logfile
copies messages to both stderr and the logfile.
loglevel <integer> [...]
Specify the level at which debugging statements and
operation statistics should be syslogged (currently logged
to the syslogd
(8) LOG_LOCAL4 facility). They must be
considered subsystems rather than increasingly verbose log
levels. Some messages with higher priority are logged
regardless of the configured loglevel as soon as any
logging is configured. Log levels are additive, and
available levels are:
1 (0x1 trace)
trace function calls
2 (0x2 packets)
debug packet handling
4 (0x4 args)
heavy trace debugging (function
args)
8 (0x8 conns)
connection management
16 (0x10 BER)
print out packets sent and
received
64 (0x40 config)
configuration file processing
256 (0x100 stats)
connections, LDAP operations,
results (recommended)
512 (0x200 stats2)
stats log entries sent
32768 (0x8000 none)
only messages that get logged
whatever log level is set
The desired log level can be input as a single integer
that combines the (ORed) desired levels, both in decimal
or in hexadecimal notation, as a list of integers (that
are ORed internally), or as a list of the names that are
shown between parentheses, such that
loglevel 513
loglevel 0x201
loglevel 512 1
loglevel 0x200 0x1
loglevel stats trace
are equivalent. The keyword any
can be used as a shortcut
to enable logging at all levels (equivalent to -1). The
keyword none
, or the equivalent integer representation,
causes those messages that are logged regardless of the
configured loglevel to be logged. In fact, if loglevel is
set to 0, no logging occurs, so at least the none
level is
required to have high priority messages logged.
The loglevel defaults to stats
. This level should usually
also be included when using other loglevels, to help
analyze the logs.
pidfile <filename>
The (absolute) name of a file that will hold the lloadd
server's process ID (see getpid(2)).
sockbuf_max_incoming_client <integer>
Specify the maximum LDAP PDU size accepted coming from
clients. The default is 262143.
sockbuf_max_incoming_upstream <integer>
Specify the maximum LDAP PDU size accepted coming from
upstream connections. The default is 4194303.
tcp-buffer [listener=<URL>] [{read|write}=]<size>
Specify the size of the TCP buffer. A global value for
both read and write TCP buffers related to any listener is
defined, unless the listener is explicitly specified, or
either the read or write qualifiers are used. See tcp(7)
for details. Note that some OS-es implement automatic TCP
buffer tuning.
threads <integer>
Specify the maximum size of the primary thread pool. The
default is 16; the minimum value is 2.
threadqueues <integer>
Specify the number of work queues to use for the primary
thread pool. The default is 1 and this is typically
adequate for up to 8 CPU cores. The value should not
exceed the number of CPUs in the system.
max_pdus_per_cycle <integer>
If set to 0, PDUs are handled by the I/O threads directly,
otherwise a task is queued to be picked up by the thread
pool. This task will process PDUs from the connection
until there is no more data to be read or this limit is
reached when the I/O thread can pick it up again. Very
high values have a potential to cause some connections to
be starved in a very high-bandwidth environment. The
default is 1000.
client_max_pending <integer>
Will cause the load balancer to limit the number
unfinished operations for each client connection. The
default is 0, unlimited.
iotimeout <integer>
Specify the number of milliseconds to wait before forcibly
closing a connection with an outstanding write. This
allows faster recovery from various network hang
conditions. An iotimeout of 0 disables this feature. The
default is 10000.
write_coherence <integer>
Specify the number of seconds after a write operation is
finished that lloadd
will direct operations exclusively to
the last selected backend. A write operation is anything
not handled internally (certain exops, abandon), except
search, compare and bind operations. Bind operations also
reset this restriction. The default is 0, write operations
do not restrict selection. When negative, the restriction
is not time limited and will persist until the next bind.
restrict_exop <OID> <action>
Tell lloadd
that extended operation with a given OID
should be handled in a specific way. OID 1.1
is special,
setting a default (only for operations not handled
internally). The meaning of the <action>
argument is the
same as in restrict_control
below.
restrict_control <OID> <action>
Tell lloadd
that a control with a given OID attached to
any operation should be handled in a specific way
according to the <action>
argument. At the moment, only
operations passed intact are inspected in this way, in
particular, controls on bind and extended operations are
not
checked.
In order of descending priority (the control with highest
priority action wins), this is the action made:
reject
operations that carry this control will be
rejected.
connection
once an upstream is selected, every future
operation from this client will be directed
to the same connection. Useful when state is
shared between client and upstream that the
load balancer doesn't track.
backend
like write
except this does not time out.
write
this is treated like a write operation (see
write_coherence
) above.
ignore
does not influence restrictions, useful when
changing the global exop default. This is
the default handling for exops/controls not
handled by the load balancer internally.