diff --git a/HowtoRedis.md b/HowtoRedis.md index 8c721526..6fff71d7 100644 --- a/HowtoRedis.md +++ b/HowtoRedis.md @@ -132,10 +132,79 @@ session.save_path = "tcp://127.0.0.1:6379?auth=" ## 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 l’instance : + +~~~ +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 +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