atrmon — Adaptive Traffic Routing monitoring daemon
atrmon
[-hv
] [-d
] dbglev
-f
cfgfile
The Adaptive Traffic Routing is a component allowing to delegate a special zone (or zones) nameserver to itself and respond to client requests according to the current accessibility of particular hosts.
The ATR monitor sends ICMP ECHO messages to all configured targets
(ping
groups).
From every group, at least one response must be received within
configured timeout to keep the group alive.
If all groups are alive, particular address is included
into the set of addresses being sent as a response to DNS query.
Otherwise it is excluded from the set.
Currently, only IPv4 targets can be tested.
If there is more than one live address, the ATR monitor selects
the answer according to the strategy
item setting.
It can send all
live addresses, or select only one
according to the loadbalancing strategy.
If there is no live address, the ATR monitor behaves according to the
fallback
item setting.
The daemon runs in fact as three processes, like Kernun proxies do. The main process just controls run of its children. The Asynchronous Configuration Resolver provides for DNS resolution refreshing. The regular child process handles the real operation.
The current status of pinging to the target hosts can be watched by the monitor(1) tool avaliable also as a command of the kat(8) tool.
We create a special subdomain for loadbalancing, define the nameserver for it and alias a host to a name in this special domain:
lb.tns.cz. 3600 IN NS atr.tns.cz. www.tns.cz. 3600 IN CNAME www.lb.tns.cz.
Then we run the ATR on the host atr.tns.cz with configuration like this:
atrmon ATR { listen-on { non-transparent atr.tns.cz; } session-acl ALL { accept; } request-acl DOMAIN { name lb.tns.cz; accept; nameserver 3600 atr.tns.cz; } request-acl WWW { name www.lb.tns.cz; accept; address BNS { data 10 [1.1.1.1]; ping { [1.1.1.1] } 5; } address PHA { data 10 [2.2.2.2]; ping { [2.2.2.2] } 5; } } }
The atrmon daemon handles following signals:
SIGUSR1
Log level increasing.
SIGUSR2
Log level decreasing.
SIGINFO
Operation status logging; parent process logs info about all children, child process logs current status of all ping groups.
SIGHUP
,
SIGINT
,
SIGQUIT
,
SIGTERM
Immediate termination; the daemon immediately closes the service.
-h
Print usage information.
-v
Display version information and exit.
-d
dbglev
Set debuging level to a specific number. Permitted values are 3 through to 9, 3 being the least and 9 the most verbose. See logging(7) for details. This setting is relevant only till configuration reading is finished.
-f cfgfile
Read cfgfile
for configuration information.