Archiv pro měsíc: Prosinec 2017

Jak spustit dvě instance Redis v Ubuntu 16

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