#FOR MULTIPLE REDIS INSTANCE INSTALLATION ON RHEL7+ USE THE FOLLOWING PATHS AND SETUP PROCESS:
- create a new redis .conf file
$ cp /etc/redis.conf /etc/redis-xxx.conf
- edit /etc/redis-xxx.conf, illustrated as below
...
#modify pidfile
#pidfile /var/run/redis/redis.pid
pidfile /var/run/redis/redis-xxx.pid
...
#dir /var/lib/redis/
dir /var/lib/redis-xxx/
...
#modify port
#port 6379
port 6380
...
#modify logfile
#logfile /var/log/redis/redis.log
logfile /var/log/redis/redis-xxx.log
...
#modify vm-swap-file
#vm-swap-file /tmp/redis.swap
vm-swap-file /tmp/redis-xxx.swap
...
- make dir /var/lib/redis-xxx
$ mkdir -p /var/lib/redis-xxx
- THERE IS NO init.d files RHEL uses systemctl instead so:
- copy existing service over to your new service
$ cp /usr/lib/systemd/system/redis.service /usr/lib/systemd/system/redis-xxx.service
- modify your new service script to the following: (just change the redis-xxx path)
...
#[Unit]
Description=Redis persistent key-value database
After=network.target
#[Service]
ExecStart=/usr/bin/redis-server /etc/redis-xxx.conf --daemonize no
ExecStop=/usr/bin/redis-shutdown
User=redis
Group=redis
#[Install]
WantedBy=multi-user.target
...
- if you have sentinel enabled on your system you will need to: (otherwise skip this step)
# Copy values from cat /usr/lib/systemd/system/redis.service to /usr/lib/systemd/system/redis-xxx.service
$ cp /usr/lib/systemd/system/redis.service /usr/lib/systemd/system/redis-xxx.service
-
then edit the contents of /usr/lib/systemd/system/redis-xxx.service (just change the /etc/redis-xxx path again)
-
start the new services:
$ service redis-xxx start
- check the new services status:
$ service redis-xxx status
- stop the new services status:
$ service redis-xxx stop
- restart the new services status:
$ service redis-xxx restart
- if you get some problems with service not found:
- you can do the following:
$ systemctl unmask packagekit.service
$ systemctl mask packagekit.service
- then try to start the service again
Hey,
Using this configuration I was having an issue when restarting a service i.e
sudo systemctl restart redis-fpc
Would restart redis-fpc as intended, but due to redis-shutdown lacking first argument would also bring down the primary redis running on 6379.
To resolve this the custom Redis systemd script must be updated as follows
ExecStop=/usr/bin/redis-shutdown redis-fpc
instead ofExecStop=/usr/bin/redis-shutdown
The content below shows how redis-shutdown acts on RHEL 7.3 and explains the behavior I mentioned above.