.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is turned on, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} .el \{\ . de IX .. .\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "L7DIRECTORD 1" .TH L7DIRECTORD 1 "2009-08-12" "perl v5.10.0" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" l7directord \- UltraMonkey\-L7 Director Daemon .PP Daemon to monitor remote services and control UltraMonkey\-L7 .SH "SYNOPSIS" .IX Header "SYNOPSIS" \&\fBl7directord\fR [\fB\-d\fR] [\fIconfiguration\fR] {\fBstart\fR|\fBstop\fR|\fBrestart\fR|\fBtry-restart\fR|\fBreload\fR|\fBstatus\fR|\fBconfigtest\fR} .PP \&\fBl7directord\fR \fB\-t\fR [\fIconfiguration\fR] .PP \&\fBl7directord\fR \fB\-h|\-\-help\fR .PP \&\fBl7directord\fR \fB\-v|\-\-version\fR .SH "DESCRIPTION" .IX Header "DESCRIPTION" \&\fBl7directord\fR is a daemon to monitor and administer real servers in a cluster of load balanced virtual servers. \fBl7directord\fR is similar to \fBldirectord\fR in terms of functionality except that it triggers \fBl7vsadm\fR. \&\fBl7directord\fR typically is started from command line but can be included to start from heartbeat. On startup \fBl7directord\fR reads the file \&\fB/etc/ha.d/conf/\fR\fIconfiguration\fR. After parsing the file, entries for virtual servers are created on the UltraMonkey\-L7. Now at regular intervals the specified real servers are monitored and if they are considered alive, added to a list for each virtual server. If a real server fails, it is removed from that list. Only one instance of \&\fBl7directord\fR can be started for each configuration, but more instances of \&\fBl7directord\fR may be started for different configurations. This helps to group clusters of services. This can be done by putting an entry inside \&\fB/etc/ha.d/haresources\fR .PP \&\fInodename virtual-ip-address l7directord::configuration\fR .PP to start l7directord from heartbeat. .SH "OPTIONS" .IX Header "OPTIONS" .IP "\fIconfiguration\fR:" 4 .IX Item "configuration:" This is the name for the configuration as specified in the file \&\fB/etc/ha.d/conf/\fR\fIconfiguration\fR .IP "\fB\-d\fR" 4 .IX Item "-d" Don't start as daemon. Useful for debugging. .IP "\fB\-h\fR" 4 .IX Item "-h" Help. Print user manual of l7directord. .IP "\fB\-v\fR" 4 .IX Item "-v" Version. Print version of l7directord. .IP "\fB\-t\fR" 4 .IX Item "-t" Run syntax tests for configuration files only. The program immediately exits after these syntax parsing tests with either a return code of 0 (Syntax \s-1OK\s0) or return code not equal to 0 (Syntax Error). .IP "\fBstart\fR" 4 .IX Item "start" Start the daemon for the specified configuration. .IP "\fBstop\fR" 4 .IX Item "stop" Stop the daemon for the specified configuration. This is the same as sending a \s-1TERM\s0 signal to the running daemon. .IP "\fBrestart\fR" 4 .IX Item "restart" Restart the daemon for the specified configuration. The same as stopping and starting. .IP "\fBtry-restart\fR" 4 .IX Item "try-restart" Try to restart the daemon for the specified configuration. If l7directord is already running for the specified configuration, then the same is stopped and started (Similar to restart). However, if l7directord is not already running for the specified configuration, then an error message is thrown and the program exits. .IP "\fBreload\fR" 4 .IX Item "reload" Reload the configuration file. This is only useful for modifications inside a virtual server entry. It will have no effect on adding or removing a virtual server block. This is the same as sending a \s-1HUP\s0 signal to the running daemon. .IP "\fBstatus\fR" 4 .IX Item "status" Show status of the running daemon for the specified configuration. .IP "\fBconfigtest\fR" 4 .IX Item "configtest" This is the same as \fB\-t\fR. .SH "SYNTAX" .IX Header "SYNTAX" .SS "Description how to write configuration files" .IX Subsection "Description how to write configuration files" .IP "\fBvirtual = \fR\fI(ip_address|hostname:portnumber|servicename)\fR" 4 .IX Item "virtual = (ip_address|hostname:portnumber|servicename)" Defines a virtual service by IP-address (or hostname) and port (or servicename). All real services and flags for a virtual service must follow this line immediately and be indented. For ldirectord, Firewall-mark settings could be set. But for l7directord Firewall-mark settings cannot be set. .IP "\fBchecktimeout = \fR\fIn\fR" 4 .IX Item "checktimeout = n" Timeout in seconds for connect checks. If the timeout is exceeded then the real server is declared dead. Default is 5 seconds. If defined in virtual server section then the global value is overridden. .IP "\fBnegotiatetimeout = \fR\fIn\fR" 4 .IX Item "negotiatetimeout = n" Timeout in seconds for negotiate checks. Default is 5 seconds. If defined in virtual server section then the global value is overridden. .IP "\fBcheckinterval = \fR\fIn\fR" 4 .IX Item "checkinterval = n" Defines the number of second between server checks. Default is 10 seconds. If defined in virtual server section then the global value is overridden. .IP "\fBretryinterval = \fR\fIn\fR" 4 .IX Item "retryinterval = n" Defines the number of second between server checks when server status is \s-1NG\s0. Default is 10 seconds. If defined in virtual server section then the global value is overridden. .IP "\fBcheckcount = \fR\fIn\fR" 4 .IX Item "checkcount = n" The number of times a check will be attempted before it is considered to have failed. Note that the checktimeout is additive, so if checkcount is 3 and checktimeout is 2 seconds and retryinterval is 1 second, then a total of 8 seconds (2 + 1 + 2 + 1 + 2) worth of timeout will occur before the check fails. Default is 1. If defined in virtual server section then the global value is overridden. .IP "\fBconfiginterval = \fR\fIn\fR" 4 .IX Item "configinterval = n" Defines the number of second between configuration checks. Default is 5 seconds. .IP "\fBautoreload = \fR[\fByes\fR|\fBno\fR]" 4 .IX Item "autoreload = [yes|no]" Defines if should continuously check the configuration file for modification each \fBconfiginterval\fR seconds. If this is set to \fByes\fR and the configuration file changed on disk and its modification time (mtime) is newer than the previous version, the configuration is automatically reloaded. Default is \fBno\fR. .ie n .IP "\fBcallback = ""\fR\fI/path/to/callback\fR\fB""\fR" 4 .el .IP "\fBcallback = ``\fR\fI/path/to/callback\fR\fB''\fR" 4 .IX Item "callback = ""/path/to/callback""" If this directive is defined, \fBl7directord\fR automatically calls the executable \fI/path/to/callback\fR after the configuration file has changed on disk. This is useful to update the configuration file through \fBscp\fR on the other heartbeated host. The first argument to the callback is the name of the configuration. .Sp This directive might also be used to restart \fBl7directord\fR automatically after the configuration file changed on disk. However, if \fBautoreload\fR is set to \fByes\fR, the configuration is reloaded anyway. .IP "\fBfallback = \fR\fIip_address|hostname[:portnumber|servicename]\fR [\fBmasq\fR]" 4 .IX Item "fallback = ip_address|hostname[:portnumber|servicename] [masq]" the server onto which a web service is redirected if all real servers are down. Typically this would be 127.0.0.1 with an emergency page. .Sp This directive may also appear within a virtual server, in which case it will override the global fallback server, if set. Only a value of \fBmasq\fR can be specified here. The default is \fImasq\fR. .ie n .IP "\fBlogfile = ""\fR\fI/path/to/logfile\fR\fB""\fR|syslog_facility" 4 .el .IP "\fBlogfile = ``\fR\fI/path/to/logfile\fR\fB''\fR|syslog_facility" 4 .IX Item "logfile = ""/path/to/logfile""|syslog_facility" An alternative logfile might be specified with this directive. If the logfile does not have a leading '/', it is assumed to be a \fIsyslog\fR\|(3) facility name. .Sp The default is to log directly to the file \fI/var/log/l7vs/l7directord.log\fR. .ie n .IP "\fBexecute = ""\fR\fIconfiguration\fR\fB""\fR" 4 .el .IP "\fBexecute = ``\fR\fIconfiguration\fR\fB''\fR" 4 .IX Item "execute = ""configuration""" Use this directive to start an instance of l7directord for the named \fIconfiguration\fR. .IP "\fBsupervised\fR" 4 .IX Item "supervised" If this directive is specified, the daemon does not go into background mode. All log-messages are redirected to stdout instead of a logfile. This is useful to run \fBl7directord\fR supervised from daemontools. See http://untroubled.org/rpms/daemontools/ or http://cr.yp.to/daemontools.html for details. .IP "\fBquiescent = \fR[\fByes\fR|\fBno\fR]" 4 .IX Item "quiescent = [yes|no]" If \fByes\fR, then when real or fallback servers are determined to be down, they are not actually removed from the UltraMonkey\-L7, but set weight to zero. If \fBno\fR, then the real or fallback servers will be removed from the UltraMonkey\-L7. The default is \fByes\fR. .Sp This directive may also appear within a virtual server, in which case it will override the global fallback server, if set. .SS "Section virtual" .IX Subsection "Section virtual" The following commands must follow a \fBvirtual\fR entry and must be indented with a minimum of 4 spaces or one tab. .ie n .IP "\fBreal =\fR \fIip_address|hostname[\->ip_address|hostname][:portnumber|servicename\fR] [\fBmasq\fR] [\fIn\fR] [\fB""\fR\fIrequest\fR\fB"", ""\fR\fIreceive\fR\fB""\fR]" 4 .el .IP "\fBreal =\fR \fIip_address|hostname[\->ip_address|hostname][:portnumber|servicename\fR] [\fBmasq\fR] [\fIn\fR] [\fB``\fR\fIrequest\fR\fB'', ``\fR\fIreceive\fR\fB''\fR]" 4 .IX Item "real = ip_address|hostname[->ip_address|hostname][:portnumber|servicename] [masq] [n] [""request, receive""]" Defines a real service by IP-address (or hostname) and port (or servicename). If the port is omitted then a 0 will be used. Optionally a range of \s-1IP\s0 addresses (or two hostnames) may be given, in which case each \s-1IP\s0 address in the range will be treated as a real server using the given port. The second argument defines the forwarding method, it must be \fBmasq\fR only. The third argument defines the weight of each real service. This argument is optional. Default is 1. The last two arguments are optional too. They define a request-receive pair to be used to check if a server is alive. They override the request-receive pair in the virtual server section. These two strings must be quoted. If the request string starts with \fIhttp://...\fR the IP-address and port of the real server is overridden, otherwise the IP-address and port of the real server is used. .IP "\fBmodule =\fR \fIproto-module module-args [opt\-module\-args]\fR" 4 .IX Item "module = proto-module module-args [opt-module-args]" Indicates the module parameter of \fBl7directord\fR. Here \fBproto-module\fR denotes the protocol module name (For example, pfilter). \fBmodule-args\fR denotes the arguments for the protocol module (For example, \-\-pattern\-match '*.html*'). \&\fBmodule-args\fR is optional only when set \fBsessionless\fR, \fBip\fR and \fBsslid\fR module to \fBproto-module\fR. The last argument is optional (For example, \-\-reschedule). .SS "More than one of these entries may be inside a virtual section:" .IX Subsection "More than one of these entries may be inside a virtual section:" .IP "\fBmaxconn =\fR \fIn\fR" 4 .IX Item "maxconn = n" Defines the maximum connection that the virtual service can handle. If the number of requests cross the maxconn limit, the requests would be redirected to the sorry server. .IP "\fBqosup =\fR \fIn\fR[\fBK\fR|\fBM\fR|\fBG\fR]" 4 .IX Item "qosup = n[K|M|G]" Defines the bandwidth quota size in bps for up stream. If the number of the bandwidth is over the qosup limit, a packet to the virtual service will be delayed until the number of bandwidth become below the qosup limit. \&\fBK\fR(kilo), \fBM\fR(mega) and \fBG\fR(giga) unit are available. .IP "\fBqosdown =\fR \fIn\fR[\fBK\fR|\fBM\fR|\fBG\fR]" 4 .IX Item "qosdown = n[K|M|G]" Defines the bandwidth quota size in bps for down stream. If the number of the bandwidth is over the qosdown limit, a packet to the client will be delayed until the number of bandwidth become below the qosdown limit. \&\fBK\fR(kilo), \fBM\fR(mega) and \fBG\fR(giga) unit are available. .IP "\fBsorryserver =\fR\fIip_address|hostname[:portnumber|servicename]\fR" 4 .IX Item "sorryserver =ip_address|hostname[:portnumber|servicename]" Defines a sorry server by IP-address (or hostname) and port (or servicename). Firewall-mark settings cannot be set. If the number of requests to the virtual service cross the maxconn limit, the requests would be redirected to the sorry server. .IP "\fBchecktype = negotiate\fR|\fBconnect\fR|\fIN\fR|\fBping\fR|\fBcustom\fR|\fBoff\fR|\fBon\fR" 4 .IX Item "checktype = negotiate|connect|N|ping|custom|off|on" Type of check to perform. Negotiate sends a request and matches a receive string. Connect only attempts to make a \s-1TCP/IP\s0 connection, thus the request and receive strings may be omitted. If checktype is a number then negotiate and connect is combined so that after each N connect attempts one negotiate attempt is performed. This is useful to check often if a service answers and in much longer intervals a negotiating check is done. Ping means that \s-1ICMP\s0 ping will be used to test the availability of real servers. Ping is also used as the connect check for \s-1UDP\s0 services. Custom means that custom command will be used to test the availability of real servers. Off means no checking will take place and no real or fallback servers will be activated. On means no checking will take place and real servers will always be activated. Default is \fInegotiate\fR. .IP "\fBservice = ftp\fR|\fBsmtp\fR|\fBhttp\fR|\fBpop\fR|\fBnntp\fR|\fBimap\fR|\fBldap\fR|\fBhttps\fR|\fBdns\fR|\fBmysql\fR|\fBpgsql\fR|\fBsip\fR|\fBnone\fR" 4 .IX Item "service = ftp|smtp|http|pop|nntp|imap|ldap|https|dns|mysql|pgsql|sip|none" The type of service to monitor when using checktype=negotiate. None denotes a service that will not be monitored. If the port specified for the virtual server is 21, 25, 53, 80, 110, 119, 143, 389, 443, 3306, 5432 or 5060 then the default is \fBftp\fR, \fBsmtp\fR, \fBdns\fR, \fBhttp\fR, \fBpop\fR, \fBnntp\fR, \fBimap\fR, \&\fBldap\fR, \fBhttps\fR, \fBmysql\fR, \fBpgsql\fR or \fBsip\fR respectively. Otherwise the default service is \fBnone\fR. .IP "\fBcheckport = \fR\fIn\fR" 4 .IX Item "checkport = n" Number of port to monitor. Sometimes check port differs from service port. Default is port specified for the real server. .ie n .IP "\fBrequest = ""\fR\fIuri to requested object\fR\fB""\fR" 4 .el .IP "\fBrequest = ``\fR\fIuri to requested object\fR\fB''\fR" 4 .IX Item "request = ""uri to requested object""" This object will be requested each checkinterval seconds on each real server. The string must be inside quotes. Note that this string may be overridden by an optional per real-server based request-string. .Sp For a \s-1DNS\s0 check this should the name of an A record, or the address of a \s-1PTR\s0 record to look up. .Sp For a MySQL or PostgreSQL checks, this should be a \s-1SQL\s0 query. The data returned is not checked, only that the answer is one or more rows. This is a required setting. .ie n .IP "\fBreceive = ""\fR\fIregexp to compare\fR\fB""\fR" 4 .el .IP "\fBreceive = ``\fR\fIregexp to compare\fR\fB''\fR" 4 .IX Item "receive = ""regexp to compare""" If the requested result contains this \fIregexp to compare\fR, the real server is declared alive. The regexp must be inside quotes. Keep in mind that regexps are not plain strings and that you need to escape the special characters if they should as literals. Note that this regexp may be overridden by an optional per real-server based receive regexp. .Sp For a \s-1DNS\s0 check this should be any one the A record's addresses or any one of the \s-1PTR\s0 record's names. .Sp For a MySQL check, the receive setting is not used. .IP "\fBhttpmethod = \s-1GET\s0\fR|\fB\s-1HEAD\s0\fR" 4 .IX Item "httpmethod = GET|HEAD" Sets the \s-1HTTP\s0 method, which should be used to fetch the \s-1URI\s0 specified in the request-string. \s-1GET\s0 is the method used by default if the parameter is not set. If \s-1HEAD\s0 is used, the receive-string should be unset. .ie n .IP "\fBvirtualhost = ""\fR\fIhostname\fR\fB""\fR" 4 .el .IP "\fBvirtualhost = ``\fR\fIhostname\fR\fB''\fR" 4 .IX Item "virtualhost = ""hostname""" Used when using a negotiate check with \s-1HTTP\s0 or \s-1HTTPS\s0. Sets the host header used in the \s-1HTTP\s0 request. In the case of \s-1HTTPS\s0 this generally needs to match the common name of the \s-1SSL\s0 certificate. If not set then the host header will be derived from the request url for the real server if present. As a last resort the \s-1IP\s0 address of the real server will be used. .ie n .IP "\fBlogin = ""\fR\fIusername\fR\fB""\fR" 4 .el .IP "\fBlogin = ``\fR\fIusername\fR\fB''\fR" 4 .IX Item "login = ""username""" Username to use to login to \s-1FTP\s0, \s-1POP\s0, \s-1IMAP\s0, MySQL and PostgreSQL servers. For \s-1FTP\s0, the default is anonymous. For \s-1POP\s0 and \s-1IMAP\s0, the default is the empty string, in which case authentication will not be attempted. For a MySQL and PostgreSQL, the username must be provided. .Sp For \s-1SIP\s0 the username is used as both the to and from address for an \s-1OPTIONS\s0 query. If unset it defaults to l7directord\e@, hostname is derived as per the passwd option below. .ie n .IP "\fBpasswd = ""\fR\fIpassword\fR\fB""\fR" 4 .el .IP "\fBpasswd = ``\fR\fIpassword\fR\fB''\fR" 4 .IX Item "passwd = ""password""" Password to use to login to \s-1FTP\s0, \s-1POP\s0, \s-1IMAP\s0, MySQL and PostgreSQL servers. Default is for \s-1FTP\s0 is l7directord\e@, where hostname is the environment variable \s-1HOSTNAME\s0 evaluated at run time, or sourced from uname if unset. The default for all other services is an empty password, in the case of MySQL and PostgreSQL this means authentication will not be performed. .ie n .IP "\fBdatabase = ""\fR\fIdatabasename\fR\fB""\fR" 4 .el .IP "\fBdatabase = ``\fR\fIdatabasename\fR\fB''\fR" 4 .IX Item "database = ""databasename""" Database to use for MySQL and PostgreSQL servers, this is the database that the query (set by \fBreceive\fR above) will be performed against. This is a required setting. .IP "\fBscheduler =\fR \fIscheduler_name\fR" 4 .IX Item "scheduler = scheduler_name" Scheduler to be used by UltraMonkey\-L7 for load balancing. The available schedulers are only \fBlc\fR and \fBrr\fR. The default is \fIrr\fR. .IP "\fBprotocol = tcp\fR" 4 .IX Item "protocol = tcp" Protocol to be used. \fBl7vsadm\fR supports only \fBtcp\fR. Since the virtual is specified as an \s-1IP\s0 address and port, it would be tcp and will default to tcp. .ie n .IP "\fBrealdowncallback = ""\fR\fI/path/to/realdowncallback\fR\fB""\fR" 4 .el .IP "\fBrealdowncallback = ``\fR\fI/path/to/realdowncallback\fR\fB''\fR" 4 .IX Item "realdowncallback = ""/path/to/realdowncallback""" If this directive is defined, \fBl7directord\fR automatically calls the executable \fI/path/to/realdowncallback\fR after a real server's status changes to down. The first argument to the realdowncallback is the real server's IP-address and port (ip_address:portnumber). .ie n .IP "\fBrealrecovercallback = ""\fR\fI/path/to/realrecovercallback\fR\fB""\fR" 4 .el .IP "\fBrealrecovercallback = ``\fR\fI/path/to/realrecovercallback\fR\fB''\fR" 4 .IX Item "realrecovercallback = ""/path/to/realrecovercallback""" If this directive is defined, \fBl7directord\fR automatically calls the executable \fI/path/to/realrecovercallback\fR after a real server's status changes to up. The first argument to the realrecovercallback is the real server's IP-address and port (ip_address:portnumber). .ie n .IP "\fBcustomcheck = ""\fR\fIcustom check command\fR\fB""\fR" 4 .el .IP "\fBcustomcheck = ``\fR\fIcustom check command\fR\fB''\fR" 4 .IX Item "customcheck = ""custom check command""" If this directive is defined and set \fBchecktype\fR to custom, \fBl7directord\fR exec custom command for real servers health checking. Only if custom command returns 0, real servers will change to up. Otherwise real servers will change to down. Custom check command has some macro string. See below. .RS 4 .IP "\fB_IP_\fR" 4 .IX Item "_IP_" Change to real server \s-1IP\s0 address. .IP "\fB_PORT_\fR" 4 .IX Item "_PORT_" Change to real server port number. .RE .RS 4 .RE .SH "FILES" .IX Header "FILES" \&\fB/etc/ha.d/conf/l7directord.cf\fR .PP \&\fB/var/log/l7vs/l7directord.log\fR .PP \&\fB/var/run/l7directord.\fR\fIconfiguration\fR\fB.pid\fR .PP \&\fB/etc/services\fR .SH "SEE ALSO" .IX Header "SEE ALSO" l7vsadm, heartbeat .SH "AUTHORS" .IX Header "AUTHORS" \&\s-1NTT\s0 \s-1COMWARE\s0