Po přechodu Ubuntu na SystemD je práce se službami trochu složitější a návod pro SystemD jsem nikde nenašel. V tomto návodu si pro přehlednost přejmenujeme původní instanci Redisu s příponou dle jejího portu a přidáme druhou instanci s inkrementovaným portem.
Nejprve Redis odebere ze spuštění, aby nám nikde nestrašil. Redis dále poběží, instance budeme prohazovat až později.
$ systemctl disable redis-server.service $ update-rc.d redis-server remove
Nyní nakopírujeme systemd definice našich nových instancí.
$ cd /etc/systemd/system $ cp /lib/systemd/system/redis-server.service redis-server-6379.service $ cp /lib/systemd/system/redis-server.service redis-server-6380.service
V definicích upravíme cesty ke konfiguraci a PID file a odebereme Alias.
[Service] ExecStart=/usr/bin/redis-server /etc/redis/redis-6379.conf PIDFile=/var/run/redis/redis-server-6379.pid
Nakopírujeme také konfiguraci Redisu.
$ cd /etc/redis $ cp redis.conf redis-6379.conf $ cp redis.conf redis-6380.conf $ chown redis:redis redis-*.conf
Upravíme konfiguraci.
port 6379 dir /var/lib/redis/6379 pidfile /var/run/redis/redis-server-6379.pid logfile /var/log/redis/redis-server-6379.log
Vytvoříme datové složky.
$ mkdir /var/lib/redis/6379 $ mkdir /var/lib/redis/6380 $ chown redis:redis /var/lib/redis/63*
Provedeme reload systemd a prohodíme instance.
$ systemctl daemon-reload $ systemctl stop redis-server.service $ mv /var/lib/redis/*.* /var/lib/redis/6379/ $ systemctl start redis-server-6379.service
Běží Redis?
$ redis-cli -p 6379 info server | egrep "process_id|tcp_port|config_file"
Přidáme novou instanci po spuštění systému a původní zakážeme spustit. To nám zabrání, aby se původní instance s nově pojmenovanou bila o port.
$ systemctl enable redis-server-6379.service $ systemctl mask redis-server.service
Spustíme a povolíme druhou isntanci.
$ systemctl enable redis-server-6380.service $ systemctl start redis-server-6380.service
Běží druhá instance?
$ redis-cli -p 6380 info server | egrep "process_id|tcp_port|config_file"
Ještě si porty v systému pojmenujeme pro lepší přehled v Netstat.
$ echo "redis1 6379/tcp" >> /etc/services $ echo "redis2 6380/tcp" >> /etc/services $ netstat -l | grep redis