Создание кластера Valkey™
Кластер Valkey™ — это один или несколько хостов базы данных, между которыми можно настроить репликацию. Репликация работает по умолчанию в любом кластере из более чем 1 хоста: хост-мастер принимает запросы на запись, асинхронно дублируя изменения в репликах.
Подробнее об устройстве кластера Yandex Managed Service for Valkey™ см. в разделе Взаимосвязь ресурсов сервиса.
Примечание
- Количество хостов, которые можно создать вместе с кластером Valkey™, зависит от выбранного типа диска, класса хостов и использования шардирования.
- Доступные типы диска зависят от выбранного класса хостов.
Создать кластер
Для создания кластера Yandex Managed Service for Valkey™ нужна роль vpc.user и роль managed-redis.editor или выше. О том, как назначить роль, см. документацию Identity and Access Management.
Примечание
Действуют следующие ограничения на способы создания шардированных кластеров:
- Кластер с одним шардом можно создать с помощью CLI, Terraform или API.
- Кластер с двумя шардами нельзя создать, но можно добавить шард в существующий кластер с одним шардом.
- Кластер с тремя и более шардами можно создать с помощью консоли управления, CLI, Terraform или API.
Для нешардированных кластеров ограничений нет.
Чтобы создать кластер Yandex Managed Service for Valkey™:
-
В консоли управления
перейдите в каталог, в котором нужно создать кластер БД. -
Перейдите в сервис Yandex Managed Service for Valkey™.
-
Нажмите кнопку Создать кластер.
-
В блоке Базовые параметры:
-
Введите имя кластера в поле Имя кластера. Имя кластера должно быть уникальным в рамках каталога.
-
(Опционально) Добавьте описание кластера.
-
Выберите окружение, в котором нужно создать кластер (после создания кластера окружение изменить невозможно):
PRODUCTION— для стабильных версий ваших приложений.PRESTABLE— для тестирования. Prestable-окружение аналогично Production-окружению и на него также распространяется SLA, но при этом на нем раньше появляются новые функциональные возможности, улучшения и исправления ошибок. В Prestable-окружении вы можете протестировать совместимость новых версий с вашим приложением.
-
Выберите версию СУБД.
-
(Опционально) Добавьте метки.
-
Если требуется, включите шардирование кластера.
Важно
Отключить шардирование в кластере, для которого оно включено, невозможно. При необходимости можно создать нешардированный кластер и позже включить в нем шардирование.
-
Если требуется, включите поддержку шифрованных TLS-соединений с кластером.
Важно
Включить шифрование соединений можно только при создании нового кластера. Отключить шифрование в кластере, для которого оно включено, невозможно.
-
При необходимости включите использование FQDN вместо IP-адресов.
Примечание
Некоторые клиенты несовместимы с этой настройкой и не смогут подключиться к хостам кластера. Такие клиенты ожидают именно IP-адрес и некорректно обрабатывают ситуацию, когда IP-адрес подменяется на FQDN.
-
Выберите режим персистентности данных.
-
-
В блоке Ресурсы:
-
В поле Платформа выберите платформу.
-
Укажите Тип виртуальной машины, на которой будут развернуты хосты.
-
Выберите Класс хоста.
-
Выберите тип диска:
- либо более гибкое хранилище — на сетевых SSD-дисках (
network-ssd) или на нереплицируемых SSD-дисках (network-ssd-nonreplicated); - либо более быстрое хранилище — на локальных SSD-дисках (
local-ssd).
От выбранного типа зависит, с каким шагом можно будет изменить размер диска:
- Сетевые SSD-диски — с шагом 1 ГБ.
- Локальные SSD-диски:
- для платформ Intel Broadwell и Intel Cascade Lake — с шагом 100 ГБ;
- для платформы Intel Ice Lake — с шагом 368 ГБ.
- Нереплицируемые SSD-диски — с шагом 93 ГБ.
- либо более гибкое хранилище — на сетевых SSD-дисках (
-
Выберите размер хранилища. Доступный размер хранилища ограничен квотами и лимитами.
-
В поле Увеличивать размер задайте соответствующие условия, чтобы:
-
Размер хранилища увеличился в следующее окно обслуживания, когда хранилище окажется заполнено более чем на указанную долю (%). Если вы задали этот параметр, настройте расписание технического обслуживания.
-
Размер хранилища увеличился незамедлительно, когда хранилище окажется заполнено более чем на указанную долю (%).
Важно
Если заданы оба условия, порог для незамедлительного увеличения должен быть выше, чем для планового.
-
-
В поле Максимальный размер хранилища укажите максимальный размер хранилища, который может быть установлен при автоматическом увеличении размера хранилища.
Важно
- Размер хранилища нельзя уменьшить.
- Во время изменения размера хранилища хосты кластера будут по очереди остановлены и обновлены.
-
(Опционально) Выберите опцию Зашифрованный диск, чтобы зашифровать диск пользовательским ключом KMS.
-
Чтобы создать новый ключ, нажмите кнопку Создать.
-
Чтобы использовать созданный ранее ключ, выберите его в поле Ключ KMS.
Подробнее о шифровании дисков см. в разделе Хранилище.
-
-
-
В блоке Сетевые настройки выберите:
- Облачную сеть для размещения кластера.
- Группы безопасности для сетевого трафика кластера. Может потребоваться дополнительная настройка групп безопасности для того, чтобы можно было подключаться к кластеру.
-
В блоке Хосты задайте конфигурацию хостов:
-
Чтобы изменить настройки отдельного хоста, нажмите на значок
в строке с его именем.-
Зона доступности — выберите зону доступности.
-
Подсеть — укажите подсеть в выбранной зоне доступности.
-
Публичный доступ — разрешает доступ к хосту из интернета, если кластер создается с включенной настройкой Поддержка TLS.
-
Приоритет мастера — приоритет назначения хоста мастером при выходе из строя основного мастера.
-
Имя шарда — позволяет изменить имя шарда для хоста. Поле доступно, только если кластер создается с включенной настройкой Шардирование кластера.
-
-
Чтобы добавить хосты в кластер, нажмите кнопку Добавить хост.
Если вы включили шардирование в кластере и выбрали тип диска local-ssd, добавьте не менее двух хостов на шард.
-
-
В блоке Настройки СУБД:
-
В поле Пароль укажите пароль пользователя.
Допустимая длина пароля — от 8 до 128 символов. Пароль должен удовлетворять регулярному выражению
[a-zA-Z0-9@=+?*.,!&#$^<>_-]*. -
Если требуется, задайте настройки СУБД.
-
-
В блоке Сервисные настройки задайте дополнительные настройки кластера:
-
Начало резервного копирования (UTC) — время по UTC, когда требуется начать резервное копирование кластера (в 24-часовом формате). Если время не задано, резервное копирование начнется в 22:00 UTC.
-
Окно обслуживания — настройки времени технического обслуживания:
- Чтобы разрешить проведение технического обслуживания в любое время, выберите пункт произвольное (по умолчанию).
- Чтобы указать предпочтительное время начала обслуживания, выберите пункт по расписанию и укажите нужные день недели и час дня по UTC. Например, можно выбрать время, когда кластер наименее загружен.
Операции по техническому обслуживанию проводятся для включенных и выключенных кластеров. Они могут включать в себя: обновление СУБД, применение патчей и так далее.
-
Защита от удаления — управляет защитой кластера от непреднамеренного удаления.
Включенная защита кластера от удаления не помешает подключиться к нему вручную и удалить данные.
-
Доступ из WebSQL — опция разрешает выполнять SQL-запросы к базам данных кластера из консоли управления Yandex Cloud с помощью сервиса Yandex WebSQL.
-
-
Нажмите кнопку Создать кластер.
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.
Чтобы создать кластер Yandex Managed Service for Valkey™:
-
Проверьте, есть ли в каталоге подсети для хостов кластера:
yc vpc subnet listЕсли ни одной подсети в каталоге нет, создайте нужные подсети в сервисе VPC.
-
Посмотрите описание команды CLI для создания кластера:
yc managed-redis cluster create --help -
При создании кластера с помощью CLI нельзя напрямую указать тип хоста и объем оперативной памяти. Вместо этого выберите подходящий класс хостов. Чтобы просмотреть доступные классы хостов, выполните команду:
yc managed-redis resource-preset list -
Укажите параметры кластера в команде создания (в примере приведены не все флаги):
yc managed-redis cluster create \ --name <имя_кластера> \ --environment <окружение> \ --redis-version <версия_Valkey™> \ --network-name <имя_сети> \ --host zone-id=<зона_доступности>,` `subnet-id=<идентификатор_подсети>,` `assign-public-ip=<публичный_доступ>,` `replica-priority=<приоритет_хоста> \ --security-group-ids <список_идентификаторов_групп_безопасности> \ --enable-tls \ --persistence-mode <режим_персистентности> \ --resource-preset <класс_хоста> \ --disk-size <размер_хранилища_ГБ> \ --disk-size-autoscaling disk-size-limit=<максимальный_размер_хранилища_в_гигабайтах>,` `planned-usage-threshold=<процент_для_планового_увеличения>,` `emergency-usage-threshold=<процент_для_незамедлительного_увеличения> \ --disk-type-id <network-ssd|network-ssd-nonreplicated|local-ssd> \ --password=<пароль_пользователя> \ --backup-window-start <время> \ --disk-encryption-key-id <идентификатор_ключа_KMS> \ --deletion-protection \ --announce-hostnames <использование_FQDN_вместо_IP-адресов>Где:
-
--environment— окружение:prestableилиproduction. -
--redis-version— версия Valkey™:7.2-valkey,8.0-valkey,8.1-valkeyили9.0-valkey. -
--host— параметры хоста:zone-id— зона доступности.subnet-id— идентификатор подсети. Необходимо указывать, если в выбранной зоне доступности создано две или больше подсетей.assign-public-ip— доступность хоста из интернета по публичному IP-адресу:trueилиfalse.replica-priority— приоритет назначения хоста мастером при выходе из строя основного мастера.
-
--disk-type-id— тип диска. -
--websql-access— разрешает выполнять SQL-запросы к базам данных кластера из консоли управления Yandex Cloud с помощью сервиса Yandex WebSQL. Значение по умолчанию —false. -
--disk-size-autoscaling— настройки автоматического увеличения размера хранилища:-
planned-usage-threshold— процент заполнения хранилища, при котором хранилище будет увеличено в следующее окно обслуживания.Значение задается в процентах от
0до100. По умолчанию —0(автоматическое расширение отключено).Если вы задали этот параметр, настройте расписание технического обслуживания.
-
emergency-usage-threshold— процент заполнения хранилища, при котором хранилище будет увеличено немедленно.Значение задается в процентах от
0до100. По умолчанию —0(автоматическое расширение отключено).Важно
Если заданы оба порога, значение
emergency-usage-thresholdдолжно быть не меньшеplanned-usage-threshold. -
disk-size-limit— максимальный размер хранилища в гигабайтах после увеличения.
Важно
- Размер хранилища нельзя уменьшить.
- Во время изменения размера хранилища хосты кластера будут по очереди остановлены и обновлены.
-
-
--persistence-mode— режим персистентности данных.Возможные значения:
ON— включить персистентность.OFF— выключить персистентность.ON_REPLICAS— включить персистентность только на репликах.
-
--backup-window-start— время начала резервного копирования в форматеЧЧ:ММ:СС. -
--deletion-protection— защита кластера от непреднамеренного удаления:trueилиfalse.Включенная защита кластера от удаления не помешает подключиться к нему вручную и удалить данные.
-
--disk-encryption-key-id— шифрование диска пользовательским ключом KMS.Подробнее о шифровании дисков см. в разделе Хранилище.
-
--announce-hostnames— настройка, определяющая, использовать ли FQDN вместо IP-адресов:trueилиfalse.Примечание
Некоторые клиенты несовместимы с этой настройкой и не смогут подключиться к хостам кластера. Такие клиенты ожидают именно IP-адрес и некорректно обрабатывают ситуацию, когда IP-адрес подменяется на FQDN.
Идентификатор подсети
subnet-idнеобходимо указывать, если в выбранной зоне доступности создано 2 и больше подсетей.Допустимая длина пароля — от 8 до 128 символов. Пароль должен удовлетворять регулярному выражению
[a-zA-Z0-9@=+?*.,!&#$^<>_-]*.Если вы создаёте шардированный кластер с типом диска local-ssd, укажите в команде не менее двух хостов на шард.
Примечание
По умолчанию при создании кластера устанавливается режим технического обслуживания
anytime— в любое время. Вы можете установить конкретное время обслуживания при изменении настроек кластера. -
Terraform
Terraform распространяется под лицензией Business Source License
Подробную информацию о ресурсах провайдера смотрите в документации на сайте Terraform
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
Чтобы создать кластер Yandex Managed Service for Valkey™:
-
Опишите в конфигурационном файле параметры ресурсов, которые необходимо создать:
-
Кластер базы данных — описание кластера и его хостов. При необходимости здесь же можно задать настройки СУБД.
-
Сеть — описание облачной сети, в которой будет расположен кластер. Если подходящая сеть у вас уже есть, описывать ее повторно не нужно.
-
Подсети — описание подсетей, к которым будут подключены хосты кластера. Если подходящие подсети у вас уже есть, описывать их повторно не нужно.
Пример структуры конфигурационного файла для создания нешардированного кластера с поддержкой SSL:
resource "yandex_mdb_redis_cluster" "<имя_кластера>" { name = "<имя_кластера>" environment = "<окружение>" network_id = "<идентификатор_сети>" security_group_ids = [ "<список_идентификаторов_групп_безопасности>" ] tls_enabled = true deletion_protection = <защита_кластера_от_удаления> announce_hostnames = <использование_FQDN_вместо_IP-адресов> persistence_mode = "<режим_персистентности>" disk_size_autoscaling { planned_usage_threshold = "<процент_для_планового_увеличения>" emergency_usage_threshold = "<процент_для_незамедлительного_увеличения>" disk_size_limit = "<максимальный_размер_хранилища_в_гибибайтах>" } config { password = "<пароль>" version = "<версия_Valkey™>" } resources { resource_preset_id = "<класс_хоста>" disk_type_id = "<тип_диска>" disk_size = <размер_хранилища_ГБ> } host { zone = "<зона_доступности>" subnet_id = "<идентификатор_подсети>" assign_public_ip = <публичный_доступ> replica_priority = <приоритет_хоста> } } resource "yandex_vpc_network" "<имя_сети>" { name = "<имя_сети>" } resource "yandex_vpc_subnet" "<имя_подсети>" { name = "<имя_подсети>" zone = "<зона_доступности>" network_id = "<идентификатор_сети>" v4_cidr_blocks = ["<диапазон>"] }Где:
-
environment— окружение:PRESTABLEилиPRODUCTION. -
deletion_protection— защита кластера от непреднамеренного удаления:trueилиfalse.Включенная защита кластера от удаления не помешает подключиться к нему вручную и удалить данные.
-
disk_size_autoscaling— настройки автоматического увеличения размера хранилища:-
planned_usage_threshold— процент заполнения хранилища, при котором хранилище будет увеличено в следующее окно обслуживания.Значение задается в процентах от
0до100. По умолчанию —0(автоматическое расширение отключено).Если вы задали этот параметр, настройте расписание технического обслуживания в блоке
maintenance_window. -
emergency_usage_threshold— процент заполнения хранилища, при котором хранилище будет увеличено немедленно.Значение задается в процентах от
0до100. По умолчанию —0(автоматическое расширение отключено).Важно
Если заданы оба порога, значение
emergency_usage_thresholdдолжно быть не меньшеplanned_usage_threshold. -
disk_size_limit— максимальный размер хранилища в гибибайтах после увеличения.
Важно
- Размер хранилища нельзя уменьшить.
- Во время изменения размера хранилища хосты кластера будут по очереди остановлены и обновлены.
-
-
announce_hostnames— настройка, определяющая, использовать ли FQDN вместо IP-адресов:trueилиfalse.Примечание
Некоторые клиенты несовместимы с этой настройкой и не смогут подключиться к хостам кластера. Такие клиенты ожидают именно IP-адрес и некорректно обрабатывают ситуацию, когда IP-адрес подменяется на FQDN.
-
persistence_mode— режим персистентности данных.Возможные значения:
ON— включить персистентность.OFF— выключить персистентность.ON_REPLICAS— включить персистентность только на репликах.
-
version— версия Valkey™:7.2-valkey,8.0-valkey,8.1-valkeyили9.0-valkey. -
host— параметры хоста:zone_id— зона доступности.subnet_id— идентификатор подсети в выбранной зоне доступности.assign_public_ip— публичный доступ к хосту:trueилиfalse.replica_priority— приоритет назначения хоста мастером при выходе из строя основного мастера.
Допустимая длина пароля — от 8 до 128 символов. Пароль должен удовлетворять регулярному выражению
[a-zA-Z0-9@=+?*.,!&#$^<>_-]*.Если вы создаёте шардированный кластер с типом диска local-ssd, укажите в конфигурационном файле не менее двух хостов на шард.
Чтобы настроить время технического обслуживания (в т. ч. для выключенных кластеров), добавьте к описанию кластера блок
maintenance_window:resource "yandex_mdb_redis_cluster" "<имя_кластера>" { ... maintenance_window { type = <тип_технического_обслуживания> day = <день_недели> hour = <час_дня> } ... }Где:
type— тип технического обслуживания. Принимает значения:ANYTIME— в любое время.WEEKLY— по расписанию.
day— день недели для типаWEEKLY:MON,TUE,WED,THU,FRI,SATилиSUN.hour— час дня по UTC для типаWEEKLY: от1до24.
Чтобы зашифровать диск пользовательским ключом KMS, добавьте параметр
disk_encryption_key_id:resource "yandex_mdb_redis_cluster" "<имя_кластера>" { ... disk_encryption_key_id = <идентификатор_ключа_KMS> ... }Подробнее о шифровании дисков см. в разделе Хранилище.
Более подробную информацию о ресурсах, которые вы можете создать с помощью Terraform, см. в документации провайдера.
-
-
Проверьте корректность настроек.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validateЕсли в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Создайте кластер.
-
Выполните команду для просмотра планируемых изменений:
terraform planЕсли конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply -
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
После этого в указанном каталоге будут созданы все требуемые ресурсы, а в терминале отобразятся FQDN хостов кластера. Проверить появление ресурсов и их настройки можно в консоли управления
.Ограничения по времени
Провайдер Terraform ограничивает время на выполнение операций с кластером Yandex Managed Service for Valkey™:
- создание, в т. ч. путем восстановления из резервной копии, — 15 минут;
- изменение — 60 минут;
- удаление — 15 минут.
Операции, длящиеся дольше указанного времени, прерываются.
Как изменить эти ограничения?
Добавьте к описанию кластера блок
timeouts, например:resource "yandex_mdb_redis_cluster" "<имя_кластера>" { ... timeouts { create = "1h30m" # Полтора часа update = "2h" # 2 часа delete = "30m" # 30 минут } } -
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Создайте файл
body.jsonи добавьте в него следующее содержимое:{ "folderId": "<идентификатор_каталога>", "name": "<имя_кластера>", "environment": "<окружение>", "configSpec": { "version": "<версия_Valkey™>", "resources": { "resourcePresetId": "<класс_хостов>", "diskSize": "<размер_хранилища_в_байтах>", "diskTypeId": "<тип_диска>" }, "diskSizeAutoscaling": { "plannedUsageThreshold": "<процент_для_планового_увеличения>", "emergencyUsageThreshold": "<процент_для_незамедлительного_увеличения>", "diskSizeLimit": "<максимальный_размер_хранилища_в_байтах>" }, "access": { "webSql": <доступ_из_WebSQL> }, "redis": { "password": "<пароль_пользователя>" } }, "hostSpecs": [ { "zoneId": "<зона_доступности>", "subnetId": "<идентификатор_подсети>", "shardName": "<название_шарда>", "replicaPriority": "<приоритет_хоста>", "assignPublicIp": <публичный_доступ_к_хосту_кластера> }, { <аналогичный_набор_настроек_для_хоста_2> }, { ... }, { <аналогичный_набор_настроек_для_хоста_N> } ], "networkId": "<идентификатор_сети>", "sharded": <шардирование_кластера>, "securityGroupIds": [ "<идентификатор_группы_безопасности_1>", "<идентификатор_группы_безопасности_2>", ... "<идентификатор_группы_безопасности_N>" ], "tlsEnabled": <поддержка_шифрованных_TLS-соединений>, "deletionProtection": <защита_кластера_от_удаления>, "announceHostnames": <использование_FQDN_вместо_IP-адресов>, "persistenceMode": "<режим_персистентности>" }Где:
-
folderId— идентификатор каталога. Его можно запросить со списком каталогов в облаке. -
name— имя кластера. -
environment— окружение:PRESTABLEилиPRODUCTION. -
configSpec— настройки кластера:-
version— версия Valkey™:7.2-valkey,8.0-valkey,8.1-valkeyили9.0-valkey. -
resources— ресурсы кластера:resourcePresetId— класс хостов;diskSize— размер диска в байтах;diskTypeId— тип диска.
-
diskSizeAutoscaling— настройки автоматического увеличения размера хранилища:-
plannedUsageThreshold— процент заполнения хранилища, при котором хранилище будет увеличено в следующее окно обслуживания.Значение задается в процентах от
0до100. По умолчанию —0(автоматическое расширение отключено).Если вы задали этот параметр, настройте расписание технического обслуживания с помощью
maintenanceWindow. -
emergencyUsageThreshold— процент заполнения хранилища, при котором хранилище будет увеличено немедленно.Значение задается в процентах от
0до100. По умолчанию —0(автоматическое расширение отключено).Важно
Если заданы оба порога, значение
emergencyUsageThresholdдолжно быть не меньшеplannedUsageThreshold. -
diskSizeLimit— максимальный размер хранилища в байтах после увеличения.
Важно
- Размер хранилища нельзя уменьшить.
- Во время изменения размера хранилища хосты кластера будут по очереди остановлены и обновлены.
-
-
access.webSql— доступ к базам данных кластера из консоли управления Yandex Cloud с помощью сервиса Yandex WebSQL:trueилиfalse. -
redis.password— пароль пользователя.
-
-
hostSpecs— параметры хоста:zoneId— зона доступности.subnetId— идентификатор подсети. Необходимо указывать, если в выбранной зоне доступности создано две или больше подсетей.shardName— название шарда для хоста. Этот параметр используется, только если для параметраshardedуказано значениеtrue.replicaPriority— приоритет назначения хоста мастером при выходе из строя основного мастера.assignPublicIp— доступность хоста из интернета по публичному IP-адресу:trueилиfalse. Включить публичный доступ можно, только если для параметраtlsEnabledуказано значениеtrue.
-
networkId— идентификатор сети, в которой будет размещен кластер. -
sharded— шардирование кластера:trueилиfalse.Важно
Отключить шардирование в кластере, для которого оно включено, невозможно. При необходимости можно создать нешардированный кластер и позже включить в нем шардирование.
Если вы создаете шардированный кластер с типом диска
local-ssd, укажите не менее двух хостов на шард, добавив нужное количество блоковhostSpecs. -
securityGroupIds— идентификаторы групп безопасности. -
tlsEnabled— поддержка шифрованных TLS-соединений с кластером:trueилиfalse.Важно
Включить шифрование соединений можно только при создании нового кластера. Отключить шифрование в кластере, для которого оно включено, невозможно.
-
deletionProtection— защита кластера от непреднамеренного удаления:trueилиfalse.Включенная защита кластера от удаления не помешает подключиться к нему вручную и удалить данные.
-
announceHostnames— использование FQDN вместо IP-адресов:trueилиfalse.Примечание
Некоторые клиенты несовместимы с этой настройкой и не смогут подключиться к хостам кластера. Такие клиенты ожидают именно IP-адрес и некорректно обрабатывают ситуацию, когда IP-адрес подменяется на FQDN.
-
persistenceMode— режим персистентности данных.Возможные значения:
ON— включить персистентность.OFF— выключить персистентность.ON_REPLICAS— включить персистентность только на репликах.
-
-
Воспользуйтесь методом Cluster.Create и выполните запрос, например с помощью cURL
:curl \ --request POST \ --header "Authorization: Bearer $IAM_TOKEN" \ --header "Content-Type: application/json" \ --url 'https://mdb.api.cloud.yandex.net/managed-redis/v1/clusters' \ --data "@body.json" -
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapiДалее предполагается, что содержимое репозитория находится в директории
~/cloudapi/. -
Создайте файл
body.jsonи добавьте в него следующее содержимое:{ "folder_id": "<идентификатор_каталога>", "name": "<имя_кластера>", "environment": "<окружение>", "config_spec": { "version": "<версия_Valkey™>", "resources": { "resource_preset_id": "<класс_хостов>", "disk_size": "<размер_хранилища_в_байтах>", "disk_type_id": "<тип_диска>" }, "disk_size_autoscaling": { "planned_usage_threshold": "<процент_для_планового_увеличения>", "emergency_usage_threshold": "<процент_для_незамедлительного_увеличения>", "disk_size_limit": "<максимальный_размер_хранилища_в_байтах>" }, "access": { "web_sql": <доступ_из_WebSQL> }, "redis": { "password": "<пароль_пользователя>" } }, "host_specs": [ { "zone_id": "<зона_доступности>", "subnet_id": "<идентификатор_подсети>", "shard_name": "<название_шарда>", "replica_priority": "<приоритет_хоста>", "assign_public_ip": <публичный_доступ_к_хосту_кластера> }, { <аналогичный_набор_настроек_для_хоста_2> }, { ... }, { <аналогичный_набор_настроек_для_хоста_N> } ], "network_id": "<идентификатор_сети>", "sharded": <шардирование_кластера>, "security_group_ids": [ "<идентификатор_группы_безопасности_1>", "<идентификатор_группы_безопасности_2>", ... "<идентификатор_группы_безопасности_N>" ], "tls_enabled": <поддержка_шифрованных_TLS-соединений>, "deletion_protection": <защита_кластера_от_удаления>, "announce_hostnames": <использование_FQDN_вместо_IP-адресов>, "persistence_mode": "<режим_персистентности>" }Где:
-
folder_id— идентификатор каталога. Его можно запросить со списком каталогов в облаке. -
name— имя кластера. -
environment— окружение:PRESTABLEилиPRODUCTION. -
config_spec— настройки кластера:-
version— версия Valkey™:7.2-valkey,8.0-valkey,8.1-valkeyили9.0-valkey. -
resources— ресурсы кластера:resource_preset_id— класс хостов;disk_size— размер диска в байтах;disk_type_id— тип диска.
-
disk_size_autoscaling— настройки автоматического увеличения размера хранилища:-
planned_usage_threshold— процент заполнения хранилища, при котором хранилище будет увеличено в следующее окно обслуживания.Значение задается в процентах от
0до100. По умолчанию —0(автоматическое расширение отключено).Если вы задали этот параметр, настройте расписание технического обслуживания с помощью
maintenance_window. -
emergency_usage_threshold— процент заполнения хранилища, при котором хранилище будет увеличено немедленно.Значение задается в процентах от
0до100. По умолчанию —0(автоматическое расширение отключено).Важно
Если заданы оба порога, значение
emergency_usage_thresholdдолжно быть не меньшеplanned_usage_threshold. -
disk_size_limit— максимальный размер хранилища в байтах после увеличения.
Важно
- Размер хранилища нельзя уменьшить.
- Во время изменения размера хранилища хосты кластера будут по очереди остановлены и обновлены.
-
-
access.web_sql— доступ к базам данных кластера из консоли управления Yandex Cloud с помощью сервиса Yandex WebSQL:trueилиfalse. -
redis.password— пароль пользователя.
-
-
host_specs— параметры хоста:zone_id— зона доступности.subnet_id— идентификатор подсети. Необходимо указывать, если в выбранной зоне доступности создано две или больше подсетей.shard_name— название шарда для хоста. Этот параметр используется, только если для параметраshardedуказано значениеtrue.replica_priority— приоритет назначения хоста мастером при выходе из строя основного мастера.assign_public_ip— доступность хоста из интернета по публичному IP-адресу:trueилиfalse. Включить публичный доступ можно, только если для параметраtls_enabledуказано значениеtrue.
-
network_id— идентификатор сети, в которой будет размещен кластер. -
sharded— шардирование кластера:trueилиfalse.Важно
Отключить шардирование в кластере, для которого оно включено, невозможно. При необходимости можно создать нешардированный кластер и позже включить в нем шардирование.
Если вы создаете шардированный кластер с типом диска
local-ssd, укажите не менее двух хостов на шард, добавив нужное количество блоковhost_specs. -
security_group_ids— идентификаторы групп безопасности. -
tls_enabled— поддержка шифрованных TLS-соединений с кластером:trueилиfalse.Важно
Включить шифрование соединений можно только при создании нового кластера. Отключить шифрование в кластере, для которого оно включено, невозможно.
-
deletion_protection— защита кластера от непреднамеренного удаления:trueилиfalse.Включенная защита кластера от удаления не помешает подключиться к нему вручную и удалить данные.
-
announce_hostnames— использование FQDN вместо IP-адресов:trueилиfalse.Примечание
Некоторые клиенты несовместимы с этой настройкой и не смогут подключиться к хостам кластера. Такие клиенты ожидают именно IP-адрес и некорректно обрабатывают ситуацию, когда IP-адрес подменяется на FQDN.
-
persistence_mode— режим персистентности данных.Возможные значения:
ON— включить персистентность.OFF— выключить персистентность.ON_REPLICAS— включить персистентность только на репликах.
-
-
Воспользуйтесь вызовом ClusterService.Create и выполните запрос, например с помощью gRPCurl
:grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/mdb/redis/v1/cluster_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d @ \ mdb.api.cloud.yandex.net:443 \ yandex.cloud.mdb.redis.v1.ClusterService.Create \ < body.json -
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
Важно
Если вы указали идентификаторы групп безопасности при создании кластера, то для подключения к нему может потребоваться дополнительная настройка групп безопасности.
Создать копию кластера
Вы можете создать кластер Valkey™, который будет обладать настройками созданного ранее кластера. Для этого конфигурация исходного кластера Valkey™ импортируется в Terraform. В результате вы можете либо создать идентичную копию, либо взять за основу импортированную конфигурацию и внести в нее изменения. Использовать импорт удобно, если исходный кластер Valkey™ обладает множеством настроек и нужно создать похожий на него кластер.
Чтобы создать копию кластера Valkey™:
-
Если у вас еще нет Terraform, установите его.
-
Получите данные для аутентификации. Вы можете добавить их в переменные окружения или указать далее в файле с настройками провайдера.
-
Настройте и инициализируйте провайдер. Чтобы не создавать конфигурационный файл с настройками провайдера вручную, скачайте его
. -
Поместите конфигурационный файл в отдельную рабочую директорию и укажите значения параметров. Если данные для аутентификации не были добавлены в переменные окружения, укажите их в конфигурационном файле.
-
В той же рабочей директории разместите файл с расширением
.tfи содержимым:resource "yandex_mdb_redis_cluster" "old" { } -
Запишите идентификатор первоначального кластера Valkey™ в переменную окружения:
export REDIS_CLUSTER_ID=<идентификатор_кластера>Идентификатор можно запросить вместе со списком кластеров в каталоге.
-
Импортируйте настройки первоначального кластера Valkey™ в конфигурацию Terraform:
terraform import yandex_mdb_redis_cluster.old ${REDIS_CLUSTER_ID} -
Получите импортированную конфигурацию:
terraform show -
Скопируйте ее из терминала и вставьте в файл с расширением
.tf. -
Расположите файл в новой директории
imported-cluster. -
Измените скопированную конфигурацию так, чтобы из нее можно было создать новый кластер:
- Укажите новое имя кластера в строке
resourceи параметреname. - Удалите параметры
created_at,health,idиstatus. - В блоке
configдобавьте параметрpassword. - Если в блоке
configуказано значение параметраnotify_keyspace_events = "\"\"", удалите этот параметр. - Если указано значение параметра
sharded = false, в блокахhostудалите параметрыshard_name. - Если в блоке
maintenance_windowуказано значение параметраtype = "ANYTIME", удалите параметрhour. - (Опционально) Внесите дополнительные изменения, если вам нужна не идентичная, а кастомизированная копия.
- Укажите новое имя кластера в строке
-
В директории
imported-clusterполучите данные для аутентификации. -
В этой же директории настройте и инициализируйте провайдер. Чтобы не создавать конфигурационный файл с настройками провайдера вручную, скачайте его
. -
Поместите конфигурационный файл в директорию
imported-clusterи укажите значения параметров. Если данные для аутентификации не были добавлены в переменные окружения, укажите их в конфигурационном файле. -
Проверьте корректность файлов конфигурации Terraform:
terraform validateЕсли в файлах конфигурации есть ошибки, Terraform на них укажет.
-
Создайте необходимую инфраструктуру:
-
Выполните команду для просмотра планируемых изменений:
terraform planЕсли конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply -
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
В указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления
. -
Ограничения по времени
Провайдер Terraform ограничивает время на выполнение операций с кластером Yandex Managed Service for Valkey™:
- создание, в т. ч. путем восстановления из резервной копии, — 15 минут;
- изменение — 60 минут;
- удаление — 15 минут.
Операции, длящиеся дольше указанного времени, прерываются.
Как изменить эти ограничения?
Добавьте к описанию кластера блок timeouts, например:
resource "yandex_mdb_redis_cluster" "<имя_кластера>" {
...
timeouts {
create = "1h30m" # Полтора часа
update = "2h" # 2 часа
delete = "30m" # 30 минут
}
}
Примеры
Создание кластера с одним хостом
Чтобы создать кластер с одним хостом, передайте один параметр --host.
Создайте кластер Yandex Managed Service for Valkey™ с тестовыми характеристиками:
- Имя
myredis. - Версия `9.0-valkey``.
- Окружение —
production. - Сеть
default. - Один хост класса
hm2.nanoв подсетиb0rcctk2rvtr********, в зоне доступностиru-central1-aи группе безопасности с идентификаторомenp6saqnq4ie********, с публичным доступом и приоритетом хоста50. - С поддержкой SSL-соединений.
- Хранилище на сетевых SSD-дисках (
network-ssd) размером 16 ГБ. - Пароль
user1user1. - С защитой от непреднамеренного удаления.
Выполните следующую команду:
yc managed-redis cluster create \
--name myredis \
--redis-version 9.0-valkey` \
--environment production \
--network-name default \
--resource-preset hm2.nano \
--host zone-id=ru-central1-a,subnet-id=b0rcctk2rvtr********,assign-public-ip=true,replica-priority=50 \
--security-group-ids enp6saqnq4ie******** \
--enable-tls \
--disk-type-id network-ssd \
--disk-size 16 \
--password=user1user1 \
--deletion-protection
Создайте кластер Yandex Managed Service for Valkey™ и сеть для него с тестовыми характеристиками:
- Имя
myredis. - Версия `9.0-valkey``.
- Окружение —
PRODUCTION. - Облако с идентификатором
b1gq90dgh25********. - Каталог с идентификатором
b1gia87mbaom********. - Новая сеть
mynet. - Один хост класса
hm2.nanoв новой подсетиmysubnet, в зоне доступностиru-central1-a, с публичным доступом и приоритетом хоста50. Подсетьmysubnetбудет иметь диапазон10.5.0.0/24. - Новая группа безопасности
redis-sg, разрешающая подключения через порт6380с любых адресов подсетиmysubnet. - С поддержкой SSL-соединений.
- Хранилище на сетевых SSD-дисках (
network-ssd) размером 16 ГБ. - Пароль
user1user1. - С защитой от непреднамеренного удаления.
Конфигурационный файл для такого кластера выглядит так:
resource "yandex_mdb_redis_cluster" "myredis" {
name = "myredis"
environment = "PRODUCTION"
network_id = yandex_vpc_network.mynet.id
security_group_ids = [ yandex_vpc_security_group.redis-sg.id ]
tls_enabled = true
deletion_protection = true
config {
password = "user1user1"
version = "9.0-valkey`"
}
resources {
resource_preset_id = "hm2.nano"
disk_type_id = "network-ssd"
disk_size = 16
}
host {
zone = "ru-central1-a"
subnet_id = yandex_vpc_subnet.mysubnet.id
assign_public_ip = true
replica_priority = 50
}
}
resource "yandex_vpc_network" "mynet" { name = "mynet" }
resource "yandex_vpc_security_group" "redis-sg" {
name = "redis-sg"
network_id = yandex_vpc_network.mynet.id
ingress {
description = "Valkey™"
port = 6380
protocol = "TCP"
v4_cidr_blocks = ["10.5.0.0/24"]
}
}
resource "yandex_vpc_subnet" "mysubnet" {
name = "mysubnet"
zone = "ru-central1-a"
network_id = yandex_vpc_network.mynet.id
v4_cidr_blocks = ["10.5.0.0/24"]
}
Создание шардированного кластера с одним шардом
Создайте шардированный кластер Yandex Managed Service for Valkey™ с тестовыми характеристиками:
- Имя
myredis. - Версия `9.0-valkey``.
- Окружение
production. - С включенным шардированием.
- С поддержкой SSL-соединений.
- С защитой от непреднамеренного удаления.
- Сеть
default. - Группа безопасности с идентификатором
enp6saqnq4ie********. - Класс хостов
hm2.nano. - Один хост в шарде
shard1, в подсетиb0rcctk2rvtr********, в зоне доступностиru-central1-a, с публичным доступом и приоритетом хоста50. - Хранилище на сетевых SSD-дисках (
network-ssd) размером 16 ГБ. - Пароль
user1user1.
Выполните следующую команду:
yc managed-redis cluster create \
--name myredis \
--redis-version 9.0-valkey` \
--environment production \
--sharded \
--enable-tls \
--deletion-protection \
--network-name default \
--security-group-ids enp6saqnq4ie******** \
--resource-preset hm2.nano \
--host shard-name=shard1,subnet-id=b0rcctk2rvtr********,zone-id=ru-central1-a,assign-public-ip=true,replica-priority=50 \
--disk-type-id network-ssd \
--disk-size 16 \
--password user1user1
Создайте шардированный кластер Yandex Managed Service for Valkey™ и сеть для него с тестовыми характеристиками:
- Имя
myredis. - Версия `9.0-valkey``.
- Окружение
PRODUCTION. - С включенным шардированием.
- С поддержкой SSL-соединений.
- С защитой от непреднамеренного удаления.
- Новая сеть
mynet, которая будет состоять из одной подсети. Эта новая подсетьmysubnetбудет иметь диапазон10.5.0.0/24. - Новая группа безопасности
redis-sg, разрешающая подключения через порт6380с любых адресов подсетиmysubnet. - Класс хостов
hm2.nano. - Один хост в шарде
shard1, в подсетиmysubnet, в зоне доступностиru-central1-a, с публичным доступом и приоритетом хоста50. - Хранилище на сетевых SSD-дисках (
network-ssd) размером 16 ГБ. - Пароль
user1user1.
Конфигурационный файл для такого кластера выглядит так:
resource "yandex_mdb_redis_cluster" "myredis" {
name = "myredis"
environment = "PRODUCTION"
sharded = true
tls_enabled = true
deletion_protection = true
network_id = yandex_vpc_network.mynet.id
security_group_ids = [yandex_vpc_security_group.redis-sg.id]
config {
version = "9.0-valkey`"
password = "user1user1"
}
resources {
resource_preset_id = "hm2.nano"
disk_type_id = "network-ssd"
disk_size = 16
}
host {
shard_name = "shard1"
subnet_id = yandex_vpc_subnet.mysubnet.id
zone = "ru-central1-a"
assign_public_ip = true
replica_priority = 50
}
}
resource "yandex_vpc_network" "mynet" { name = "mynet" }
resource "yandex_vpc_subnet" "mysubnet" {
name = "mysubnet"
zone = "ru-central1-a"
network_id = yandex_vpc_network.mynet.id
v4_cidr_blocks = ["10.5.0.0/24"]
}
resource "yandex_vpc_security_group" "redis-sg" {
name = "redis-sg"
network_id = yandex_vpc_network.mynet.id
ingress {
description = "Valkey™"
port = 6380
protocol = "TCP"
v4_cidr_blocks = ["10.5.0.0/24"]
}
}
Создание шардированного кластера с тремя шардами
Создайте шардированный кластер Yandex Managed Service for Valkey™ с тестовыми характеристиками:
- Имя
myredis. - Версия `9.0-valkey``.
- Окружение
PRODUCTION. - Облако с идентификатором
b1gq90dgh25********. - Каталог с идентификатором
b1gia87mbaom********. - Новая сеть
mynet. - Три подсети в сети
mynet, по одной в каждой зоне доступности:subnet-aс диапазоном10.1.0.0/24;subnet-bс диапазоном10.2.0.0/24;subnet-dс диапазоном10.3.0.0/24.
- Три хоста класса
hm2.nano, по одному в каждой подсети. - Новая группа безопасности
redis-sg, разрешающая подключения через порты6379и26379(Valkey™ Sentinel) с любых адресов подсетей. - Хранилище на сетевых SSD-дисках (
network-ssd) размером 16 ГБ. - Пароль
user1user1. - С защитой от непреднамеренного удаления.
Конфигурационный файл для такого кластера выглядит так:
resource "yandex_mdb_redis_cluster" "myredis" {
name = "myredis"
environment = "PRODUCTION"
network_id = yandex_vpc_network.mynet.id
security_group_ids = [yandex_vpc_security_group.redis-sg.id]
sharded = true
deletion_protection = true
config {
password = "user1user1"
version = "9.0-valkey`"
}
resources {
resource_preset_id = "hm2.nano"
disk_type_id = "network-ssd"
disk_size = 16
}
host {
zone = "ru-central1-a"
subnet_id = yandex_vpc_subnet.subnet-a.id
shard_name = "shard1"
}
host {
zone = "ru-central1-b"
subnet_id = yandex_vpc_subnet.subnet-b.id
shard_name = "shard2"
}
host {
zone = "ru-central1-d"
subnet_id = yandex_vpc_subnet.subnet-d.id
shard_name = "shard3"
}
}
resource "yandex_vpc_network" "mynet" { name = "mynet" }
resource "yandex_vpc_subnet" "subnet-a" {
name = "subnet-a"
zone = "ru-central1-a"
network_id = yandex_vpc_network.mynet.id
v4_cidr_blocks = ["10.1.0.0/24"]
}
resource "yandex_vpc_subnet" "subnet-b" {
name = "subnet-b"
zone = "ru-central1-b"
network_id = yandex_vpc_network.mynet.id
v4_cidr_blocks = ["10.2.0.0/24"]
}
resource "yandex_vpc_subnet" "subnet-d" {
name = "subnet-d"
zone = "ru-central1-d"
network_id = yandex_vpc_network.mynet.id
v4_cidr_blocks = ["10.3.0.0/24"]
}
resource "yandex_vpc_security_group" "redis-sg" {
name = "redis-sg"
network_id = yandex_vpc_network.mynet.id
ingress {
description = "Valkey™"
port = 6379
protocol = "TCP"
v4_cidr_blocks = [
"10.1.0.0/24",
"10.2.0.0/24",
"10.3.0.0/24"
]
}
ingress {
description = "Valkey™ Sentinel"
port = 26379
protocol = "TCP"
v4_cidr_blocks = [
"10.1.0.0/24",
"10.2.0.0/24",
"10.3.0.0/24"
]
}
}