Установка и настройка сервиса Valkey
Сервис Valkey в VK Cloud — это высокопроизводительное хранилище данных в оперативной памяти, оптимизированное для сценариев, требующих мгновенного доступа к информации. Сервис подходит для реализации кеширования, управления сессиями пользователей, обработки очередей задач и работы со сложными структурами данных в реальном времени.
Valkey полностью совместим с протоколом и командной строкой Redis OSS 7.2, что позволяет мигрировать существующие решения или развернуть новые микросервисы без изменений в коде. Подробнее о сервисе в официальной документации Valkey.
Инструкция поможет развернуть сервис Valkey на выделенных виртуальных машинах в VK Cloud и настроить клиентское подключение к нему из приложения по TLS.
Используя сервис Valkey, вы соглашаетесь с лицензионными соглашениями Marketplace VK Cloud и Valkey.
-
Зарегистрируйтесь в VK Cloud и перейдите в личный кабинет.
-
Настройте сеть, чтобы иметь доступ к сервису из интернета:
- Создайте сеть с доступом в интернет, если это еще не сделано.
- В настройках подсети, где будут размещены ВМ с развернутым сервисом, отключите опцию Приватный DNS.
-
В личном кабинете VK Cloud перейдите в раздел Магазин приложений.
-
Нажмите на карточку сервиса Valkey.
Если на странице нет карточки сервиса Valkey, нажмите кнопку Все решения и найдите карточку в каталоге.
-
На странице с описанием сервиса нажмите кнопку Подключить.
-
На вкладке Тарифные планы выберите версию сервиса из списка.
-
Выберите подходящий тариф:
- Single — одна ВМ, без репликации. В случае отказа узла или зоны сервис недоступен до восстановления ВМ. Подключение происходит напрямую через адрес узла. Подходит для разработки и тестирования.
- Sentinel — три или пять ВМ (узлов) в разных зонах доступности, один из которых будет главным. Именно он принимает все запросы на создание, изменение и удаление данных, а остальные хранят полные копии этих данных. Если главный узел откажет, его роль перейдет к другому узлу. Подходит для организации кеша, сессий и очередей при условии что данные помещаются в память одной ВМ.
- Cluster — шесть или девять ВМ (узлов) в разных зонах доступности. Если главный узел откажет, его роль перейдет к другому узлу. Данные распределяются между несколькими серверами (шардами). Копии каждого шарда хранятся в других зонах. Местоположение данных в кластере определяется по ключу. Подходит для хранения данных, которые не помещаются в память одной ВМ, или для горизонтального масштабирования. Работающие с таким кластером приложения должны поддерживать кластерный клиент.
-
Укажите параметры ВМ, на которых будет развернут сервис:
SingleSentinelCluster- Тип виртуальной машины: выберите конфигурацию ВМ из списка — от
2-8до16-64, где первое число задает количество ядер, второе — объем памяти в гигабайтах. Для разработки и тестирования выберите2-8, для рабочей нагрузки —4-16или больше. - Сеть: выберите ранее созданную сеть с доступом в интернет и подсеть с отключенной опцией Приватный DNS.
- Тип виртуальной машины: выберите конфигурацию ВМ из списка — от
-
Укажите параметры диска с данными:
- Размер диска: укажите нужный размер диска ВМ в гигабайтах. Для хранения данных с учетом резервного копирования (RDB) диск должен быть в два раза больше объема данных в памяти. Если дополнительно требуется вести журнал операций (AOF), необходимый объем диска увеличивается до трех объемов памяти. Например, для типа ВМ
8-32с журналом нужно около 70 ГБ для организации хранилища или 50 ГБ для кеша. - Тип диска: выберите один из типов диска. Для интенсивной записи выберите
High-IOPS SSD.
- Размер диска: укажите нужный размер диска ВМ в гигабайтах. Для хранения данных с учетом резервного копирования (RDB) диск должен быть в два раза больше объема данных в памяти. Если дополнительно требуется вести журнал операций (AOF), необходимый объем диска увеличивается до трех объемов памяти. Например, для типа ВМ
-
Оставьте значения параметров системного диска по умолчанию.
-
Нажмите кнопку Следующий шаг.
-
Настройте параметры доступа:
- Сеть клиентов: укажите значение
subnet, чтобы открыть сервис только из выбранной подсети, либо задайте диапазон сети вида10.20.0.0/16, в которой работают приложения. Посмотреть адрес подсети можно в личном кабинете. - Единый адрес через балансировщик (только для тарифа Sentinel): включите опцию, если ваш код приложения не поддерживает механизм Sentinel. Тогда у сервиса будет один адрес, который всегда ведет на текущий главный узел. Балансировщик нагрузки для этого адреса оплачивается отдельно.
- Сеть клиентов: укажите значение
-
Настройте параметры Valkey:
- Сохранение на диск: включите опцию, если нужно хранить данные на диске, а не в памяти. Если вы планируете использовать Valkey для организации кеша, отключите эту опцию.
- Журнал операций: включите опцию, чтобы минимизировать риск потери данных. Журнал записывает каждую команду изменения в файл и синхронизируется с диском раз в секунду. Если же журнал отключен, система опирается только на периодические снимки, которые могут быть редки.
-
(Опционально) Включите опцию Дополнительные настройки Valkey и задайте дополнительные настройки памяти:
-
Доля памяти под данные: укажите долю оперативной памяти узла, отведенную под данные (например,
70%). Остальная память узла уходит на соединения, репликацию и снимки. Если включено сохранение на диск, размер этого диска должен быть минимум в два раза больше указанного значения. -
Политика вытеснения: выберите вариант действия при переполнении памяти сервера. Возможные значения:
noeviction— сервис ничего не удаляет, но отклоняет новые записи (подходит для организации хранилища);allkeys-lru— сервис удаляет давно не использованные ключи (подходит для организации кеша);volatile-варианты — сервис удаляет только ключи с установленным сроком жизни (подходит для хранения важных данных вместе с кешем).
Подробнее обо всех вариантах политики управления ключами в официальной документации сервиса Valkey.
-
Запись только при живой реплике (только для тарифа Sentinel): включите эту опцию, чтобы главный узел блокировал новые записи, если не может гарантировать их сохранение на репликах.
-
-
Нажмите кнопку Следующий шаг.
-
Ознакомьтесь со стоимостью инфраструктуры для развертывания сервиса и нажмите кнопку Подключить тариф.
Начнется развертывание облачной инфраструктуры, и откроется страница свойств сервиса. Статус процесса будет отображаться также в разделе Магазин приложений → Мои сервисы.
После успешного развертывания на вашу почту, привязанную к VK Cloud, придут сообщения:
- уведомление со ссылкой на инстанс сервиса в личном кабинете VK Cloud;
- письмо с одноразовой ссылкой на данные для доступа к сервису.
-
Перейдите по одноразовой ссылке из письма и сохраните данные для доступа к сервису:
SingleSentinelClusternodes— список узлов Valkey.endpoint— адрес узла.clusterCA— сертификат центра сертификации кластера.adminUserиadminPassword— учетная запись администратора.appUserиappPassword— учетная запись приложений.monitoringUserиmonitoringPassword— учетная запись мониторинга.sshUser— логин для SSH-доступа к ВМ.sshKey— приватный SSH-ключ. Сохраните этот ключ в файле, напримерvalkey_ssh.pem.
Для проверки подключения можно использовать любую ВМ с Linux в клиентской сети, например, ваш сервер приложения.
-
Установите утилиту
valkey-cliна ВМ, с которой хотите подключиться к сервису, если это еще не сделано:Ubuntu 24.04 и вышеsudo apt install -y valkey-tools -
Подключитесь к этой ВМ по SSH.
-
Сохраните сертификат из письма в файл
~/valkey-ca.pem:cat > ~/valkey-ca.pem <<'EOF'<СЕРТИФИКАТ>EOFЗдесь
<СЕРТИФИКАТ>— значениеclusterCAиз письма целиком, включая строкиBEGINиEND. -
Выполните операции записи и чтения в сервис Valkey:
SingleSentinelCluster-
Выполните операции записи в сервис Valkey:
export REDISCLI_AUTH='<ПАРОЛЬ_ПРИЛОЖЕНИЯ>'valkey-cli --tls --cacert ~/valkey-ca.pem --user <ЛОГИН_ПРИЛОЖЕНИЯ> \-h <АДРЕС_УЗЛА> -p 6379 SET greeting helloЗдесь:
<ПАРОЛЬ_ПРИЛОЖЕНИЯ>— значениеappPasswordиз письма.<ЛОГИН_ПРИЛОЖЕНИЯ>— значениеappUserиз письма.<АДРЕС_УЗЛА>— IP-адрес без порта из параметраendpointиз письма.SET greeting hello— команда Valkey, которая сохраняет значениеhelloпод ключомgreeting.
Ожидаемый ответ:
OK. -
Выполните операции чтения с узла в сервисе Valkey:
valkey-cli --tls --cacert ~/valkey-ca.pem --user <ЛОГИН_ПРИЛОЖЕНИЯ> \-h <АДРЕС_УЗЛА> -p 6379 GET greetingЗдесь:
<ПАРОЛЬ_ПРИЛОЖЕНИЯ>— значениеappPasswordиз письма.<ЛОГИН_ПРИЛОЖЕНИЯ>— значениеappUserиз письма.<АДРЕС_УЗЛА>— IP-адрес без порта из параметраendpointиз письма.GET greeting— команда Valkey, которая запрашивает значение ключаgreeting.
Ожидаемый ответ:
"hello".
Учетной записи
appUserнедоступны административные команды, напримерCONFIG,FLUSHALLиKEYS. Для них используйтеadminUserиadminPassword. -
-
Сохраните значение
clusterCAв файл на сервере приложения, если это не сделано ранее. -
Передайте параметры подключения клиенту Valkey в коде приложения. Далее приведены примеры для Python с библиотекой
redisсогласно выбранному тарифу. В других языках используйте клиент Redis или Valkey, который поддерживает TLS и вход по имени пользователя и паролю.SingleSentinel с балансировщикомSentinel без балансировщикаClusterimport redisclient = redis.Redis(host="<АДРЕС_УЗЛА>",port=6379,username="<ЛОГИН_ПРИЛОЖЕНИЯ>",password="<ПАРОЛЬ_ПРИЛОЖЕНИЯ>",ssl=True,ssl_ca_certs="<ПУТЬ_К_СЕРТИФИКАТУ>",)Здесь:
<АДРЕС_УЗЛА>— IP-адрес без порта из параметраendpointиз письма.<ЛОГИН_ПРИЛОЖЕНИЯ>— значениеappUserиз письма.<ПАРОЛЬ_ПРИЛОЖЕНИЯ>— значениеappPasswordиз письма.<ПУТЬ_К_СЕРТИФИКАТУ>— полный путь к файлу сclusterCAна вашем сервере приложения, например/opt/app/valkey-ca.pem.