Valkey — высокопроизводительная NoSQL СУБД, разработанная на основе Redis для современных облачных и распределённых систем.
начало внимание
Для корректной работы системы требуется Valkey версии 7.2.8 и выше.
конец внимание
В статье приведена установка Valkey 8.1.1 для ОС Ubuntu Linux 22.04 и 24.04. Вы можете найти установочные файлы Valkey для вашей операционной системы на следующих ресурсах:
Подробнее о работе с СУБД читайте в официальной документации Valkey.
О том, как заменить кластер Redis на кластер Valkey, смотрите в статье «Переход с кластера Redis на кластер Valkey».
Развёртывание кластера Valkey включает этапы:
- Подготовка нод (серверов).
- Установка Valkey.
- Настройка Valkey.
- Настройка Sentinel.
- Подключение к Valkey.
Шаг 1. Подготовка нод (серверов)
начало внимание
Минимальное количество серверов для организации кластера — три.
конец внимание
- Создайте три ноды (сервера) с последовательно пронумерованными именами хостов:
- valkey-server1.your_domain;
- valkey-server2.your_domain;
- valkey-server3.your_domain.
- Создайте необходимые сопоставления имён хостов в DNS. Если такой возможности нет, внесите нужные записи в папке
/etc/hosts
.
Шаг 2. Установка Valkey
- Установите пакеты:
sudo apt install -y apt-transport-https ca-certificates curl
- Импортируйте ключи:
sudo curl -fsSL https://repo.elma365.tech/deb/elma365-keyring.gpg | gpg --dearmor > /etc/apt/trusted.gpg.d/elma365-keyring.gpg
- Добавьте репозиторий 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
- Установите Valkey:
sudo apt install elma365-valkey-server
Шаг 3. Настройка Valkey
начало примечание
Примечание
Для пароля разрешается применять следующие символы:
- заглавные латинские буквы: от A до Z;
- строчные латинские буквы: от a до z;
- цифры от 0 до 9;
- символы: -_.
Зарезервированные (недопустимые) символы:
! * ' ( ) ; : @ & = + $ , / ? % # [ ]
конец примечание
Задайте настройки для установленной СУБД:
- Отредактируйте файл
/etc/valkey/valkey.conf
на каждом из серверов:
sudo nano /etc/valkey/valkey.conf
- Чтобы разрешить подключение к Valkey со всех сетевых интерфейсов сервера, укажите:
bind 0.0.0.0
- Увеличьте максимальное количество клиентов, изменив значение параметра
maxclients
на20000
. Раскомментируйте строку, убрав знак#
:
maxclients 20000
- Задайте политику вытеснения ключей, изменив значение параметра
maxmemory-policy
наallkeys-lfu
. Раскомментируйте строку, убрав знак#
:
maxmemory-policy allkeys-lfu
- Отключите создание snapshots, изменив значение параметра
save
на пустую строку. Раскомментируйте строку, убрав знак#
:
save ""
- Отключите AOF (Append Only File), чтобы данные Valkey не сохранялись в файл. Для этого замените значение параметра
appendonly
наno
. Раскомментируйте строку, убрав знак#
:
appendonly no
- Укажите пароль к master-ноде:
masterauth SecretPassword
- Задайте домен (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
- Добавьте пароль для доступа:
requirepass SecretPassword
- Отключите защищённый режим, если используется параметр
bind 0.0.0.0
или отсутствует настройкаrequirepass
:
protected-mode no
- На нодах valkey-server2.your_domain и valkey-server3.your_domain укажите домен (FQDN) и порт для подключения к master-ноде valkey-server1.your_domain:
replicaof valkey-server1.your_domain 6379
- Перезапустите все сервера. Начните с master-ноды, а затем перейдите к slave-нодам:
sudo systemctl restart valkey-server
sudo systemctl enable valkey-server
- Проверьте статус репликации на ноде valkey-server1.your_domain:
sudo valkey-cli -a SecretPassword info replication
Настройка включения TLS/SSL в Valkey
port 0
sudo systemctl restart valkey-server
sudo valkey-cli -p 6379 -h valkey-server1.your_domain --tls --cacert /path/to/ca.crt --cert /path/to/valkey.crt --key /path/to/valkey.key -a SecretPassword info replication |
Шаг 4. Настройка Sentinel
Чтобы настроить Sentinel, отредактируйте файл /etc/valkey/sentinel.conf
на каждом из серверов.
началов внимание
Для корректной работы соблюдайте указанный порядок записей в файле /etc/valkey/sentinel.conf
.
конец внимание
- Укажите домен (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
- Настройте домен (FQDN) и порт master-ноды, а также значение для достижения кворума:
sentinel monitor mymaster valkey-server1.your_domain 6379 2
- Задайте пароль для доступа к master-ноде:
sentinel auth-pass mymaster SecretPassword
- Установите время, после которого master-нода будет считаться вышедшей из строя:
sentinel down-after-milliseconds mymaster 3000
- Укажите время ожидания после смены ролей slave-ноды на master-ноду, если master-нода вышла из строя:
sentinel failover-timeout mymaster 6000
- Разрешите использовать имена хостов:
sentinel resolve-hostnames yes
sentinel announce-hostnames yes
- Опционально: включите доступ только по паролю для пользователя
default
:
user default on >SecretPassword sanitize-payload ~* &* +@all
Настройка включения TLS/SSL в Sentinel
port 0
sudo systemctl restart valkey-sentinel
sudo valkey-cli -p 26379 info sentinel
sudo valkey-cli -p 26379 -a SecretPassword info sentinel
sudo valkey-cli -p 26379 -h valkey-server1.your_domain --tls --cacert /path/to/ca.crt --cert /path/to/valkey.crt --key /path/to/valkey.key info sentinel
sudo valkey-cli -p 26379 -a SecretPassword -h valkey-server1.your_domain --tls --cacert /path/to/ca.crt --cert /path/to/valkey.crt --key /path/to/valkey.key info 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