Pull to refresh

Поликластер Redis (идейная заметка)

Reading time 2 min
Views 4.2K
image Продолжая и углубляясь в администрирование Redis встала задача — развернуть второй кластер на машине с уже имеющимся. Например, для кросс-репликации, когда на одном физическом сервере у вас мастер1 и слейв2, а на другом — мастер2 и слейв1.
Или же просто для некоторого логического распределения информации на одной машине по нескольким кластерам.
Русскоязычной информации на поверхности не лежало, английская нашлась только для Linux.

Поэтому хочу представить вам небольшую заметку-помощницу о создании поликластера Redis во FreeBSD.

Система — FreeBSD 8.4, Редис версии 2.8.4 (что, впрочем, не так уж важно).

Для начала предположим, что у нас есть 1 редис, имеющий пути:

/usr/local/etc/rc.d/redis       - инит-скрипт
/usr/local/etc/                 - директория конфигов
/data/redis/                    - директория dump.rdb
/logs/redis/                    - директория для логов


Он работает, останавливать его не надо, даже если мы хотим второй.
И вот как мы это делаем:

Для начала нам нужен новый конфиг.
Делаем
cp /usr/local/etc/redis.conf /usr/local/etc/redis_new.conf 

В новом конфиге меняем:
port (на один порт, увы, два кластера не повесишь)
pid-файл на /var/run/redis/redis_new.pid
unixsocket обязательно
логфайл на /logs/redis/redis_new.log
и, конечно, датадир на /data/redis_new/
А так же прочие интересующие Вас настройки.

Не забываем создать датадир и дать папке права
mkdir /data/redis_new
chown -R redis:redis /data/redis_new

Далее я пробовала запускать оба кластера с одного инит-скрипта через ссылку, но что то пошло не так.
Посему, копируем инит скрипт
cp /usr/local/etc/rc.d/redis /usr/local/etc/rc.d/redis_new

и в новом правим в начале параметр «name=»
name="redis_new"

Все остальное не трогаем.

Итак, конфиг есть, логи и дату куда писать есть, инит скрипт — есть. Запускаем:
/usr/local/etc/rc.d/redis_new start

и видим:
@free-bsd:~# ps ax | grep redis
22489  ??  Is     0:02,88 /usr/local/bin/redis-server /usr/local/etc/redis.conf
27218  ??  Ss     0:00,01 /usr/local/bin/redis-server /usr/local/etc/redis_new.conf
27233   0  RL+    0:00,00 grep redis

Все работает и все хорошо. Ключи не пересекаются, все как надо. При вызове Redis-cli не забывайте указывать порт.

Так же можно добавлять и третий инстанс, и далее, вплоть до количества равному половине ядер сервера.

Надеюсь, кому нибудь, да пригодится.
Tags:
Hubs:
-4
Comments 3
Comments Comments 3

Articles