Configuration: Global cache in Zonemaster-Engine
Table of contents
- Introduction
- Prerequisites
- Installation for global cache
- Create directory for custom profile
- Enable global cache
- Using global cache
Introduction
Global cache is a feature that can increase performance when many tests are run within a short time frame, especially when they share some data such as using the same name server names. The global cache is meant for batch testing rather than single tests through the GUI. In the latter case it is desirable that Zonemaster checks again since the zone may have been corrected due to the report in a very recent test.
The global cache improves the caching function by making the DNS lookups from
one test to be available for further tests. The cache is stored in Redis
, a
cache service running in a separate daemon.
To enable global caching, additional software has to be installed and custom profile has to be created, where global caching is enabled.
Prerequisites
Before installing or enabling global cache you must follow the
Zonemaster::Engine installation first. The feature is available from version
v5.0.0
of Zonemaster-Engine.
For installation on FreeBSD being user root is assumed.
Installation for global cache
Install the Redis
daemon and needed Perl library. And then start the Redis
daemon. It will listen to localhost and default port.
Rocky Linux
sudo dnf --assumeyes install redis perl-Redis perl-Data-MessagePack
sudo systemctl enable redis
sudo systemctl start redis
Debian and Ubuntu
sudo apt install redis libredis-perl libdata-messagepack-perl
sudo systemctl enable redis
sudo systemctl start redis
FreeBSD
pkg install -y redis p5-Redis p5-Data-MessagePack
sysrc redis_enable="YES"
service redis start
Create directory for custom profile
Create a directory to be used for a custom profile, which is here the same directory as used by Zonemaster-Backend. And then copy the default profile to this directory.
Rocky Linux, Debian and Ubuntu
test -d /etc/zonemaster || sudo mkdir -v /etc/zonemaster
perl -MZonemaster::Engine::Test -E 'say Zonemaster::Engine::Profile->default->to_json' | jq -S . | sudo tee /etc/zonemaster/profile.json > /dev/null
FreeBSD
test -d /usr/local/etc/zonemaster || mkdir -v /usr/local/etc/zonemaster
perl -MZonemaster::Engine::Test -E 'say Zonemaster::Engine::Profile->default->to_json' | jq -S . > /usr/local/etc/zonemaster/profile.json
Enable global cache
Update /etc/zonemaster/profile.json
(or /usr/local/etc/zonemaster/profile.json
for FreeBSD) by adding a cache section. If the profile already has an empty cache
section (i.e. "cache": {}
) then it must be removed. Add the following section,
"cache": {
"redis": {
"server": "127.0.0.1:6379",
"expire": 7200
}
},
The expire
value can be increased or decreased to increase or decrease the time
in seconds that Redis
will cache the data. Caching of specific DNS data is
never longer than the normal DNS TTL value.
Using global cache
If Zonemaster-CLI has been installed, then
run zonemaster-cli
with --profile /etc/zonemaster/profile.json
(or --profile /usr/local/etc/zonemaster/profile.json
for FreeBSD) to use the
global cache. Caching will persist between test unless it has expired.
See man zonemaster-cli
and look for cli.args
for how to make it the custom
profile being the default profile for zonemaster-cli
.
See Zonemaster::Backend configuration for how to make the custom profile being used for Zonemaster-Backend and Zonemaster-GUI.
For more documentation on profiles, see profile documentation.