ELMA365 On-Premises > Подготовка инфраструктуры ELMA365 On-Premises > Базы данных > Отказоустойчивая инфраструктура / Кластер Valkey

Кластер Valkey

Valkey — высокопроизводительная NoSQL СУБД, разработанная на основе Redis для современных облачных и распределённых систем.

начало внимание

Для корректной работы системы требуется Valkey версии 7.2.8 и выше.

конец внимание

В статье приведена установка Valkey 8.1.1 для ОС Ubuntu Linux 22.04 и 24.04. Вы можете найти установочные файлы Valkey для вашей операционной системы на следующих ресурсах:

Подробнее о работе с СУБД читайте в официальной документации Valkey.

О том, как заменить кластер Redis на кластер Valkey, смотрите в статье «Переход с кластера Redis на кластер Valkey».

Развёртывание кластера Valkey включает этапы:

  1. Подготовка нод (серверов).
  2. Установка Valkey.
  3. Настройка Valkey.
  4. Настройка Sentinel.
  5. Подключение к Valkey.

Шаг 1. Подготовка нод (серверов)

начало внимание

Минимальное количество серверов для организации кластера — три.

конец внимание

  1. Создайте три ноды (сервера) с последовательно пронумерованными именами хостов:
  • valkey-server1.your_domain;
  • valkey-server2.your_domain;
  • valkey-server3.your_domain.
  1. Создайте необходимые сопоставления имён хостов в DNS. Если такой возможности нет, внесите нужные записи в папке /etc/hosts.

Шаг 2. Установка Valkey

  1. Установите пакеты:

sudo apt install -y apt-transport-https ca-certificates curl

  1. Импортируйте ключи:

sudo curl -fsSL https://repo.elma365.tech/deb/elma365-keyring.gpg | gpg --dearmor > /etc/apt/trusted.gpg.d/elma365-keyring.gpg

  1. Добавьте репозиторий ELMA365:

echo "deb [arch=amd64] https://repo.elma365.tech/deb $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/elma365.list
sudo apt update

  1. Установите Valkey:

sudo apt install elma365-valkey-server

Шаг 3. Настройка Valkey

начало примечание

Примечание

Для пароля разрешается применять следующие символы:

  • заглавные латинские буквы: от A до Z;
  • строчные латинские буквы: от a до z;
  • цифры от 0 до 9;
  • символы:  -_.

Зарезервированные (недопустимые) символы:

! * ' ( ) ; : @ & = + $ , / ? % # [ ]

конец примечание

Задайте настройки для установленной СУБД:

  1. Отредактируйте файл /etc/valkey/valkey.conf на каждом из серверов:

sudo nano /etc/valkey/valkey.conf

  1. Чтобы разрешить подключение к Valkey со всех сетевых интерфейсов сервера, укажите:

bind 0.0.0.0 

  1. Увеличьте максимальное количество клиентов, изменив значение параметра maxclients на 20000. Раскомментируйте строку, убрав знак #:

maxclients 20000

  1. Задайте политику вытеснения ключей, изменив значение параметра maxmemory-policy на allkeys-lfu. Раскомментируйте строку, убрав знак #:

maxmemory-policy allkeys-lfu

  1. Отключите создание snapshots, изменив значение параметра save на пустую строку. Раскомментируйте строку, убрав знак #:

save ""

  1. Отключите AOF (Append Only File), чтобы данные Valkey не сохранялись в файл. Для этого замените значение параметра appendonly на no. Раскомментируйте строку, убрав знак #:

appendonly no

  1. Укажите пароль к master-ноде:

masterauth SecretPassword

  1. Задайте домен (FQDN) для представления ноды в кластере:
  • на ноде valkey-server1.your_domain:

replica-announce-ip valkey-server1.your_domain

  • на ноде valkey-server2.your_domain:

replica-announce-ip valkey-server2.your_domain

  • на ноде valkey-server3.your_domain:

replica-announce-ip valkey-server3.your_domain

  1. Добавьте пароль для доступа:

requirepass SecretPassword

  1. Отключите защищённый режим, если используется параметр bind 0.0.0.0 или отсутствует настройка requirepass:

protected-mode no

  1. На нодах valkey-server2.your_domain и valkey-server3.your_domain укажите домен (FQDN) и порт для подключения к master-ноде valkey-server1.your_domain:

replicaof valkey-server1.your_domain 6379

  1. Перезапустите все сервера. Начните с master-ноды, а затем перейдите к slave-нодам:

sudo systemctl restart valkey-server
sudo systemctl enable valkey-server

  1. Проверьте статус репликации на ноде valkey-server1.your_domain:

sudo valkey-cli -a SecretPassword info replication

Настройка включения TLS/SSL в Valkey

Шаг 4. Настройка Sentinel

Чтобы настроить Sentinel, отредактируйте файл /etc/valkey/sentinel.conf на каждом из серверов.

началов внимание

Для корректной работы соблюдайте указанный порядок записей в файле /etc/valkey/sentinel.conf.

конец внимание

  1. Укажите домен (FQDN) для представления нод Sentinel:
  • на ноде valkey-server1.your_domain:

sentinel announce-ip valkey-server1.your_domain

  • на ноде valkey-server2.your_domain:

sentinel announce-ip valkey-server2.your_domain

  • на ноде valkey-server3.your_domain:

sentinel announce-ip valkey-server3.your_domain

  1. Настройте домен (FQDN) и порт master-ноды, а также значение для достижения кворума:

sentinel monitor mymaster valkey-server1.your_domain 6379 2

  1. Задайте пароль для доступа к master-ноде:

sentinel auth-pass mymaster SecretPassword

  1. Установите время, после которого master-нода будет считаться вышедшей из строя:

sentinel down-after-milliseconds mymaster 3000

  1. Укажите время ожидания после смены ролей slave-ноды на master-ноду, если master-нода вышла из строя:

sentinel failover-timeout mymaster 6000

  1. Разрешите использовать имена хостов:

sentinel resolve-hostnames yes
sentinel announce-hostnames yes

  1. Опционально: включите доступ только по паролю для пользователя default:

user default on >SecretPassword sanitize-payload ~* &* +@all

Настройка включения TLS/SSL в Sentinel

Шаг 5. Подключение к Valkey

Строка для подключения к Valkey:

redis://:SecretPassword@valkey-server1.your_domain:26379,valkey-server2.your_domain:26379,valkey-server3.your_domain:26379/0?masterName=mymaster

Строка для подключения к Valkey, если включён доступ только по паролю:

redis://:SecretPassword@valkey-server1.your_domain:26379,valkey-server2.your_domain:26379,valkey-server3.your_domain:26379/0?masterName=mymaster&sentinelUsername=default&sentinelPassword=SecretPassword

Строка для подключения к Valkey c TLS/SSL:

rediss://:SecretPassword@valkey-server1.your_domain:26379,valkey-server2.your_domain:26379,valkey-server3.your_domain:26379/0?&masterName=mymaster

Строка для подключения к Valkey c TLS/SSL, если включён доступ только по паролю:

rediss://:SecretPassword@valkey-server1.your_domain:26379,valkey-server2.your_domain:26379,valkey-server3.your_domain:26379/0?masterName=mymaster&sentinelUsername=default&sentinelPassword=SecretPassword