Управление хостами кластера Yandex StoreDoc
Вы можете добавлять и удалять хосты кластера, запускать повторную синхронизацию хостов, а также управлять настройками Yandex StoreDoc для отдельных кластеров. О том, как перенести хосты кластера в другую зону доступности, читайте в инструкции.
Получить список хостов в кластере
- Перейдите на страницу каталога
и выберите сервис Yandex StoreDoc. - Нажмите на имя нужного кластера Yandex StoreDoc.
- Выберите вкладку Хосты.
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.
Чтобы получить список хостов в кластере Yandex StoreDoc, выполните команду:
yc managed-mongodb host list \
--cluster-name <имя_кластера>
Результат:
+----------------------------+----------------------+--------+------------+--------------+----------+---------------+-----------+
| NAME | CLUSTER ID | TYPE | SHARD NAME | ROLE | HEALTH | ZONE ID | PUBLIC IP |
+----------------------------+----------------------+--------+------------+--------------+----------+---------------+-----------+
| rc1b...mdb.yandexcloud.kz | c9qp71dk1q1w******** | MONGOD | rs01 | PRIMARY | ALIVE | kz1-b | false |
| rc1a...mdb.yandexcloud.kz | c9qp71dk1q1w******** | MONGOD | rs01 | SECONDARY | ALIVE | kz1-a | false |
+----------------------------+----------------------+--------+------------+--------------+----------+---------------+-----------+
Имя кластера Yandex StoreDoc можно запросить со списком кластеров в каталоге.
-
Получите 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-mongodb/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/mongodb/v1/cluster_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "cluster_id": "<идентификатор_кластера>" }' \ mdb.api.cloud.yandex.net:443 \ yandex.cloud.mdb.mongodb.v1.ClusterService.ListHostsИдентификатор кластера можно запросить со списком кластеров в каталоге.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
Добавить хост
Количество хостов в кластерах Yandex StoreDoc ограничено квотами на количество CPU и объем памяти, которые доступны кластерам базы данных в вашем облаке. Чтобы проверить используемые ресурсы, откройте страницу Квоты
Вы можете добавлять в кластер Yandex StoreDoc хосты разных типов. Их количество зависит от типа шардирования:
| Тип шардирования | MONGOD | MONGOINFRA | MONGOS | MONGOCFG |
|---|---|---|---|---|
| Без шардирования | ⩾ 1 | — | — | — |
| Стандартный | ⩾ 1 | ⩾ 3 | — | — |
| Расширенный | ⩾ 1 | — | ⩾ 2 | ⩾ 3 |
Чтобы добавить хост в кластере Yandex StoreDoc:
- Перейдите на страницу каталога
и выберите сервис Yandex StoreDoc. - Нажмите на имя нужного кластера Yandex StoreDoc и перейдите на вкладку Хосты.
- Нажмите кнопку Создать хост.
- Укажите параметры хоста:
-
Подсеть (если нужной подсети в списке нет, создайте ее).
-
Выберите опцию Публичный доступ, если хост должен быть доступен извне Yandex Cloud.
-
Тип хоста и название шарда, если в кластере Yandex StoreDoc включено шардирование.
- Нажмите Сохранить.
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.
Чтобы добавить хост в кластере Yandex StoreDoc:
-
Запросите список подсетей кластера Yandex StoreDoc, чтобы выбрать подсеть для нового хоста:
yc vpc subnet listРезультат:
+----------------------+-----------+-----------------------+---------------+------------------+ | ID | NAME | NETWORK ID | ZONE | RANGE | +----------------------+-----------+-----------------------+---------------+------------------+ | b0cl69a2b4c6******** | default-d | enp6rq72rndgr******** | kz1-d | [172.16.0.0/20] | | e2lkj9qwe762******** | default-b | enp6rq72rndgr******** | kz1-b | [10.10.0.0/16] | | e9b0ph42bn96******** | a-2 | enp6rq72rndgr******** | kz1-a | [172.16.32.0/20] | | e9b9v22r88io******** | default-a | enp6rq72rndgr******** | kz1-a | [172.16.16.0/20] | +----------------------+-----------+-----------------------+---------------+------------------+Если нужной подсети в списке нет, создайте ее.
-
Посмотрите описание команды CLI для добавления хостов:
yc managed-mongodb host add --help -
Выполните команду добавления хоста:
yc managed-mongodb host add \ --cluster-name <имя_кластера> \ --host zone-id=<зона_доступности>,` `subnet-id=<идентификатор_подсети>,` `assign-public-ip=<публичный_доступ>,` `hidden=<скрытие_хоста>,` `secondary-delay-secs=<отставание_реплики_в_секундах>,` `priority=<приоритет_хоста>Где:
--cluster-name— имя кластера. Его можно запросить со списком кластеров в каталоге.--host— параметры хоста:zone-id— зона доступности.subnet-id— идентификатор подсети. Его необходимо указать, если в зоне доступности больше одной подсети, в противном случае Yandex StoreDoc автоматически выберет единственную подсеть.assign-public-ip— доступность хоста из интернета по публичному IP-адресу:trueилиfalse.hidden— скрытие хоста:trueилиfalse. Если хост скрыт, он будет доступен для чтения только для прямых подключений (например, чтобы делать с него резервные копии, не добавляя нагрузки на кластер).secondary-delay-secs— отставание реплики от мастера в секундах. Может быть полезно для восстановления данных в случае ошибочных операций.priority— приоритет назначения хоста мастером.
Yandex StoreDoc запустит операцию добавления хоста.
Чтобы добавить хост в кластере Yandex StoreDoc:
-
Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.
О том, как создать такой файл, см. в разделе Создание кластера.
-
Добавьте к описанию кластера Yandex StoreDoc:
- Ресурсы, соответствующие типу шардирования, если вы добавляете хост в шардированный кластер:
resources_mongoinfra— для стандартного шардирования.resources_mongosиresources_mongocfg— для расширенного шардирования.
- Блок
host.
resource "yandex_mdb_mongodb_cluster" "<имя_кластера>" { ... resources_mongod { resource_preset_id = "<класс_хоста>" disk_type_id = "<тип_диска>" disk_size = <размер_хранилища_ГБ> } resources_mongoinfra { # Добавьте для стандартного шардирования. resource_preset_id = "<класс_хоста>" disk_type_id = "<тип_диска>" disk_size = <размер_хранилища_ГБ> } resources_mongos { # Добавьте для расширенного шардирования. resource_preset_id = "<класс_хоста>" disk_type_id = "<тип_диска>" disk_size = <размер_хранилища_ГБ> } resources_mongocfg { # Добавьте для расширенного шардирования. resource_preset_id = "<класс_хоста>" disk_type_id = "<тип_диска>" disk_size = <размер_хранилища_ГБ> } host { role = "<тип_реплики>" zone_id = "<зона_доступности>" subnet_id = "<идентификатор_подсети>" assign_public_ip = <публичный_доступ> shard_name = "<имя_шарда>" type = "<тип_хоста>" host_parameters { hidden = <скрытие_хоста> secondary_delay_secs = <отставание_реплики_в_секундах> priority = <приоритет_хоста> } ... } }Где:
host— параметры хоста:role— тип реплики:PRIMARYилиSECONDARY.zone_id— зона доступности.subnet_id— идентификатор подсети в выбранной зоне доступности.assign_public_ip— публичный доступ к хосту:trueилиfalse.shard_name— имя шарда в шардированном кластере.type— тип хоста в шардированном кластере:MONGOD,MONGOINFRA,MONGOSилиMONGOCFG.host_parameters— дополнительные параметры хоста:hidden— скрытие хоста:trueилиfalse. Если хост скрыт, он будет доступен для чтения только для прямых подключений (например, чтобы делать с него резервные копии, не добавляя нагрузки на кластер).secondary_delay_secs— отставание реплики от мастера в секундах. Может быть полезно для восстановления данных в случае ошибочных операций.priority— приоритет назначения хоста мастером.
- Ресурсы, соответствующие типу шардирования, если вы добавляете хост в шардированный кластер:
-
Проверьте корректность настроек.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validateЕсли в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Подтвердите изменение ресурсов.
-
Выполните команду для просмотра планируемых изменений:
terraform planЕсли конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply -
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
-
Подробнее см. в документации провайдера Terraform.
Ограничения по времени
Провайдер Terraform ограничивает время на выполнение операций с кластером Yandex StoreDoc:
- создание, в т. ч. путем восстановления из резервной копии, — 30 минут;
- изменение — 60 минут.
Операции, длящиеся дольше указанного времени, прерываются.
Как изменить эти ограничения?
Добавьте к описанию кластера блок timeouts, например:
resource "yandex_mdb_mongodb_cluster" "<имя_кластера>" {
...
timeouts {
create = "1h30m" # Полтора часа
update = "2h" # 2 часа
}
}
-
Получите 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-mongodb/v1/clusters/<идентификатор_кластера>/hosts:batchCreate' \ --data '{ "hostSpecs": [ { "zoneId": "<зона_доступности>", "subnetId": "<идентификатор_подсети>", "assignPublicIp": <публичный_доступ_к_хосту>, "type": "<тип_хоста>", "shardName": "<имя_шарда>", "hidden": <скрытие_хоста>, "secondaryDelaySecs": "<отставание_реплики_в_секундах>", "priority": "<приоритет_хоста>", "tags": "<метки_хоста>" } ] }'Где
hostSpecs— параметры хоста:zoneId— зона доступности.subnetId— идентификатор подсети.assignPublicIp— доступность хоста из интернета по публичному IP-адресу:trueилиfalse.type— тип хоста в шардированном кластере:MONGOD,MONGOINFRA,MONGOSилиMONGOCFG. Если кластер нешардированный, укажитеMONGOD.shardName— имя шарда в шардированном кластере.hidden— скрытие хоста:trueилиfalse. Если хост скрыт, он будет доступен для чтения только для прямых подключений (например, чтобы делать с него резервные копии, не добавляя нагрузки на кластер).secondaryDelaySecs— отставание реплики от мастера в секундах. Может быть полезно для восстановления данных в случае ошибочных операций.priority— *hidden— скрытие хоста:trueилиfalse. Если хост скрыт, он будет доступен для чтения только для прямых подключений (например, чтобы делать с него резервные копии, не добавляя нагрузки на кластер).secondaryDelaySecs— отставание реплики от мастера в секундах. Может быть полезно для восстановления данных в случае ошибочных операций.priority— приоритет назначения хоста мастером.tags— метки хоста.
Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
Получите 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/mongodb/v1/cluster_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "cluster_id": "<идентификатор_кластера>", "host_specs": [ { "zone_id": "<зона_доступности>", "subnet_id": "<идентификатор_подсети>", "assign_public_ip": <публичный_доступ_к_хосту>, "type": "<тип_хоста>", "shard_name": "<имя_шарда>", "hidden": <скрытие_хоста>, "secondary_delay_secs": "<отставание_реплики_в_секундах>", "priority": "<приоритет_хоста>", "tags": "<метки_хоста>" } ] }' \ mdb.api.cloud.yandex.net:443 \ yandex.cloud.mdb.mongodb.v1.ClusterService.AddHostsГде
host_specs— параметры хоста:zone_id— зона доступности.subnet_id— идентификатор подсети.assign_public_ip— доступность хоста из интернета по публичному IP-адресу:trueилиfalse.type— тип хоста в шардированном кластере:MONGOD,MONGOINFRA,MONGOSилиMONGOCFG. Если кластер нешардированный, укажитеMONGOD.shard_name— имя шарда в шардированном кластере.hidden— скрытие хоста:trueилиfalse. Если хост скрыт, он будет доступен для чтения только для прямых подключений (например, чтобы делать с него резервные копии, не добавляя нагрузки на кластер).secondaryDelaySecs— отставание реплики от мастера в секундах. Может быть полезно для восстановления данных в случае ошибочных операций.priority— приоритет назначения хоста мастером.tags— метки хоста.
Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
Важно
Если после добавления хоста к нему невозможно подключиться, убедитесь, что группа безопасности кластера Yandex StoreDoc настроена корректно для подсети, в которую помещен хост.
Изменить хост
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.
Чтобы изменить параметры хоста в кластере, выполните команду:
yc managed-mongodb host update \
--cluster-name <имя_кластера> \
--host hostname=<имя_хоста>,`
`assign-public-ip=<публичный_доступ_к_хосту>,`
`hidden=<скрытие_хоста>,`
`secondary-delay-secs=<отставание_реплики_в_секундах>,`
`priority=<приоритет_хоста>
Где:
--cluster-name— имя кластера. Его можно запросить со списком кластеров в каталоге.--host— параметры хоста:hostname— имя изменяемого хоста. Его можно запросить со списком хостов в кластере.assign-public-ip— доступность хоста из интернета по публичному IP-адресу:trueилиfalse.hidden— скрытие хоста:trueилиfalse. Если хост скрыт, он будет доступен для чтения только для прямых подключений (например, чтобы делать с него резервные копии, не добавляя нагрузки на кластер).secondary-delay-secs— отставание реплики от мастера в секундах. Может быть полезно для восстановления данных в случае ошибочных операций.priority— приоритет назначения хоста мастером.
Чтобы изменить параметры хоста в кластере:
-
Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.
Как создать такой файл, см. в разделе Создание кластера.
Полный список доступных для изменения полей конфигурации кластера Managed Service for PostgreSQL см. в документации провайдера Terraform.
-
Измените в описании кластера Managed Service for PostgreSQL атрибуты блока
host, соответствующего изменяемому хосту.resource "yandex_mdb_mongodb_cluster" "<имя_кластера>" { ... host { assign_public_ip = <публичный_доступ_к_хосту> host_parameters { hidden = <скрытие_хоста> secondary_delay_secs = <отставание_реплики_в_секундах> priority = <приоритет_хоста> } } }
Где:
assign_public_ip— доступность хоста из интернета по публичному IP-адресу:trueилиfalse.host_parameters— дополнительные параметры хоста:hidden— скрытие хоста:trueилиfalse. Если хост скрыт, он будет доступен для чтения только для прямых подключений (например, чтобы делать с него резервные копии, не добавляя нагрузки на кластер).secondary_delay_secs— отставание реплики от мастера в секундах. Может быть полезно для восстановления данных в случае ошибочных операций.priority— приоритет назначения хоста мастером.
-
Проверьте корректность настроек.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validateЕсли в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Подтвердите изменение ресурсов.
-
Выполните команду для просмотра планируемых изменений:
terraform planЕсли конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply -
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
Ограничения по времени
Провайдер Terraform ограничивает время на выполнение операций с кластером Yandex StoreDoc:
- создание, в т. ч. путем восстановления из резервной копии, — 30 минут;
- изменение — 60 минут.
Операции, длящиеся дольше указанного времени, прерываются.
Как изменить эти ограничения?
Добавьте к описанию кластера блок
timeouts, например:resource "yandex_mdb_mongodb_cluster" "<имя_кластера>" { ... timeouts { create = "1h30m" # Полтора часа update = "2h" # 2 часа } } -
-
Получите 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-mongodb/v1/clusters/<идентификатор_кластера>/hosts:batchUpdate' \ --data '{ "updateHostSpecs": [ { "updateMask": "hostName,assignPublicIp,hidden,secondaryDelaySecs,priority", "hostName": "<имя_хоста>", "assignPublicIp": <публичный_доступ_к_хосту>, "hidden": <скрытие_хоста>, "secondaryDelaySecs": "<отставание_реплики_в_секундах>", "priority": "<приоритет_хоста>" } ] }'Где
updateHostSpecs— параметры хоста:updateMask— перечень изменяемых параметров в одну строку через запятую.hostName— имя изменяемого хоста. Его можно запросить со списком хостов в кластере.assignPublicIp— доступность хоста из интернета по публичному IP-адресу:trueилиfalse.hidden— скрытие хоста:trueилиfalse. Если хост скрыт, он будет доступен для чтения только для прямых подключений (например, чтобы делать с него резервные копии, не добавляя нагрузки на кластер).secondaryDelaySecs— отставание реплики от мастера в секундах. Может быть полезно для восстановления данных в случае ошибочных операций.priority— приоритет назначения хоста мастером.
Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
Получите 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/mongodb/v1/cluster_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "cluster_id": "<идентификатор_кластера>", "update_host_specs": [ { "update_mask": { "paths": [ "assign_public_ip", "hidden", "secondary_delay_secs", "priority" ] }, "host_name": "<имя_хоста>", "assign_public_ip": <публичный_доступ_к_хосту>, "hidden": <скрытие_хоста>, "secondary_delay_secs": "<отставание_реплики_в_секундах>", "priority": "<приоритет_хоста>" } ] }' \ mdb.api.cloud.yandex.net:443 \ yandex.cloud.mdb.mongodb.v1.ClusterService.UpdateHostsГде
update_host_specs— параметры хоста:update_mask— перечень изменяемых параметров в одну строку через запятую.host_name— имя изменяемого хоста. Его можно запросить со списком хостов в кластере.assign_public_ip— доступность хоста из интернета по публичному IP-адресу:trueилиfalse.hidden— скрытие хоста:trueилиfalse. Если хост скрыт, он будет доступен для чтения только для прямых подключений (например, чтобы делать с него резервные копии, не добавляя нагрузки на кластер).secondary_delay_secs— отставание реплики от мастера в секундах. Может быть полезно для восстановления данных в случае ошибочных операций.priority— приоритет назначения хоста мастером.
Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
Удалить хост
Вы можете удалить хост MONGOD из кластера Yandex StoreDoc, если он не является единственным хостом. Чтобы заменить единственный хост, сначала создайте новый хост, а затем удалите старый.
Если хост является первичным в момент удаления, Yandex StoreDoc автоматически выберет новую первичную реплику.
Также в кластере Yandex StoreDoc с включенным шардированием допустимо удалить хосты MONGOS, MONGOCFG или MONGOINFRA, если их в кластере больше, чем минимальное количество, которое требуется для обеспечения работы шардирования.
Чтобы удалить хост из кластера Yandex StoreDoc:
- Перейдите на страницу каталога
и выберите сервис Yandex StoreDoc. - Нажмите на имя нужного кластера Yandex StoreDoc и выберите вкладку Хосты.
- Нажмите значок
в строке нужного хоста и выберите пункт Удалить. - В открывшемся окне отметьте опцию Я удаляю хост и нажмите кнопку Подтвердить.
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.
Чтобы удалить хост из кластера Yandex StoreDoc, выполните команду:
yc managed-mongodb host delete <имя_хоста>
--cluster-name <имя_кластера>
Имя хоста можно запросить со списком хостов в кластере Yandex StoreDoc, имя кластера — со списком кластеров в каталоге.
Чтобы удалить хост из кластера Yandex StoreDoc:
-
Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.
О том, как создать такой файл, см. в разделе Создание кластера.
-
Удалите из описания кластера Yandex StoreDoc блок
host, соответствующий удаляемому хосту. -
Проверьте корректность настроек.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validateЕсли в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Введите слово
yesи нажмите Enter.-
Выполните команду для просмотра планируемых изменений:
terraform planЕсли конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply -
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
-
Подробнее см. в документации провайдера Terraform.
Ограничения по времени
Провайдер Terraform ограничивает время на выполнение операций с кластером Yandex StoreDoc:
- создание, в т. ч. путем восстановления из резервной копии, — 30 минут;
- изменение — 60 минут.
Операции, длящиеся дольше указанного времени, прерываются.
Как изменить эти ограничения?
Добавьте к описанию кластера блок timeouts, например:
resource "yandex_mdb_mongodb_cluster" "<имя_кластера>" {
...
timeouts {
create = "1h30m" # Полтора часа
update = "2h" # 2 часа
}
}
-
Получите 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-mongodb/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/mongodb/v1/cluster_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "cluster_id": "<идентификатор_кластера>", "host_names": [ "<имя_хоста>" ] }' \ mdb.api.cloud.yandex.net:443 \ yandex.cloud.mdb.mongodb.v1.ClusterService.DeleteHostsГде
host_names— массив с именами удаляемых хостов. Чтобы узнать имя нужного хоста, получите список хостов в кластере.Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
Запустить ресинхронизацию хоста
Чтобы повторно синхронизировать хост с остальными репликами в кластере или шарде Yandex StoreDoc, выполните операцию принудительной синхронизации. Операция применяется только к одному хосту MONGOD за раз и только для кластеров Yandex StoreDoc с более чем двумя репликами, независимо от класса и типа хостов. Ресинхронизация также позволяет освободить хранилище хоста от коллекций и документов, которые помечены как удаленные.
При выполнении этой операции:
-
Хост перестает принимать запросы на запись. Если хост был первичной репликой (
PRIMARY), Yandex StoreDoc попытается сделать его вторичной репликой (SECONDARY). В случае неудачи операция прерывается. -
Инстанс Yandex StoreDoc на хосте останавливается, и все данные удаляются.
-
Инстанс Yandex StoreDoc снова запускается и заново скачивает данные с хостов-реплик.
-
После синхронизации с другими репликами в кластере Yandex StoreDoc хост становится вторичной репликой.
Примечание
- Во время синхронизации хост не сможет полноценно отвечать на запросы, так как на нем будет находиться только часть данных кластера Yandex StoreDoc.
- Оценочная скорость синхронизации: от 300 ГБ в сутки.
Чтобы запустить принудительную ресинхронизацию хоста:
- Перейдите на страницу каталога
и выберите сервис Yandex StoreDoc. - Нажмите на имя нужного кластера Yandex StoreDoc и выберите вкладку Хосты.
- Нажмите значок
в строке нужного хоста и выберите пункт Ресинхронизировать.
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.
Чтобы запустить принудительную ресинхронизацию хоста, выполните команду:
yc managed-mongodb hosts resetup <имя_хоста>
--cluster-name <имя_кластера>
Имя хоста можно запросить со списком хостов в каталоге. Имя кластера Yandex StoreDoc можно запросить со списком кластеров в каталоге.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Воспользуйтесь методом Cluster.ResetupHosts и выполните запрос, например, с помощью cURL
:curl \ --request POST \ --header "Authorization: Bearer $IAM_TOKEN" \ --header "Content-Type: application/json" \ --url 'https://mdb.api.cloud.yandex.net/managed-mongodb/v1/clusters/<идентификатор_кластера>:resetupHosts' \ --data '{ "hostNames": [ "<имя_хоста>" ] }'Где
hostNames— массив с именами хостов, которые будут синхронизированы повторно. Чтобы узнать имя нужного хоста, получите список хостов в кластере.Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapiДалее предполагается, что содержимое репозитория находится в директории
~/cloudapi/. -
Воспользуйтесь вызовом ClusterService.ResetupHosts и выполните запрос, например, с помощью gRPCurl
:grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/mdb/mongodb/v1/cluster_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "cluster_id": "<идентификатор_кластера>", "host_names": [ "<имя_хоста>" ] }' \ mdb.api.cloud.yandex.net:443 \ yandex.cloud.mdb.mongodb.v1.ClusterService.ResetupHostsГде
host_names— массив с именами хостов, которые будут синхронизированы повторно. Чтобы узнать имя нужного хоста, получите список хостов в кластере.Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
Перезагрузить хост
Вы можете вручную перезагрузить хост кластера Yandex StoreDoc.
Перезагрузка может привести к временной недоступности кластера или шарда Yandex StoreDoc:
- Если в кластере только один хост.
- Если хост является первичной репликой.
При перезагрузке первичной реплики не происходит ее автоматического переключения. Чтобы избежать недоступности кластера Yandex StoreDoc, переключите первичную реплику кластера до ее перезагрузки.
Примечание
Вы можете перезагрузить только один хост за раз.
Чтобы перезагрузить хост:
- Перейдите на страницу каталога
и выберите сервис Yandex StoreDoc. - Нажмите на имя нужного кластера Yandex StoreDoc и выберите вкладку Хосты.
- Нажмите значок
в строке нужного хоста и выберите пункт Перезагрузить. - Подтвердите перезагрузку хоста.
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.
Чтобы перезагрузить хост, выполните команду:
yc managed-mongodb hosts restart <имя_хоста> \
--cluster-name <имя_кластера>
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Воспользуйтесь методом Cluster.RestartHosts и выполните запрос, например, с помощью cURL
:curl \ --request POST \ --header "Authorization: Bearer $IAM_TOKEN" \ --header "Content-Type: application/json" \ --url 'https://mdb.api.cloud.yandex.net/managed-mongodb/v1/clusters/<идентификатор_кластера>:restartHosts' \ --data '{ "hostNames": [ "<имя_хоста>" ] }'Где
hostNames— массив с именами хостов, которые будут перезапущены. Чтобы узнать имя нужного хоста, получите список хостов в кластере.Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapiДалее предполагается, что содержимое репозитория находится в директории
~/cloudapi/. -
Воспользуйтесь вызовом ClusterService.RestartHosts и выполните запрос, например, с помощью gRPCurl
:grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/mdb/mongodb/v1/cluster_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "cluster_id": "<идентификатор_кластера>", "host_names": [ "<имя_хоста>" ] }' \ mdb.api.cloud.yandex.net:443 \ yandex.cloud.mdb.mongodb.v1.ClusterService.RestartHostsГде
host_names— массив с именами хостов, который будут перезапущены. Чтобы узнать имя нужного хоста, получите список хостов в кластере.Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.