VK Cloud logo

Установка и настройка сервиса Valkey

Сервис Valkey в VK Cloud — это высокопроизводительное хранилище данных в оперативной памяти, оптимизированное для сценариев, требующих мгновенного доступа к информации. Сервис подходит для реализации кеширования, управления сессиями пользователей, обработки очередей задач и работы со сложными структурами данных в реальном времени.

Valkey полностью совместим с протоколом и командной строкой Redis OSS 7.2, что позволяет мигрировать существующие решения или развернуть новые микросервисы без изменений в коде. Подробнее о сервисе в официальной документации Valkey.

Инструкция поможет развернуть сервис Valkey на выделенных виртуальных машинах в VK Cloud и настроить клиентское подключение к нему из приложения по TLS.

Используя сервис Valkey, вы соглашаетесь с лицензионными соглашениями Marketplace VK Cloud и Valkey.

Подготовительные шаги

  1. Зарегистрируйтесь в VK Cloud и перейдите в личный кабинет.

  2. Настройте сеть, чтобы иметь доступ к сервису из интернета:

    1. Создайте сеть с доступом в интернет, если это еще не сделано.
    2. В настройках подсети, где будут размещены ВМ с развернутым сервисом, отключите опцию Приватный DNS.

1. Подключите сервис Valkey

  1. В личном кабинете VK Cloud перейдите в раздел Магазин приложений.

  2. Нажмите на карточку сервиса Valkey.

    Если на странице нет карточки сервиса Valkey, нажмите кнопку Все решения и найдите карточку в каталоге.

  3. На странице с описанием сервиса нажмите кнопку Подключить.

  4. На вкладке Тарифные планы выберите версию сервиса из списка.

  5. Выберите подходящий тариф:

    • Single — одна ВМ, без репликации. В случае отказа узла или зоны сервис недоступен до восстановления ВМ. Подключение происходит напрямую через адрес узла. Подходит для разработки и тестирования.
    • Sentinel — три или пять ВМ (узлов) в разных зонах доступности, один из которых будет главным. Именно он принимает все запросы на создание, изменение и удаление данных, а остальные хранят полные копии этих данных. Если главный узел откажет, его роль перейдет к другому узлу. Подходит для организации кеша, сессий и очередей при условии что данные помещаются в память одной ВМ.
    • Cluster — шесть или девять ВМ (узлов) в разных зонах доступности. Если главный узел откажет, его роль перейдет к другому узлу. Данные распределяются между несколькими серверами (шардами). Копии каждого шарда хранятся в других зонах. Местоположение данных в кластере определяется по ключу. Подходит для хранения данных, которые не помещаются в память одной ВМ, или для горизонтального масштабирования. Работающие с таким кластером приложения должны поддерживать кластерный клиент.
  6. Укажите параметры ВМ, на которых будет развернут сервис:

    • Тип виртуальной машины: выберите конфигурацию ВМ из списка — от 2-8 до 16-64, где первое число задает количество ядер, второе — объем памяти в гигабайтах. Для разработки и тестирования выберите 2-8, для рабочей нагрузки — 4-16 или больше.
    • Сеть: выберите ранее созданную сеть с доступом в интернет и подсеть с отключенной опцией Приватный DNS.
  7. Укажите параметры диска с данными:

    • Размер диска: укажите нужный размер диска ВМ в гигабайтах. Для хранения данных с учетом резервного копирования (RDB) диск должен быть в два раза больше объема данных в памяти. Если дополнительно требуется вести журнал операций (AOF), необходимый объем диска увеличивается до трех объемов памяти. Например, для типа ВМ 8-32 с журналом нужно около 70 ГБ для организации хранилища или 50 ГБ для кеша.
    • Тип диска: выберите один из типов диска. Для интенсивной записи выберите High-IOPS SSD.
  8. Оставьте значения параметров системного диска по умолчанию.

  9. Нажмите кнопку Следующий шаг.

  10. Настройте параметры доступа:

    • Сеть клиентов: укажите значение subnet, чтобы открыть сервис только из выбранной подсети, либо задайте диапазон сети вида 10.20.0.0/16, в которой работают приложения. Посмотреть адрес подсети можно в личном кабинете.
    • Единый адрес через балансировщик (только для тарифа Sentinel): включите опцию, если ваш код приложения не поддерживает механизм Sentinel. Тогда у сервиса будет один адрес, который всегда ведет на текущий главный узел. Балансировщик нагрузки для этого адреса оплачивается отдельно.
  11. Настройте параметры Valkey:

    • Сохранение на диск: включите опцию, если нужно хранить данные на диске, а не в памяти. Если вы планируете использовать Valkey для организации кеша, отключите эту опцию.
    • Журнал операций: включите опцию, чтобы минимизировать риск потери данных. Журнал записывает каждую команду изменения в файл и синхронизируется с диском раз в секунду. Если же журнал отключен, система опирается только на периодические снимки, которые могут быть редки.
  12. (Опционально) Включите опцию Дополнительные настройки Valkey и задайте дополнительные настройки памяти:

    • Доля памяти под данные: укажите долю оперативной памяти узла, отведенную под данные (например, 70%). Остальная память узла уходит на соединения, репликацию и снимки. Если включено сохранение на диск, размер этого диска должен быть минимум в два раза больше указанного значения.

    • Политика вытеснения: выберите вариант действия при переполнении памяти сервера. Возможные значения:

      • noeviction — сервис ничего не удаляет, но отклоняет новые записи (подходит для организации хранилища);
      • allkeys-lru — сервис удаляет давно не использованные ключи (подходит для организации кеша);
      • volatile-варианты — сервис удаляет только ключи с установленным сроком жизни (подходит для хранения важных данных вместе с кешем).

      Подробнее обо всех вариантах политики управления ключами в официальной документации сервиса Valkey.

    • Запись только при живой реплике (только для тарифа Sentinel): включите эту опцию, чтобы главный узел блокировал новые записи, если не может гарантировать их сохранение на репликах.

  13. Нажмите кнопку Следующий шаг.

  14. Ознакомьтесь со стоимостью инфраструктуры для развертывания сервиса и нажмите кнопку Подключить тариф.

    Начнется развертывание облачной инфраструктуры, и откроется страница свойств сервиса. Статус процесса будет отображаться также в разделе Магазин приложений → Мои сервисы.

    После успешного развертывания на вашу почту, привязанную к VK Cloud, придут сообщения:

    • уведомление со ссылкой на инстанс сервиса в личном кабинете VK Cloud;
    • письмо с одноразовой ссылкой на данные для доступа к сервису.
  15. Перейдите по одноразовой ссылке из письма и сохраните данные для доступа к сервису:

    • nodes — список узлов Valkey.
    • endpoint — адрес узла.
    • clusterCA — сертификат центра сертификации кластера.
    • adminUser и adminPassword — учетная запись администратора.
    • appUser и appPassword — учетная запись приложений.
    • monitoringUser и monitoringPassword — учетная запись мониторинга.
    • sshUser — логин для SSH-доступа к ВМ.
    • sshKey — приватный SSH-ключ. Сохраните этот ключ в файле, например valkey_ssh.pem.

2. Проверьте подключение к сервису Valkey

Для проверки подключения можно использовать любую ВМ с Linux в клиентской сети, например, ваш сервер приложения.

  1. Установите утилиту valkey-cli на ВМ, с которой хотите подключиться к сервису, если это еще не сделано:

    sudo apt install -y valkey-tools
  2. Подключитесь к этой ВМ по SSH.

  3. Сохраните сертификат из письма в файл ~/valkey-ca.pem:

    cat > ~/valkey-ca.pem <<'EOF'<СЕРТИФИКАТ>EOF

    Здесь <СЕРТИФИКАТ> — значение clusterCA из письма целиком, включая строки BEGIN и END.

  4. Выполните операции записи и чтения в сервис Valkey:

    1. Выполните операции записи в сервис 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.

    2. Выполните операции чтения с узла в сервисе 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.

3. (Опционально) Подключите приложение

  1. Сохраните значение clusterCA в файл на сервере приложения, если это не сделано ранее.

  2. Передайте параметры подключения клиенту Valkey в коде приложения. Далее приведены примеры для Python с библиотекой redis согласно выбранному тарифу. В других языках используйте клиент Redis или Valkey, который поддерживает TLS и вход по имени пользователя и паролю.

    import redisclient = redis.Redis(   host="<АДРЕС_УЗЛА>",   port=6379,   username="<ЛОГИН_ПРИЛОЖЕНИЯ>",   password="<ПАРОЛЬ_ПРИЛОЖЕНИЯ>",   ssl=True,   ssl_ca_certs="<ПУТЬ_К_СЕРТИФИКАТУ>",)

    Здесь:

    • <АДРЕС_УЗЛА> — IP-адрес без порта из параметра endpoint из письма.
    • <ЛОГИН_ПРИЛОЖЕНИЯ> — значение appUser из письма.
    • <ПАРОЛЬ_ПРИЛОЖЕНИЯ> — значение appPassword из письма.
    • <ПУТЬ_К_СЕРТИФИКАТУ> — полный путь к файлу с clusterCA на вашем сервере приложения, например /opt/app/valkey-ca.pem.
Была ли статья полезна?