Redis. Кластер — различия между версиями
Root (обсуждение | вклад) (Новая страница: «Установка, настройка и управление кластером Redis на Debian Stretch») |
Root (обсуждение | вклад) |
||
(не показано 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
При успешной установке кластера вернется ответ