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

    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 не забывайте указывать порт.

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

    Надеюсь, кому нибудь, да пригодится.

    Similar posts

    Ads
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More

    Comments 3

      +3
      А причем тут кластер?
        0
        кластер базы данных )
        Или инстанс.

        Кластер — как некоторое абстрагированное от прочих хранилище.
          +1
          Тогда заголовок получается желтоватый.

      Only users with full accounts can post comments. Log in, please.