Управление хостами кластера Valkey™
Вы можете добавлять и удалять хосты кластера, а также управлять их настройками. О том, как перенести хосты кластера в другую зону доступности, читайте в инструкции.
Получить список хостов в кластере
- Перейдите на страницу каталога
и выберите сервис Yandex Managed Service for Valkey™. - Нажмите на имя нужного кластера, затем выберите вкладку Хосты.
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.
Чтобы получить список хостов в кластере, выполните команду:
yc managed-redis host list \
--cluster-name=<имя_кластера>
Результат:
+---------------------------------+----------------------+------------+---------+--------+-------------------+
| NAME | CLUSTER ID | SHARD NAME | ROLE | HEALTH | ZONE ID |
+---------------------------------+----------------------+------------+---------+--------+-------------------+
| rc1a-...caf.mdb.yandexcloud.net | c9qb2q230gg1******** | shard1 | MASTER | ALIVE | ru-central1-a |
| rc1b-...bgc.mdb.yandexcloud.net | c9qb2q230gg1******** | shard1 | REPLICA | ALIVE | ru-central1-b |
+---------------------------------+----------------------+------------+---------+--------+-------------------+
Имя кластера можно запросить со списком кластеров в каталоге.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Воспользуйтесь методом Cluster.ListHosts и выполните запрос, например, с помощью cURL
:curl \ --request GET \ --header "Authorization: Bearer $IAM_TOKEN" \ --url 'https://mdb.api.cloud.yandex.net/managed-redis/v1/clusters/<идентификатор_кластера>/hosts'Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapiДалее предполагается, что содержимое репозитория находится в директории
~/cloudapi/. -
Воспользуйтесь вызовом ClusterService.ListHosts и выполните запрос, например, с помощью 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 '{ "cluster_id": "<идентификатор_кластера>" }' \ mdb.api.cloud.yandex.net:443 \ yandex.cloud.mdb.redis.v1.ClusterService.ListHostsИдентификатор кластера можно запросить со списком кластеров в каталоге.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
Создать хост
Количество хостов в кластерах Yandex Managed Service for Valkey™ ограничено квотами на количество CPU и объем памяти, которые доступны кластерам БД в вашем облаке. Чтобы проверить используемые ресурсы, откройте страницу Квоты
Примечание
Публичный доступ к хостам можно настроить только для кластеров, созданных с включенной поддержкой TLS.
Чтобы создать хост:
- Перейдите на страницу каталога
и выберите сервис Yandex Managed Service for Valkey™. - Нажмите на имя нужного кластера и перейдите на вкладку Хосты.
- Нажмите кнопку Создать хост.
- Укажите параметры хоста:
-
Зону доступности.
-
Подсеть (если нужной подсети в списке нет, создайте ее).
-
При необходимости настройте публичный доступ к хосту.
-
Если вы добавляете хост в шардированный кластер, выберите шард.
-
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.
Чтобы создать хост:
-
Запросите список подсетей кластера, чтобы выбрать подсеть для нового хоста:
yc vpc subnet listРезультат:
+----------------------+-----------+-----------------------+---------------+------------------+ | ID | NAME | NETWORK ID | ZONE | RANGE | +----------------------+-----------+-----------------------+---------------+------------------+ | b0cl69a2b4c6******** | default-d | enp6rq72rndgr******** | ru-central1-d | [172.16.0.0/20] | | e2lkj9qwe762******** | default-b | enp6rq72rndgr******** | ru-central1-b | [10.10.0.0/16] | | e9b0ph42bn96******** | a-2 | enp6rq72rndgr******** | ru-central1-a | [172.16.32.0/20] | | e9b9v22r88io******** | default-a | enp6rq72rndgr******** | ru-central1-a | [172.16.16.0/20] | +----------------------+-----------+-----------------------+---------------+------------------+Если нужной подсети в списке нет, создайте ее.
-
Посмотрите описание команды CLI для добавления хостов:
yc managed-redis host add --help -
Выполните команду добавления хоста:
yc managed-redis host add \ --cluster-name=<имя_кластера> \ --host zone-id=<зона_доступности>,` `subnet-id=<идентификатор_подсети>,` `assign-public-ip=<публичный_доступ>,` `replica-priority=<приоритет_хоста>,` `shard-name=<имя_шарда>Где:
--cluster-name— имя кластера Yandex Managed Service for Valkey™. Его можно запросить со списком кластеров в каталоге.--host— параметры хоста:zone-id— зона доступности.subnet-id— идентификатор подсети. Необходимо указывать, если в выбранной зоне доступности создано две или больше подсетей.assign-public-ip— доступность хоста из интернета по публичному IP-адресу:trueилиfalse.replica-priority— приоритет назначения хоста мастером при выходе из строя основного мастера. Доступен только для нешардированного кластера.shard-name— имя шарда, в котором следует создать хост, если кластер шардированный.
Чтобы создать хост:
-
Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.
О том, как создать такой файл, см. в разделе Создание кластера.
-
Добавьте к описанию кластера Yandex Managed Service for Valkey™ блок
host.resource "yandex_mdb_redis_cluster" "<имя_кластера>" { ... host { zone = "<зона_доступности>" subnet_id = "<идентификатор_подсети>" assign_public_ip = <публичный_доступ> replica_priority = <приоритет_хоста> shard_name = "<имя_шарда>" } }Где
assign_public_ip— публичный доступ к хосту:trueилиfalse. -
Проверьте корректность настроек.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validateЕсли в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Подтвердите изменение ресурсов.
-
Выполните команду для просмотра планируемых изменений:
terraform planЕсли конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply -
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
-
Подробнее см. в документации провайдера Terraform.
Ограничения по времени
Провайдер 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-токен>" -
Воспользуйтесь методом Cluster.AddHosts и выполните запрос, например, с помощью 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/<идентификатор_кластера>/hosts:batchCreate' \ --data '{ "hostSpecs": [ { "zoneId": "<зона_доступности>", "subnetId": "<идентификатор_подсети>", "shardName": "<имя_шарда>", "replicaPriority": "<приоритет_хоста>", "assignPublicIp": <разрешить_публичный_доступ_к_хосту> } ] }'Где
hostSpecs— параметры хоста:zoneId— зона доступности.subnetId— идентификатор подсети. Необходимо указывать, если в выбранной зоне доступности создано две или больше подсетей.shardName— имя шарда для хоста. Этот параметр используется, только если включено шардирование кластера.replicaPriority— приоритет назначения хоста мастером при выходе из строя основного мастера.assignPublicIp— доступность хоста из интернета по публичному IP-адресу:trueилиfalse. Включить публичный доступ можно, только если в кластере включена поддержка TLS.
Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapiДалее предполагается, что содержимое репозитория находится в директории
~/cloudapi/. -
Воспользуйтесь вызовом ClusterService.AddHosts и выполните запрос, например, с помощью 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 '{ "cluster_id": "<идентификатор_кластера>", "host_specs": [ { "zone_id": "<зона_доступности>", "subnet_id": "<идентификатор_подсети>", "shard_name": "<имя_шарда>", "replica_priority": "<приоритет_хоста>", "assign_public_ip": <разрешить_публичный_доступ_к_хосту> } ] }' \ mdb.api.cloud.yandex.net:443 \ yandex.cloud.mdb.redis.v1.ClusterService.AddHostsГде
host_specs— параметры хоста:zone_id— зона доступности.subnet_id— идентификатор подсети. Необходимо указывать, если в выбранной зоне доступности создано две или больше подсетей.shard_name— имя шарда для хоста. Этот параметр используется, только если включено шардирование кластера.replica_priority— приоритет назначения хоста мастером при выходе из строя основного мастера.assign_public_ip— доступность хоста из интернета по публичному IP-адресу:trueилиfalse. Включить публичный доступ можно, только если в кластере включена поддержка TLS.
Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
Важно
Если после добавления хоста к нему невозможно подключиться, убедитесь, что группа безопасности кластера настроена корректно для подсети, в которую помещен хост.
Изменить хост
Примечание
Доступ к хостам из интернета через публичные IP-адреса возможен только в том случае, если кластер был создан с включенной поддержкой TLS.
Чтобы изменить параметры хоста в кластере:
-
Перейдите на страницу каталога
и выберите сервис Yandex Managed Service for Valkey™. -
Нажмите на имя нужного кластера и выберите вкладку Хосты.
-
Нажмите на значок
в строке нужного хоста и выберите пункт Редактировать. -
Задайте новые настройки для хоста:
- Включите опцию Публичный доступ, если хост должен быть доступен извне Yandex Cloud.
- Укажите приоритет назначения хоста мастером.
-
Нажмите кнопку Сохранить.
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.
Чтобы изменить параметры хоста, выполните команду:
yc managed-redis host update <имя_хоста> \
--cluster-name=<имя_кластера> \
--assign-public-ip=<публичный_доступ> \
--replica-priority=<приоритет_хоста>
Где --assign-public-ip — публичный доступ к хосту: true или false.
Имя хоста можно запросить со списком хостов в кластере, имя кластера — со списком кластеров в каталоге.
Чтобы изменить параметры хоста в кластере:
-
Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.
О том, как создать такой файл, см. в разделе Создание кластера.
-
Измените в описании кластера Yandex Managed Service for Valkey™ атрибуты блока
host, соответствующего изменяемому хосту.resource "yandex_mdb_redis_cluster" "<имя_кластера>" { ... host { zone = "<зона_доступности>" subnet_id = "<идентификатор_подсети>" assign_public_ip = <публичный_доступ> replica_priority = <приоритет_хоста> shard_name = "<имя_шарда>" } }Где
assign_public_ip— публичный доступ к хосту:trueилиfalse. -
Проверьте корректность настроек.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validateЕсли в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Подтвердите изменение ресурсов.
-
Выполните команду для просмотра планируемых изменений:
terraform planЕсли конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply -
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
-
Подробнее см. в документации провайдера Terraform.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Воспользуйтесь методом Cluster.UpdateHosts и выполните запрос, например, с помощью cURL
:Важно
Метод API переопределит все параметры изменяемого объекта, которые не были явно переданы в запросе, на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре
updateMask(одной строкой через запятую).curl \ --request POST \ --header "Authorization: Bearer $IAM_TOKEN" \ --header "Content-Type: application/json" \ --url 'https://mdb.api.cloud.yandex.net/managed-redis/v1/clusters/<идентификатор_кластера>/hosts:batchUpdate' \ --data '{ "updateHostSpecs": [ { "hostName": "<имя_хоста>", "replicaPriority": "<приоритет_хоста>", "assignPublicIp": <публичный_доступ_к_хосту_кластера>, "updateMask": "replicaPriority,assignPublicIp" } ] }'Где
updateHostSpecs— параметры хоста:hostName— имя хоста, который нужно изменить. Чтобы узнать имя, получите список хостов в кластере.replicaPriority— приоритет назначения хоста мастером при выходе из строя основного мастера.assignPublicIp— доступность хоста из интернета по публичному IP-адресу:trueилиfalse. Включить публичный доступ можно, только если в кластере включена поддержка TLS.updateMask— перечень изменяемых параметров в одну строку через запятую.
Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapiДалее предполагается, что содержимое репозитория находится в директории
~/cloudapi/. -
Воспользуйтесь вызовом ClusterService.UpdateHosts и выполните запрос, например, с помощью gRPCurl
:Важно
Метод API переопределит все параметры изменяемого объекта, которые не были явно переданы в запросе, на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре
update_mask(в виде массива строкpaths[]).Формат перечисления настроек
"update_mask": { "paths": [ "<настройка_1>", "<настройка_2>", ... "<настройка_N>" ] }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 '{ "cluster_id": "<идентификатор_кластера>", "update_host_specs": [ { "host_name": "<имя_хоста>", "replica_priority": "<приоритет_хоста>", "assign_public_ip": <публичный_доступ_к_хосту_кластера>, "update_mask": { "paths": ["replica_priority", "assign_public_ip"] } } ] }' \ mdb.api.cloud.yandex.net:443 \ yandex.cloud.mdb.redis.v1.ClusterService.UpdateHostsГде
update_host_specs— параметры хоста:host_name— имя хоста, который нужно изменить. Чтобы узнать имя, получите список хостов в кластере.replica_priority— приоритет назначения хоста мастером при выходе из строя основного мастера.assign_public_ip— доступность хоста из интернета по публичному IP-адресу:trueилиfalse. Включить публичный доступ можно, только если в кластере включена поддержка TLS.update_mask— перечень изменяемых параметров в виде массива строкpaths[].
Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
Важно
Если после добавления хоста к нему невозможно подключиться, убедитесь, что группа безопасности кластера настроена корректно для подсети, в которую помещен хост.
Удалить хост
Вы можете удалить хост из кластера Valkey™, если он не является единственным хостом. Чтобы заменить единственный хост, сначала создайте новый хост, а затем удалите старый.
Если хост является мастером в момент удаления, Yandex Managed Service for Valkey™ автоматически назначит мастером другую реплику.
Если количество хостов в кластере или в шарде кластера равно минимально допустимому, удалить хост нельзя. См. подробнее в разделе Квоты и лимиты.
Чтобы удалить хост из кластера:
- Перейдите на страницу каталога
и выберите сервис Yandex Managed Service for Valkey™. - Нажмите на имя нужного кластера и выберите вкладку Хосты.
- В строке с нужным кластером нажмите на значок
и выберите Удалить. - В открывшемся окне включите опцию Я удаляю хост и нажмите кнопку Подтвердить.
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.
Чтобы удалить хост из кластера, выполните команду:
yc managed-redis host delete <имя_хоста> \
--cluster-name=<имя_кластера>
Имя хоста можно запросить со списком хостов в кластере, имя кластера — со списком кластеров в каталоге.
Чтобы удалить хост из кластера:
-
Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.
О том, как создать такой файл, см. в разделе Создание кластера.
-
Удалите из описания кластера Yandex Managed Service for Valkey™ блок
host. -
Проверьте корректность настроек.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validateЕсли в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Введите слово
yesи нажмите Enter.-
Выполните команду для просмотра планируемых изменений:
terraform planЕсли конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply -
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
-
Подробнее см. в документации провайдера Terraform.
Ограничения по времени
Провайдер 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-токен>" -
Воспользуйтесь методом Cluster.DeleteHosts и выполните запрос, например, с помощью 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/<идентификатор_кластера>/hosts:batchDelete' \ --data '{ "hostNames": [ "<имя_хоста>" ] }'Где
hostNames— имя удаляемого хоста. Чтобы узнать имя, получите список хостов в кластере.Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapiДалее предполагается, что содержимое репозитория находится в директории
~/cloudapi/. -
Воспользуйтесь вызовом ClusterService.DeleteHosts и выполните запрос, например, с помощью 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 '{ "cluster_id": "<идентификатор_кластера>", "host_names": [ "<имя_хоста>" ] }' \ mdb.api.cloud.yandex.net:443 \ yandex.cloud.mdb.redis.v1.ClusterService.DeleteHostsГде
host_names— имя удаляемого хоста. Чтобы узнать имя, получите список хостов в кластере.Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.