Итак, мне нужно было запустить 2 экземпляра Redis на одном сервере. Мой сервер - это Ubuntu 14.04.
Итак, я последовал это руководство, но не строго. Я имею в виду, что вместо изменения сценариев инициализации redis (которые поступают из пакетов Ubuntu) я решил создать новые сценарии для второго экземпляра и оставить исходные сценарии нетронутыми для первого экземпляра.
Итак, я сделал следующее:
1) Создайте новый скрипт для нового экземпляра (он будет работать в порту 6380 вместо порта 6379 по умолчанию):
sudo cp /etc/init.d/redis-server /etc/init.d/redis-server6380
2) Измените /etc/init.d/redis-server6380, чтобы он был немного другим. Вместо того:
DAEMON=/usr/bin/redis-server
DAEMON_ARGS=/etc/redis/redis.conf
NAME=redis-server
DESC=redis-server
RUNDIR=/var/run/redis
PIDFILE=$RUNDIR/redis-server.pid
В нем будут:
NAME=`basename ${0}`
DAEMON=/usr/bin/redis-server
DAEMON_ARGS=/etc/redis/${NAME}.conf
DESC=${NAME}
RUNDIR=/var/run/redis
PIDFILE=$RUNDIR/${NAME}.pid
3) Затем скопируйте конфигурацию:
cp /etc/redis/redis-server.conf /etc/redis/redis-server6380.conf
Отредактируйте новый файл redis-server6380.conf, чтобы он был из:
pidfile /var/run/redis/redis-server.pid
port 6379
logfile /var/log/redis/redis-server.log
dir /var/lib/redis
Кому:
pidfile /var/run/redis/redis-server6380.pid
port 6380
logfile /var/log/redis/redis-server6380.log
dir /var/lib/redis6380
4) Затем создайте рабочий каталог:
sudo mkdir /var/lib/redis6380 && sudo chown redis.redis /var/lib/redis6380
Небольшая проблема, с которой я столкнулся сейчас, заключается в том, что довольно сложно проверить, запущены ли экземпляры.
Раньше, я думаю, я мог просто запустить:
service redis-server status
И узнайте, запущен ли Redis.
Теперь, если я это сделаю, я получу:
$ service redis-server status
redis-server is not running
Даже когда запущен первый экземпляр! И для 2-го экземпляра я получаю:
$ service redis-server6380 status
redis-server6380 is start-stop-daemon: warning: this system is not able to track process
names longer than 15 characters, please use --exec instead of --name.
not running
НО ПОЧЕМУ? Я не понимаю ...
То же самое произойдет, если я использую /etc/init.d/redis-server*
вместо того service
. Теперь я знаю хакерский способ проверить, действительно ли они работают:
$ ps aux | grep redis
andrew 365 0.0 0.1 10468 2236 pts/0 S+ 07:17 0:00 grep --color=auto redis
redis 22521 0.0 1.3 50860 23132 ? Ssl Feb19 4:38 /usr/bin/redis-server 0.0.0.0:6379
redis 52953 0.0 0.5 38572 8860 ? Ssl Feb25 0:23 /usr/bin/redis-server 0.0.0.0:6380
Но я бы не хотел прибегать к этому :(