Template systemd pour instances Redis

This commit is contained in:
vlaborie 2017-07-18 11:21:09 +02:00
parent 62980a5edf
commit 6d32348ae6

View file

@ -132,10 +132,79 @@ session.save_path = "tcp://127.0.0.1:6379?auth=<password>"
## Instances Redis
Il peut être pratique de lancer plusieurs instances Redis sur un même serveur.
Il est possible de faire fonctionner plusieurs instances de Redis sur un serveur ; chacune avec ses propres données, sa propre configuration et son propre utilisateur.
Pour cela on copiera le fichier _redis.conf_ en ajustant les directives _pidfile_, _port_, _unixsocket_, _logfile_ et _dbfilename_.
Il faudrait ensuite copier le script d'init.d en ajustant les variables RUNDIR, PIDFILE, DAEMON_ARGS et DESC
### Template systemd
Creer le template d'unité systemd suivant dans /etc/systemd/system/redis@.service :
~~~
[Unit]
Description=Advanced key-value store
After=network.target
[Service]
ExecStartPre=/bin/mkdir -m 0755 -p /run/redis/%i
ExecStartPre=/bin/chown redis-%i: /run/redis/%i
PermissionsStartOnly=yes
Type=forking
PIDFile=/run/redis/%i/redis.pid
ExecStart=/usr/bin/redis-server /etc/redis/redis-%i.conf --unixsocket /run/redis/%i/redis.sock --pidfile /run/redis/%i/redis.pid
ExecStop=/usr/bin/redis-cli -s /run/redis/%i/redis.sock shutdown
Restart=always
User=redis-%i
Group=redis-%i
[Install]
WantedBy=multi-user.target
~~~
### Installation
Créer un utilisateur système pour linstance :
~~~
useradd --system redis-instance1
~~~
Créer ensuite le *datadir* et le dossier de log :
~~~
mkdir -m 0750 -p /var/lib/redis/instance1 /var/log/redis/instance1
chown redis-instance1: /var/lib/redis/instance1 /var/log/redis/instance1
~~~
Créer ensuite le fichier de configuration suivant dans /etc/redis/redis-instance1.conf :
~~~
daemonize yes
port 0 # Listen only on unix socket defined by systemd unit
unixsocketperm 770 # Unix socket only accessible by user and group of instance1
timeout 300
loglevel notice
logfile /var/log/redis/instance1/redis-server.log
databases 16
save 900 1
save 300 10
save 60 10000
dbfilename dump.rdb
dir /var/lib/redis/instance1
#requirepass <password>
maxclients 128
maxmemory 104857600
~~~
### Administration
L'instance Redis "instance1" est maintenant administrable via :
~~~
systemctl start redis@instance1
systemctl stop redis@instance1
systemctl restart redis@instance1
systemctl status redis@instance1
~~~
## Sauvegardes