Redis. Кластер — различия между версиями

Материал из megapuper
Перейти к: навигация, поиск
Строка 73: Строка 73:
 
  # redis-server /etc/redis/a_master.conf
 
  # redis-server /etc/redis/a_master.conf
 
  # redis-server /etc/redis/c_slave.conf
 
  # redis-server /etc/redis/c_slave.conf
 +
 +
Для других двух серверов меняем a_master.conf и c_slave.conf соответствующим конфигурационным файлом. Все узлы master будут запущены в режиме кластера.
 +
                _._
 +
          _.-``__ ''-._
 +
      _.-``    `.  `_.  ''-._          Redis 3.2.6 (00000000/0) 64 bit
 +
  .-`` .-```.  ```\/    _.,_ ''-._
 +
(    '      ,      .-`  | `,    )    Running in cluster mode
 +
|`-._`-...-` __...-.``-._|'` _.-'|    Port: 6379
 +
|    `-._  `._    /    _.-'    |    PID: 1221
 +
  `-._    `-._  `-./  _.-'    _.-'
 +
|`-._`-._    `-.__.-'    _.-'_.-'|
 +
|    `-._`-._        _.-'_.-'    |          http://redis.io
 +
  `-._    `-._`-.__.-'_.-'    _.-'
 +
|`-._`-._    `-.__.-'    _.-'_.-'|
 +
|    `-._`-._        _.-'_.-'    |
 +
  `-._    `-._`-.__.-'_.-'    _.-'
 +
      `-._    `-.__.-'    _.-'
 +
          `-._        _.-'
 +
              `-.__.-'

Версия 17:46, 9 сентября 2019

Установка, настройка и управление кластером Redis на Debian Stretch. Мануал является переводом и адаптацией англоязычной статьи.


Настройка узлов Master и Slave

В данной инструкции каждый master будет подключен к одному slave.

Официальная документация рекомендует использовать 6 узлов — по одному экземпляру Redis на узле, что позволяет обеспечить большую надежность, но возможно использовать три узла со следующей топологией соединений:


В установке используется три сервера, на каждом из которых запущено по два экземпляра Redis. Убеждаемся, что каждый хост независим от других и не выйдет из строя совместно с другим.

Ставим Redis на каждом сервере через менеджер пакетов

# apt install redis-server


Для создания кластера и управления понадобится скрипт Ruby, который находится в /usr/share/doc/redis-tools/examples/redis-trib.rb
Если Ruby не установлен, ставим на основной сервер:

# apt install ruby

Так же понадобится пакет Redis для Ruby:

# gem install redis


Далее выполняем следующие шаги:

Подключаемся к серверу 1. Находим конфиг /etc/redis/redis.conf и делаем из него два, master и slave, оригинальный можно грохнуть.

# cp redis.conf c_slave.conf
# redis.conf a_master.conf


В a_master.conf, определяем директиву bind и активируем режим кластера. Порты в данном случае будут варьироваться в диапазоне от 6379 до 6381.

bind 0.0.0.0
protected-mode no
port 6379
pidfile /var/run/redis_6379.pid
cluster-enabled yes
cluster-config-file nodes-6379.conf
cluster-node-timeout 15000

Для каждого узла в проектируемом кластере Redis требуется доступность не только определенного порта, но и порта выше 10000. На сервере 1 оба порта TCP 6379 и 16379 должны быть открыты. Проверяем, что файрвол настроен корректно.


В c_slave.conf настройки будут аналогичны, кроме номера порта. Позднее для настройки режима slave, соответствующего определенному узлу master, будет использоваться скрипт redis-trib.rb

bind 0.0.0.0
protected-mode no
port 6381
pidfile /var/run/redis_6381.pid
cluster-enabled yes
cluster-config-file nodes-6381.conf
cluster-node-timeout 15000


Повторяем для оставшихся двух серверов, определив порты для всех пар master-slave.

Server Master Slave IP
1 6379 6381 172.16.10.45
2 6380 6379 172.16.10.46
3 6381 6380 172.16.10.50


Запуск узлов Master и Slave

Подключаемся к серверу 1 и запускаем оба экземпляра Redis

# redis-server /etc/redis/a_master.conf
# redis-server /etc/redis/c_slave.conf

Для других двух серверов меняем a_master.conf и c_slave.conf соответствующим конфигурационным файлом. Все узлы master будут запущены в режиме кластера.

               _._
          _.-``__ -._
     _.-``    `.  `_.  -._           Redis 3.2.6 (00000000/0) 64 bit
 .-`` .-```.  ```\/    _.,_ -._
(    '      ,       .-`  | `,    )     Running in cluster mode
|`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379
|    `-._   `._    /     _.-'    |     PID: 1221
 `-._    `-._  `-./  _.-'    _.-'
|`-._`-._    `-.__.-'    _.-'_.-'|
|    `-._`-._        _.-'_.-'    |           http://redis.io
 `-._    `-._`-.__.-'_.-'    _.-'
|`-._`-._    `-.__.-'    _.-'_.-'|
|    `-._`-._        _.-'_.-'    |
 `-._    `-._`-.__.-'_.-'    _.-'
     `-._    `-.__.-'    _.-'
         `-._        _.-'
             `-.__.-'