null

Кластер Redis из 6 хостов на GNU/Linux

В данной статье мы рассмотрим как создать кластер из серверов redis, состоящий из шести хостов, три из которых будут master-серверами, а другие три -- slave.

Для начала нам понадобятся 6 машин, на которых установлен один из дистрибутивов GNU/Linux. Естественно, установку ОС в рамках этой статьи мы рассматривать не будем.

Теперь нужно установить redis.

# Первые 3 строчки подходят только для систем 
# с пакетным менеджером apt

# Обновим индексы пакетов
sudo apt-get update
# Для сборки (а мы будем собирать) нам понадобятся build-essential и tcl
sudo apt-get install build-essential
sudo apt-get install tcl8.5

# Теперь переходим в удобную для нас директорию для сборки и начинаем
wget http://download.redis.io/releases/redis-stable.tar.gz
tar xzf redis-stable.tar.gz
cd redis-stable
make
make test # Необязательный пункт, но рекомендуется для проверки успешности сборки
sudo make install

cd utils
sudo ./install_server.sh # На этом моменте мы конфигурируем redis для работы 
# в виде демона. В процессе можно указывать свои настройки, 
# или нажимать Enter для применения стандартных

 

Стандартный порт для redis сервера 6379. Для старта и останова демона после выполнения вышеизложенных действий следует использовать следующие команды

sudo service redis_6379 start
sudo service redis_6379 stop

 

Для настройки автостарта сервера следует выполнить

sudo update-rc.d redis_6379 defaults

 

Операцию установки требуется выполнить на всех шести хостах.
Дальнейшие действия нужно выполнять только на одном хосте. Желательно на том, который вы хотите сделать мастером.

Теперь для настройки кластера нам потребуется Ruby и модуль для него

sudo apt-get install ruby-full
gem install redis

 

Далее переходим в директорию src, которая находится в директории, в которую мы распоковали redis (там, где происходила сборка). Здесь можно найти файл redis-trib.rb, который является скриптом для создания кластера. Для нашей конфигурации(3 masters, 3 slaves) требуется указать ключ --replicas 1, который укажет, что для каждого master хоста будет создаваться одна реплика. В конце команды указываются адреса и порты хостов, на которых развёрнут сервер redis.
В итоге команда для создания кластера будет выглядеть следующим образом

./redis-trib.rb create --replicas 1 host1ip:host1port host2ip:host2port \
host3ip:host3port host4ip:host4port host5ip:host5port host6ip:host6port

Где hostXip -- ip адрес хоста с номером X, а hostXport -- порт хоста с номером X, который слушает наш сервер.

Скрипт покажет вам конфигурацию, которую он захочет создать и попросит подтвердить. После вашего одобрения скрипт завершит работу и у вас появится класер redis.

Следует учесть, что для работы с кластером через программу redis-cli, ей нужно указывать ключ -c.

$ redis-cli -c
redis 192.168.10.100:6379> set foo bar
-> Redirected to slot [12182] located at 192.168.10.101:6379
OK
redis 192.168.10.101:6379> set hello world
-> Redirected to slot [866] located at 192.168.10.100:6379
OK
redis 192.168.10.100:6379> get foo
-> Redirected to slot [12182] located at 192.168.10.101:6379
"bar"
redis 192.168.10.101:6379> get hello
-> Redirected to slot [866] located at 192.168.10.100:6379
"world"