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

Материал из megapuper
Перейти к: навигация, поиск
(Новая страница: «Установка, настройка и управление кластером Redis на Debian Stretch»)
 
(не показано 20 промежуточных версий этого же участника)
Строка 1: Строка 1:
Установка, настройка и управление кластером Redis на Debian Stretch
+
Установка, настройка и управление кластером Redis на Debian Stretch. Мануал является переводом и адаптацией англоязычной [https://www.linode.com/docs/applications/big-data/how-to-install-and-configure-a-redis-cluster-on-ubuntu-1604/ статьи].
 +
 
 +
 
 +
'''Настройка узлов Master и Slave'''
 +
 
 +
В данной инструкции каждый master будет подключен к одному slave.
 +
 
 +
Официальная документация рекомендует использовать 6 узлов — по одному экземпляру Redis на узле, что позволяет обеспечить большую надежность, но возможно использовать три узла со следующей топологией соединений:
 +
 
 +
 
 +
 
 +
В установке используется три сервера, на каждом из которых запущено по два экземпляра Redis. Убеждаемся, что каждый хост независим от других и не выйдет из строя совместно с другим.
 +
 
 +
Ставим Redis на каждом сервере через менеджер пакетов
 +
# apt install redis-server
 +
 
 +
 
 +
Для создания кластера и управления понадобится скрипт Ruby, который находится в /usr/share/doc/redis-tools/examples/redis-trib.rb<br/>
 +
Если Ruby не установлен, ставим на основной сервер:
 +
# apt install ruby
 +
 
 +
Так же понадобится пакет Redis для Ruby:
 +
# gem install redis
 +
 
 +
 
 +
Далее выполняем следующие шаги:
 +
 
 +
Подключаемся к серверу 1. Находим конфиг /etc/redis/redis.conf и делаем из него два, master и slave, оригинальный можно грохнуть.
 +
# cp redis.conf c_slave.conf
 +
# mv 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.
 +
 +
{| class="wikitable"
 +
|-
 +
! 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
 +
  `-._    `-._`-.__.-'_.-'    _.-'
 +
|`-._`-._    `-.__.-'    _.-'_.-'|
 +
|    `-._`-._        _.-'_.-'    |
 +
  `-._    `-._`-.__.-'_.-'    _.-'
 +
      `-._    `-.__.-'    _.-'
 +
          `-._        _.-'
 +
              `-.__.-'
 +
 
 +
 
 +
'''Создание кластера с использованием встроенного скрипта Ruby'''
 +
 
 +
На данном этапе на каждом сервере запущены по два независимых узла master. Дальнейшая установка кластера происходит с помощью скрипта Ruby.
 +
 
 +
 
 +
Создаём кластер, передав список пар ip:port серверов, которые будут играть роль master
 +
# ./redis-trib.rb create 172.16.10.45:6379 172.16.10.46:6380 172.16.10.50:6381
 +
 
 +
 
 +
При успешной установке кластера вернется ответ

Версия 10:25, 10 сентября 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
# mv 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
 `-._    `-._`-.__.-'_.-'    _.-'
|`-._`-._    `-.__.-'    _.-'_.-'|
|    `-._`-._        _.-'_.-'    |
 `-._    `-._`-.__.-'_.-'    _.-'
     `-._    `-.__.-'    _.-'
         `-._        _.-'
             `-.__.-'


Создание кластера с использованием встроенного скрипта Ruby

На данном этапе на каждом сервере запущены по два независимых узла master. Дальнейшая установка кластера происходит с помощью скрипта Ruby.


Создаём кластер, передав список пар ip:port серверов, которые будут играть роль master

# ./redis-trib.rb create 172.16.10.45:6379 172.16.10.46:6380 172.16.10.50:6381


При успешной установке кластера вернется ответ