[ELMA3] Использование кэша Redis в ELMA
Системные требования
- Система ELMA версии не ниже 3.9.22, 3.10.12, 3.11.2.
- Минимум 3 сервера для кластера кэша Redis с ОС семейства Unix (Linux, OSX, OpenBSD, NetBSD, FreeBSD и производные).
Установка пакета Redis на примере ОС Ubuntu
В общем виде процедура установки выглядит следующим образом:
- Обновление информации о доступном ПО (репозиторий).
sudo apt-get update
- Установка redis-server.
sudo apt install redis-server
- Проверка доступности службы.
service redis-server status
(при необходимости запустить service redis-server start
).
Проверка доступности подключения к службе
- Запустите консоль управления redis-cli.
redis-cli
Вид командной строки изменится на 127.0.0.1:6379>.
- Введите ping, после чего должно быть возвращено значение PONG:
127.0.0.1:6379>ping
PONG
- Введите exit или нажмите на Ctrl+C для выхода из консоли управления redis-cli.
Сборка и установка пакета Redis
Скачать пакет с последней версией Redis можно с официального сайта: https://redis.io/download (необходимо использовать версию Stable).
Сборка в общем случае осуществляется с помощью команды make.
Приведем инструкцию на примере установки на Ubuntu 14/16. Требуется:
1. Установить дополнительные пакеты, необходимые для сборки пакета Redis. Для Ubuntu это build-essentials и tcl 8.5 (или новее):
- sudo apt-get update;
- sudo apt-get install build-essential;
- sudo apt-get install tcl8.5.
2. Скачать пакет Redis в какую-либо папку (например, /home/<user>). Это можно сделать вручную или командой:
wget
http://download.redis.io/releases/redis-stable.tar.gz (адрес лучше взять со страницы https://redis.io/download).
3. Разархивировать пакет (имя скачанного пакета может быть и другим):
tar xzf redis-stable.tar.gz
4. Перейти в папку с разархивированным пакетом (имя также может отличаться):
cd redis-stable
5. Выполнить сборку пакета, выполнив команду:
make
6. Выполнить проверку собранного сборку пакета, выполнив команду:
make test
7. Выполнить установку собранного пакета и его регистрацию для запуска, выполнив последовательно команды:
make install;
cd utils;
./install_server.sh
(данная команда – интерактивная, при запросе параметров можно использовать значения по умолчанию).
После выполнения этих команд бинарные файлы redis-cli и redis-server будут установлены в /usr/local/bin. Кроме того, будет зарегистрирован сервис с параметрами, указанными в команде install_server.sh.
8. Для запуска сервиса выполнить команду:
sudo service redis_6379 start
(имя сервиса может отличаться в зависимости от значений, заданных в команде install_server.sh; для остановки необходимо указать в конце stop вместо start).
Конфигурирование кластера Redis
Официальная документация доступна по адресу: https://redis.io/topics/cluster-tutorial;
Официальная документация по настройке решения высокой доступности: https://redis.io/topics/sentinel;
Неофициальная (упрощенный кластер с одним мастером): https://www.digitalocean.com/community/tutorials/how-to-configure-a-redis-cluster-on-ubuntu-14-04.
Упрощенный вариант настройки
Первый сервер – это Мастер, второй и последующие – Слэйв.
Для настройки необходимо отредактировать файл /etc/redis/redis.conf на каждом из серверов:
- Сделать сервер доступным для всех ip-адресов данного сервера:
- Отключить резервное копирование данных на диск (для обеспечения максимальной производительности). Для этого необходимо:
- закомментировать все строчки, начинающиеся с save (например, #save 900 1);
- установить значение appendonly no.
Для настройки Мастера дополнительно необходимо:
- Установить параметр:
tcp-keepalive 60
- Указать пароль для доступа к Мастеру:
requirepass
your_redis_password
- Задать ограничение на объем используемой памяти (при достижении предела, некоторые значения будут удаляться в зависимости от заданной в параметре maxmemory-policy стратегии):
m
axmemory
<bytes> (показатель в байтах, максимальный используемый объем. Должен быть меньше чем общий доступный объём ОС);maxmemory-policy
volatile-lru (или другое значение отличное от noeviction, указанное в комментариях в данном файле);maxmemory-policy
noeviction (если не нужно использовать ограничение).
Для настройки Слэйва дополнительно необходимо:
-
Указать пароль для доступа к Слэйву (для корректной работы ELMA следует поставить тот же пароль, что и для Мастера):
requirepass
your_redis_password
- Указать адрес и порт Мастера:
slaveof
your_redis_master_ip 6379
- Указать пароль Мастера:
masterauth
your_redis_password
После этого перезапустить все сервера (сначала Мастер, затем Слэйвы):
sudo service redis_6379 restart
Настройка конфигурации в ELMA
- В блоке <configSections> добавить пункты:
<section name="RedisCacheProviderSettings" type="EleWise.ELMA.Cache.Redis.RedisCacheProviderSettings, EleWise.ELMA.Cache.Redis"/> <section name="cacheService" type="EleWise.ELMA.Configuration.GenericProviderFeatureSection`1[[EleWise.ELMA.Cache.CacheServiceManager, EleWise.ELMA.SDK]], EleWise.ELMA.SDK" />
- Внутри корневого блока <configuration> добавить блоки с настройками (содержит список имен машин с кэшем Redis, а также пароль для доступа к ним):
<cacheService defaultProvider="Redis"> <providers> <clear /> <add name="Redis" type="EleWise.ELMA.Cache.Redis.ElmaCacheService, EleWise.ELMA.Cache.Redis "/> </providers> </cacheService> <RedisCacheProviderSettings connectionString="machine1:6379,machine2:6379,machine3:6379,password=your_redis_password" />