Управление хостами кластера MongoDB
Вы можете добавлять и удалять хосты кластера, запускать повторную синхронизацию хостов, а также управлять настройками MongoDB для отдельных кластеров. О том, как перенести хосты кластера в другую зону доступности, читайте в инструкции.
Получить список хостов в кластере
- Перейдите на страницу каталога
и выберите сервис Managed Service for MongoDB. - Нажмите на имя нужного кластера Managed Service for MongoDB.
- Выберите вкладку Хосты.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы получить список хостов в кластере Managed Service for MongoDB, выполните команду:
yc managed-mongodb host list \
--cluster-name <имя_кластера>
Результат:
+----------------------------+----------------------+--------+------------+--------------+----------+---------------+-----------+
| NAME | CLUSTER ID | TYPE | SHARD NAME | ROLE | HEALTH | ZONE ID | PUBLIC IP |
+----------------------------+----------------------+--------+------------+--------------+----------+---------------+-----------+
| rc1b...mdb.yandexcloud.net | c9qp71dk1q1w******** | MONGOD | rs01 | PRIMARY | ALIVE | ru-central1-b | false |
| rc1a...mdb.yandexcloud.net | c9qp71dk1q1w******** | MONGOD | rs01 | SECONDARY | ALIVE | ru-central1-a | false |
+----------------------------+----------------------+--------+------------+--------------+----------+---------------+-----------+
Имя кластера Managed Service for MongoDB можно запросить со списком кластеров в каталоге.
Чтобы получить список хостов кластера Managed Service for MongoDB, воспользуйтесь методом REST API listHosts для ресурса Cluster или вызовом gRPC API ClusterService/ListHosts и передайте в запросе идентификатор кластера в параметре clusterId
.
Идентификатор кластера можно получить со списком кластеров в каталоге.
Добавить хост
Количество хостов в кластерах Managed Service for MongoDB ограничено квотами на количество CPU и объем памяти, которые доступны кластерам базы данных в вашем облаке. Чтобы проверить используемые ресурсы, откройте страницу Квоты
Вы можете добавлять в кластер Managed Service for MongoDB хосты разных типов. Их количество зависит от типа шардирования:
Тип шардирования | MONGOD | MONGOINFRA | MONGOS | MONGOCFG |
---|---|---|---|---|
Без шардирования | ⩾ 1 | — | — | — |
Стандартный | ⩾ 1 | ⩾ 3 | — | — |
Расширенный | ⩾ 1 | — | ⩾ 2 | ⩾ 3 |
Чтобы добавить хост в кластере Managed Service for MongoDB:
- Перейдите на страницу каталога
и выберите сервис Managed Service for MongoDB. - Нажмите на имя нужного кластера Managed Service for MongoDB и перейдите на вкладку Хосты.
- Нажмите кнопку Создать хост.
- Укажите параметры хоста:
- Зону доступности.
- Подсеть (если нужной подсети в списке нет, создайте ее).
- Выберите опцию Публичный доступ, если хост должен быть доступен извне Yandex Cloud. Эту настройку нельзя изменить после создания хоста.
- Тип хоста и название шарда, если в кластере Managed Service for MongoDB включено шардирование.
- Нажмите Сохранить.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы добавить хост в кластере Managed Service for MongoDB:
-
Запросите список подсетей кластера Managed Service for MongoDB, чтобы выбрать подсеть для нового хоста:
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-mongodb host add --help
-
Выполните команду добавления хоста:
yc managed-mongodb host add \ --cluster-name <имя_кластера> \ --host zone-id=<зона_доступности>,` `subnet-id=<идентификатор_подсети>,` `assign-public-ip=<публичный_доступ>
Где
assign-public-ip
— публичный доступ к хосту:true
илиfalse
.Managed Service for MongoDB запустит операцию добавления хоста.
Идентификатор подсети необходимо указать, если в зоне доступности больше одной подсети, в противном случае Managed Service for MongoDB автоматически выберет единственную подсеть. Имя кластера Managed Service for MongoDB можно запросить со списком кластеров в каталоге.
Чтобы добавить хост в кластере Managed Service for MongoDB:
-
Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.
О том, как создать такой файл, см. в разделе Создание кластера.
-
Добавьте к описанию кластера Managed Service for MongoDB:
- Ресурсы, соответствующие типу шардирования, если вы добавляете хост в шардированный кластер:
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
— параметры хоста:role
— тип реплики:PRIMARY
илиSECONDARY
.zone_id
— зона доступности.subnet_id
— идентификатор подсети в выбранной зоне доступности.assign_public_ip
— публичный доступ к хосту:true
илиfalse
.shard_name
— имя шарда в шардированном кластере.type
— тип хоста в шардированном кластере:MONGOD
,MONGOINFRA
,MONGOS
илиMONGOCFG
.
- Ресурсы, соответствующие типу шардирования, если вы добавляете хост в шардированный кластер:
-
Проверьте корректность настроек.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Подтвердите изменение ресурсов.
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
-
Подробнее см. в документации провайдера Terraform
Ограничения по времени
Провайдер Terraform ограничивает время на выполнение операций с кластером Managed Service for MongoDB:
- создание, в т. ч. путем восстановления из резервной копии, — 30 минут;
- изменение — 60 минут.
Операции, длящиеся дольше указанного времени, прерываются.
Как изменить эти ограничения?
Добавьте к описанию кластера блок timeouts
, например:
resource "yandex_mdb_mongodb_cluster" "<имя_кластера>" {
...
timeouts {
create = "1h30m" # Полтора часа
update = "2h" # 2 часа
}
}
Чтобы добавить хост в кластер, воспользуйтесь методом REST API addHosts для ресурса Cluster или вызовом gRPC API ClusterService/AddHosts и передайте в запросе:
- Идентификатор кластера в параметре
clusterId
. Чтобы узнать идентификатор, получите список кластеров в каталоге. - Настройки нового хоста в одном или нескольких параметрах
hostSpecs
.
Группы безопасности находятся на стадии Preview. Если они недоступны в вашей сети, для ресурсов будет разрешен весь входящий и исходящий трафик. Дополнительной настройки не требуется.
Чтобы включить группы безопасности, запросите в технической поддержке
Важно
Если после добавления хоста к нему невозможно подключиться, убедитесь, что группа безопасности кластера Managed Service for MongoDB настроена корректно для подсети, в которую помещен хост.
Удалить хост
Вы можете удалить хост MONGOD
из кластера Managed Service for MongoDB, если он не является единственным хостом. Чтобы заменить единственный хост, сначала создайте новый хост, а затем удалите старый.
Если хост является первичным в момент удаления, Managed Service for MongoDB автоматически выберет новую первичную реплику.
Также в кластере Managed Service for MongoDB с включенным шардированием допустимо удалить хосты MONGOS
, MONGOCFG
или MONGOINFRA
, если их в кластере больше, чем минимальное количество, которое требуется для обеспечения работы шардирования.
Чтобы удалить хост из кластера Managed Service for MongoDB:
- Перейдите на страницу каталога
и выберите сервис Managed Service for MongoDB. - Нажмите на имя нужного кластера Managed Service for MongoDB и выберите вкладку Хосты.
- Нажмите значок
в строке нужного хоста и выберите пункт Удалить. - В открывшемся окне отметьте опцию Я удаляю хост и нажмите кнопку Подтвердить.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы удалить хост из кластера Managed Service for MongoDB, выполните команду:
yc managed-mongodb host delete <имя_хоста>
--cluster-name <имя_кластера>
Имя хоста можно запросить со списком хостов в кластере Managed Service for MongoDB, имя кластера — со списком кластеров в каталоге.
Чтобы удалить хост из кластера Managed Service for MongoDB:
-
Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.
О том, как создать такой файл, см. в разделе Создание кластера.
-
Удалите из описания кластера Managed Service for MongoDB блок
host
, соответствующий удаляемому хосту. -
Проверьте корректность настроек.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Введите слово
yes
и нажмите Enter.-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
-
Подробнее см. в документации провайдера Terraform
Ограничения по времени
Провайдер Terraform ограничивает время на выполнение операций с кластером Managed Service for MongoDB:
- создание, в т. ч. путем восстановления из резервной копии, — 30 минут;
- изменение — 60 минут.
Операции, длящиеся дольше указанного времени, прерываются.
Как изменить эти ограничения?
Добавьте к описанию кластера блок timeouts
, например:
resource "yandex_mdb_mongodb_cluster" "<имя_кластера>" {
...
timeouts {
create = "1h30m" # Полтора часа
update = "2h" # 2 часа
}
}
Чтобы удалить хост, воспользуйтесь методом REST API deleteHosts для ресурса Cluster или вызовом gRPC API ClusterService/DeleteHosts и передайте в запросе:
- Идентификатор кластера в параметре
clusterId
. Чтобы узнать идентификатор, получите список кластеров в каталоге. - Имя или массив имен удаляемых хостов в параметре
hostNames
.
Запустить ресинхронизацию хоста
Чтобы повторно синхронизировать хостMONGOD
за раз и только для кластеров Managed Service for MongoDB с более чем двумя репликами, независимо от класса и типа хостов. Ресинхронизация также позволяет освободить хранилище хоста от коллекций и документов, которые помечены как удаленные.
При выполнении этой операции:
-
Хост перестает принимать запросы на запись. Если хост был первичной репликой (
PRIMARY
), Managed Service for MongoDB попытается сделать его вторичной репликой (SECONDARY
). В случае неудачи операция прерывается. -
Инстанс MongoDB на хосте останавливается, и все данные удаляются.
-
Инстанс MongoDB снова запускается и заново скачивает данные с хостов-реплик.
-
После синхронизации с другими репликами в кластере Managed Service for MongoDB хост становится вторичной репликой.
Примечание
- Во время синхронизации хост не сможет полноценно отвечать на запросы, так как на нем будет находиться только часть данных кластера Managed Service for MongoDB.
- Оценочная скорость синхронизации: от 300 ГБ в сутки.
Чтобы запустить принудительную ресинхронизацию хоста:
- Перейдите на страницу каталога
и выберите сервис Managed Service for MongoDB. - Нажмите на имя нужного кластера Managed Service for MongoDB и выберите вкладку Хосты.
- Нажмите значок
в строке нужного хоста и выберите пункт Ресинхронизировать.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы запустить принудительную ресинхронизацию хоста, выполните команду:
yc managed-mongodb hosts resetup <имя_хоста>
--cluster-name <имя_кластера>
Имя хоста можно запросить со списком хостов в каталоге. Имя кластера Managed Service for MongoDB можно запросить со списком кластеров в каталоге.
Чтобы запустить ресинхронизацию хоста, воспользуйтесь методом REST API resetupHosts для ресурса Cluster или вызовом gRPC API ClusterService/ResetupHosts и передайте в запросе:
- Идентификатор кластера в параметре
clusterId
. Чтобы узнать идентификатор, получите список кластеров в каталоге. - Имя хоста в параметре
hostNames
. Чтобы узнать имя, получите список хостов в кластере.
Перезагрузить хост
Вы можете вручную перезагрузить хост кластера Managed Service for MongoDB.
Перезагрузка может привести к временной недоступности кластера или шарда Managed Service for MongoDB:
- Если в кластере только один хост.
- Если хост является первичной репликой.
При перезагрузке первичной реплики не происходит ее автоматического переключения. Чтобы избежать недоступности кластера Managed Service for MongoDB, переключите первичную реплику кластера до ее перезагрузки.
Примечание
Вы можете перезагрузить только один хост за раз.
Чтобы перезагрузить хост:
- Перейдите на страницу каталога
и выберите сервис Managed Service for MongoDB. - Нажмите на имя нужного кластера Managed Service for MongoDB и выберите вкладку Хосты.
- Нажмите значок
в строке нужного хоста и выберите пункт Перезагрузить. - Подтвердите перезагрузку хоста.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы перезагрузить хост, выполните команду:
yc managed-mongodb hosts restart <имя_хоста> \
--cluster-name <имя_кластера>
Чтобы перезагрузить хост, воспользуйтесь методом REST API restartHosts для ресурса Cluster или вызовом gRPC API ClusterService/RestartHosts и передайте в запросе:
- Идентификатор кластера Managed Service for MongoDB в параметре
clusterId
. Чтобы узнать идентификатор, получите список кластеров в каталоге. - Имя хоста в параметре
hostNames
. Чтобы узнать имя, получите список хостов в кластере.